texlive[45845] Master: unicode-math (18nov17)
commits+karl at tug.org
commits+karl at tug.org
Sat Nov 18 22:45:46 CET 2017
Revision: 45845
http://tug.org/svn/texlive?view=revision&revision=45845
Author: karl
Date: 2017-11-18 22:45:46 +0100 (Sat, 18 Nov 2017)
Log Message:
-----------
unicode-math (18nov17)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/unicode-math/CHANGES.md
trunk/Master/texmf-dist/doc/latex/unicode-math/README.md
trunk/Master/texmf-dist/doc/latex/unicode-math/unicode-math.pdf
trunk/Master/texmf-dist/doc/latex/unicode-math/unimath-symbols.pdf
trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math.dtx
trunk/Master/texmf-dist/tex/latex/unicode-math/unicode-math-luatex.sty
trunk/Master/texmf-dist/tex/latex/unicode-math/unicode-math-table.tex
trunk/Master/texmf-dist/tex/latex/unicode-math/unicode-math-xetex.sty
trunk/Master/texmf-dist/tex/latex/unicode-math/unicode-math.sty
trunk/Master/tlpkg/tlpsrc/ttfutils.tlpsrc
trunk/Master/tlpkg/tlpsrc/xetexconfig.tlpsrc
trunk/Master/tlpkg/tlpsrc/xmltexconfig.tlpsrc
Added Paths:
-----------
trunk/Master/texmf-dist/doc/latex/unicode-math/LICENSE
trunk/Master/texmf-dist/doc/latex/unicode-math/MANIFEST.md
trunk/Master/texmf-dist/doc/latex/unicode-math/unicode-math-code.pdf
trunk/Master/texmf-dist/doc/latex/unicode-math/unimath-example.pdf
trunk/Master/texmf-dist/source/latex/unicode-math/um-code-alphabets.dtx
trunk/Master/texmf-dist/source/latex/unicode-math/um-code-api.dtx
trunk/Master/texmf-dist/source/latex/unicode-math/um-code-base.dtx
trunk/Master/texmf-dist/source/latex/unicode-math/um-code-compat.dtx
trunk/Master/texmf-dist/source/latex/unicode-math/um-code-epilogue.dtx
trunk/Master/texmf-dist/source/latex/unicode-math/um-code-fontopt.dtx
trunk/Master/texmf-dist/source/latex/unicode-math/um-code-fontparam.dtx
trunk/Master/texmf-dist/source/latex/unicode-math/um-code-main.dtx
trunk/Master/texmf-dist/source/latex/unicode-math/um-code-mathmap.dtx
trunk/Master/texmf-dist/source/latex/unicode-math/um-code-mathtext.dtx
trunk/Master/texmf-dist/source/latex/unicode-math/um-code-msg.dtx
trunk/Master/texmf-dist/source/latex/unicode-math/um-code-opening.dtx
trunk/Master/texmf-dist/source/latex/unicode-math/um-code-pkgopt.dtx
trunk/Master/texmf-dist/source/latex/unicode-math/um-code-primes.dtx
trunk/Master/texmf-dist/source/latex/unicode-math/um-code-setchar.dtx
trunk/Master/texmf-dist/source/latex/unicode-math/um-code-sscript.dtx
trunk/Master/texmf-dist/source/latex/unicode-math/um-code-ui.dtx
trunk/Master/texmf-dist/source/latex/unicode-math/um-code-usv.dtx
trunk/Master/texmf-dist/source/latex/unicode-math/um-code-variables.dtx
trunk/Master/texmf-dist/source/latex/unicode-math/um-doc-legacyfontdimen.tex
trunk/Master/texmf-dist/source/latex/unicode-math/um-doc-mathfontdimen.tex
trunk/Master/texmf-dist/source/latex/unicode-math/um-doc-nfsssummary.tex
trunk/Master/texmf-dist/source/latex/unicode-math/um-doc-stixextract.tex
trunk/Master/texmf-dist/source/latex/unicode-math/um-doc-style.tex
trunk/Master/texmf-dist/source/latex/unicode-math/um-doc.tex
trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-code.ltx
trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math.ins
trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math.ltx
trunk/Master/texmf-dist/source/latex/unicode-math/unimath-example.ltx
trunk/Master/texmf-dist/source/latex/unicode-math/unimath-symbols.ltx
Removed Paths:
-------------
trunk/Master/texmf-dist/doc/latex/unicode-math/CONTRIBUTING.md
trunk/Master/texmf-dist/doc/latex/unicode-math/unicode-math-doc.tex
trunk/Master/texmf-dist/doc/latex/unicode-math/unimath-example.ltx
trunk/Master/texmf-dist/doc/latex/unicode-math/unimath-symbols.ltx
trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-alphabets.dtx
trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-compat.dtx
trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-epilogue.dtx
trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-fontopt.dtx
trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-fontparam.dtx
trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-main.dtx
trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-mathmap.dtx
trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-mathtext.dtx
trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-msg.dtx
trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-pkgopt.dtx
trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-preamble.dtx
trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-primes.dtx
trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-setchar.dtx
trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-sscript.dtx
trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-usv.dtx
Modified: trunk/Master/texmf-dist/doc/latex/unicode-math/CHANGES.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/unicode-math/CHANGES.md 2017-11-18 01:22:09 UTC (rev 45844)
+++ trunk/Master/texmf-dist/doc/latex/unicode-math/CHANGES.md 2017-11-18 21:45:46 UTC (rev 45845)
@@ -1,6 +1,13 @@
CHANGE HISTORY
--------------
+- v0.8i (2017/11/18)
+
+ * Many internal changes to support future work.
+ * Improved documentation describing the `\mathXX` and `\symXX` commands.
+ * Documentation is now split into `unicode-math.pdf` (for the user)
+ and `unicode-math-code.pdf` (for the typeset source code).
+
- v0.8h (2017/10/09)
* Some bugs crept in in the last update due to some code rearrangement:
Deleted: trunk/Master/texmf-dist/doc/latex/unicode-math/CONTRIBUTING.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/unicode-math/CONTRIBUTING.md 2017-11-18 01:22:09 UTC (rev 45844)
+++ trunk/Master/texmf-dist/doc/latex/unicode-math/CONTRIBUTING.md 2017-11-18 21:45:46 UTC (rev 45845)
@@ -1,41 +0,0 @@
-# Guidelines for issues and pull requests
-
-## Issues
-
-Thanks for taking the time to report an issue!
-Any apologies that I take longer, sometimes *way longer*, than I should to address them.
-
-There are two important key points for submitting an issue:
-
-* When submitting an issue, please include a *complete* minimal example.
-* When loading maths fonts, please do so by *filename* only.
-* If you are using a proprietary/unusual font, please try a maths font in TeX Live to see
- if it exhibits the same behaviour; it's obviously much harder for me to test with fonts
- I don't yet have or can't access.
-
-For example, this is a good minimal example:
-
- \documentclass{article}
- \usepackage{unicode-math}
- \setmathfont{texgyrepagella-math.otf}
- \begin{document}
- \[
- x^2 + y^2 = z^2
- \]
- \end{document}
-
-This is an example of a *bad* example:
-
- \usepackage{unicode-math}
- \setmathfont{TeX Gyre Pagella Math}
-
- % later:
- \[
- x^2 + y^2 = z^2
- \]
-
-## Pull Requests
-
-I'm usually not fussy! Generally I'll just be impressed you've taken the effort.
-
-If you are changing documentation only (i.e., no code changes), you can add `[ci skip]` to the commit message and the test suite won't be run to check that the changes haven't broken anything.
Added: trunk/Master/texmf-dist/doc/latex/unicode-math/LICENSE
===================================================================
--- trunk/Master/texmf-dist/doc/latex/unicode-math/LICENSE (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/unicode-math/LICENSE 2017-11-18 21:45:46 UTC (rev 45845)
@@ -0,0 +1,416 @@
+The LaTeX Project Public License
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+LPPL Version 1.3c 2008-05-04
+
+Copyright 1999 2002-2008 LaTeX3 Project
+ Everyone is allowed to distribute verbatim copies of this
+ license document, but modification of it is not allowed.
+
+
+PREAMBLE
+========
+
+The LaTeX Project Public License (LPPL) is the primary license under
+which the LaTeX kernel and the base LaTeX packages are distributed.
+
+You may use this license for any work of which you hold the copyright
+and which you wish to distribute. This license may be particularly
+suitable if your work is TeX-related (such as a LaTeX package), but
+it is written in such a way that you can use it even if your work is
+unrelated to TeX.
+
+The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE',
+below, gives instructions, examples, and recommendations for authors
+who are considering distributing their works under this license.
+
+This license gives conditions under which a work may be distributed
+and modified, as well as conditions under which modified versions of
+that work may be distributed.
+
+We, the LaTeX3 Project, believe that the conditions below give you
+the freedom to make and distribute modified versions of your work
+that conform with whatever technical specifications you wish while
+maintaining the availability, integrity, and reliability of
+that work. If you do not see how to achieve your goal while
+meeting these conditions, then read the document `cfgguide.tex'
+and `modguide.tex' in the base LaTeX distribution for suggestions.
+
+
+DEFINITIONS
+===========
+
+In this license document the following terms are used:
+
+ `Work'
+ Any work being distributed under this License.
+
+ `Derived Work'
+ Any work that under any applicable law is derived from the Work.
+
+ `Modification'
+ Any procedure that produces a Derived Work under any applicable
+ law -- for example, the production of a file containing an
+ original file associated with the Work or a significant portion of
+ such a file, either verbatim or with modifications and/or
+ translated into another language.
+
+ `Modify'
+ To apply any procedure that produces a Derived Work under any
+ applicable law.
+
+ `Distribution'
+ Making copies of the Work available from one person to another, in
+ whole or in part. Distribution includes (but is not limited to)
+ making any electronic components of the Work accessible by
+ file transfer protocols such as FTP or HTTP or by shared file
+ systems such as Sun's Network File System (NFS).
+
+ `Compiled Work'
+ A version of the Work that has been processed into a form where it
+ is directly usable on a computer system. This processing may
+ include using installation facilities provided by the Work,
+ transformations of the Work, copying of components of the Work, or
+ other activities. Note that modification of any installation
+ facilities provided by the Work constitutes modification of the Work.
+
+ `Current Maintainer'
+ A person or persons nominated as such within the Work. If there is
+ no such explicit nomination then it is the `Copyright Holder' under
+ any applicable law.
+
+ `Base Interpreter'
+ A program or process that is normally needed for running or
+ interpreting a part or the whole of the Work.
+
+ A Base Interpreter may depend on external components but these
+ are not considered part of the Base Interpreter provided that each
+ external component clearly identifies itself whenever it is used
+ interactively. Unless explicitly specified when applying the
+ license to the Work, the only applicable Base Interpreter is a
+ `LaTeX-Format' or in the case of files belonging to the
+ `LaTeX-format' a program implementing the `TeX language'.
+
+
+
+CONDITIONS ON DISTRIBUTION AND MODIFICATION
+===========================================
+
+1. Activities other than distribution and/or modification of the Work
+are not covered by this license; they are outside its scope. In
+particular, the act of running the Work is not restricted and no
+requirements are made concerning any offers of support for the Work.
+
+2. You may distribute a complete, unmodified copy of the Work as you
+received it. Distribution of only part of the Work is considered
+modification of the Work, and no right to distribute such a Derived
+Work may be assumed under the terms of this clause.
+
+3. You may distribute a Compiled Work that has been generated from a
+complete, unmodified copy of the Work as distributed under Clause 2
+above, as long as that Compiled Work is distributed in such a way that
+the recipients may install the Compiled Work on their system exactly
+as it would have been installed if they generated a Compiled Work
+directly from the Work.
+
+4. If you are the Current Maintainer of the Work, you may, without
+restriction, modify the Work, thus creating a Derived Work. You may
+also distribute the Derived Work without restriction, including
+Compiled Works generated from the Derived Work. Derived Works
+distributed in this manner by the Current Maintainer are considered to
+be updated versions of the Work.
+
+5. If you are not the Current Maintainer of the Work, you may modify
+your copy of the Work, thus creating a Derived Work based on the Work,
+and compile this Derived Work, thus creating a Compiled Work based on
+the Derived Work.
+
+6. If you are not the Current Maintainer of the Work, you may
+distribute a Derived Work provided the following conditions are met
+for every component of the Work unless that component clearly states
+in the copyright notice that it is exempt from that condition. Only
+the Current Maintainer is allowed to add such statements of exemption
+to a component of the Work.
+
+ a. If a component of this Derived Work can be a direct replacement
+ for a component of the Work when that component is used with the
+ Base Interpreter, then, wherever this component of the Work
+ identifies itself to the user when used interactively with that
+ Base Interpreter, the replacement component of this Derived Work
+ clearly and unambiguously identifies itself as a modified version
+ of this component to the user when used interactively with that
+ Base Interpreter.
+
+ b. Every component of the Derived Work contains prominent notices
+ detailing the nature of the changes to that component, or a
+ prominent reference to another file that is distributed as part
+ of the Derived Work and that contains a complete and accurate log
+ of the changes.
+
+ c. No information in the Derived Work implies that any persons,
+ including (but not limited to) the authors of the original version
+ of the Work, provide any support, including (but not limited to)
+ the reporting and handling of errors, to recipients of the
+ Derived Work unless those persons have stated explicitly that
+ they do provide such support for the Derived Work.
+
+ d. You distribute at least one of the following with the Derived Work:
+
+ 1. A complete, unmodified copy of the Work;
+ if your distribution of a modified component is made by
+ offering access to copy the modified component from a
+ designated place, then offering equivalent access to copy
+ the Work from the same or some similar place meets this
+ condition, even though third parties are not compelled to
+ copy the Work along with the modified component;
+
+ 2. Information that is sufficient to obtain a complete,
+ unmodified copy of the Work.
+
+7. If you are not the Current Maintainer of the Work, you may
+distribute a Compiled Work generated from a Derived Work, as long as
+the Derived Work is distributed to all recipients of the Compiled
+Work, and as long as the conditions of Clause 6, above, are met with
+regard to the Derived Work.
+
+8. The conditions above are not intended to prohibit, and hence do not
+apply to, the modification, by any method, of any component so that it
+becomes identical to an updated version of that component of the Work as
+it is distributed by the Current Maintainer under Clause 4, above.
+
+9. Distribution of the Work or any Derived Work in an alternative
+format, where the Work or that Derived Work (in whole or in part) is
+then produced by applying some process to that format, does not relax or
+nullify any sections of this license as they pertain to the results of
+applying that process.
+
+10. a. A Derived Work may be distributed under a different license
+ provided that license itself honors the conditions listed in
+ Clause 6 above, in regard to the Work, though it does not have
+ to honor the rest of the conditions in this license.
+
+ b. If a Derived Work is distributed under a different license, that
+ Derived Work must provide sufficient documentation as part of
+ itself to allow each recipient of that Derived Work to honor the
+ restrictions in Clause 6 above, concerning changes from the Work.
+
+11. This license places no restrictions on works that are unrelated to
+the Work, nor does this license place any restrictions on aggregating
+such works with the Work by any means.
+
+12. Nothing in this license is intended to, or may be used to, prevent
+complete compliance by all parties with all applicable laws.
+
+
+NO WARRANTY
+===========
+
+There is no warranty for the Work. Except when otherwise stated in
+writing, the Copyright Holder provides the Work `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 Work is with you. Should the Work prove defective, you assume
+the cost of all necessary servicing, repair, or correction.
+
+In no event unless required by applicable law or agreed to in writing
+will The Copyright Holder, or any author named in the components of the
+Work, or any other party who may distribute and/or modify the Work as
+permitted above, be liable to you for damages, including any general,
+special, incidental or consequential damages arising out of any use of
+the Work or out of inability to use the Work (including, but not limited
+to, loss of data, data being rendered inaccurate, or losses sustained by
+anyone as a result of any failure of the Work to operate with any other
+programs), even if the Copyright Holder or said author or said other
+party has been advised of the possibility of such damages.
+
+
+MAINTENANCE OF THE WORK
+=======================
+
+The Work has the status `author-maintained' if the Copyright Holder
+explicitly and prominently states near the primary copyright notice in
+the Work that the Work can only be maintained by the Copyright Holder
+or simply that it is `author-maintained'.
+
+The Work has the status `maintained' if there is a Current Maintainer
+who has indicated in the Work that they are willing to receive error
+reports for the Work (for example, by supplying a valid e-mail
+address). It is not required for the Current Maintainer to acknowledge
+or act upon these error reports.
+
+The Work changes from status `maintained' to `unmaintained' if there
+is no Current Maintainer, or the person stated to be Current
+Maintainer of the work cannot be reached through the indicated means
+of communication for a period of six months, and there are no other
+significant signs of active maintenance.
+
+You can become the Current Maintainer of the Work by agreement with
+any existing Current Maintainer to take over this role.
+
+If the Work is unmaintained, you can become the Current Maintainer of
+the Work through the following steps:
+
+ 1. Make a reasonable attempt to trace the Current Maintainer (and
+ the Copyright Holder, if the two differ) through the means of
+ an Internet or similar search.
+
+ 2. If this search is successful, then enquire whether the Work
+ is still maintained.
+
+ a. If it is being maintained, then ask the Current Maintainer
+ to update their communication data within one month.
+
+ b. If the search is unsuccessful or no action to resume active
+ maintenance is taken by the Current Maintainer, then announce
+ within the pertinent community your intention to take over
+ maintenance. (If the Work is a LaTeX work, this could be
+ done, for example, by posting to comp.text.tex.)
+
+ 3a. If the Current Maintainer is reachable and agrees to pass
+ maintenance of the Work to you, then this takes effect
+ immediately upon announcement.
+
+ b. If the Current Maintainer is not reachable and the Copyright
+ Holder agrees that maintenance of the Work be passed to you,
+ then this takes effect immediately upon announcement.
+
+ 4. If you make an `intention announcement' as described in 2b. above
+ and after three months your intention is challenged neither by
+ the Current Maintainer nor by the Copyright Holder nor by other
+ people, then you may arrange for the Work to be changed so as
+ to name you as the (new) Current Maintainer.
+
+ 5. If the previously unreachable Current Maintainer becomes
+ reachable once more within three months of a change completed
+ under the terms of 3b) or 4), then that Current Maintainer must
+ become or remain the Current Maintainer upon request provided
+ they then update their communication data within one month.
+
+A change in the Current Maintainer does not, of itself, alter the fact
+that the Work is distributed under the LPPL license.
+
+If you become the Current Maintainer of the Work, you should
+immediately provide, within the Work, a prominent and unambiguous
+statement of your status as Current Maintainer. You should also
+announce your new status to the same pertinent community as
+in 2b) above.
+
+
+WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE
+======================================================
+
+This section contains important instructions, examples, and
+recommendations for authors who are considering distributing their
+works under this license. These authors are addressed as `you' in
+this section.
+
+Choosing This License or Another License
+----------------------------------------
+
+If for any part of your work you want or need to use *distribution*
+conditions that differ significantly from those in this license, then
+do not refer to this license anywhere in your work but, instead,
+distribute your work under a different license. You may use the text
+of this license as a model for your own license, but your license
+should not refer to the LPPL or otherwise give the impression that
+your work is distributed under the LPPL.
+
+The document `modguide.tex' in the base LaTeX distribution explains
+the motivation behind the conditions of this license. It explains,
+for example, why distributing LaTeX under the GNU General Public
+License (GPL) was considered inappropriate. Even if your work is
+unrelated to LaTeX, the discussion in `modguide.tex' may still be
+relevant, and authors intending to distribute their works under any
+license are encouraged to read it.
+
+A Recommendation on Modification Without Distribution
+-----------------------------------------------------
+
+It is wise never to modify a component of the Work, even for your own
+personal use, without also meeting the above conditions for
+distributing the modified component. While you might intend that such
+modifications will never be distributed, often this will happen by
+accident -- you may forget that you have modified that component; or
+it may not occur to you when allowing others to access the modified
+version that you are thus distributing it and violating the conditions
+of this license in ways that could have legal implications and, worse,
+cause problems for the community. It is therefore usually in your
+best interest to keep your copy of the Work identical with the public
+one. Many works provide ways to control the behavior of that work
+without altering any of its licensed components.
+
+How to Use This License
+-----------------------
+
+To use this license, place in each of the components of your work both
+an explicit copyright notice including your name and the year the work
+was authored and/or last substantially modified. Include also a
+statement that the distribution and/or modification of that
+component is constrained by the conditions in this license.
+
+Here is an example of such a notice and statement:
+
+ %% pig.dtx
+ %% Copyright 2005 M. Y. Name
+ %
+ % This work may be distributed and/or modified under the
+ % conditions of the LaTeX Project Public License, either version 1.3
+ % of this license or (at your option) any later version.
+ % The latest version of this license is in
+ % http://www.latex-project.org/lppl.txt
+ % and version 1.3 or later is part of all distributions of LaTeX
+ % version 2005/12/01 or later.
+ %
+ % This work has the LPPL maintenance status `maintained'.
+ %
+ % The Current Maintainer of this work is M. Y. Name.
+ %
+ % This work consists of the files pig.dtx and pig.ins
+ % and the derived file pig.sty.
+
+Given such a notice and statement in a file, the conditions
+given in this license document would apply, with the `Work' referring
+to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being
+generated from `pig.dtx' using `pig.ins'), the `Base Interpreter'
+referring to any `LaTeX-Format', and both `Copyright Holder' and
+`Current Maintainer' referring to the person `M. Y. Name'.
+
+If you do not want the Maintenance section of LPPL to apply to your
+Work, change `maintained' above into `author-maintained'.
+However, we recommend that you use `maintained', as the Maintenance
+section was added in order to ensure that your Work remains useful to
+the community even when you can no longer maintain and support it
+yourself.
+
+Derived Works That Are Not Replacements
+---------------------------------------
+
+Several clauses of the LPPL specify means to provide reliability and
+stability for the user community. They therefore concern themselves
+with the case that a Derived Work is intended to be used as a
+(compatible or incompatible) replacement of the original Work. If
+this is not the case (e.g., if a few lines of code are reused for a
+completely different task), then clauses 6b and 6d shall not apply.
+
+
+Important Recommendations
+-------------------------
+
+ Defining What Constitutes the Work
+
+ The LPPL requires that distributions of the Work contain all the
+ files of the Work. It is therefore important that you provide a
+ way for the licensee to determine which files constitute the Work.
+ This could, for example, be achieved by explicitly listing all the
+ files of the Work near the copyright notice of each file or by
+ using a line such as:
+
+ % This work consists of all files listed in manifest.txt.
+
+ in that place. In the absence of an unequivocal list it might be
+ impossible for the licensee to determine what is considered by you
+ to comprise the Work and, in such a case, the licensee would be
+ entitled to make reasonable conjectures as to which files comprise
+ the Work.
+
Added: trunk/Master/texmf-dist/doc/latex/unicode-math/MANIFEST.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/unicode-math/MANIFEST.md (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/unicode-math/MANIFEST.md 2017-11-18 21:45:46 UTC (rev 45845)
@@ -0,0 +1,77 @@
+# Manifest for unicode-math
+
+This file is automatically generated with `texlua build.lua manifest`.
+Only ‘source’ files in the repository and derived files are included in this list;
+it does not include ‘generated’ files such as PDF.
+
+## Source files
+
+* unimath-example.ltx
+* um-code-pkgopt.dtx
+* um-code-opening.dtx
+* unicode-math-code.ltx
+* um-code-usv.dtx
+* unicode-math.ltx
+* unimath-symbols.ltx
+* um-code-epilogue.dtx
+* unicode-math-table.tex
+* um-doc-style.tex
+* um-code-api.dtx
+* um-code-msg.dtx
+* um-doc.tex
+* um-doc-nfsssummary.tex
+* um-code-sscript.dtx
+* um-code-base.dtx
+* um-code-fontopt.dtx
+* um-code-fontparam.dtx
+* um-doc-mathfontdimen.tex
+* um-code-ui.dtx
+* um-code-mathmap.dtx
+* um-code-mathtext.dtx
+* um-doc-legacyfontdimen.tex
+* unicode-math.dtx
+* unicode-math.ins
+* um-code-primes.dtx
+* um-code-compat.dtx
+* um-code-alphabets.dtx
+* um-code-main.dtx
+* um-code-variables.dtx
+* um-doc-stixextract.tex
+* um-code-setchar.dtx
+
+## Text and Documentation files
+
+* README.md
+* CHANGES.md
+
+## Derived files
+
+* unicode-math-luatex.sty
+* unicode-math-xetex.sty
+* unicode-math.sty
+
+## Typeset documents
+
+* unicode-math.pdf
+* unimath-example.pdf
+* unicode-math-code.pdf
+* unimath-symbols.pdf
+
+## Checking-specific support files
+
+* umtest-preamble.tex
+
+## Test files
+
+* mathit-symit.luatex.tlg
+* mathit-symit.xetex.tlg
+* fontname-log.luatex.tlg
+* mathit-symit-var.lvt
+* fontname-log.lvt
+* fontname-log.xetex.tlg
+* aaa-loading.luatex.tlg
+* mathit-symit.lvt
+* aaa-loading.lvt
+* mathit-symit-var.luatex.tlg
+* mathit-symit-var.xetex.tlg
+* aaa-loading.xetex.tlg
Property changes on: trunk/Master/texmf-dist/doc/latex/unicode-math/MANIFEST.md
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/latex/unicode-math/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/unicode-math/README.md 2017-11-18 01:22:09 UTC (rev 45844)
+++ trunk/Master/texmf-dist/doc/latex/unicode-math/README.md 2017-11-18 21:45:46 UTC (rev 45845)
@@ -95,16 +95,22 @@
[LPPL]: http://www.latex-project.org/lppl/
-This work is author-maintained and consists of the files
+This work is author-maintained and consists of the code files:
- unicode-math.dtx,
-- unicode-math-*.dtx,
-- unicode-math-table.tex,
+- unicode-math.ins,
+- um-code-*.dtx,
+- unicode-math-table.tex;
+
+the documentation files:
+
+- unicode-math.ltx,
+- unicode-math-code.ltx,
+- um-doc*.tex,
- unimath-example.ltx,
-- unimath-symbols.ltx,
-- unicode-math-testsuite.ltx;
+- unimath-symbols.ltx;
-the derived files
+the derived files:
- unicode-math.lua,
- unicode-math-xetex.sty,
@@ -111,18 +117,14 @@
- unicode-math-luatex.sty,
- unicode-math.sty;
-the compiled documentation files
+the compiled documentation files:
- unicode-math.pdf,
+- unicode-math-code.pdf,
- unimath-example.pdf,
- unimath-symbols.pdf;
-and the test suite for this package
+and the test suite:
-- testfiles/umtest-preamble.tex,
+- testfiles/support/umtest-preamble.tex,
- testfiles/*.(lvt|tlg).
-
-____________________________________
-Copyright 2006-2017 Will Robertson <will.robertson at latex-project.org>
-Copyright 2010-2013 Philipp Stephani <st_philipp at yahoo.de>
-Copyright 2012-2015 Khaled Hosny <khaledhosny at eglug.org>
Added: trunk/Master/texmf-dist/doc/latex/unicode-math/unicode-math-code.pdf
===================================================================
(Binary files differ)
Index: trunk/Master/texmf-dist/doc/latex/unicode-math/unicode-math-code.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/unicode-math/unicode-math-code.pdf 2017-11-18 01:22:09 UTC (rev 45844)
+++ trunk/Master/texmf-dist/doc/latex/unicode-math/unicode-math-code.pdf 2017-11-18 21:45:46 UTC (rev 45845)
Property changes on: trunk/Master/texmf-dist/doc/latex/unicode-math/unicode-math-code.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Deleted: trunk/Master/texmf-dist/doc/latex/unicode-math/unicode-math-doc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/unicode-math/unicode-math-doc.tex 2017-11-18 01:22:09 UTC (rev 45844)
+++ trunk/Master/texmf-dist/doc/latex/unicode-math/unicode-math-doc.tex 2017-11-18 21:45:46 UTC (rev 45845)
@@ -1,1501 +0,0 @@
-% !TEX TS-program = XeLaTeX
-
-\providecommand\DTXFILES{}% if this .tex file is typeset, only include documentation
-\documentclass[a4paper]{ltxdoc}
-
-\makeatletter
-\GetFileInfo{unicode-math.dtx}
-\let\umfiledate\filedate
-\let\umfileversion\fileversion
-
-\CheckSum{0}
-\EnableCrossrefs
-\CodelineIndex
-
-\errorcontextlines=999
-
-\def\@dotsep{1000}
-\setcounter{tocdepth}{2}
-\setlength\columnseprule{0.4pt}
-\renewcommand\tableofcontents{\relax
- \begin{multicols}{2}[\section*{\contentsname}]\relax
- \@starttoc{toc}\relax
- \end{multicols}}
-
-\setcounter{IndexColumns}{2}
-\renewenvironment{theglossary}
- {\small\list{}{}
- \item\relax
- \glossary at prologue\GlossaryParms
- \let\item\@idxitem \ignorespaces
- \def\pfill{\hspace*{\fill}}}
- {\endlist}
-
-\usepackage[svgnames]{xcolor}
-\usepackage[inline]{enumitem}
-\usepackage{array,booktabs,calc,enumitem,fancyvrb,graphicx,ifthen,longtable,refstyle,subfig,topcapt,url,varioref,underscore}
-\setcounter{LTchunksize}{100}
-\usepackage[slash-delimiter=frac,nabla=literal]{unicode-math}
-\usepackage{metalogo,hologo}
-
-\fvset{fontsize=\small,xleftmargin=2em}
-\usepackage[it]{titlesec}
-
-\setmainfont{texgyrepagella}%
- [
- Extension = .otf ,
- UprightFont = *-regular ,
- ItalicFont = *-italic ,
- BoldFont = *-bold ,
- BoldItalicFont = *-bolditalic ,
- ]
-\setsansfont{Iwona}%
- [
- Scale=MatchLowercase,
- Extension = .otf,
- UprightFont = *-Regular,
- ItalicFont = *-Italic,
- BoldFont = *-Bold,
- BoldItalicFont = *-BoldItalic,
- ]
-\setmonofont{Inconsolatazi4-Regular.otf}%
- [
- Scale=MatchLowercase,
- BoldFont=Inconsolatazi4-Bold.otf
- ]
-
-\setmathfont{texgyrepagella-math.otf}
-\setmathfont[version=xits]{xits-math.otf}
-\newfontface\umfont{xits-math.otf}
-
-\usepackage{hypdoc}
-\hypersetup{linktocpage}
-
-% work around some issue turning | into "j" inside mathsf in the definition of \Module:
-% (also prettify)
-\def\Module#1{{\footnotesize\color{red}$\langle$\texttt{#1}$\rangle$}}
-
-\usepackage{minitoc}
-
-\linespread{1.1}
-\frenchspacing
-
-\definecolor{niceblue}{rgb}{0.2,0.4,0.8}
-
-\def\theCodelineNo{\textcolor{niceblue}{\sffamily\tiny\arabic{CodelineNo}}}
-
-\newcommand*\name[1]{{#1}}
-\newcommand*\pkg[1]{\textsf{#1}}
-\newcommand*\feat[1]{\texttt{#1}}
-\newcommand*\opt[1]{\texttt{#1}}
-
-\newcommand*\note[1]{\unskip\footnote{#1}}
-
-\let\latin\textit
-\def\eg{\latin{e.g.}}
-\def\Eg{\latin{E.g.}}
-\def\ie{\latin{i.e.}}
-\def\etc{\@ifnextchar.{\latin{etc}}{\latin{etc.}\@}}
-
-\def\STIX{\textsc{stix}}
-\def\MacOSX{Mac~OS~X}
-\def\ascii{\textsc{ascii}}
-\def\OMEGA{Omega}
-
-\newcounter{argument}
-
-\makeatletter
-\g at addto@macro\endmacro{\setcounter{argument}{0}}
-\makeatother
-
-\newcommand*\darg[1]{%
- \stepcounter{argument}%
- {\ttfamily\char`\#\theargument~:~}#1\par\noindent\ignorespaces
-}
-\newcommand*\doarg[1]{%
- \stepcounter{argument}%
- {\ttfamily\makebox[0pt][r]{[}\char`\#\theargument]:~}#1\par\noindent\ignorespaces
-}
-
-\newcommand\codeline[1]{\par{\centering#1\par\noindent}\ignorespaces}
-
-\newcommand\unichar[1]{\textsc{u}+\texttt{\small#1}}
-
-\setlength\parindent{2em}
-
-\def \MakePrivateLetters {%
- \catcode`\@=11\relax
- \catcode`\_=11\relax
- \catcode`\:=11\relax
-}
-
-\def\partname{Part}
-
-\makeatother
-
-\begin{document}
-
-\title{Experimental Unicode mathematical typesetting: The \pkg{unicode-math} package}
-\author{Will Robertson, Philipp Stephani and Khaled Hosny\\
- \texttt{will.robertson at latex-project.org}}
-\date{\umfiledate \qquad \umfileversion}
-
-\maketitle
-
-\begin{abstract}
-\noindent
-This document describes the \pkg{unicode-math} package, which is
-intended as an implementation of Unicode
-maths for \LaTeX\ using the \XeTeX\ and Lua\TeX\ typesetting engines.
-With this package, changing maths fonts is as easy as changing
-text fonts --- and there are more and more maths fonts appearing now.
-Maths input can also be simplified with Unicode since literal glyphs may be
-entered instead of control sequences in your document source.
-
-The package provides support for both \XeTeX\ and Lua\TeX. The different
-engines provide differing levels of support for Unicode maths.
-Please let us know of any troubles.
-
-Alongside this documentation file, you should be able to find a minimal
-example demonstrating the use of the package,
-`\texttt{unimath-example.ltx}'. It also comes with a separate document,
-`\texttt{unimath-symbols.pdf}',
-containing a complete listing of mathematical symbols defined by
-\pkg{unicode-math}, including comparisons between different fonts.
-
-Finally, while the STIX fonts may be used with this package, accessing
-their alphabets in their `private user area' is not yet supported.
-(Of these additional alphabets there is a separate caligraphic design
-distinct to the script design already included.)
-Better support for the STIX fonts is planned for an upcoming revision of the
-package after any problems have been ironed out with the initial version.
-
-\end{abstract}
-
-\doparttoc\faketableofcontents
-
-\newpage
-\part{User documentation}
-\parttoc
-
-\clearpage
-\section{Introduction}
-
-This document describes the \pkg{unicode-math} package, which is an
-\emph{experimental} implementation of a macro to Unicode glyph encoding for
-mathematical characters.
-
-Users who desire to specify maths alphabets only (Greek and Latin letters,
-and Arabic numerals)
-may wish to use Andrew Moschou's \pkg{mathspec} package instead.
-(\XeTeX-only at time of writing.)
-
-\section{Acknowledgements}
-
-Many thanks to:
-Microsoft for developing the mathematics extension to OpenType as part of
-Microsoft Office~2007;
-Jonathan Kew for implementing Unicode math support in \XeTeX;
-Taco Hoekwater for implementing Unicode math support in \LuaTeX;
-Barbara Beeton for her prodigious effort compiling the definitive list of Unicode math
-glyphs and their \LaTeX\ names (inventing them where necessary), and also
-for her thoughtful replies to my sometimes incessant questions;
-Philipp Stephani for extending the package to support \LuaTeX.
-Ross Moore and Chris Rowley have provided moral and technical support
-from the very early days with great insight into the issues we face trying
-to extend and use \TeX\ in the future.
-Apostolos Syropoulos, Joel Salomon, Khaled Hosny, and Mariusz Wodzicki
-have been fantastic beta testers.
-
-\section{Getting started}
-
-Load \pkg{unicode-math} as a regular \LaTeX\ package. It should be loaded
-after any other maths or font-related package in case it needs to overwrite
-their definitions. Here's an example using the filename syntax to load the \TeX\ Gyre Pagella Math font: (this works for both \XeLaTeX\ and \LuaLaTeX)
-\begin{Verbatim}
-\usepackage{amsmath} % if desired
-\usepackage{unicode-math}
-\setmathfont{texgyrepagella-math.otf}
-\end{Verbatim}
-
-Once the package is loaded, traditional TFM-based maths fonts are no longer supported;
-you can only switch to a different OpenType maths font using the \cs{setmathfont} command.
-If you do not load an OpenType maths font before |\begin{document}|, Latin Modern Math (see above) will be loaded automatically.
-
-\subsection{New commands}
-\pkg{unicode-math} provides a number of commands (such as |\symbfsf|) to select specific `symbol alphabets' within the unicode maths font, with usage, e.g., |$\symbfsf{g}$|${}\to\symbfsf{g}$.
-The full listing is shown in \Tabref{symvsmath}.
-For backwards compatibility, many of these are also defined with `familiar' synonyms such as |\mathbfsf|.
-However, where possible the `sym' prefix commands should be preferred, as certain synonyms may become deprecated in time.
-
-\begin{table}\centering
- \topcaption{New \pkg{unicode-math} commands.}
- \tablabel{symvsmath}
- \begin{tabular}{lll}
- \toprule
- \pkg{unicode-math} command & Synonym \\
- \midrule
- |\symup| & \\
- |\symit| & \\
- |\symbf| & \\
- |\symsf| & \\
- |\symtt| & \\
- \midrule
- |\symnormal| & |\mathnormal| \\
- |\symliteral| & \\
- |\symbfup| & |\mathbfup| \\
- |\symbfit| & |\mathbfit| \\
- |\symsfup| & |\mathsfup| \\
- |\symsfit| & |\mathsfit| \\
- |\symbfsfup| & |\mathbfsfup| \\
- |\symbfsfit| & |\mathbfsfit| \\
- |\symbfsf| & |\mathbfsf| \\
- |\symbb| & |\mathbb| \\
- |\symbbit| & |\mathbbit| \\
- |\symscr| & |\mathscr| \\
- |\symbfscr| & |\mathbfscr| \\
- |\symcal| & |\mathcal| \\
- |\symbfcal| & |\mathbfcal| \\
- |\symfrak| & |\mathfrak| \\
- |\symbffrak| & |\mathbffrak| \\
- \bottomrule
- \end{tabular}
-\end{table}
-
-While most alphabet commands are provided with the \cs{math...} prefix synonyms, there are five `legacy' font alphabets that intentionally behave somewhat different.
-These are \cs{mathup}, \cs{mathit}, \cs{mathbf}, \cs{mathsf}, and \cs{mathtt}.
-(N.B.: \cs{mathrm} is defined as a synonym for \cs{mathup}, but the latter is prefered as it is a script-agnostic term.)
-
-These commands have `overloaded' meanings in traditional \LaTeX, and it's important to consider the subtle differences between, e.g., the new \cs{symbf} and \cs{mathbf}.
-The \cs{symbf} command switches to single-letter mathematical symbols (generally within the same OpenType font).
-The \cs{mathbf} command switches to a text font that is set up to behave correctly in mathematics, and should be used for multi-letter identifiers.
-These could be denoted `text math alphabets'; further details are discussed in \secref{mathselect}.
-Additional similar `text math alphabet' commands can be defined using the \cs{setmathfontface} command discussed in \secref{mathselect}.
-To control the behaviour of the default text math alphabet commands to behave in a backwards-compatible mode, see the package options described in \secref{textmathlegacy}.
-
-\subsection{Package options}
-Package options may be set when the package as loaded or at any later
-stage with the \cs{unimathsetup} command. Therefore, the following two
-examples are equivalent:
-\begin{Verbatim}
-\usepackage[math-style=TeX]{unicode-math}
-% OR
-\usepackage{unicode-math}
-\unimathsetup{math-style=TeX}
-\end{Verbatim}
-Note, however, that some package options affects how maths is initialised
-and changing an option such as |math-style| will not take effect until a
-new maths font is set up.
-
-Package options may \emph{also} be used when declaring new maths fonts,
-passed via options to the \cs{setmathfont} command.
-Therefore, the following two examples are equivalent:
-\begin{Verbatim}
-\unimathsetup{math-style=TeX}
-\setmathfont{Cambria Math}
-% OR
-\setmathfont{Cambria Math}[math-style=TeX]
-\end{Verbatim}
-
-A summary list of package options is shown in \tabref{pkgopt}.
-See following sections for more information.
-
-\begin{table}\centering
- \topcaption{Package options.}
- \tablabel{pkgopt}
- \begin{tabular}{lll}
- \toprule
- Option & Description & See\dots \\
- \midrule
- |math-style| & Style of letters & \secref{math-style} \\
- |bold-style| & Style of bold letters & \secref{bold-style} \\
- |sans-style| & Style of sans serif letters & \secref{sans-style} \\
- |nabla| & Style of the nabla symbol & \secref{nabla} \\
- |partial| & Style of the partial symbol & \secref{partial} \\
- |colon| & Behaviour of \cs{colon} & \secref{colon} \\
- |slash-delimiter| & Glyph to use for `stretchy' slash & \secref{slash-delimiter} \\
- \bottomrule
- \end{tabular}
-\end{table}
-
-
-\section{Unicode maths font setup}
-
-In the ideal case, a single Unicode font will contain all maths glyphs we
-need. The file |unicode-math-table.tex| (based on Barbara Beeton's \STIX\ table)
-provides the mapping between Unicode
-maths glyphs and macro names (all 3298 — or however many — of them!). A
-single command
-\codeline{\cmd\setmathfont\marg{font name}\oarg{font features}}
-implements this for every every symbol and alphabetic variant.
-That means |x| to $x$, |\xi| to $\xi$, |\leq| to $\leq$, etc., |\symscr{H}|
-to $\symscr{H}$ and so on, all for Unicode glyphs within a single font.
-
-This package deals well with Unicode characters for maths
-input. This includes using literal Greek letters in formulae,
-resolving to upright or italic depending on preference.
-
-Font features specific to \pkg{unicode-math} are shown in \tabref{mathfontfeatures}.
-Package options (see \tabref{pkgopt}) may also be used.
-Other \pkg{fontspec} features are also valid.
-
-\begin{table}\centering
- \topcaption{Maths font options.}
- \tablabel{mathfontfeatures}
- \begin{tabular}{lll}
- \toprule
- Option & Description & See\dots \\
- \midrule
- |range| & Style of letters & \secref{range} \\
- |script-font| & Font to use for sub- and super-scripts & \secref{sscript} \\
- |script-features| & Font features for sub- and super-scripts & \secref{sscript} \\
- |sscript-font| & Font to use for nested sub- and super-scripts & \secref{sscript} \\
- |sscript-features| & Font features for nested sub- and super-scripts & \secref{sscript} \\
- \bottomrule
- \end{tabular}
-\end{table}
-
-\subsection{Using multiple fonts}
-\seclabel{range}
-
-There will probably be few cases where a single Unicode maths font suffices
-(simply due to glyph coverage). The \STIX\ font comes to mind as a
-possible exception. It will therefore be necessary to delegate specific
-Unicode ranges of glyphs to separate fonts:
- \codeline{\cmd\setmathfont\marg{font name}|[range=|\meta{unicode range}|,|\meta{font features}|]|}
-where \meta{unicode range} is a comma-separated list of Unicode slot numbers and ranges such as |{"27D0-"27EB,"27FF,"295B-"297F}|.
-Note that \TeX's syntax for accessing the slot number of a character, such as |`\+|, will also work here.
-
-You may also use the macro for accessing the glyph, such as \cs{int}, or whole collection of symbols with the same math type, such as \cs{mathopen}, or complete math styles such as \cs{symbb}.
-(Only numerical slots, however, can be used in ranged declarations.)
-
-\subsubsection{Control over alphabet ranges}
-
-As discussed earlier, Unicode mathematics consists of a number of `alphabet styles' within a single font. In \pkg{unicode-math}, these ranges are indicated with the following (hopefully self-explanatory) labels:
-\begin{quote}\ttfamily
-\ExplSyntaxOn
-\clist_use:Nn \g__um_named_ranges_clist {\,,\,~}
-\ExplSyntaxOff
-\end{quote}
-Fonts can be selected for specified ranges only using the following syntax, in which case all other maths font setup remains untouched:
-\begin{itemize}
-\item |[range=bb]| to use the font for `|bb|' letters only.
-\item |[range=bfsfit/{greek,Greek}]| for Greek lowercase and uppercase only (also with |latin|, |Latin|, |num| as possible options for Latin lower-/upper-case and numbers, resp.).
-\item |[range=up->sfup]| to map to different output styles.
-\end{itemize}
-
-Note that `meta-styles' such as `|bf|' and `|sf|' are not included here since they are context dependent. Use |[range=bfup]| and |[range=bfit]| to effect changes to the particular ranges selected by `|bf|' (and similarly for `|sf|').
-
-If a particular math style is not defined in the font, we fall back onto the lower-base plane (i.e., `upright') glyphs.
-Therefore, to use an \ascii-encoded fractur font, for example, write
-\begin{Verbatim}
- \setmathfont{SomeFracturFont}[range=frak]
-\end{Verbatim}
-and because the math plane fractur glyphs will be missing, \pkg{unicode-math} will know to use the \ascii\ ones instead.
-If necessary this behaviour can be forced with |[range=frak->up]|, since the `|up|' range corresponds to \ascii\ letters.
-
-%If you wanted to swap the maths symbols with sans serif forms, it would be possible to write |[range={up->sfup,it->sfit}]|.
-%Note, however, that at present Unicode does not encode glyphs for sans serif Greek (\tabref{mathalphabets}).
-
-Users of the impressive Minion Math fonts (commercial) may use remapping to access the bold glyphs using:
-\begin{Verbatim}
- \setmathfont{MinionMath-Regular.otf}
- \setmathfont{MinionMath-Bold.otf}[range={bfup->up,bfit->it}]
-\end{Verbatim}
-To set up the complete range of optical sizes for these fonts, a font declaration such as the following may be used: (adjust may be desired according to the font size of the document)
-\begin{Verbatim}
-\setmathfont{Minion Math}[
- SizeFeatures = {
- {Size = -6.01, Font = MinionMath-Tiny},
- {Size = 6.01-8.41, Font = MinionMath-Capt},
- {Size = 8.41-13.01, Font = MinionMath-Regular},
- {Size = 13.01-19.91, Font = MinionMath-Subh},
- {Size = 19.91-, Font = MinionMath-Disp}
- }]
-
-\setmathfont{Minion Math}[range = {bfup->up,bfit->it},
- SizeFeatures = {
- {Size = -6.01, Font = MinionMath-BoldTiny},
- {Size = 6.01-8.41, Font = MinionMath-BoldCapt},
- {Size = 8.41-13.01, Font = MinionMath-Bold},
- {Size = 13.01-19.91, Font = MinionMath-BoldSubh},
- {Size = 19.91-, Font = MinionMath-BoldDisp}
- }]
-\end{Verbatim}
-\textbf{v0.8:} Note that in previous versions of \pkg{unicode-math}, these features were labelled |[range=\mathbb]| and so on. This old syntax is still supported for backwards compatibility, but is now discouraged.
-
-
-\subsection{Script and scriptscript fonts/features}
-\seclabel{sscript}
-
-Cambria Math uses OpenType font features to activate smaller optical sizes
-for scriptsize and scriptscriptsize symbols (the $B$ and $C$, respectively,
-in $A_{B_C}$).
-Other typefaces (such as Minion Math) may use entirely separate font files.
-
-The features |script-font| and |sscript-font| allow alternate fonts to be
-selected for the script and scriptscript sizes, and |script-features| and
-|sscript-features| to apply different OpenType features to them.
-
-By default |script-features| is defined as |Style=MathScript| and |sscript-features| is |Style=MathScriptScript|.
-These correspond to the two levels of OpenType's |ssty| feature tag.
-If the |(s)script-features| options are specified manually, you must
-additionally specify the |Style| options as above.
-
-
-\subsection{Maths `versions'}
-
-\LaTeX\ uses a concept known as `maths versions' to switch math fonts
-mid-document.
-This is useful because it is more efficient than loading a complete maths
-font from scratch every time---especially with thousands of glyphs in the case of Unicode maths!
-The canonical example for maths versions is to select a `bold' maths font
-which might be suitable for section headings, say.
-(Not everyone agrees with this typesetting choice, though; be careful.)
-
-To select a new maths font in a particular version, use the syntax
- \codeline{\cmd\setmathfont\marg{font name}|[version=|\meta{version name}|,|\meta{font features}|]|}
-and to switch between maths versions mid-document use the standard \LaTeX\ command
-\cmd\mathversion\marg{version name}.
-
-
-\subsection{Legacy maths `alphabet' commands}
-\seclabel{mathselect}
-
-\LaTeX\ traditionally uses \cs{DeclareMathAlphabet} and \cs{SetMathAlphabet} to define document commands such as \cs{mathit}, \cs{mathbf}, and so on.
-While these commands can still be used, \pkg{unicode-math} defines a wrapper command to assist with the creation of new such maths alphabet commands.
-This command is known as \cs{setmathface} in symmetry with \pkg{fontspec}'s \cs{newfontface} command; it takes syntax:
-\begin{quote}
- \cmd\setmathfontface\meta{command}\marg{font name}|[|\meta{font features}|]|
-
- \makebox[0pt][l]{\cmd\setmathfontface\meta{command}\marg{font name}|[||version=|\meta{version name}|,|\meta{font features}|]|}
-\end{quote}
-For example, if you want to define a new legacy maths alphabet font \cs{mathittt}:
-\begin{verbatim}
- \setmathfontface\mathittt{texgyrecursor-italic.otf}
- ...
- $\mathittt{foo} = \mathittt{a} + \mathittt{b}$
-\end{verbatim}
-
-
-\subsubsection{Default `text math' fonts}
-
-The five `text math' fonts, discussed above, are: \cs{mathrm}, \cs{mathbf}, \cs{mathit}, \cs{mathsf}, and \cs{mathtt}.
-These commands are also defined with their original definition under synonyms \cs{mathtextrm}, \cs{mathtextbf}, and so on.
-
-When selecting document fonts using \pkg{fontspec} commands such as \cs{setmainfont}, \pkg{unicode-math} inserts some additional code into \pkg{fontspec} that keeps the current default fonts `in sync' with their corresponding \cs{mathrm} commands, etc.
-
-For example, in standard \LaTeX, \cs{mathsf} doesn't change even if the main document font is changed using |\renewcommand\sfdefault{...}|. With \pkg{unicode-math} loaded, after writing |\setsansfont{Helvetica}|, \cs{mathsf} will now be set in Helvetica.
-
-If the \cs{mathsf} font is set explicitly at any time in the preamble, this `auto-following' does not occur. The legacy math font switches can be defined either with commands defined by \pkg{fontspec} (|\setmathrm|, |\setmathsf|, etc.) or using the more general |\setmathfontface\mathsf| interface defined by \pkg{unicode-math}.
-
-
-\subsubsection{Replacing `text math' fonts by symbols}
-\seclabel{textmathlegacy}
-
-For certain types of documents that use legacy input syntax (say you're typesetting a new version of a book written in the 1990s), it would be preferable to use |\symbf| rather than |\mathbf| en masse.
-For example, if bold maths is used only for vectors and matrices, a dedicated symbol font will produce better spacing and will better match the main math font.
-
-Alternatively, you may have used an old version of \pkg{unicode-math} (pre-v0.8), when the \cs{symXYZ} commands were not defined and \cs{mathbf} behaved like \cs{symbf} does now.
-A series of package options (\tabref{legacyfontswitch}) are provided to facilitate switching the definition of \cs{mathXYZ} for the five legacy text math font definitions.
-
-\begin{table}
- \centering
- \topcaption{Maths text font configuration options. Note that \cs{mathup} and \cs{mathrm} are aliases of each other and cannot be configured separately.}
- \tablabel{legacyfontswitch}
- \begin{tabular}{lll}
- \toprule
- Defaults (from `text' font) & From `maths symbols' \\
- \midrule
- |mathrm=text| & |mathrm=sym | \\
- |mathup=text|\rlap{$^\ast$} & |mathup=sym|{}\rlap{$^\ast$} \\
- |mathit=text| & |mathit=sym | \\
- |mathsf=text| & |mathsf=sym | \\
- |mathbf=text| & |mathbf=sym | \\
- |mathtt=text| & |mathtt=sym | \\
- \bottomrule
- \end{tabular}
-\end{table}
-
-
-\subsubsection{Operator font}
-
-\LaTeX\ defines an internal command \cs{operator at font} for typesetting elements such as |\sin| and |\cos|.
-This font is selected from the legacy |operators| NFSS `MathAlphabet', which is no longer relevant in the context of \pkg{unicode-math}.
-By default, the \cs{operator at font} command is defined to switch to the \cs{mathrm} font.
-You may now change these using the command:
-\begin{Verbatim}
-\setoperatorfont\mathit
-\end{Verbatim}
-Or, to select a \pkg{unicode-math} range:
-\begin{Verbatim}
-\setoperatorfont\symscr
-\end{Verbatim}
-\setoperatorfont\symscr
-For example, after the latter above, |$\sin x$| will produce `$\sin x$'.
-
-\mathversion{normal}
-\setoperatorfont\mathrm
-
-
-\section{Maths input}
-
-\XeTeX's Unicode support allows maths input through two methods. Like
-classical \TeX, macros such as \cmd\alpha, \cmd\sum, \cmd\pm, \cmd\leq, and
-so on, provide verbose access to the entire repertoire of characters defined
-by Unicode. The literal characters themselves may be used instead, for more
-readable input files.
-
-\subsection{Math `style'}
-\seclabel{math-style}
-
-Classically, \TeX\ uses italic lowercase Greek letters and \emph{upright}
-uppercase Greek letters for variables in mathematics. This is contrary to
-the \textsc{iso} standards of using italic forms for both upper- and lowercase.
-Furthermore, in various historical contexts, often associated with French typesetting, it was common to use upright uppercase \emph{Latin} letters as well as upright
-upper- and lowercase Greek, but italic lowercase latin. Finally, it is not unknown to use upright letters
-for all characters, as seen in the Euler fonts.
-
-The \pkg{unicode-math} package accommodates these possibilities with the
-option \opt{math-style} that takes one of four (case sensitive) arguments:
-\opt{TeX}, \opt{ISO}, \opt{french}, or \opt{upright}.\footnote{Interface inspired by Walter Schmidt's \pkg{lucimatx} package.}
-The \opt{math-style} options' effects are shown in brief in \tabref{math-style}.
-
-The philosophy behind the interface to the mathematical symbols
-lies in \LaTeX's attempt of separating content and formatting. Because input
-source text may come from a variety of places, the upright and
-`mathematical' italic Latin and Greek alphabets are \emph{unified} from the
-point of view of having a specified meaning in the source text. That is, to
-get a mathematical ‘$x$’, either the \ascii\ (`keyboard') letter |x| may
-be typed, or the actual Unicode character may be used. Similarly for Greek
-letters. The upright or italic forms are then chosen based on the
-|math-style| package option.
-
-If glyphs are desired that do not map as per the package option (for
-example, an upright `g' is desired but typing |$g$| yields `$g$'),
-\emph{markup} is required to specify this; to follow from the example:
-|\symup{g}|.
-Maths style commands such as \cmd\symup\ are detailed later.
-
-\paragraph{`Literal' interface}
-Some may not like this convention of normalising their input.
-For them, an upright |x| is an upright `x' and that's that.
-(This will be the case when obtaining source text from copy/pasting PDF or
-Microsoft Word documents, for example.)
-For these users, the |literal| option to |math-style| will effect this behaviour.
-The \cs{symliteral}\marg{syms} command can also be used, regardless of package setting, to force the style to match the literal input characters.
-This is a `mirror' to \cs{symnormal}\marg{syms} (also alias \cs{mathnormal}) which `resets' the character mapping in its argument to that originally set up through package options.
-
-\begin{table}
- \centering
- \topcaption{Effects of the \opt{math-style} package option.}
- \tablabel{math-style}
- \begin{tabular}{@{}>{\ttfamily}lcc@{}}
- \toprule
- & \multicolumn{2}{c}{Example} \\
- \cmidrule(l){2-3}
- \rmfamily Package option & Latin & Greek \\
- \midrule
- math-style=ISO & $(a,z,B,X)$ & $\symit{(\alpha,\beta,\Gamma,\Xi)}$ \\
- math-style=TeX & $(a,z,B,X)$ & $(\symit\alpha,\symit\beta,\symup\Gamma,\symup\Xi)$ \\
- math-style=french & $(a,z,\symup B,\symup X)$ & $(\symup\alpha,\symup\beta,\symup\Gamma,\symup\Xi)$ \\
- math-style=upright & $(\symup a,\symup z,\symup B,\symup X)$ & $(\symup\alpha,\symup\beta,\symup\Gamma,\symup\Xi)$ \\
- \bottomrule
- \end{tabular}
-\end{table}
-
-
-\subsection{Bold style}
-\seclabel{bold-style}
-
-Similar as in the previous section, ISO standards differ somewhat to \TeX's
-conventions (and classical typesetting) for `boldness' in mathematics. In
-the past, it has been customary to use bold \emph{upright} letters to denote
-things like vectors and matrices. For example, \( \symbfup{M} =
-(\mitM_x,\mitM_y,\mitM_z) \). Presumably, this was due to the relatively
-scarcity of bold italic fonts in the pre-digital typesetting era.
-It has been suggested by some that \emph{italic} bold symbols should be used nowadays instead, but this practise is certainly not widespread.
-
-Bold Greek letters have simply been bold variant glyphs of their regular
-weight, as in \( \mbfitxi = (\mitxi_\mitr,\mitxi_\mitphi,\mitxi_\mittheta)
-\).
-Confusingly, the syntax in \LaTeX\ traditionally has been different for obtaining `normal' bold symbols in Latin and Greek: \cmd\mathbf\ in the former (`$\symbfup{M}$'), and \cmd\bm\ (or
-\cmd\boldsymbol, deprecated) in the latter (`$\mbfitxi$').
-
-In \pkg{unicode-math}, the \cmd\symbf\ command works directly with both
-Greek and Latin maths characters and depending on package option
-either switches to upright for Latin letters (|bold-style=TeX|) as well or
-keeps them italic (|bold-style=ISO|).
-To match the package options for non-bold characters, with option
-|bold-style=upright| all bold characters are upright, and
-|bold-style=literal| does not change the upright/italic shape of the letter.
-The \opt{bold-style} options' effects are shown in brief in \tabref{bold-style}.
-
-Upright and italic bold mathematical letters input as direct Unicode
-characters are normalised with the same rules. For example, with
-|bold-style=TeX|, a literal bold italic latin character will be typeset
-upright.
-
-Note that \opt{bold-style} is independent of \opt{math-style}, although if
-the former is not specified then matching defaults are chosen based on the
-latter.
-
-\begin{table}
- \centering
- \topcaption{Effects of the \opt{bold-style} package option.}
- \tablabel{bold-style}
- \begin{tabular}{@{}>{\ttfamily}lcc@{}}
- \toprule
- & \multicolumn{2}{c}{Example} \\
- \cmidrule(l){2-3}
- \rmfamily Package option & Latin & Greek \\
- \midrule
- bold-style=ISO & $(\symbfit a, \symbfit z, \symbfit B, \symbfit X)$ & $(\symbfit\alpha, \symbfit\beta, \symbfit\Gamma, \symbfit\Xi)$ \\
- bold-style=TeX & $(\symbfup a,\symbfup z,\symbfup B,\symbfup X)$ & $(\symbfit\alpha, \symbfit\beta,\symbfup \Gamma,\symbfup \Xi)$ \\
- bold-style=upright & $(\symbfup a,\symbfup z,\symbfup B,\symbfup X)$ & $(\symbfup \alpha,\symbfup \beta,\symbfup \Gamma,\symbfup \Xi)$ \\
- \bottomrule
- \end{tabular}
-\end{table}
-
-
-\subsection{Sans serif style}
-\seclabel{sans-style}
-
-Unicode contains upright and italic, medium and bold mathematical style characters.
-These may be explicitly selected with the \cs{mathsfup}, \cs{mathsfit}, \cs{mathbfsfup}, and \cs{mathbfsfit}
-commands discussed in \secref{all-math-alphabets}.
-
-How should the generic \cs{mathsf} behave? Unlike bold, sans serif is used much more sparingly
-in mathematics. I've seen recommendations to typeset tensors in sans serif italic
-or sans serif italic bold (e.g., examples in the \pkg{isomath} and \pkg{mattens} packages).
-But \LaTeX's \cs{mathsf} is \textsl{upright} sans serif.
-
-Therefore I reluctantly add the package options |[sans-style=upright]| and |[sans-style=italic]| to control the behaviour of \cs{mathsf}.
-The |upright| style sets up the command to use upright sans serif, including Greek;
-the |italic| style switches to using italic in both Latin and Greek.
-In other words, this option simply changes the meaning of \cs{mathsf} to either \cs{mathsfup} or \cs{mathsfit}, respectively.
-Please let me know if more granular control is necessary here.
-
-There is also a |[sans-style=literal]| setting, set automatically with |[math-style=literal]|, which retains the uprightness of the input characters used when selecting the sans serif output.
-
-\subsubsection{What about bold sans serif?}
-
-While you might want your bold upright and your sans serif italic, I don't believe you'd also want
-your bold sans serif upright (or all vice versa, if that's even conceivable). Therefore, bold sans
-serif follows from the setting for sans serif; it is completely independent of the setting for bold.
-
-In other words, \cs{mathbfsf} is either \cs{mathbfsfup} or \cs{mathbfsfit} based on |[sans-style=upright]| or |[sans-style=italic]|, respectively. And \texttt{[sans-style = literal]} causes \cs{mathbfsf} to retain the same italic or upright shape as the input, and turns it bold sans serif.
-
-N.B.: there is no medium-weight sans serif Greek range in Unicode.
-Therefore, |\symsf{\alpha}| does not make sense (it produces `$\symsf{\alpha}$'), while |\symbfsf{\alpha}| gives `$\symbfsfup{\alpha}$' or `$\symbfsfit{\alpha}$' according to the |sans-style|.
-
-\subsection{All (the rest) of the mathematical styles}
-\seclabel{all-math-alphabets}
-
-Unicode contains separate codepoints for most if not all variations of style
-shape one may wish to use in mathematical notation. The complete list is shown
-in \tabref{mathalphabets}. Some of these have been covered in the previous sections.
-
-The math font switching commands do not nest; therefore if you want
-sans serif bold, you must write |\symbfsf{...}| rather than |\symbf{\symsf{...}}|.
-This may change in the future.
-
-\begin{table}
-\caption{Mathematical styles defined in Unicode. Black dots indicate an style exists in the font specified; blue dots indicate shapes that should always be taken from the upright font even in the italic style. See main text for description of \cs{mathbbit}.}
-\tablabel{mathalphabets}
-\centering
-\def\Y{\textbullet}
-\def\M{\textcolor[rgb]{0.5,0.5,1}{\textbullet}}
-\begin{tabular}{@{} lll l ccc @{}}
-\toprule
-\multicolumn{3}{c}{Font} & & \multicolumn{3}{c}{Alphabet} \\
-\cmidrule(r){1-3}
-\cmidrule(l){5-7}
-Style & Shape & Series & Switch & Latin & Greek & Numerals \\
-\midrule
-Serif & Upright & Normal & \cs{mathup} & \Y & \Y & \Y \\
- & & Bold & \cs{mathbfup} & \Y & \Y & \Y \\
- & Italic & Normal & \cs{mathit} & \Y & \Y & \M \\
- & & Bold & \cs{mathbfit} & \Y & \Y & \M \\
-Sans serif & Upright & Normal & \cs{mathsfup} & \Y & & \Y \\
- & Italic & Normal & \cs{mathsfit} & \Y & & \M \\
- & Upright & Bold & \cs{mathbfsfup} & \Y & \Y & \Y \\
- & Italic & Bold & \cs{mathbfsfit} & \Y & \Y & \M \\
-Typewriter & Upright & Normal & \cs{mathtt} & \Y & & \Y \\
-Double-struck & Upright & Normal & \cs{mathbb} & \Y & & \Y \\
- & Italic & Normal & \cs{mathbbit} & \Y & & \\
-Script & Upright & Normal & \cs{mathscr} & \Y & & \\
- & & Bold & \cs{mathbfscr} & \Y & & \\
-Fraktur & Upright & Normal & \cs{mathfrak} & \Y & & \\
- & & Bold & \cs{mathbffrac} & \Y & & \\
-\bottomrule
-\end{tabular}
-\end{table}
-
-\subsubsection{Double-struck}
-
-The double-struck style (also known as `blackboard bold') consists of
-upright Latin letters $\{\symbb{a}$--$\symbb{z}$,$\symbb{A}$$\symbb{Z}\}$,
-numerals $\symbb{0}$--$\symbb{9}$, summation symbol $\symbb\sum$, and four
-Greek letters only: $\{\symbb{\gamma\pi\Gamma\Pi}\}$.
-
-While |\symbb{\sum}| does produce a double-struck summation symbol,
-its limits aren't properly aligned. Therefore,
-either the literal character or the control sequence \cs{Bbbsum} are
-recommended instead.
-
-There are also five Latin \emph{italic} double-struck letters: $\symbbit{Ddeij}$.
-These can be accessed (if not with their literal characters or control sequences)
-with the \cs{mathbbit} style switch, but note that only those five letters
-will give the expected output.
-
-\subsubsection{Caligraphic vs.\ Script variants}
-
-The Unicode maths encoding contains a style for `Script' letters,
-and while by default \cs{mathcal} and \cs{mathscr}
-are synonyms, there are some situations when a
-separate `Caligraphic' style is needed as well.
-
-If a font contains alternate glyphs for a separat caligraphic style,
-they can be selected explicitly as shown below.
-This feature is currently only supported by the XITS~Math font, where
-the caligraphic letters are accessed with the same glyph slots as the
-script letters but with the first stylistic set feature (|ss01|) applied.
-\begin{verbatim}
- \setmathfont{xits-math.otf}[range={cal,bfcal},StylisticSet=1]
-\end{verbatim}
-An example is shown below.
-\begin{quote}
-\setmathfont{xits-math.otf}[range=scr]
-\setmathfont{xits-math.otf}[range=cal,StylisticSet=1]
-The Script style (\cs{mathscr}) in XITS Math is: $\symscr{ABCXYZ}$\par
-The Caligraphic style (\cs{mathcal}) in XITS Math is: $\symcal{ABCXYZ}$
-\end{quote}
-
-
-\subsection{Miscellanea}
-
-\subsubsection{Nabla}
-\seclabel{nabla}
-
- The symbol $\nabla$ comes in the six forms shown in \tabref{nabla}.
- We want an individual option to specify whether we want upright or italic
- nabla by default (when either upright or italic nabla is used in the
- source). \TeX\ classically uses an upright nabla, and \textsc{iso}
- standards agree with this convention.
- The package options |nabla=upright| and
- |nabla=italic| switch between the two choices, and |nabla=literal| respects
- the shape of the input character. This is then inherited
- through \cmd\symbf; \cmd\symit\ and \cmd\symup\ can be used to force one
- way or the other.
-
-|nabla=italic| is the default. |nabla=literal| is
-activated automatically after |math-style=literal|.
-
-\begin{table}
- \begin{minipage}[b]{0.49\textwidth}
- \centering
- \topcaption{The various forms of nabla.}
- \tablabel{nabla}
- \let \tmpshow\empty
- \begin{tabular}{@{}llc@{}}
- \toprule
- \multicolumn{2}{@{}l}{Description} & Glyph
- \\ \cmidrule(r){1-2}\cmidrule(l){3-3}
- Upright & Serif & $\symup\nabla$ \\
- & Bold serif & $\symbfup\nabla$ \\
- & Bold sans & $\symbfsfup\nabla$ \\
- \cmidrule(lr){1-2}\cmidrule(lr){3-3}
- Italic & Serif & $\symit\nabla$ \\
- & Bold serif & $\symbfit\nabla$ \\
- & Bold sans & $\symbfsfit\nabla$ \\
- \bottomrule
- \end{tabular}
- \end{minipage}\hfill
- \begin{minipage}[b]{0.49\textwidth}
- \centering
- \topcaption{The partial differential.}
- \tablabel{partial}
- \begin{tabular}{@{}llc@{}}
- \toprule
- \multicolumn{2}{@{}l}{Description} & Glyph
- \\ \cmidrule(r){1-2}\cmidrule(l){3-3}
- Regular & Upright & $\symup\partial$ \\
- & Italic & $\symit\partial$ \\
- Bold & Upright & $\symbfup\partial$ \\
- & Italic & $\symbfit\partial$ \\
- Sans bold & Upright & $\symbfsfup\partial$ \\
- & Italic & $\symbfsfit\partial$ \\
- \bottomrule
- \end{tabular}
- \end{minipage}
-\end{table}
-
-
-\subsubsection{Partial}
-\seclabel{partial}
-
-The same applies to the symbols \unichar{2202} partial differential and
-\unichar{1D715} math italic partial differential.
-
-At time of writing, both the Cambria Math and STIX fonts display these
-two glyphs in the same italic style, but this is hopefully a bug that will
-be corrected in the future~--- the `plain' partial differential should
-really have an upright shape.
-
-Use the |partial=upright| or |partial=italic| package options to specify
-which one you would like, or |partial=literal| to have the same character
-used in the output as was used for the input.
-The default is (always, unless someone requests and
-argues otherwise) |partial=italic|.\footnote{A good argument would revolve
-around some international standards body recommending upright over italic.
-I just don't have the time right now to look it up.} |partial=literal|
-is activated following |math-style=literal|.
-
-See \tabref{partial} for the variations on the partial differential symbol.
-
-
-\subsubsection{Primes}
-
-Primes ($x'$) may be input in several ways. You may use any combination
-the \ascii\ straight quote (\texttt{\char`\'}) or the Unicode prime \unichar{2032}
-($'$); when multiple primes occur next to each other, they chain
-together to form double, triple, or quadruple primes if the font contains
-pre-drawn glyphs. The individual prime glyphs are accessed, as usual,
-with the \cs{prime} command, and the double-, triple-, and quadruple-prime
-glyphs are available with \cs{dprime}, \cs{trprime}, and \cs{qprime},
-respectively.
-
-If the font does not contain the pre-drawn glyphs or more than four primes
-are used, the single prime glyph is used multiple times with a negative
-kern to get the spacing right. There is no user interface to adjust this
-negative kern yet (because I haven't decided what it should look like);
-if you need to, write something like this:
-\begin{Verbatim}
-\ExplSyntaxOn
-\muskip_gset:Nn \g_@@_primekern_muskip { -\thinmuskip/2 }
-\ExplySyntaxOff
-\end{Verbatim}
-Backwards or reverse primes behave in exactly the same way; use the \ascii\
-back tick (\texttt{\char`\`}) or the Unicode reverse prime \unichar{2035}
-({\umfont\char"2035}).
-The command to access the backprime is \cs{backprime}, and
-multiple backwards primes can accessed with \cs{backdprime},
-\cs{backtrprime}, and \cs{backqprime}.
-
-In all cases above, no error checking is performed if you attempt to
-access a multi-prime glyph in a font that doesn't contain one. For this
-reason, it may be safer to write |x''''| instead of |x\qprime|
-in general.
-
-If you ever need to enter the straight quote |'| or the backtick |`| in
-maths mode, these glyphs can be accessed with \cs{mathstraightquote} and
-\cs{mathbacktick}.
-
-\subsubsection{Unicode subscripts and superscripts}
-
-You may, if you wish, use Unicode subscripts and superscripts in your
-source document. For basic expressions, the use of these characters
-can make the input more readable.
-Adjacent sub- or super-scripts will be concatenated into a single
-expression.
-
-The range of subscripts and superscripts supported by this package
-are shown in \figref{superscripts,subscripts}. Please request more if
-you think it is appropriate.
-
-\begin{figure}\centering
-\fbox{\fontspec{CharisSILR.ttf}\Large
-A
-^^^^2070 ^^^^00b9 ^^^^00b2 ^^^^00b3 ^^^^2074 ^^^^2075 ^^^^2076 ^^^^2077
-^^^^2078 ^^^^2079 ^^^^207a ^^^^207b ^^^^207c ^^^^207d ^^^^207e ^^^^2071
-^^^^207f ^^^^207f ^^^^02b0 ^^^^02b2 ^^^^02b3 ^^^^02b7 ^^^^02b8
-Z}
-\caption{
- The Unicode superscripts supported as input characters.
- These are the literal glyphs from Charis SIL,
- not the output seen when used for maths input.
- The `A' and `Z' are to provide context for the size and
- location of the superscript glyphs.
-}
-\figlabel{superscripts}
-\end{figure}
-
-\begin{figure}\centering
-\fbox{\fontspec{CharisSILR.ttf}\Large
-A
-^^^^2080 ^^^^2081 ^^^^2082 ^^^^2083 ^^^^2084 ^^^^2085 ^^^^2086 ^^^^2087
-^^^^2088 ^^^^2089 ^^^^208a ^^^^208b ^^^^208c ^^^^208d ^^^^208e ^^^^2090
-^^^^2091 ^^^^1d62 ^^^^2092 ^^^^1d63 ^^^^1d64 ^^^^1d65 ^^^^2093 ^^^^1d66
-^^^^1d67 ^^^^1d68 ^^^^1d69 ^^^^1d6a
-Z}
-\caption{
- The Unicode subscripts supported as input characters.
- See note from \figref{superscripts}.
-}
-\figlabel{subscripts}
-\end{figure}
-
-\subsubsection{Colon}
-\seclabel{colon}
-
-The colon is one of the few confusing characters of Unicode maths.
-In \TeX, \texttt{:} is defined as a colon with relation spacing: `$a:b$'.
-While \cs{colon} is defined as a colon with punctuation spacing: `$a\colon b$'.
-
-In Unicode, \unichar{003A} {colon} is defined as a punctuation symbol,
-while \unichar{2236} {ratio} is the colon-like symbol used in mathematics to denote
-ratios and other things.
-
-This breaks the usual straightforward mapping from control sequence to Unicode input character
-to (the same) Unicode glyph.
-
-To preserve input compatibility, we remap the \ascii\ input character `\texttt{:}' to \unichar{2236}.
-Typing a literal \unichar{2236} char will result in the same output.
-If \pkg{amsmath} is loaded, then the definition of \cs{colon} is inherited from there
-(it looks like a punctuation colon with additional space around it).
-Otherwise, \cs{colon} is made to output a colon with \cs{mathpunct} spacing.
-
-The package option |colon=literal| forces \ascii\ input `|:|' to be printed as \cs{mathcolon} instead.
-
-
-\subsubsection{Slashes and backslashes}
-\seclabel{slash-delimiter}
-
-There are several slash-like symbols defined in Unicode. The complete list is shown in \tabref{slashes}.
-
-\begin{table}\centering
-\caption{Slashes and backslashes.}
-\tablabel{slashes}
-\begin{tabular}{@{}cl@{}cl@{}}
-\toprule
-Slot & Name & Glyph & Command \\
-\midrule
-\unichar{002F} & \textsc{solidus} & \umfont \char"002F & \cs{slash} \\
-\unichar{2044} & \textsc{fraction slash} & \umfont \char"2044 & \cs{fracslash} \\
-\unichar{2215} & \textsc{division slash} & \umfont \char"2215 & \cs{divslash} \\
-\unichar{29F8} & \textsc{big solidus} & \umfont \char"29F8 & \cs{xsol} \\
-\midrule
-\unichar{005C} & \textsc{reverse solidus} & \umfont \char"005C & \cs{backslash} \\
-\unichar{2216} & \textsc{set minus} & \umfont \char"2216 & \cs{smallsetminus} \\
-\unichar{29F5} & \textsc{reverse solidus operator}& \umfont \char"29F5 & \cs{setminus} \\
-\unichar{29F9} & \textsc{big reverse solidus} & \umfont \char"29F9 & \cs{xbsol} \\
-\bottomrule
-\end{tabular}
-\end{table}
-
-In regular \LaTeX\ we can write \cs{left}\cs{slash}\dots\cs{right}\cs{backslash}
-and so on and obtain extensible delimiter-like symbols. Not all of the Unicode slashes
-are suitable for this (and do not have the font support to do it).
-
-\paragraph{Slash}
-
-Of \unichar{2044} {fraction slash}, TR25 says that it is:
-\begin{quote}
-\dots used to build up simple fractions in running text\dots
-however parsers of mathematical texts should be prepared to handle fraction slash
-when it is received from other sources.
-\end{quote}
-
-\unichar{2215} {division slash} should be used when division is represented
-without a built-up fraction; $\pi\approx22/7$, for example.
-
-\unichar{29F8} {big solidus} is a `big operator' (like $\sum$).
-
-\paragraph{Backslash}
-
-The \unichar{005C} {reverse solidus} character \cs{backslash} is used for denoting
-double cosets: $A\backslash B$. (So I'm led to believe.)
-It may be used as a `stretchy' delimiter if supported by the font.
-
-MathML uses \unichar{2216} {set minus} like this: $A\smallsetminus B$.\footnote{\S4.4.5.11 \url{http://www.w3.org/TR/MathML3/}}
-The \LaTeX\ command name \cs{smallsetminus} is used for backwards compatibility.
-
-Presumably, \unichar{29F5} {reverse solidus operator} is intended to
-be used in a similar way, but it could also (perhaps?) be used to
-represent `inverse division': $\pi\approx7\mathbin{\backslash}22$.^^A
-\footnote{This is valid syntax in the Octave and Matlab programming languages,
-in which it means matrix inverse pre-multiplication. I.e., $A\mathbin{\backslash} B\equiv A^{-1}B$.}
-The \LaTeX\ name for this character is \cs{setminus}.
-
-Finally, \unichar{29F9} {big reverse solidus} is a `big operator' (like $\sum$).
-
-\paragraph{How to use all of these things}
-
-Unfortunately, font support for the above characters/glyphs is rather inconsistent.
-In Cambria Math, the only slash that grows (say when writing
-\[
-\left.\left[\begin{array}{cc} a & b \\ c & d\end{array}\right]\middle\slash
- \left[\begin{array}{cc} 1 & 1 \\ 1 & 0\end{array}\right] \right.\quad )
-\]
-is the \textsc{fraction slash}, which we just established above is
-sort of only supposed to be used in text.
-
-Of the above characters, the following are allowed to be used after
-\cs{left}, \cs{middle}, and \cs{right}:
-\begin{itemize}
-\item \cs{fracslash};
-\item \cs{slash}; and,
-\item \cs{backslash} (the only reverse slash).
-\end{itemize}
-
-However, we assume that there is only \emph{one} stretchy slash
-in the font; this is assumed by default to be \unichar{002F} {solidus}.
-Writing \cs{left/} or \cs{left}\cs{slash} or \cs{left}\cs{fracslash}
-will all result in the same stretchy delimiter being used.
-
-The delimiter used can be changed with the |slash-delimiter| package option.
-Allowed values are |ascii|, |frac|, and |div|, corresponding to the respective
-Unicode slots.
-
-For example: as mentioned above, Cambria Math's stretchy slash is
-\unichar{2044} {fraction slash}. When using Cambria Math, then
-\pkg{unicode-math} should be loaded with the |slash-delimiter=frac| option.
-(This should be a font option rather than a package option, but
-it will change soon.)
-
-
-\subsubsection{Growing and non-growing accents}
-\seclabel{growing-accents}
-
-There are a few accents for which \TeX\ has both non-growing and growing
-versions. Among these are \cs{hat} and \cs{tilde}; the corresponding growing
-versions are called \cs{widehat} and \cs{widetilde}, respectively.
-
-Older versions of \XeTeX\ and \LuaTeX\ did not support this distinction,
-however, and \emph{all} accents there were growing automatically. (I.e.,
-\cs{hat} and \cs{widehat} are equivalent.) As of \LuaTeX\ v0.65 and \XeTeX\
-v0.9998, these wide/non-wide commands will again behave in their expected
-manner.
-
-
-\subsubsection{Pre-drawn fraction characters}
-
-Pre-drawn fractions \unichar{00BC}--\unichar{00BE}, \unichar{2150}--\unichar{215E}
-are not suitable for use in mathematics output. However, they can be useful
-as input characters to abbreviate common fractions.
-\begin{center}
-\fontspec{DejaVuSerif.ttf} ^^A available in TeX Live 2012 if not earlier
-¼ ½ ¾ ↉ ⅐ ⅑ ⅒ ⅓ ⅔ ⅕ ⅖ ⅗ ⅘ ⅙ ⅚ ⅛ ⅜ ⅝ ⅞
-\end{center}
-For example, instead of writing `|\tfrac12 x|', you may consider it more readable to have
-`|½x|' in the source instead.
-
-If the \cs{tfrac} command exists (i.e., if \pkg{amsmath} is loaded or
-you have specially defined \cs{tfrac} for this purpose), it will be used
-to typeset the fractions. If not, regular \cs{frac} will be used. The command
-to use (\cs{tfrac} or \cs{frac}) can be forced either way with the package
-option |active-frac=small| or |active-frac=normalsize|, respectively.
-
-\subsubsection{Circles}
-
-Unicode defines a large number of different types of circles for a variety
-of mathematical purposes. There are thirteen alone just considering the
-all white and all black ones, shown in \tabref{circles}.
-
-\LaTeX\ defines considerably fewer: \cs{circ} and \cs{bigcirc} for white;
-\cs{bullet} for black. This package maps those commands to \cs{vysmwhtcircle},
-\cs{mdlgwhtcircle}, and \cs{smblkcircle}, respectively.
-
-\begin{table}\centering
-\def\showchar#1#2#3{ \textsc{u}+{\small\ttfamily #1} & \texttt{\string#3} & \umfont \char"#1 \\}
-\begin{tabular}{@{}llc@{}}
-\toprule
-Slot & Command & Glyph \\
-\midrule
-\showchar{00B7}{centerdot}{\cdotp}
-\showchar{22C5}{small middle dot}{\cdot}
-\showchar{2219}{bullet operator}{\vysmblkcircle}
-\showchar{2022}{round bullet, filled}{\smblkcircle}
-\showchar{2981}{z notation spot}{\mdsmblkcircle}
-\showchar{26AB}{medium black circle}{\mdblkcircle}
-\showchar{25CF}{circle, filled}{\mdlgblkcircle}
-\showchar{2B24}{black large circle}{\lgblkcircle}
-\bottomrule
-\end{tabular}
-\def\showchar#1#2#3{ \umfont \char"#1 & \texttt{\string#3} & \textsc{u}+{\small\ttfamily #1} \\}
-\begin{tabular}{@{}cll@{}}
-\toprule
-Glyph & Command & Slot \\
-\midrule
-\\
-\\
-\showchar{2218}{composite function (small circle)}{\vysmwhtcircle}
-\showchar{25E6}{white bullet}{\smwhtcircle}
-\showchar{26AC}{medium small white circle}{\mdsmwhtcircle}
-\showchar{26AA}{medium white circle}{\mdwhtcircle}
-\showchar{25CB}{large circle}{\mdlgwhtcircle}
-\showchar{25EF}{large circle}{\lgwhtcircle}
-\bottomrule
-\end{tabular}
-\caption{Filled and hollow Unicode circles.}
-\tablabel{circles}
-\end{table}
-
-\subsubsection{Triangles}
-
-While there aren't as many different sizes of triangle as there are circle,
-there's some important distinctions to make between a few similar characters. See \tabref{uptriangles} for the full summary.
-
-These triangles all have different intended meanings. Note for backwards
-compatibility with \TeX, \unichar{25B3} has \emph{two} different mappings
-in \pkg{unicode-math}. \cs{bigtriangleup} is intended as a binary operator
-whereas \cs{triangle} is intended to be used as a letter-like symbol.
-
-But you're better off if you're using the latter form to indicate an
-increment to use the glyph intended for this purpose, \unichar{2206}: $\increment x$.
-
-Finally, given that $\triangle$ and $\increment$ are provided for you
-already, it is better off to only use upright Greek Delta $\Delta$ if you're
-actually using it as a symbolic entity such as a variable on its own.
-
-\begin{table}\centering
-\begin{tabular}{@{}llcl@{}}
-\toprule
-Slot & Command & Glyph & Class \\
-\midrule
-\unichar{25B5} & \cs{vartriangle} & \umfont \char"25B5 & binary \\
-\unichar{25B3} & \cs{bigtriangleup} & \umfont \char"25B3 & binary \\
-\unichar{25B3} & \cs{triangle} & \umfont \char"25B3 & ordinary \\
-\unichar{2206} & \cs{increment} & \umfont \char"2206 & ordinary \\
-\unichar{0394} & \cs{mathup}\cs{Delta} & \umfont \char"0394 & ordinary \\
-\bottomrule
-\end{tabular}
-\caption{Different upwards pointing triangles.}
-\tablabel{uptriangles}
-\end{table}
-
-\iffalse
-\subsubsection{Normalising some input characters}
-
-I believe
-all variant forms should be used as legal input that is normalised to
-a consistent output glyph, because we want to be fault-tolerant in the input.
-Here are the duplicates:
-\begin{quote}\obeylines
-\unichar {251} {latin small letter alpha}
-\unichar {25B} {latin small letter epsilon}
-\unichar {263} {latin small letter gamma}
-\unichar {269} {latin small letter iota}
-\unichar {278} {latin small letter phi}
-\unichar {28A} {latin small letter upsilon}
-\unichar {190} {latin capital letter epsilon}
-\unichar {194} {latin capital letter gamma}
-\unichar {196} {latin capital letter iota}
-\unichar {1B1} {latin capital letter upsilon}
-\end{quote}
-
-(Not yet implemented.)
-\fi
-
-\section{Advanced}
-
-\subsection{Warning messages}
-
-This package can produce a number of informational messages to try and inform the user when something might be going wrong due to package conflicts or something else.
-As an experimental feature, these can be turn off on an individual basis with the package option |warnings-off| which takes a comma-separated list of warnings to suppress.
-A warning will give you its name when printed on the console output; e.g.,
-\begin{Verbatim}
- * unicode-math warning: "mathtools-colon"
- *
- * ... <warning message> ...
-\end{Verbatim}
-This warning could be suppressed by loading the package as follows:
-\begin{Verbatim}
- \usepackage[warnings-off={mathtools-colon}]{unicode-math}
-\end{Verbatim}
-
-\subsection{Programmer's interface}
-
-(Tentative and under construction.)
-If you are writing some code that needs to know the current
-maths style (\cs{mathbf}, \cs{mathit}, etc.), you can query the
-variable \cs{l_@@_mathstyle_tl}. It will contain the maths style
-without the leading `math' string; for example,
-|\symbf { \show \l_@@_mathstyle_tl }|
-will produce `bf'.
-
-\StopEventually{\end{document}}
-
-\clearpage
-\appendix
-
-\section{\STIX\ table data extraction}\label{part:awk}
-
-The source for the \TeX\ names for the very large number of mathematical
-glyphs are provided via Barbara Beeton's table file for the \STIX\ project
-(|ams.org/STIX|). A version is located at
-|http://www.ams.org/STIX/bnb/stix-tbl.asc|
-but check |http://www.ams.org/STIX/| for more up-to-date info.
-
-This table is converted into a form suitable for reading by \TeX.
-A single file is produced containing all (more than 3298) symbols.
-Future optimisations might include generating various (possibly overlapping) subsets
-so not all definitions must be read just to redefine a small range of symbols.
-Performance for now seems to be acceptable without such measures.
-
-This file is currently developed outside this DTX file. It will be
-incorporated when the final version is ready. (I know this is not how
-things are supposed to work!)
-
-
-\section{Documenting maths support in the NFSS}
-
-In the following, \meta{NFSS decl.} stands for something like |{T1}{lmr}{m}{n}|.
-
-\begin{description}
-\item[Maths symbol fonts] Fonts for symbols: $\propto$, $\leq$, $\rightarrow$
-
-\cmd\DeclareSymbolFont\marg{name}\meta{NFSS decl.}\\
-Declares a named maths font such as |operators| from which symbols are defined with \cmd\DeclareMathSymbol.
-
-\item[Maths alphabet fonts] Fonts for {\font\1=cmmi10 at 10pt\1 ABC}\,–\,{\font\1=cmmi10 at 10pt\1 xyz}, {\font\1=eufm10 at 10pt\1 ABC}\,–\,{\font\1=cmsy10 at 10pt\1 XYZ}, etc.
-
-\cmd\DeclareMathAlphabet\marg{cmd}\meta{NFSS decl.}
-
-For commands such as \cmd\mathbf, accessed
-through maths mode that are unaffected by the current text font, and which are used for
-alphabetic symbols in the \ascii\ range.
-
-\cmd\DeclareSymbolFontAlphabet\marg{cmd}\marg{name}
-
-Alternative (and optimisation) for \cmd\DeclareMathAlphabet\ if a single font is being used
-for both alphabetic characters (as above) and symbols.
-
-\item[Maths `versions'] Different maths weights can be defined with the following, switched
-in text with the \cmd\mathversion\marg{maths version} command.
-
-\cmd\SetSymbolFont\marg{name}\marg{maths version}\meta{NFSS decl.}\\
-\cmd\SetMathAlphabet\marg{cmd}\marg{maths version}\meta{NFSS decl.}
-
-\item[Maths symbols] Symbol definitions in maths for both characters (=) and macros (\cmd\eqdef):
-\cmd\DeclareMathSymbol\marg{symbol}\marg{type}\marg{named font}\marg{slot}
-This is the macro that actually defines which font each symbol comes from and how they behave.
-\end{description}
-Delimiters and radicals use wrappers around \TeX's \cmd\delimiter/\cmd\radical\ primitives,
-which are re-designed in \XeTeX. The syntax used in \LaTeX's NFSS is therefore not so relevant here.
-\begin{description}
-\item[Delimiters] A special class of maths symbol which enlarge themselves in certain contexts.
-
-\cmd\DeclareMathDelimiter\marg{symbol}\marg{type}\marg{sym.\ font}\marg{slot}\marg{sym.\ font}\marg{slot}
-
-\item[Radicals] Similar to delimiters (\cmd\DeclareMathRadical\ takes the same syntax) but
-behave `weirdly'.
-\end{description}
-In those cases, glyph slots in \emph{two} symbol fonts are required; one for the small (`regular') case,
-the other for situations when the glyph is larger. This is not the case in \XeTeX.
-
-Accents are not included yet.
-
-\paragraph{Summary}
-
-For symbols, something like:
-\begin{Verbatim}
-\def\DeclareMathSymbol#1#2#3#4{
- \global\mathchardef#1"\mathchar at type#2
- \expandafter\hexnumber@\csname sym#2\endcsname
- {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}}
-\end{Verbatim}
-For characters, something like:
-\begin{Verbatim}
-\def\DeclareMathSymbol#1#2#3#4{
- \global\mathcode`#1"\mathchar at type#2
- \expandafter\hexnumber@\csname sym#2\endcsname
- {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}}
-\end{Verbatim}
-
-\section{Legacy \TeX\ font dimensions}
-
-\centerline{%
-\begin{tabular}[t]{@{}lp{4cm}@{}}
-\toprule
-\multicolumn{2}{@{}c@{}}{Text fonts} \\
-\midrule
-$\phi_1$ & slant per pt \\
-$\phi_2$ & interword space \\
-$\phi_3$ & interword stretch \\
-$\phi_4$ & interword shrink \\
-$\phi_5$ & x-height \\
-$\phi_6$ & quad width \\
-$\phi_7$ & extra space \\
-$\phi_8$ & cap height (\XeTeX\ only) \\
-\bottomrule
-\end{tabular}
-\quad
-\begin{tabular}[t]{@{}lp{4cm}@{}}
-\toprule
-\multicolumn{2}{@{}c@{}}{Maths font, \cs{fam}2} \\
-\midrule
-$\sigma_5$ & x height \\
-$\sigma_6$ & quad \\
-$\sigma_8$ & num1 \\
-$\sigma_9$ & num2 \\
-$\sigma_{10}$ & num3 \\
-$\sigma_{11}$ & denom1 \\
-$\sigma_{12}$ & denom2 \\
-$\sigma_{13}$ & sup1 \\
-$\sigma_{14}$ & sup2 \\
-$\sigma_{15}$ & sup3 \\
-$\sigma_{16}$ & sub1 \\
-$\sigma_{17}$ & sub2 \\
-$\sigma_{18}$ & sup drop \\
-$\sigma_{19}$ & sub drop \\
-$\sigma_{20}$ & delim1 \\
-$\sigma_{21}$ & delim2 \\
-$\sigma_{22}$ & axis height \\
-\bottomrule
-\end{tabular}
-\quad
-\begin{tabular}[t]{@{}lp{4cm}@{}}
-\toprule
-\multicolumn{2}{@{}c@{}}{Maths font, \cs{fam}3} \\
-\midrule
-$\xi_8$ & default rule thickness \\
-$\xi_9$ & big op spacing1 \\
-$\xi_{10}$ & big op spacing2 \\
-$\xi_{11}$ & big op spacing3 \\
-$\xi_{12}$ & big op spacing4 \\
-$\xi_{13}$ & big op spacing5 \\
-\bottomrule
-\end{tabular}
-}
-
-
-\section{\Hologo{XeTeX} math font dimensions}
-
-These are the extended \cmd\fontdimen s available for suitable fonts
-in \XeTeX. Note that Lua\TeX\ takes an alternative route, and this package
-will eventually provide a wrapper interface to the two (I hope).
-
-\newcounter{mfdimen}
-\setcounter{mfdimen}{9}
-\newcommand\mathfontdimen[2]{^^A
- \stepcounter{mfdimen}^^A
- \themfdimen & {\scshape\small #1} & #2\vspace{0.5ex} \tabularnewline}
-
-\begin{longtable}{
- @{}c>{\raggedright\parfillskip=0pt}p{4cm}>{\raggedright}p{7cm}@{}}
-\toprule \cmd\fontdimen & Dimension name & Description\tabularnewline\midrule \endhead
-\bottomrule\endfoot
-\mathfontdimen{Script\-Percent\-Scale\-Down}
-{Percentage of scaling down for script level 1. Suggested value: 80\%.}
-\mathfontdimen{Script\-Script\-Percent\-Scale\-Down}
-{Percentage of scaling down for script level 2 (Script\-Script). Suggested value: 60\%.}
-\mathfontdimen{Delimited\-Sub\-Formula\-Min\-Height}
-{Minimum height required for a delimited expression to be treated as a subformula. Suggested value: normal line height\,×\,1.5.}
-\mathfontdimen{Display\-Operator\-Min\-Height}
-{Minimum height of n-ary operators (such as integral and summation) for formulas in display mode.}
-\mathfontdimen{Math\-Leading}
-{White space to be left between math formulas to ensure proper line spacing. For example, for applications that treat line gap as a part of line ascender, formulas with ink going above (os2.sTypoAscender + os2.sTypoLineGap – MathLeading) or with ink going below os2.sTypoDescender will result in increasing line height.}
-\mathfontdimen{Axis\-Height}
-{Axis height of the font. }
-\mathfontdimen{Accent\-Base\-Height}
-{Maximum (ink) height of accent base that does not require raising the accents. Suggested: x-height of the font (os2.sxHeight) plus any possible overshots. }
-\mathfontdimen{Flattened\-Accent\-Base\-Height}
-{Maximum (ink) height of accent base that does not require flattening the accents. Suggested: cap height of the font (os2.sCapHeight).}
-\mathfontdimen{Subscript\-Shift\-Down}
-{The standard shift down applied to subscript elements. Positive for moving in the downward direction. Suggested: os2.ySubscriptYOffset.}
-\mathfontdimen{Subscript\-Top\-Max}
-{Maximum allowed height of the (ink) top of subscripts that does not require moving subscripts further down. Suggested: /5 x-height.}
-\mathfontdimen{Subscript\-Baseline\-Drop\-Min}
-{Minimum allowed drop of the baseline of subscripts relative to the (ink) bottom of the base. Checked for bases that are treated as a box or extended shape. Positive for subscript baseline dropped below the base bottom.}
-\mathfontdimen{Superscript\-Shift\-Up}
-{Standard shift up applied to superscript elements. Suggested: os2.ySuperscriptYOffset.}
-\mathfontdimen{Superscript\-Shift\-Up\-Cramped}
-{Standard shift of superscripts relative to the base, in cramped style.}
-\mathfontdimen{Superscript\-Bottom\-Min}
-{Minimum allowed height of the (ink) bottom of superscripts that does not require moving subscripts further up. Suggested: ¼ x-height.}
-\mathfontdimen{Superscript\-Baseline\-Drop\-Max}
-{Maximum allowed drop of the baseline of superscripts relative to the (ink) top of the base. Checked for bases that are treated as a box or extended shape. Positive for superscript baseline below the base top.}
-\mathfontdimen{Sub\-Superscript\-Gap\-Min}
-{Minimum gap between the superscript and subscript ink. Suggested: 4×default rule thickness.}
-\mathfontdimen{Superscript\-Bottom\-Max\-With\-Subscript}
-{The maximum level to which the (ink) bottom of superscript can be pushed to increase the gap between superscript and subscript, before subscript starts being moved down.
-Suggested: /5 x-height.}
-\mathfontdimen{Space\-After\-Script}
-{Extra white space to be added after each subscript and superscript. Suggested: 0.5pt for a 12 pt font.}
-\mathfontdimen{Upper\-Limit\-Gap\-Min}
-{Minimum gap between the (ink) bottom of the upper limit, and the (ink) top of the base operator. }
-\mathfontdimen{Upper\-Limit\-Baseline\-Rise\-Min}
-{Minimum distance between baseline of upper limit and (ink) top of the base operator.}
-\mathfontdimen{Lower\-Limit\-Gap\-Min}
-{Minimum gap between (ink) top of the lower limit, and (ink) bottom of the base operator.}
-\mathfontdimen{Lower\-Limit\-Baseline\-Drop\-Min}
-{Minimum distance between baseline of the lower limit and (ink) bottom of the base operator.}
-\mathfontdimen{Stack\-Top\-Shift\-Up}
-{Standard shift up applied to the top element of a stack.}
-\mathfontdimen{Stack\-Top\-Display\-Style\-Shift\-Up}
-{Standard shift up applied to the top element of a stack in display style.}
-\mathfontdimen{Stack\-Bottom\-Shift\-Down}
-{Standard shift down applied to the bottom element of a stack. Positive for moving in the downward direction.}
-\mathfontdimen{Stack\-Bottom\-Display\-Style\-Shift\-Down}
-{Standard shift down applied to the bottom element of a stack in display style. Positive for moving in the downward direction.}
-\mathfontdimen{Stack\-Gap\-Min}
-{Minimum gap between (ink) bottom of the top element of a stack, and the (ink) top of the bottom element. Suggested: 3×default rule thickness.}
-\mathfontdimen{Stack\-Display\-Style\-Gap\-Min}
-{Minimum gap between (ink) bottom of the top element of a stack, and the (ink) top of the bottom element in display style. Suggested: 7×default rule thickness.}
-\mathfontdimen{Stretch\-Stack\-Top\-Shift\-Up}
-{Standard shift up applied to the top element of the stretch stack.}
-\mathfontdimen{Stretch\-Stack\-Bottom\-Shift\-Down}
-{Standard shift down applied to the bottom element of the stretch stack. Positive for moving in the downward direction.}
-\mathfontdimen{Stretch\-Stack\-Gap\-Above\-Min}
-{Minimum gap between the ink of the stretched element, and the (ink) bottom of the element above. Suggested: Upper\-Limit\-Gap\-Min}
-\mathfontdimen{Stretch\-Stack\-Gap\-Below\-Min}
-{Minimum gap between the ink of the stretched element, and the (ink) top of the element below. Suggested: Lower\-Limit\-Gap\-Min.}
-\mathfontdimen{Fraction\-Numerator\-Shift\-Up}
-{Standard shift up applied to the numerator. }
-\mathfontdimen{Fraction\-Numerator\-Display\-Style\-Shift\-Up}
-{Standard shift up applied to the numerator in display style. Suggested: Stack\-Top\-Display\-Style\-Shift\-Up.}
-\mathfontdimen{Fraction\-Denominator\-Shift\-Down}
-{Standard shift down applied to the denominator. Positive for moving in the downward direction.}
-\mathfontdimen{Fraction\-Denominator\-Display\-Style\-Shift\-Down}
-{Standard shift down applied to the denominator in display style. Positive for moving in the downward direction. Suggested: Stack\-Bottom\-Display\-Style\-Shift\-Down.}
-\mathfontdimen{Fraction\-Numerator\-Gap\-Min}
-{Minimum tolerated gap between the (ink) bottom of the numerator and the ink of the fraction bar. Suggested: default rule thickness}
-\mathfontdimen{Fraction\-Num\-Display\-Style\-Gap\-Min}
-{Minimum tolerated gap between the (ink) bottom of the numerator and the ink of the fraction bar in display style. Suggested: 3×default rule thickness.}
-\mathfontdimen{Fraction\-Rule\-Thickness}
-{Thickness of the fraction bar. Suggested: default rule thickness.}
-\mathfontdimen{Fraction\-Denominator\-Gap\-Min}
-{Minimum tolerated gap between the (ink) top of the denominator and the ink of the fraction bar. Suggested: default rule thickness}
-\mathfontdimen{Fraction\-Denom\-Display\-Style\-Gap\-Min}
-{Minimum tolerated gap between the (ink) top of the denominator and the ink of the fraction bar in display style. Suggested: 3×default rule thickness.}
-\mathfontdimen{Skewed\-Fraction\-Horizontal\-Gap}
-{Horizontal distance between the top and bottom elements of a skewed fraction.}
-\mathfontdimen{Skewed\-Fraction\-Vertical\-Gap}
-{Vertical distance between the ink of the top and bottom elements of a skewed fraction.}
-\mathfontdimen{Overbar\-Vertical\-Gap}
-{Distance between the overbar and the (ink) top of he base. Suggested: 3×default rule thickness.}
-\mathfontdimen{Overbar\-Rule\-Thickness}
-{Thickness of overbar. Suggested: default rule thickness.}
-\mathfontdimen{Overbar\-Extra\-Ascender}
-{Extra white space reserved above the overbar. Suggested: default rule thickness.}
-\mathfontdimen{Underbar\-Vertical\-Gap}
-{Distance between underbar and (ink) bottom of the base. Suggested: 3×default rule thickness.}
-\mathfontdimen{Underbar\-Rule\-Thickness}
-{Thickness of underbar. Suggested: default rule thickness.}
-\mathfontdimen{Underbar\-Extra\-Descender}
-{Extra white space reserved below the underbar. Always positive. Suggested: default rule thickness.}
-\mathfontdimen{Radical\-Vertical\-Gap}
-{Space between the (ink) top of the expression and the bar over it. Suggested: 1¼ default rule thickness.}
-\mathfontdimen{Radical\-Display\-Style\-Vertical\-Gap}
-{Space between the (ink) top of the expression and the bar over it. Suggested: default rule thickness + ¼ x-height. }
-\mathfontdimen{Radical\-Rule\-Thickness}
-{Thickness of the radical rule. This is the thickness of the rule in designed or constructed radical signs. Suggested: default rule thickness.}
-\mathfontdimen{Radical\-Extra\-Ascender}
-{Extra white space reserved above the radical. Suggested: Radical\-Rule\-Thickness.}
-\mathfontdimen{Radical\-Kern\-Before\-Degree}
-{Extra horizontal kern before the degree of a radical, if such is present. Suggested: 5/18 of em.}
-\mathfontdimen{Radical\-Kern\-After\-Degree}
-{Negative kern after the degree of a radical, if such is present. Suggested: −10/18 of em.}
-\mathfontdimen{Radical\-Degree\-Bottom\-Raise\-Percent}
-{Height of the bottom of the radical degree, if such is present, in proportion to the ascender of the radical sign. Suggested: 60\%.}
-\end{longtable}
-
-\def\DTX#1{\gdef\DTXCURR{#1}\DocInput{#1}}
-\DTXFILES
-
-\end{document}
-
-
-
Modified: trunk/Master/texmf-dist/doc/latex/unicode-math/unicode-math.pdf
===================================================================
(Binary files differ)
Deleted: trunk/Master/texmf-dist/doc/latex/unicode-math/unimath-example.ltx
===================================================================
--- trunk/Master/texmf-dist/doc/latex/unicode-math/unimath-example.ltx 2017-11-18 01:22:09 UTC (rev 45844)
+++ trunk/Master/texmf-dist/doc/latex/unicode-math/unimath-example.ltx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -1,48 +0,0 @@
-
-%%%%%%%%%%%%%%%%%%%%%%%
-% UNICODE-MATH EXAMPLE FILE
-%%%%%%%%%%%%%%%%%%%%%%%
-
-\documentclass{article}
-
-% Load fontspec and define a document font:
-\usepackage{fontspec}
-\setmainfont{TeX Gyre Pagella}
-
-% Load unicode-math and define a math font:
-\usepackage{unicode-math}
-\setmathfont{texgyrepagella-math.otf}
-
-\begin{document}
-\title{An example of \textsf{unicode-math}}
-\author{Will Robertson\\\texttt{wspr81 at gmail.com}}
-\maketitle
-
-This is an example of the \textsf{unicode-math} package.
-It allows you to write maths with Unicode input and to use fonts that contain Unicode mathematical glyphs. Follow along in the source code to see how it works.
-
-After loading the package and selecting a font, you shouldn't need to change much to continue to write maths as always.
-\[
- F(s)=\mathscr L \{f(t)\}=\int_0^\infty \mathrm e^{-st}f(t)\,\mathrm d t
-\]
-
-The style of Latin and Greek letters is set up by default to match the output of standard \LaTeX: Latin letters and Greek lowercase letters are italic, and Greek uppercase letters are upright. These can be configured with the \texttt{math-style} package option.
-
-One very important feature to recognise is that bold maths now works consistently for both Latin and Greek letters. By default, \verb|\mathbf| will turn a Latin letter bold and upright, and a Greek letter will remain italic and also become bold. For example:
-\[
- \mathbf{a} = a\,\mathbf{I} \qquad \mathbf{\beta} = \beta\,\mathbf{I}
-\]
-This behaviour can be configured with the \texttt{bold-style} package option.
-
-In the examples above, I've used \LaTeX\ commands to input characters like \verb|\beta|, \verb|\infty|, and so on. These may now be typed directly into the source of the document:
-\[
- 𝐉 = ∇×𝐇 \qquad 𝐁 = μ₀(𝐌 + 𝐇)
-\]
-\[
- ∫₀³ xⁿφ₁₂(x)\,ⅆx
-\]
-It does not matter if you use upright or italic characters; they will be normalised according to the setting of the \texttt{math-style} and \texttt{bold-style} options.
-
-And that's a brief introduction to the package. Please see the documentation for further details. This is a new package; feedback, suggestions, and bug reports are all most welcome.
-
-\end{document}
Added: trunk/Master/texmf-dist/doc/latex/unicode-math/unimath-example.pdf
===================================================================
(Binary files differ)
Index: trunk/Master/texmf-dist/doc/latex/unicode-math/unimath-example.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/unicode-math/unimath-example.pdf 2017-11-18 01:22:09 UTC (rev 45844)
+++ trunk/Master/texmf-dist/doc/latex/unicode-math/unimath-example.pdf 2017-11-18 21:45:46 UTC (rev 45845)
Property changes on: trunk/Master/texmf-dist/doc/latex/unicode-math/unimath-example.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Deleted: trunk/Master/texmf-dist/doc/latex/unicode-math/unimath-symbols.ltx
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/unicode-math/unimath-symbols.pdf
===================================================================
(Binary files differ)
Added: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-alphabets.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-alphabets.dtx (rev 0)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-alphabets.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -0,0 +1,925 @@
+%%^^A%% um-code-alphabets.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+% \section{Setting up alphabets}
+% \label{sec:setupalphabets}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+%
+% \subsection{Upright: up}
+%
+% \begin{macrocode}
+\@@_new_alphabet_config:nnn {up} {num}
+ {
+ \@@_set_normal_numbers:nn {up} {#1}
+ \@@_set_mathalphabet_numbers:nnn {up} {up} {#1}
+ }
+
+\@@_new_alphabet_config:nnn {up} {Latin}
+ {
+ \bool_if:NTF \g_@@_literal_bool { \@@_set_normal_Latin:nn {up} {#1} }
+ {
+ \bool_if:NT \g_@@_upLatin_bool { \@@_set_normal_Latin:nn {up,it} {#1} }
+ }
+ \@@_set_mathalphabet_Latin:nnn {up} {up,it} {#1}
+ \@@_set_mathalphabet_Latin:nnn {literal} {up} {up}
+ \@@_set_mathalphabet_Latin:nnn {literal} {it} {it}
+ }
+
+\@@_new_alphabet_config:nnn {up} {latin}
+ {
+ \bool_if:NTF \g_@@_literal_bool { \@@_set_normal_latin:nn {up} {#1} }
+ {
+ \bool_if:NT \g_@@_uplatin_bool
+ {
+ \@@_set_normal_latin:nn {up,it} {#1}
+ \@@_set_normal_char:nnn {h} {up,it} {#1}
+ \@@_set_normal_char:nnn {dotlessi} {up,it} {#1}
+ \@@_set_normal_char:nnn {dotlessj} {up,it} {#1}
+ }
+ }
+ \@@_set_mathalphabet_latin:nnn {up} {up,it}{#1}
+ \@@_set_mathalphabet_latin:nnn {literal} {up} {up}
+ \@@_set_mathalphabet_latin:nnn {literal} {it} {it}
+ }
+
+\@@_new_alphabet_config:nnn {up} {Greek}
+ {
+ \bool_if:NTF \g_@@_literal_bool { \@@_set_normal_Greek:nn {up}{#1} }
+ {
+ \bool_if:NT \g_@@_upGreek_bool { \@@_set_normal_Greek:nn {up,it}{#1} }
+ }
+ \@@_set_mathalphabet_Greek:nnn {up} {up,it}{#1}
+ \@@_set_mathalphabet_Greek:nnn {literal} {up} {up}
+ \@@_set_mathalphabet_Greek:nnn {literal} {it} {it}
+ }
+
+\@@_new_alphabet_config:nnn {up} {greek}
+ {
+ \bool_if:NTF \g_@@_literal_bool { \@@_set_normal_greek:nn {up} {#1} }
+ {
+ \bool_if:NT \g_@@_upgreek_bool
+ {
+ \@@_set_normal_greek:nn {up,it} {#1}
+ }
+ }
+ \@@_set_mathalphabet_greek:nnn {up} {up,it} {#1}
+ \@@_set_mathalphabet_greek:nnn {literal} {up} {up}
+ \@@_set_mathalphabet_greek:nnn {literal} {it} {it}
+ }
+
+\@@_new_alphabet_config:nnn {up} {misc}
+ {
+ \bool_if:NTF \g_@@_literal_Nabla_bool
+ {
+ \@@_set_normal_char:nnn {Nabla}{up}{up}
+ }
+ {
+ \bool_if:NT \g_@@_upNabla_bool
+ {
+ \@@_set_normal_char:nnn {Nabla}{up,it}{up}
+ }
+ }
+ \bool_if:NTF \g_@@_literal_partial_bool
+ {
+ \@@_set_normal_char:nnn {partial}{up}{up}
+ }
+ {
+ \bool_if:NT \g_@@_uppartial_bool
+ {
+ \@@_set_normal_char:nnn {partial}{up,it}{up}
+ }
+ }
+ \@@_set_mathalphabet_pos:nnnn {up} {partial} {up,it} {#1}
+ \@@_set_mathalphabet_pos:nnnn {up} {Nabla} {up,it} {#1}
+ \@@_set_mathalphabet_pos:nnnn {up} {dotlessi} {up,it} {#1}
+ \@@_set_mathalphabet_pos:nnnn {up} {dotlessj} {up,it} {#1}
+ }
+% \end{macrocode}
+%
+% \subsection{Italic: it}
+%
+% \begin{macrocode}
+\@@_new_alphabet_config:nnn {it} {Latin}
+ {
+ \bool_if:NTF \g_@@_literal_bool { \@@_set_normal_Latin:nn {it} {#1} }
+ {
+ \bool_if:NF \g_@@_upLatin_bool { \@@_set_normal_Latin:nn {up,it} {#1} }
+ }
+ \@@_set_mathalphabet_Latin:nnn {it}{up,it}{#1}
+ }
+
+\@@_new_alphabet_config:nnn {it} {latin}
+ {
+ \bool_if:NTF \g_@@_literal_bool
+ {
+ \@@_set_normal_latin:nn {it} {#1}
+ \@@_set_normal_char:nnn {h}{it}{#1}
+ }
+ {
+ \bool_if:NF \g_@@_uplatin_bool
+ {
+ \@@_set_normal_latin:nn {up,it} {#1}
+ \@@_set_normal_char:nnn {h}{up,it}{#1}
+ \@@_set_normal_char:nnn {dotlessi}{up,it}{#1}
+ \@@_set_normal_char:nnn {dotlessj}{up,it}{#1}
+ }
+ }
+ \@@_set_mathalphabet_latin:nnn {it} {up,it} {#1}
+ \@@_set_mathalphabet_pos:nnnn {it} {dotlessi} {up,it} {#1}
+ \@@_set_mathalphabet_pos:nnnn {it} {dotlessj} {up,it} {#1}
+ }
+
+\@@_new_alphabet_config:nnn {it} {Greek}
+ {
+ \bool_if:NTF \g_@@_literal_bool
+ {
+ \@@_set_normal_Greek:nn {it}{#1}
+ }
+ {
+ \bool_if:NF \g_@@_upGreek_bool { \@@_set_normal_Greek:nn {up,it}{#1} }
+ }
+ \@@_set_mathalphabet_Greek:nnn {it} {up,it}{#1}
+ }
+
+\@@_new_alphabet_config:nnn {it} {greek}
+ {
+ \bool_if:NTF \g_@@_literal_bool
+ {
+ \@@_set_normal_greek:nn {it} {#1}
+ }
+ {
+ \bool_if:NF \g_@@_upgreek_bool { \@@_set_normal_greek:nn {it,up} {#1} }
+ }
+ \@@_set_mathalphabet_greek:nnn {it} {up,it} {#1}
+ }
+
+\@@_new_alphabet_config:nnn {it} {misc}
+ {
+ \bool_if:NTF \g_@@_literal_Nabla_bool
+ {
+ \@@_set_normal_char:nnn {Nabla}{it}{it}
+ }
+ {
+ \bool_if:NF \g_@@_upNabla_bool
+ {
+ \@@_set_normal_char:nnn {Nabla}{up,it}{it}
+ }
+ }
+ \bool_if:NTF \g_@@_literal_partial_bool
+ {
+ \@@_set_normal_char:nnn {partial}{it}{it}
+ }
+ {
+ \bool_if:NF \g_@@_uppartial_bool
+ {
+ \@@_set_normal_char:nnn {partial}{up,it}{it}
+ }
+ }
+ \@@_set_mathalphabet_pos:nnnn {it} {partial} {up,it}{#1}
+ \@@_set_mathalphabet_pos:nnnn {it} {Nabla} {up,it}{#1}
+ }
+% \end{macrocode}
+%
+% \subsection{Blackboard or double-struck: bb and bbit}
+%
+% \begin{macrocode}
+\@@_new_alphabet_config:nnn {bb} {latin}
+ {
+ \@@_set_mathalphabet_latin:nnn {bb} {up,it}{#1}
+ }
+
+\@@_new_alphabet_config:nnn {bb} {Latin}
+ {
+ \@@_set_mathalphabet_Latin:nnn {bb} {up,it}{#1}
+ \@@_set_mathalphabet_pos:nnnn {bb} {C} {up,it} {#1}
+ \@@_set_mathalphabet_pos:nnnn {bb} {H} {up,it} {#1}
+ \@@_set_mathalphabet_pos:nnnn {bb} {N} {up,it} {#1}
+ \@@_set_mathalphabet_pos:nnnn {bb} {P} {up,it} {#1}
+ \@@_set_mathalphabet_pos:nnnn {bb} {Q} {up,it} {#1}
+ \@@_set_mathalphabet_pos:nnnn {bb} {R} {up,it} {#1}
+ \@@_set_mathalphabet_pos:nnnn {bb} {Z} {up,it} {#1}
+ }
+
+\@@_new_alphabet_config:nnn {bb} {num}
+ {
+ \@@_set_mathalphabet_numbers:nnn {bb} {up}{#1}
+ }
+
+\@@_new_alphabet_config:nnn {bb} {misc}
+ {
+ \@@_set_mathalphabet_pos:nnnn {bb} {Pi} {up,it} {#1}
+ \@@_set_mathalphabet_pos:nnnn {bb} {pi} {up,it} {#1}
+ \@@_set_mathalphabet_pos:nnnn {bb} {Gamma} {up,it} {#1}
+ \@@_set_mathalphabet_pos:nnnn {bb} {gamma} {up,it} {#1}
+ \@@_set_mathalphabet_pos:nnnn {bb} {summation} {up} {#1}
+ }
+
+\@@_new_alphabet_config:nnn {bbit} {misc}
+ {
+ \@@_set_mathalphabet_pos:nnnn {bbit} {D} {up,it} {#1}
+ \@@_set_mathalphabet_pos:nnnn {bbit} {d} {up,it} {#1}
+ \@@_set_mathalphabet_pos:nnnn {bbit} {e} {up,it} {#1}
+ \@@_set_mathalphabet_pos:nnnn {bbit} {i} {up,it} {#1}
+ \@@_set_mathalphabet_pos:nnnn {bbit} {j} {up,it} {#1}
+ }
+% \end{macrocode}
+%
+% \subsection{Script and caligraphic: scr and cal}
+%
+% \begin{macrocode}
+\@@_new_alphabet_config:nnn {scr} {Latin}
+ {
+ \@@_set_mathalphabet_Latin:nnn {scr} {up,it}{#1}
+ \@@_set_mathalphabet_pos:nnnn {scr} {B}{up,it}{#1}
+ \@@_set_mathalphabet_pos:nnnn {scr} {E}{up,it}{#1}
+ \@@_set_mathalphabet_pos:nnnn {scr} {F}{up,it}{#1}
+ \@@_set_mathalphabet_pos:nnnn {scr} {H}{up,it}{#1}
+ \@@_set_mathalphabet_pos:nnnn {scr} {I}{up,it}{#1}
+ \@@_set_mathalphabet_pos:nnnn {scr} {L}{up,it}{#1}
+ \@@_set_mathalphabet_pos:nnnn {scr} {M}{up,it}{#1}
+ \@@_set_mathalphabet_pos:nnnn {scr} {R}{up,it}{#1}
+ }
+
+\@@_new_alphabet_config:nnn {scr} {latin}
+ {
+ \@@_set_mathalphabet_latin:nnn {scr} {up,it}{#1}
+ \@@_set_mathalphabet_pos:nnnn {scr} {e}{up,it}{#1}
+ \@@_set_mathalphabet_pos:nnnn {scr} {g}{up,it}{#1}
+ \@@_set_mathalphabet_pos:nnnn {scr} {o}{up,it}{#1}
+ }
+% \end{macrocode}
+% These are by default synonyms for the above, but with the STIX
+% fonts we want to use the alternate alphabet.
+% \begin{macrocode}
+\@@_new_alphabet_config:nnn {cal} {Latin}
+ {
+ \@@_set_mathalphabet_Latin:nnn {cal} {up,it}{#1}
+ \@@_set_mathalphabet_pos:nnnn {cal} {B}{up,it}{#1}
+ \@@_set_mathalphabet_pos:nnnn {cal} {E}{up,it}{#1}
+ \@@_set_mathalphabet_pos:nnnn {cal} {F}{up,it}{#1}
+ \@@_set_mathalphabet_pos:nnnn {cal} {H}{up,it}{#1}
+ \@@_set_mathalphabet_pos:nnnn {cal} {I}{up,it}{#1}
+ \@@_set_mathalphabet_pos:nnnn {cal} {L}{up,it}{#1}
+ \@@_set_mathalphabet_pos:nnnn {cal} {M}{up,it}{#1}
+ \@@_set_mathalphabet_pos:nnnn {cal} {R}{up,it}{#1}
+ }
+% \end{macrocode}
+%
+% \subsection{Fractur or fraktur or blackletter: frak}
+%
+% \begin{macrocode}
+\@@_new_alphabet_config:nnn {frak} {Latin}
+ {
+ \@@_set_mathalphabet_Latin:nnn {frak} {up,it}{#1}
+ \@@_set_mathalphabet_pos:nnnn {frak} {C}{up,it}{#1}
+ \@@_set_mathalphabet_pos:nnnn {frak} {H}{up,it}{#1}
+ \@@_set_mathalphabet_pos:nnnn {frak} {I}{up,it}{#1}
+ \@@_set_mathalphabet_pos:nnnn {frak} {R}{up,it}{#1}
+ \@@_set_mathalphabet_pos:nnnn {frak} {Z}{up,it}{#1}
+ }
+\@@_new_alphabet_config:nnn {frak} {latin}
+ {
+ \@@_set_mathalphabet_latin:nnn {frak} {up,it}{#1}
+ }
+% \end{macrocode}
+%
+% \subsection{Sans serif upright: sfup}
+% \begin{macrocode}
+\@@_new_alphabet_config:nnn {sfup} {num}
+ {
+ \@@_set_mathalphabet_numbers:nnn {sf} {up}{#1}
+ \@@_set_mathalphabet_numbers:nnn {sfup} {up}{#1}
+ }
+\@@_new_alphabet_config:nnn {sfup} {Latin}
+ {
+ \bool_if:NTF \g_@@_sfliteral_bool
+ {
+ \@@_set_normal_Latin:nn {sfup} {#1}
+ \@@_set_mathalphabet_Latin:nnn {sf} {up}{#1}
+ }
+ {
+ \bool_if:NT \g_@@_upsans_bool
+ {
+ \@@_set_normal_Latin:nn {sfup,sfit} {#1}
+ \@@_set_mathalphabet_Latin:nnn {sf} {up,it}{#1}
+ }
+ }
+ \@@_set_mathalphabet_Latin:nnn {sfup} {up,it}{#1}
+ }
+\@@_new_alphabet_config:nnn {sfup} {latin}
+ {
+ \bool_if:NTF \g_@@_sfliteral_bool
+ {
+ \@@_set_normal_latin:nn {sfup} {#1}
+ \@@_set_mathalphabet_latin:nnn {sf} {up}{#1}
+ }
+ {
+ \bool_if:NT \g_@@_upsans_bool
+ {
+ \@@_set_normal_latin:nn {sfup,sfit} {#1}
+ \@@_set_mathalphabet_latin:nnn {sf} {up,it}{#1}
+ }
+ }
+ \@@_set_mathalphabet_latin:nnn {sfup} {up,it}{#1}
+ }
+% \end{macrocode}
+%
+% \subsection{Sans serif italic: sfit}
+%
+% \begin{macrocode}
+\@@_new_alphabet_config:nnn {sfit} {Latin}
+ {
+ \bool_if:NTF \g_@@_sfliteral_bool
+ {
+ \@@_set_normal_Latin:nn {sfit} {#1}
+ \@@_set_mathalphabet_Latin:nnn {sf} {it}{#1}
+ }
+ {
+ \bool_if:NF \g_@@_upsans_bool
+ {
+ \@@_set_normal_Latin:nn {sfup,sfit} {#1}
+ \@@_set_mathalphabet_Latin:nnn {sf} {up,it}{#1}
+ }
+ }
+ \@@_set_mathalphabet_Latin:nnn {sfit} {up,it}{#1}
+ }
+\@@_new_alphabet_config:nnn {sfit} {latin}
+ {
+ \bool_if:NTF \g_@@_sfliteral_bool
+ {
+ \@@_set_normal_latin:nn {sfit} {#1}
+ \@@_set_mathalphabet_latin:nnn {sf} {it}{#1}
+ }
+ {
+ \bool_if:NF \g_@@_upsans_bool
+ {
+ \@@_set_normal_latin:nn {sfup,sfit} {#1}
+ \@@_set_mathalphabet_latin:nnn {sf} {up,it}{#1}
+ }
+ }
+ \@@_set_mathalphabet_latin:nnn {sfit} {up,it}{#1}
+ }
+% \end{macrocode}
+%
+% \subsection{Typewriter or monospaced: tt}
+% \begin{macrocode}
+\@@_new_alphabet_config:nnn {tt} {num}
+ {
+ \@@_set_mathalphabet_numbers:nnn {tt} {up}{#1}
+ }
+\@@_new_alphabet_config:nnn {tt} {Latin}
+ {
+ \@@_set_mathalphabet_Latin:nnn {tt} {up,it}{#1}
+ }
+\@@_new_alphabet_config:nnn {tt} {latin}
+ {
+ \@@_set_mathalphabet_latin:nnn {tt} {up,it}{#1}
+ }
+% \end{macrocode}
+%
+%
+% \subsection{Bold Italic: bfit}
+% \begin{macrocode}
+\@@_new_alphabet_config:nnn {bfit} {Latin}
+ {
+ \bool_if:NF \g_@@_bfupLatin_bool
+ {
+ \@@_set_normal_Latin:nn {bfup,bfit} {#1}
+ }
+ \@@_set_mathalphabet_Latin:nnn {bfit} {up,it}{#1}
+ \bool_if:NTF \g_@@_bfliteral_bool
+ {
+ \@@_set_normal_Latin:nn {bfit} {#1}
+ \@@_set_mathalphabet_Latin:nnn {bf} {it}{#1}
+ }
+ {
+ \bool_if:NF \g_@@_bfupLatin_bool
+ {
+ \@@_set_normal_Latin:nn {bfup,bfit} {#1}
+ \@@_set_mathalphabet_Latin:nnn {bf} {up,it}{#1}
+ }
+ }
+ }
+
+\@@_new_alphabet_config:nnn {bfit} {latin}
+ {
+ \bool_if:NF \g_@@_bfuplatin_bool
+ {
+ \@@_set_normal_latin:nn {bfup,bfit} {#1}
+ }
+ \@@_set_mathalphabet_latin:nnn {bfit} {up,it}{#1}
+ \bool_if:NTF \g_@@_bfliteral_bool
+ {
+ \@@_set_normal_latin:nn {bfit} {#1}
+ \@@_set_mathalphabet_latin:nnn {bf} {it}{#1}
+ }
+ {
+ \bool_if:NF \g_@@_bfuplatin_bool
+ {
+ \@@_set_normal_latin:nn {bfup,bfit} {#1}
+ \@@_set_mathalphabet_latin:nnn {bf} {up,it}{#1}
+ }
+ }
+ }
+
+\@@_new_alphabet_config:nnn {bfit} {Greek}
+ {
+ \@@_set_mathalphabet_Greek:nnn {bfit} {up,it}{#1}
+ \bool_if:NTF \g_@@_bfliteral_bool
+ {
+ \@@_set_normal_Greek:nn {bfit}{#1}
+ \@@_set_mathalphabet_Greek:nnn {bf} {it}{#1}
+ }
+ {
+ \bool_if:NF \g_@@_bfupGreek_bool
+ {
+ \@@_set_normal_Greek:nn {bfup,bfit}{#1}
+ \@@_set_mathalphabet_Greek:nnn {bf} {up,it}{#1}
+ }
+ }
+ }
+
+\@@_new_alphabet_config:nnn {bfit} {greek}
+ {
+ \@@_set_mathalphabet_greek:nnn {bfit} {up,it} {#1}
+ \bool_if:NTF \g_@@_bfliteral_bool
+ {
+ \@@_set_normal_greek:nn {bfit} {#1}
+ \@@_set_mathalphabet_greek:nnn {bf} {it} {#1}
+ }
+ {
+ \bool_if:NF \g_@@_bfupgreek_bool
+ {
+ \@@_set_normal_greek:nn {bfit,bfup} {#1}
+ \@@_set_mathalphabet_greek:nnn {bf} {up,it} {#1}
+ }
+ }
+ }
+
+\@@_new_alphabet_config:nnn {bfit} {misc}
+ {
+ \bool_if:NTF \g_@@_literal_Nabla_bool
+ { \@@_set_normal_char:nnn {Nabla}{bfit}{#1} }
+ {
+ \bool_if:NF \g_@@_upNabla_bool
+ { \@@_set_normal_char:nnn {Nabla}{bfup,bfit}{#1} }
+ }
+ \bool_if:NTF \g_@@_literal_partial_bool
+ { \@@_set_normal_char:nnn {partial}{bfit}{#1} }
+ {
+ \bool_if:NF \g_@@_uppartial_bool
+ { \@@_set_normal_char:nnn {partial}{bfup,bfit}{#1} }
+ }
+ \@@_set_mathalphabet_pos:nnnn {bfit} {partial} {up,it}{#1}
+ \@@_set_mathalphabet_pos:nnnn {bfit} {Nabla} {up,it}{#1}
+ \bool_if:NTF \g_@@_literal_partial_bool
+ {
+ \@@_set_mathalphabet_pos:nnnn {bf} {partial} {it}{#1}
+ }
+ {
+ \bool_if:NF \g_@@_uppartial_bool
+ {
+ \@@_set_mathalphabet_pos:nnnn {bf} {partial} {up,it}{#1}
+ }
+ }
+ \bool_if:NTF \g_@@_literal_Nabla_bool
+ {
+ \@@_set_mathalphabet_pos:nnnn {bf} {Nabla} {it}{#1}
+ }
+ {
+ \bool_if:NF \g_@@_upNabla_bool
+ {
+ \@@_set_mathalphabet_pos:nnnn {bf} {Nabla} {up,it}{#1}
+ }
+ }
+ }
+% \end{macrocode}
+%
+%
+% \subsection{Bold Upright: bfup}
+% \begin{macrocode}
+\@@_new_alphabet_config:nnn {bfup} {num}
+ {
+ \@@_set_mathalphabet_numbers:nnn {bf} {up}{#1}
+ \@@_set_mathalphabet_numbers:nnn {bfup} {up}{#1}
+ }
+
+\@@_new_alphabet_config:nnn {bfup} {Latin}
+ {
+ \bool_if:NT \g_@@_bfupLatin_bool
+ {
+ \@@_set_normal_Latin:nn {bfup,bfit} {#1}
+ }
+ \@@_set_mathalphabet_Latin:nnn {bfup} {up,it}{#1}
+ \bool_if:NTF \g_@@_bfliteral_bool
+ {
+ \@@_set_normal_Latin:nn {bfup} {#1}
+ \@@_set_mathalphabet_Latin:nnn {bf} {up}{#1}
+ }
+ {
+ \bool_if:NT \g_@@_bfupLatin_bool
+ {
+ \@@_set_normal_Latin:nn {bfup,bfit} {#1}
+ \@@_set_mathalphabet_Latin:nnn {bf} {up,it}{#1}
+ }
+ }
+ }
+
+\@@_new_alphabet_config:nnn {bfup} {latin}
+ {
+ \bool_if:NT \g_@@_bfuplatin_bool
+ {
+ \@@_set_normal_latin:nn {bfup,bfit} {#1}
+ }
+ \@@_set_mathalphabet_latin:nnn {bfup} {up,it}{#1}
+ \bool_if:NTF \g_@@_bfliteral_bool
+ {
+ \@@_set_normal_latin:nn {bfup} {#1}
+ \@@_set_mathalphabet_latin:nnn {bf} {up}{#1}
+ }
+ {
+ \bool_if:NT \g_@@_bfuplatin_bool
+ {
+ \@@_set_normal_latin:nn {bfup,bfit} {#1}
+ \@@_set_mathalphabet_latin:nnn {bf} {up,it}{#1}
+ }
+ }
+ }
+\@@_new_alphabet_config:nnn {bfup} {Greek}
+ {
+ \@@_set_mathalphabet_Greek:nnn {bfup} {up,it}{#1}
+ \bool_if:NTF \g_@@_bfliteral_bool
+ {
+ \@@_set_normal_Greek:nn {bfup}{#1}
+ \@@_set_mathalphabet_Greek:nnn {bf} {up}{#1}
+ }
+ {
+ \bool_if:NT \g_@@_bfupGreek_bool
+ {
+ \@@_set_normal_Greek:nn {bfup,bfit}{#1}
+ \@@_set_mathalphabet_Greek:nnn {bf} {up,it}{#1}
+ }
+ }
+ }
+
+\@@_new_alphabet_config:nnn {bfup} {greek}
+ {
+ \@@_set_mathalphabet_greek:nnn {bfup} {up,it} {#1}
+ \bool_if:NTF \g_@@_bfliteral_bool
+ {
+ \@@_set_normal_greek:nn {bfup} {#1}
+ \@@_set_mathalphabet_greek:nnn {bf} {up} {#1}
+ }
+ {
+ \bool_if:NT \g_@@_bfupgreek_bool
+ {
+ \@@_set_normal_greek:nn {bfup,bfit} {#1}
+ \@@_set_mathalphabet_greek:nnn {bf} {up,it} {#1}
+ }
+ }
+ }
+
+\@@_new_alphabet_config:nnn {bfup} {misc}
+ {
+ \bool_if:NTF \g_@@_literal_Nabla_bool
+ {
+ \@@_set_normal_char:nnn {Nabla}{bfup}{#1}
+ }
+ {
+ \bool_if:NT \g_@@_upNabla_bool
+ {
+ \@@_set_normal_char:nnn {Nabla}{bfup,bfit}{#1}
+ }
+ }
+ \bool_if:NTF \g_@@_literal_partial_bool
+ {
+ \@@_set_normal_char:nnn {partial}{bfup}{#1}
+ }
+ {
+ \bool_if:NT \g_@@_uppartial_bool
+ {
+ \@@_set_normal_char:nnn {partial}{bfup,bfit}{#1}
+ }
+ }
+ \@@_set_mathalphabet_pos:nnnn {bfup} {partial} {up,it}{#1}
+ \@@_set_mathalphabet_pos:nnnn {bfup} {Nabla} {up,it}{#1}
+ \@@_set_mathalphabet_pos:nnnn {bfup} {digamma} {up}{#1}
+ \@@_set_mathalphabet_pos:nnnn {bfup} {Digamma} {up}{#1}
+ \@@_set_mathalphabet_pos:nnnn {bf} {digamma} {up}{#1}
+ \@@_set_mathalphabet_pos:nnnn {bf} {Digamma} {up}{#1}
+ \bool_if:NTF \g_@@_literal_partial_bool
+ {
+ \@@_set_mathalphabet_pos:nnnn {bf} {partial} {up}{#1}
+ }
+ {
+ \bool_if:NT \g_@@_uppartial_bool
+ {
+ \@@_set_mathalphabet_pos:nnnn {bf} {partial} {up,it}{#1}
+ }
+ }
+ \bool_if:NTF \g_@@_literal_Nabla_bool
+ {
+ \@@_set_mathalphabet_pos:nnnn {bf} {Nabla} {up}{#1}
+ }
+ {
+ \bool_if:NT \g_@@_upNabla_bool
+ {
+ \@@_set_mathalphabet_pos:nnnn {bf} {Nabla} {up,it}{#1}
+ }
+ }
+ }
+% \end{macrocode}
+%
+% \subsection{Bold fractur or fraktur or blackletter: bffrak}
+% \begin{macrocode}
+\@@_new_alphabet_config:nnn {bffrak} {Latin}
+ {
+ \@@_set_mathalphabet_Latin:nnn {bffrak} {up,it}{#1}
+ }
+
+\@@_new_alphabet_config:nnn {bffrak} {latin}
+ {
+ \@@_set_mathalphabet_latin:nnn {bffrak} {up,it}{#1}
+ }
+% \end{macrocode}
+%
+% \subsection{Bold script or calligraphic: bfscr}
+% \begin{macrocode}
+\@@_new_alphabet_config:nnn {bfscr} {Latin}
+ {
+ \@@_set_mathalphabet_Latin:nnn {bfscr} {up,it}{#1}
+ }
+\@@_new_alphabet_config:nnn {bfscr} {latin}
+ {
+ \@@_set_mathalphabet_latin:nnn {bfscr} {up,it}{#1}
+ }
+\@@_new_alphabet_config:nnn {bfcal} {Latin}
+ {
+ \@@_set_mathalphabet_Latin:nnn {bfcal} {up,it}{#1}
+ }
+% \end{macrocode}
+%
+% \subsection{Bold upright sans serif: bfsfup}
+% \begin{macrocode}
+\@@_new_alphabet_config:nnn {bfsfup} {num}
+ {
+ \@@_set_mathalphabet_numbers:nnn {bfsf} {up}{#1}
+ \@@_set_mathalphabet_numbers:nnn {bfsfup} {up}{#1}
+ }
+\@@_new_alphabet_config:nnn {bfsfup} {Latin}
+ {
+ \bool_if:NTF \g_@@_sfliteral_bool
+ {
+ \@@_set_normal_Latin:nn {bfsfup} {#1}
+ \@@_set_mathalphabet_Latin:nnn {bfsf} {up}{#1}
+ }
+ {
+ \bool_if:NT \g_@@_upsans_bool
+ {
+ \@@_set_normal_Latin:nn {bfsfup,bfsfit} {#1}
+ \@@_set_mathalphabet_Latin:nnn {bfsf} {up,it}{#1}
+ }
+ }
+ \@@_set_mathalphabet_Latin:nnn {bfsfup} {up,it}{#1}
+ }
+
+\@@_new_alphabet_config:nnn {bfsfup} {latin}
+ {
+ \bool_if:NTF \g_@@_sfliteral_bool
+ {
+ \@@_set_normal_latin:nn {bfsfup} {#1}
+ \@@_set_mathalphabet_latin:nnn {bfsf} {up}{#1}
+ }
+ {
+ \bool_if:NT \g_@@_upsans_bool
+ {
+ \@@_set_normal_latin:nn {bfsfup,bfsfit} {#1}
+ \@@_set_mathalphabet_latin:nnn {bfsf} {up,it}{#1}
+ }
+ }
+ \@@_set_mathalphabet_latin:nnn {bfsfup} {up,it}{#1}
+ }
+
+\@@_new_alphabet_config:nnn {bfsfup} {Greek}
+ {
+ \bool_if:NTF \g_@@_sfliteral_bool
+ {
+ \@@_set_normal_Greek:nn {bfsfup}{#1}
+ \@@_set_mathalphabet_Greek:nnn {bfsf} {up}{#1}
+ }
+ {
+ \bool_if:NT \g_@@_upsans_bool
+ {
+ \@@_set_normal_Greek:nn {bfsfup,bfsfit}{#1}
+ \@@_set_mathalphabet_Greek:nnn {bfsf} {up,it}{#1}
+ }
+ }
+ \@@_set_mathalphabet_Greek:nnn {bfsfup} {up,it}{#1}
+ }
+
+\@@_new_alphabet_config:nnn {bfsfup} {greek}
+ {
+ \bool_if:NTF \g_@@_sfliteral_bool
+ {
+ \@@_set_normal_greek:nn {bfsfup} {#1}
+ \@@_set_mathalphabet_greek:nnn {bfsf} {up} {#1}
+ }
+ {
+ \bool_if:NT \g_@@_upsans_bool
+ {
+ \@@_set_normal_greek:nn {bfsfup,bfsfit} {#1}
+ \@@_set_mathalphabet_greek:nnn {bfsf} {up,it} {#1}
+ }
+ }
+ \@@_set_mathalphabet_greek:nnn {bfsfup} {up,it} {#1}
+ }
+\@@_new_alphabet_config:nnn {bfsfup} {misc}
+ {
+ \bool_if:NTF \g_@@_literal_Nabla_bool
+ {
+ \@@_set_normal_char:nnn {Nabla}{bfsfup}{#1}
+ }
+ {
+ \bool_if:NT \g_@@_upNabla_bool
+ {
+ \@@_set_normal_char:nnn {Nabla}{bfsfup,bfsfit}{#1}
+ }
+ }
+ \bool_if:NTF \g_@@_literal_partial_bool
+ {
+ \@@_set_normal_char:nnn {partial}{bfsfup}{#1}
+ }
+ {
+ \bool_if:NT \g_@@_uppartial_bool
+ {
+ \@@_set_normal_char:nnn {partial}{bfsfup,bfsfit}{#1}
+ }
+ }
+ \@@_set_mathalphabet_pos:nnnn {bfsfup} {partial} {up,it}{#1}
+ \@@_set_mathalphabet_pos:nnnn {bfsfup} {Nabla} {up,it}{#1}
+ \bool_if:NTF \g_@@_literal_partial_bool
+ {
+ \@@_set_mathalphabet_pos:nnnn {bfsf} {partial} {up}{#1}
+ }
+ {
+ \bool_if:NT \g_@@_uppartial_bool
+ {
+ \@@_set_mathalphabet_pos:nnnn {bfsf} {partial} {up,it}{#1}
+ }
+ }
+ \bool_if:NTF \g_@@_literal_Nabla_bool
+ {
+ \@@_set_mathalphabet_pos:nnnn {bfsf} {Nabla} {up}{#1}
+ }
+ {
+ \bool_if:NT \g_@@_upNabla_bool
+ {
+ \@@_set_mathalphabet_pos:nnnn {bfsf} {Nabla} {up,it}{#1}
+ }
+ }
+ }
+% \end{macrocode}
+%
+%
+% \subsection{Bold italic sans serif: bfsfit}
+% \begin{macrocode}
+\@@_new_alphabet_config:nnn {bfsfit} {Latin}
+ {
+ \bool_if:NTF \g_@@_sfliteral_bool
+ {
+ \@@_set_normal_Latin:nn {bfsfit} {#1}
+ \@@_set_mathalphabet_Latin:nnn {bfsf} {it}{#1}
+ }
+ {
+ \bool_if:NF \g_@@_upsans_bool
+ {
+ \@@_set_normal_Latin:nn {bfsfup,bfsfit} {#1}
+ \@@_set_mathalphabet_Latin:nnn {bfsf} {up,it}{#1}
+ }
+ }
+ \@@_set_mathalphabet_Latin:nnn {bfsfit} {up,it}{#1}
+ }
+
+\@@_new_alphabet_config:nnn {bfsfit} {latin}
+ {
+ \bool_if:NTF \g_@@_sfliteral_bool
+ {
+ \@@_set_normal_latin:nn {bfsfit} {#1}
+ \@@_set_mathalphabet_latin:nnn {bfsf} {it}{#1}
+ }
+ {
+ \bool_if:NF \g_@@_upsans_bool
+ {
+ \@@_set_normal_latin:nn {bfsfup,bfsfit} {#1}
+ \@@_set_mathalphabet_latin:nnn {bfsf} {up,it}{#1}
+ }
+ }
+ \@@_set_mathalphabet_latin:nnn {bfsfit} {up,it}{#1}
+ }
+
+\@@_new_alphabet_config:nnn {bfsfit} {Greek}
+ {
+ \bool_if:NTF \g_@@_sfliteral_bool
+ {
+ \@@_set_normal_Greek:nn {bfsfit}{#1}
+ \@@_set_mathalphabet_Greek:nnn {bfsf} {it}{#1}
+ }
+ {
+ \bool_if:NF \g_@@_upsans_bool
+ {
+ \@@_set_normal_Greek:nn {bfsfup,bfsfit}{#1}
+ \@@_set_mathalphabet_Greek:nnn {bfsf} {up,it}{#1}
+ }
+ }
+ \@@_set_mathalphabet_Greek:nnn {bfsfit} {up,it}{#1}
+ }
+
+\@@_new_alphabet_config:nnn {bfsfit} {greek}
+ {
+ \bool_if:NTF \g_@@_sfliteral_bool
+ {
+ \@@_set_normal_greek:nn {bfsfit} {#1}
+ \@@_set_mathalphabet_greek:nnn {bfsf} {it} {#1}
+ }
+ {
+ \bool_if:NF \g_@@_upsans_bool
+ {
+ \@@_set_normal_greek:nn {bfsfup,bfsfit} {#1}
+ \@@_set_mathalphabet_greek:nnn {bfsf} {up,it} {#1}
+ }
+ }
+ \@@_set_mathalphabet_greek:nnn {bfsfit} {up,it} {#1}
+ }
+
+\@@_new_alphabet_config:nnn {bfsfit} {misc}
+ {
+ \bool_if:NTF \g_@@_literal_Nabla_bool
+ {
+ \@@_set_normal_char:nnn {Nabla}{bfsfit}{#1}
+ }
+ {
+ \bool_if:NF \g_@@_upNabla_bool
+ {
+ \@@_set_normal_char:nnn {Nabla}{bfsfup,bfsfit}{#1}
+ }
+ }
+ \bool_if:NTF \g_@@_literal_partial_bool
+ {
+ \@@_set_normal_char:nnn {partial}{bfsfit}{#1}
+ }
+ {
+ \bool_if:NF \g_@@_uppartial_bool
+ {
+ \@@_set_normal_char:nnn {partial}{bfsfup,bfsfit}{#1}
+ }
+ }
+ \@@_set_mathalphabet_pos:nnnn {bfsfit} {partial} {up,it}{#1}
+ \@@_set_mathalphabet_pos:nnnn {bfsfit} {Nabla} {up,it}{#1}
+ \bool_if:NTF \g_@@_literal_partial_bool
+ {
+ \@@_set_mathalphabet_pos:nnnn {bfsf} {partial} {it}{#1}
+ }
+ {
+ \bool_if:NF \g_@@_uppartial_bool
+ {
+ \@@_set_mathalphabet_pos:nnnn {bfsf} {partial} {up,it}{#1}
+ }
+ }
+ \bool_if:NTF \g_@@_literal_Nabla_bool
+ {
+ \@@_set_mathalphabet_pos:nnnn {bfsf} {Nabla} {it}{#1}
+ }
+ {
+ \bool_if:NF \g_@@_upNabla_bool
+ {
+ \@@_set_mathalphabet_pos:nnnn {bfsf} {Nabla} {up,it}{#1}
+ }
+ }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+
+\endinput
+
+% /©
+%
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
+%
+% ©/
Property changes on: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-alphabets.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-api.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-api.dtx (rev 0)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-api.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -0,0 +1,42 @@
+%%^^A%% um-code-api.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+% \section{Programmers' interface}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+%
+% \begin{macro}{\unimath_get_mathstyle:}
+% This command expands to the currently math style.
+% \begin{macrocode}
+\cs_new:Nn \unimath_get_mathstyle:
+ {
+ \tl_use:N \l_@@_mathstyle_tl
+ }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+
+\endinput
+
+% /©
+%
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
+%
+% ©/
Property changes on: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-api.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-base.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-base.dtx (rev 0)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-base.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -0,0 +1,73 @@
+%%^^A%% um-code-base.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+% \section{The \texttt{unicode-math.sty} loading file}
+%
+% The \texttt{unicode-math.sty} file is a stub which loads necessary packages
+% and then bifurcates into a XeTeX- or LuaTeX-specific version of the package.
+%
+% \begin{macrocode}
+%<*base>
+% \end{macrocode}
+% Bail early if necessary.
+% \begin{macrocode}
+\ifdefined\XeTeXversion
+ \ifdim\number\XeTeXversion\XeTeXrevision in<0.9998in%
+ \PackageError{unicode-math}{%
+ Cannot run with this version of XeTeX!\MessageBreak
+ You need XeTeX 0.9998 or newer.%
+ }\@ehd
+ \fi
+\else\ifdefined\luatexversion
+ \ifnum\luatexversion<64%
+ \PackageError{unicode-math}{%
+ Cannot run with this version of LuaTeX!\MessageBreak
+ You need LuaTeX 0.64 or newer.%
+ }\@ehd
+ \fi
+\else
+ \PackageError{unicode-math}{%
+ Cannot be run with pdfLaTeX!\MessageBreak
+ Use XeLaTeX or LuaLaTeX instead.%
+ }\@ehd
+\fi\fi
+% \end{macrocode}
+%
+% \paragraph{Packages}
+% Assuming people are running up-to-date packages.
+% \begin{macrocode}
+\RequirePackage{expl3,xparse,l3keys2e}
+\RequirePackage{fontspec}
+\RequirePackage{ucharcat}
+\RequirePackage{fix-cm} % avoid some warnings (still necessary? check...)
+\RequirePackage{filehook}
+% \end{macrocode}
+% \paragraph{Bifurcate}
+% \begin{macrocode}
+\ExplSyntaxOn
+\sys_if_engine_luatex:T { \RequirePackageWithOptions{unicode-math-luatex} }
+\sys_if_engine_xetex:T { \RequirePackageWithOptions{unicode-math-xetex} }
+\ExplSyntaxOff
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</base>
+% \end{macrocode}
+
+\endinput
+
+% /©
+%
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
+%
+% ©/
Property changes on: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-base.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-compat.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-compat.dtx (rev 0)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-compat.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -0,0 +1,530 @@
+%%^^A%% um-code-compat.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+% \section{Compatibility}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% \begin{macro}{\@@_check_and_fix:NNnnnn}
+% \darg{command}
+% \darg{factory command}
+% \darg{parameter text}
+% \darg{expected replacement text}
+% \darg{new replacement text for \LuaTeX}
+% \darg{new replacement text for \XeTeX}
+% Tries to patch \meta{command}.
+% If \meta{command} is undefined, do nothing.
+% Otherwise it must be a macro with the given \meta{parameter text} and \meta{expected replacement text}, created by the given \meta{factory command} or equivalent.
+% In this case it will be overwritten using the \meta{parameter text} and the \meta{new replacement text for \LuaTeX} or the \meta{new replacement text for \XeTeX}, depending on the engine.
+% Otherwise issue a warning and don’t overwrite.
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \@@_check_and_fix:NNnnnn
+ {
+ \cs_if_exist:NT #1
+ {
+ \token_if_macro:NTF #1
+ {
+ \group_begin:
+ #2 \@@_tmpa:w #3 { #4 }
+ \cs_if_eq:NNTF #1 \@@_tmpa:w
+ {
+ \msg_info:nnx { unicode-math } { patch-macro }
+ { \token_to_str:N #1 }
+ \group_end:
+ #2 #1 #3
+%<XE> { #6 }
+%<LU> { #5 }
+ }
+ {
+ \msg_warning:nnxxx { unicode-math } { wrong-meaning }
+ { \token_to_str:N #1 } { \token_to_meaning:N #1 }
+ { \token_to_meaning:N \@@_tmpa:w }
+ \group_end:
+ }
+ }
+ {
+ \msg_warning:nnx { unicode-math } { macro-expected }
+ { \token_to_str:N #1 }
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_check_and_fix:NNnnn}
+% \darg{command}
+% \darg{factory command}
+% \darg{parameter text}
+% \darg{expected replacement text}
+% \darg{new replacement text}
+% Tries to patch \meta{command}.
+% If \meta{command} is undefined, do nothing.
+% Otherwise it must be a macro with the given \meta{parameter text} and \meta{expected replacement text}, created by the given \meta{factory command} or equivalent.
+% In this case it will be overwritten using the \meta{parameter text} and the \meta{new replacement text}.
+% Otherwise issue a warning and don’t overwrite.
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \@@_check_and_fix:NNnnn
+ {
+ \@@_check_and_fix:NNnnnn #1 #2 { #3 } { #4 } { #5 } { #5 }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_check_and_fix_luatex:NNnnn}
+% \begin{macro}{\@@_check_and_fix_luatex:cNnnn}
+% \darg{command}
+% \darg{factory command}
+% \darg{parameter text}
+% \darg{expected replacement text}
+% \darg{new replacement text}
+% Tries to patch \meta{command}.
+% If \XeTeX\ is the current engine or \meta{command} is undefined, do nothing.
+% Otherwise it must be a macro with the given \meta{parameter text} and \meta{expected replacement text}, created by the given \meta{factory command} or equivalent.
+% In this case it will be overwritten using the \meta{parameter text} and the \meta{new replacement text}.
+% Otherwise issue a warning and don’t overwrite.
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \@@_check_and_fix_luatex:NNnnn
+ {
+%<LU> \@@_check_and_fix:NNnnn #1 #2 { #3 } { #4 } { #5 }
+ }
+\cs_generate_variant:Nn \@@_check_and_fix_luatex:NNnnn { c }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \paragraph{\pkg{url}}
+% Simply need to get \pkg{url} in a state such that
+% when it switches to math mode and enters \ascii\ characters, the maths
+% setup (i.e., \pkg{unicode-math}) doesn't remap the symbols into Plane 1.
+% Which is, of course, what \cs{mathup} is doing.
+%
+% This is the same as writing, e.g., |\def\UrlFont{\ttfamily\@@_switchto_up:}|
+% but activates automatically so old documents that might change the \cs{url}
+% font still work correctly.
+% \begin{macrocode}
+\AtEndOfPackageFile * {url}
+ {
+ \tl_put_left:Nn \Url at FormatString { \@@_switchto_up: }
+ \tl_put_right:Nn \UrlSpecials
+ {
+ \do\`{\mathchar`\`}
+ \do\'{\mathchar`\'}
+ \do\${\mathchar`\$}
+ \do\&{\mathchar`\&}
+ }
+ }
+% \end{macrocode}
+%
+% \paragraph{\pkg{amsmath}}
+% Since the mathcode of |`\-| is greater than eight bits, this piece of |\AtBeginDocument| code from \pkg{amsmath} dies if we try and set the maths font in the preamble:
+% \begin{macrocode}
+\AtEndOfPackageFile * {amsmath}
+ {
+%<*XE>
+ \tl_remove_once:Nn \@begindocumenthook
+ {
+ \mathchardef\std at minus\mathcode`\-\relax
+ \mathchardef\std at equal\mathcode`\=\relax
+ }
+ \def\std at minus{\Umathcharnum\Umathcodenum`\-\relax}
+ \def\std at equal{\Umathcharnum\Umathcodenum`\=\relax}
+%</XE>
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \cs_set:Npn \@cdots {\mathinner{\cdots}}
+ \cs_set_eq:NN \dotsb@ \cdots
+% \end{macrocode}
+% This isn't as clever as the \pkg{amsmath} definition but I think it works:
+% \begin{macrocode}
+%<*XE>
+ \def \resetMathstrut@
+ {%
+ \setbox\z@\hbox{$($}%)
+ \ht\Mathstrutbox@\ht\z@ \dp\Mathstrutbox@\dp\z@
+ }
+% \end{macrocode}
+% The |subarray| environment uses inappropriate font dimensions.
+% \begin{macrocode}
+ \@@_check_and_fix:NNnnn \subarray \cs_set:Npn { #1 }
+ {
+ \vcenter
+ \bgroup
+ \Let@
+ \restore at math@cr
+ \default at tag
+ \baselineskip \fontdimen 10~ \scriptfont \tw@
+ \advance \baselineskip \fontdimen 12~ \scriptfont \tw@
+ \lineskip \thr@@@@ \fontdimen 8~ \scriptfont \thr@@@@
+ \lineskiplimit \lineskip
+ \ialign
+ \bgroup
+ \ifx c #1 \hfil \fi
+ $ \m at th \scriptstyle ## $
+ \hfil
+ \crcr
+ }
+ {
+ \vcenter
+ \c_group_begin_token
+ \Let@
+ \restore at math@cr
+ \default at tag
+ \skip_set:Nn \baselineskip
+ {
+% \end{macrocode}
+% Here we use stack top shift + stack bottom shift, which sounds reasonable.
+% \begin{macrocode}
+ \@@_stack_num_up:N \scriptstyle
+ + \@@_stack_denom_down:N \scriptstyle
+ }
+% \end{macrocode}
+% Here we use the minimum stack gap.
+% \begin{macrocode}
+ \lineskip \@@_stack_vgap:N \scriptstyle
+ \lineskiplimit \lineskip
+ \ialign
+ \c_group_begin_token
+ \token_if_eq_meaning:NNT c #1 { \hfil }
+ \c_math_toggle_token
+ \m at th
+ \scriptstyle
+ \c_parameter_token \c_parameter_token
+ \c_math_toggle_token
+ \hfil
+ \crcr
+ }
+%</XE>
+% \end{macrocode}
+% The roots need a complete rework.
+% \begin{macrocode}
+ \@@_check_and_fix_luatex:NNnnn \plainroot@ \cs_set_nopar:Npn { #1 \of #2 }
+ {
+ \setbox \rootbox \hbox
+ {
+ $ \m at th \scriptscriptstyle { #1 } $
+ }
+ \mathchoice
+ { \r@@@@t \displaystyle { #2 } }
+ { \r@@@@t \textstyle { #2 } }~
+ { \r@@@@t \scriptstyle { #2 } }
+ { \r@@@@t \scriptscriptstyle { #2 } }
+ \egroup
+ }
+ {
+ \bool_if:nTF
+ {
+ \int_compare_p:nNn { \uproot@ } = { \c_zero }
+ && \int_compare_p:nNn { \leftroot@ } = { \c_zero }
+ }
+ {
+ \Uroot \l_@@_radical_sqrt_tl { #1 } { #2 }
+ }
+ {
+ \hbox_set:Nn \rootbox
+ {
+ \c_math_toggle_token
+ \m at th
+ \scriptscriptstyle { #1 }
+ \c_math_toggle_token
+ }
+ \mathchoice
+ { \r@@@@t \displaystyle { #2 } }
+ { \r@@@@t \textstyle { #2 } }
+ { \r@@@@t \scriptstyle { #2 } }
+ { \r@@@@t \scriptscriptstyle { #2 } }
+ }
+ \c_group_end_token
+ }
+ \@@_check_and_fix:NNnnnn \r@@@@t \cs_set_nopar:Npn { #1 #2 }
+ {
+ \setboxz at h { $ \m at th #1 \sqrtsign { #2 } $ }
+ \dimen@ \ht\z@
+ \advance \dimen@ -\dp\z@
+ \setbox\@ne \hbox { $ \m at th #1 \mskip \uproot@ mu $ }
+ \advance \dimen@ by 1.667 \wd\@ne
+ \mkern -\leftroot@ mu
+ \mkern 5mu
+ \raise .6\dimen@ \copy\rootbox
+ \mkern -10mu
+ \mkern \leftroot@ mu
+ \boxz@
+ }
+ {
+ \hbox_set:Nn \l_tmpa_box
+ {
+ \c_math_toggle_token
+ \m at th
+ #1
+ \mskip \uproot@ mu
+ \c_math_toggle_token
+ }
+ \Uroot \l_@@_radical_sqrt_tl
+ {
+ \box_move_up:nn { \box_wd:N \l_tmpa_box }
+ {
+ \hbox:n
+ {
+ \c_math_toggle_token
+ \m at th
+ \mkern -\leftroot@ mu
+ \box_use:N \rootbox
+ \mkern \leftroot@ mu
+ \c_math_toggle_token
+ }
+ }
+ }
+ { #2 }
+ }
+ {
+ \hbox_set:Nn \l_tmpa_box
+ {
+ \c_math_toggle_token
+ \m at th
+ #1
+ \sqrtsign { #2 }
+ \c_math_toggle_token
+ }
+ \hbox_set:Nn \l_tmpb_box
+ {
+ \c_math_toggle_token
+ \m at th
+ #1
+ \mskip \uproot@ mu
+ \c_math_toggle_token
+ }
+ \mkern -\leftroot@ mu
+ \@@_mathstyle_scale:Nnn #1 { \kern }
+ {
+ \fontdimen 63 \l_@@_font
+ }
+ \box_move_up:nn
+ {
+ \box_wd:N \l_tmpb_box
+ + (\box_ht:N \l_tmpa_box - \box_dp:N \l_tmpa_box)
+ * \number \fontdimen 65 \l_@@_font / 100
+ }
+ {
+ \box_use:N \rootbox
+ }
+ \@@_mathstyle_scale:Nnn #1 { \kern }
+ {
+ \fontdimen 64 \l_@@_font
+ }
+ \mkern \leftroot@ mu
+ \box_use_clear:N \l_tmpa_box
+ }
+ }
+% \end{macrocode}
+%
+% \paragraph{\pkg{amsopn}}
+% This code is to improve the output of analphabetic symbols in text of operator names (\cs{sin}, \cs{cos}, etc.). Just comment out the offending lines for now:
+% \begin{macrocode}
+%<*XE>
+\AtEndOfPackageFile * {amsopn}
+ {
+ \cs_set:Npn \newmcodes@
+ {
+ \mathcode`\'39\scan_stop:
+ \mathcode`\*42\scan_stop:
+ \mathcode`\."613A\scan_stop:
+%% \ifnum\mathcode`\-=45 \else
+%% \mathchardef\std at minus\mathcode`\-\relax
+%% \fi
+ \mathcode`\-45\scan_stop:
+ \mathcode`\/47\scan_stop:
+ \mathcode`\:"603A\scan_stop:
+ }
+ }
+%</XE>
+% \end{macrocode}
+%
+% \paragraph{\pkg{mathtools}}
+% \pkg{mathtools}’s |\cramped| command and others that make use of its internal version use an incorrect font dimension.
+%
+% \begin{macrocode}
+%<*XE>
+\AtEndOfPackageFile * { mathtools }
+ {
+ \@@_check_and_fix:NNnnn
+ \MT_cramped_internal:Nn \cs_set_nopar:Npn { #1 #2 }
+ {
+ \sbox \z@
+ {
+ $
+ \m at th
+ #1
+ \nulldelimiterspace = \z@
+ \radical \z@ { #2 }
+ $
+ }
+ \ifx #1 \displaystyle
+ \dimen@ = \fontdimen 8 \textfont 3
+ \advance \dimen@ .25 \fontdimen 5 \textfont 2
+ \else
+ \dimen@ = 1.25 \fontdimen 8
+ \ifx #1 \textstyle
+ \textfont
+ \else
+ \ifx #1 \scriptstyle
+ \scriptfont
+ \else
+ \scriptscriptfont
+ \fi
+ \fi
+ 3
+ \fi
+ \advance \dimen@ -\ht\z@
+ \ht\z@ = -\dimen@
+ \box\z@
+ }
+% \end{macrocode}
+% The \XeTeX\ version is pretty similar to the legacy version, only using the correct font dimensions.
+% Note we used `\verb|\XeTeXradical|' with the family 255 to be almost sure
+% that the radical rule width is not set. Former use of `\verb|\newfam|' had an
+% upsetting effect on legacy math alphabets.
+% \begin{macrocode}
+ {
+ \hbox_set:Nn \l_tmpa_box
+ {
+ \color at setgroup
+ \c_math_toggle_token
+ \m at th
+ #1
+ \dim_zero:N \nulldelimiterspace
+ \XeTeXradical \c_two_hundred_fifty_five \c_zero { #2 }
+ \c_math_toggle_token
+ \color at endgroup
+ }
+ \box_set_ht:Nn \l_tmpa_box
+ {
+ \box_ht:N \l_tmpa_box
+% \end{macrocode}
+% Here we use the radical vertical gap.
+% \begin{macrocode}
+ - \@@_radical_vgap:N #1
+ }
+ \box_use_clear:N \l_tmpa_box
+ }
+ }
+%</XE>
+% \end{macrocode}
+%
+% \begin{macro}{\overbracket}
+% \begin{macro}{\underbracket}
+% \pkg{mathtools}’s |\overbracket| and |\underbracket| take optional
+% arguments and are defined in terms of rules, so we keep them, and rename
+% ours to |\Uoverbracket| and |\Uunderbracket|.
+% \begin{macrocode}
+\AtEndOfPackageFile * { mathtools }
+ {
+ \cs_set_eq:NN \MToverbracket \overbracket
+ \cs_set_eq:NN \MTunderbracket \underbracket
+
+ \AtBeginDocument
+ {
+ \msg_warning:nn { unicode-math } { mathtools-overbracket }
+
+ \def\downbracketfill#1#2
+ {%
+% \end{macrocode}
+% Original definition used the height of |\braceld| which is not available
+% with Unicode fonts, so we are hard coding the $5/18$ex suggested by
+% \pkg{mathtools}’s documentation.
+% \begin{macrocode}
+ \edef\l_MT_bracketheight_fdim{.27ex}%
+ \downbracketend{#1}{#2}
+ \leaders \vrule \@height #1 \@depth \z@ \hfill
+ \downbracketend{#1}{#2}%
+ }
+ \def\upbracketfill#1#2
+ {%
+ \edef\l_MT_bracketheight_fdim{.27ex}%
+ \upbracketend{#1}{#2}
+ \leaders \vrule \@height \z@ \@depth #1 \hfill
+ \upbracketend{#1}{#2}%
+ }
+ \let\Uoverbracket =\overbracket
+ \let\Uunderbracket=\underbracket
+ \let\overbracket =\MToverbracket
+ \let\underbracket =\MTunderbracket
+ }% end of AtBeginDocument
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\dblcolon}
+% \begin{macro}{\coloneqq}
+% \begin{macro}{\Coloneqq}
+% \begin{macro}{\eqqcolon}
+% \pkg{mathtools} defines several commands as combinations of colons and
+% other characters, but with meanings incompatible to \pkg{unicode-math}.
+% Thus we issue a warning. Because \pkg{mathtools} uses
+% \cmd{\providecommand} \cmd{\AtBeginDocument}, we can just define the
+% offending commands here.
+% \begin{macrocode}
+ \msg_warning:nn { unicode-math } { mathtools-colon }
+ \NewDocumentCommand \dblcolon { } { \Colon }
+ \NewDocumentCommand \coloneqq { } { \coloneq }
+ \NewDocumentCommand \Coloneqq { } { \Coloneq }
+ \NewDocumentCommand \eqqcolon { } { \eqcolon }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \paragraph{\pkg{colonequals}}
+%
+% \begin{macro}{\ratio}
+% \begin{macro}{\coloncolon}
+% \begin{macro}{\minuscolon}
+% \begin{macro}{\colonequals}
+% \begin{macro}{\equalscolon}
+% \begin{macro}{\coloncolonequals}
+% Similarly to \pkg{mathtools}, the \pkg{colonequals} defines several colon
+% combinations. Fortunately there are no name clashes, so we can just
+% overwrite their definitions.
+% \begin{macrocode}
+\AtEndOfPackageFile * { colonequals }
+ {
+ \msg_warning:nn { unicode-math } { colonequals }
+ \RenewDocumentCommand \ratio { } { \mathratio }
+ \RenewDocumentCommand \coloncolon { } { \Colon }
+ \RenewDocumentCommand \minuscolon { } { \dashcolon }
+ \RenewDocumentCommand \colonequals { } { \coloneq }
+ \RenewDocumentCommand \equalscolon { } { \eqcolon }
+ \RenewDocumentCommand \coloncolonequals { } { \Coloneq }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+
+\endinput
+
+% /©
+%
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
+%
+% ©/
Property changes on: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-compat.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-epilogue.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-epilogue.dtx (rev 0)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-epilogue.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -0,0 +1,352 @@
+%%^^A%% um-code-epilogue.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+% \section{Epilogue}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% Lots of little things to tidy up.
+%
+% \subsection{Resolving Greek symbol name control sequences}
+%
+% \begin{macro}{\@@_resolve_greek:}
+% This macro defines \cmd\Alpha\dots\cmd\omega\ as their corresponding
+% Unicode (mathematical italic) character. Remember that the mapping
+% to upright or italic happens with the mathcode definitions, whereas these macros
+% just stand for the literal Unicode characters.
+% \begin{macrocode}
+\AtBeginDocument{\@@_resolve_greek:}
+\cs_new:Npn \@@_resolve_greek:
+ {
+ \clist_map_inline:nn
+ {
+ Alpha,Beta,Gamma,Delta,Epsilon,Zeta,Eta,Theta,Iota,Kappa,Lambda,
+ alpha,beta,gamma,delta,epsilon,zeta,eta,theta,iota,kappa,lambda,
+ Mu,Nu,Xi,Omicron,Pi,Rho,Sigma,Tau,Upsilon,Phi,Chi,Psi,Omega,
+ mu,nu,xi,omicron,pi,rho,sigma,tau,upsilon,phi,chi,psi,omega,
+ varTheta,varsigma,vartheta,varkappa,varrho,varpi,varepsilon,varphi
+ }
+ {
+ \tl_set:cx {##1} { \exp_not:c { mit ##1 } }
+ \tl_set:cx {up ##1} { \exp_not:N \symup \exp_not:c { ##1 } }
+ \tl_set:cx {it ##1} { \exp_not:N \symit \exp_not:c { ##1 } }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \subsection{Unicode radicals}
+%
+% Make sure \cs{Uroot} is defined in the case where the \LaTeX{}
+% kernel doesn't make it available with its native name.
+% \begin{macrocode}
+%<*LU>
+\cs_if_exist:NF \Uroot
+ { \cs_new_eq:NN \Uroot \luatexUroot }
+%</LU>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\AtBeginDocument{\@@_redefine_radical:}
+\cs_new:Nn \@@_redefine_radical:
+%<*XE>
+ {
+ \@ifpackageloaded { amsmath } { }
+ {
+% \end{macrocode}
+% \begin{macro}{\r@@t}
+% \darg{A mathstyle (for \cmd\mathpalette)}
+% \darg{Leading superscript for the sqrt sign}
+% A re-implementation of \LaTeX's hard-coded n-root sign using the appropriate \cmd\fontdimen s.
+% \begin{macrocode}
+ \cs_set_nopar:Npn \r@@@@t ##1 ##2
+ {
+ \hbox_set:Nn \l_tmpa_box
+ {
+ \c_math_toggle_token
+ \m at th
+ ##1
+ \sqrtsign { ##2 }
+ \c_math_toggle_token
+ }
+ \@@_mathstyle_scale:Nnn ##1 { \kern }
+ { \fontdimen 63 \l_@@_font }
+ \box_move_up:nn
+ {
+ (\box_ht:N \l_tmpa_box - \box_dp:N \l_tmpa_box)
+ * \number \fontdimen 65 \l_@@_font / 100
+ }
+ { \box_use:N \rootbox }
+ \@@_mathstyle_scale:Nnn ##1 { \kern }
+ { \fontdimen 64 \l_@@_font }
+ \box_use_clear:N \l_tmpa_box
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+ }
+ }
+%</XE>
+%<*LU>
+ {
+ \@ifpackageloaded { amsmath } { }
+ {
+% \end{macrocode}
+% \begin{macro}{\root}
+% Redefine this macro for \LuaTeX, which provides us a nice primitive to use.
+% \begin{macrocode}
+ \cs_set:Npn \root ##1 \of ##2
+ {
+ \Uroot \l_@@_radical_sqrt_tl { ##1 } { ##2 }
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+ }
+ }
+%</LU>
+% \end{macrocode}
+%
+% \subsubsection{Active fractions}
+% Active fractions can be setup independently of any maths font definition;
+% all it requires is a mapping from the Unicode input chars to the relevant
+% \LaTeX\ fraction declaration.
+%
+% \begin{macrocode}
+\cs_new:Npn \@@_define_active_frac:Nw #1 #2/#3
+ {
+ \char_set_catcode_active:N #1
+ \@@_char_gmake_mathactive:N #1
+ \tl_rescan:nn
+ {
+ \catcode`\_=11\relax
+ \catcode`\:=11\relax
+ }
+ {
+ \cs_gset:Npx #1
+ {
+ \bool_if:NTF \l_@@_smallfrac_bool {\exp_not:N\tfrac} {\exp_not:N\frac}
+ {#2} {#3}
+ }
+ }
+ }
+% \end{macrocode}
+% These are redefined for each math font selection in case the |active-frac|
+% feature changes.
+% \begin{macrocode}
+\cs_new:Npn \@@_setup_active_frac:
+ {
+ \group_begin:
+ \@@_define_active_frac:Nw ^^^^2189 0/3
+ \@@_define_active_frac:Nw ^^^^2152 1/{10}
+ \@@_define_active_frac:Nw ^^^^2151 1/9
+ \@@_define_active_frac:Nw ^^^^215b 1/8
+ \@@_define_active_frac:Nw ^^^^2150 1/7
+ \@@_define_active_frac:Nw ^^^^2159 1/6
+ \@@_define_active_frac:Nw ^^^^2155 1/5
+ \@@_define_active_frac:Nw ^^^^00bc 1/4
+ \@@_define_active_frac:Nw ^^^^2153 1/3
+ \@@_define_active_frac:Nw ^^^^215c 3/8
+ \@@_define_active_frac:Nw ^^^^2156 2/5
+ \@@_define_active_frac:Nw ^^^^00bd 1/2
+ \@@_define_active_frac:Nw ^^^^2157 3/5
+ \@@_define_active_frac:Nw ^^^^215d 5/8
+ \@@_define_active_frac:Nw ^^^^2154 2/3
+ \@@_define_active_frac:Nw ^^^^00be 3/4
+ \@@_define_active_frac:Nw ^^^^2158 4/5
+ \@@_define_active_frac:Nw ^^^^215a 5/6
+ \@@_define_active_frac:Nw ^^^^215e 7/8
+ \group_end:
+ }
+\@@_setup_active_frac:
+% \end{macrocode}
+%
+% \subsection{Synonyms and all the rest}
+%
+% These are symbols with multiple names. Eventually to be taken care of
+% automatically by the maths characters database.
+% \begin{macrocode}
+\protected\def\to{\rightarrow}
+\protected\def\le{\leq}
+\protected\def\ge{\geq}
+\protected\def\neq{\ne}
+\protected\def\triangle{\mathord{\bigtriangleup}}
+\protected\def\bigcirc{\mdlgwhtcircle}
+\protected\def\circ{\vysmwhtcircle}
+\protected\def\bullet{\smblkcircle}
+\protected\def\mathyen{\yen}
+\protected\def\mathsterling{\sterling}
+\protected\def\diamond{\smwhtdiamond}
+\protected\def\emptyset{\varnothing}
+\protected\def\hbar{\hslash}
+\protected\def\land{\wedge}
+\protected\def\lor{\vee}
+\protected\def\owns{\ni}
+\protected\def\gets{\leftarrow}
+\protected\def\mathring{\ocirc}
+\protected\def\lnot{\neg}
+\protected\def\longdivision{\longdivisionsign}
+% \end{macrocode}
+% These are somewhat odd: (and their usual Unicode uprightness does not match their amssymb glyphs)
+% \begin{macrocode}
+\protected\def\backepsilon{\upbackepsilon}
+\protected\def\eth{\matheth}
+% \end{macrocode}
+% These are names that are `frozen' in HTML but have dumb names:
+% \begin{macrocode}
+\protected\def\dbkarow {\dbkarrow}
+\protected\def\drbkarow{\drbkarrow}
+\protected\def\hksearow{\hksearrow}
+\protected\def\hkswarow{\hkswarrow}
+% \end{macrocode}
+%
+% Due to the magic of OpenType math, big operators are automatically
+% enlarged when necessary. Since there isn't a separate unicode glyph for
+% `small integral', I'm not sure if there is a better way to do this:
+% \begin{macrocode}
+\protected\def\smallint{\mathop{\textstyle\int}\limits}
+% \end{macrocode}
+%
+% \begin{macro}{\underbar}
+% \begin{macrocode}
+\cs_set_eq:NN \latexe_underbar:n \underbar
+\renewcommand\underbar
+ {
+ \mode_if_math:TF \mathunderbar \latexe_underbar:n
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\colon}
+% Define \cs{colon} as a mathpunct `|:|'.
+% This is wrong: it should be \unichar{003A} {colon} instead!
+% We hope no-one will notice.
+% \begin{macrocode}
+\@ifpackageloaded{amsmath}
+ {
+ % define their own colon, perhaps I should just steal it. (It does look much better.)
+ }
+ {
+ \cs_set_protected:Npn \colon
+ {
+ \bool_if:NTF \g_@@_literal_colon_bool {:} { \mathpunct{:} }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\digamma}
+% \begin{macro}{\Digamma}
+% I might end up just changing these in the table.
+% \begin{macrocode}
+\protected\def\digamma{\updigamma}
+\protected\def\Digamma{\upDigamma}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \paragraph{Symbols}
+% \begin{macrocode}
+\cs_set_protected:Npn \| {\Vert}
+% \end{macrocode}
+% \cs{mathinner} items:
+% \begin{macrocode}
+\cs_set_protected:Npn \mathellipsis {\mathinner{\unicodeellipsis}}
+\cs_set_protected:Npn \cdots {\mathinner{\unicodecdots}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_set_eq:NN \@@_text_slash: \slash
+\cs_set_protected:Npn \slash
+ {
+ \mode_if_math:TF {\mathslash} {\@@_text_slash:}
+ }
+% \end{macrocode}
+%
+% \subsubsection{\cs{not}}
+% \label{sec:negations}
+%
+% The situation of \cs{not} symbol is currently messy, in Unicode it is defined
+% as a combining mark so naturally it should be treated as a math accent,
+% however neither Lua\TeX\ nor \XeTeX\ correctly place it as it needs special
+% treatment compared to other accents, furthermore a math accent changes the
+% spacing of its nucleus, so \cs{not=} will be spaced as an ordinary not
+% relational symbol, which is undesired.
+%
+% Here modify \cs{not} to a macro that tries to use predefined negated symbols,
+% which would give better results in most cases, until there is more robust
+% solution in the engines.
+%
+% This code is based on an answer to a TeX -- Stack Exchange question by Enrico
+% Gregorio\footnote{\url{http://tex.stackexchange.com/a/47260/729}}.
+%
+% \begin{macrocode}
+\cs_new:Npn \@@_newnot:N #1
+ {
+ \tl_set:Nx \l_not_token_name_tl { \token_to_str:N #1 }
+ \exp_args:Nx \tl_if_empty:nF { \tl_tail:V \l_not_token_name_tl }
+ {
+ \tl_set:Nx \l_not_token_name_tl { \tl_tail:V \l_not_token_name_tl }
+ }
+ \cs_if_exist:cTF { n \l_not_token_name_tl }
+ {
+ \use:c { n \l_not_token_name_tl }
+ }
+ {
+ \cs_if_exist:cTF { not \l_not_token_name_tl }
+ {
+ \use:c { not \l_not_token_name_tl }
+ }
+ {
+ \@@_oldnot: #1
+ }
+ }
+ }
+% \end{macrocode}
+% \begin{macrocode}
+\cs_set_eq:NN \@@_oldnot: \not
+\AtBeginDocument{\cs_set_eq:NN \not \@@_newnot:N}
+% \end{macrocode}
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \@@_setup_negations:
+ {
+ \cs_gset:cpn { not= } { \neq }
+ \cs_gset:cpn { not< } { \nless }
+ \cs_gset:cpn { not> } { \ngtr }
+ \cs_gset:Npn \ngets { \nleftarrow }
+ \cs_gset:Npn \nsimeq { \nsime }
+ \cs_gset:Npn \nequal { \ne }
+ \cs_gset:Npn \nle { \nleq }
+ \cs_gset:Npn \nge { \ngeq }
+ \cs_gset:Npn \ngreater { \ngtr }
+ \cs_gset:Npn \nforksnot { \forks }
+ }
+% \end{macrocode}
+%
+%
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+
+\endinput
+
+% /©
+%
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
+%
+% ©/
Property changes on: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-epilogue.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-fontopt.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-fontopt.dtx (rev 0)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-fontopt.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -0,0 +1,265 @@
+%%^^A%% um-code-fontopt.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+% \section{Font loading options}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% \subsection{Math version}
+% \begin{macrocode}
+\keys_define:nn {unicode-math}
+ {
+ version .code:n =
+ {
+ \tl_set:Nn \l_@@_mversion_tl {#1}
+ \DeclareMathVersion {\l_@@_mversion_tl}
+ }
+ }
+% \end{macrocode}
+%
+% \subsection{Script and scriptscript font options}
+% \begin{macrocode}
+\keys_define:nn {unicode-math}
+ {
+ script-features .tl_set:N = \l_@@_script_features_tl ,
+ sscript-features .tl_set:N = \l_@@_sscript_features_tl ,
+ script-font .tl_set:N = \l_@@_script_font_tl ,
+ sscript-font .tl_set:N = \l_@@_sscript_font_tl ,
+ }
+% \end{macrocode}
+%
+% \subsection{Range processing}
+% \seclabel{rangeproc}
+%
+% \begin{macrocode}
+\keys_define:nn {unicode-math}
+ {
+ range .code:n =
+ {
+ \bool_set_false:N \l_@@_init_bool
+% \end{macrocode}
+% Set processing functions if we're not defining the full Unicode math repetoire.
+% Math symbols are defined with \cmd\_@@_sym:nnn; see \secref{mathsymbol}
+% for the individual definitions
+% \begin{macrocode}
+ \int_incr:N \g_@@_fam_int
+ \tl_set:Nx \l_@@_symfont_label_tl {@@_fam\int_use:N\g_@@_fam_int}
+ \cs_set_eq:NN \_@@_sym:nnn \@@_process_symbol_parse:nnn
+ \cs_set_eq:NN \@@_set_mathalphabet_char:Nnn \@@_mathmap_parse:Nnn
+ \cs_set_eq:NN \@@_remap_symbol:nnn \@@_remap_symbol_parse:nnn
+ \cs_set_eq:NN \@@_maybe_init_alphabet:n \use_none:n
+ \cs_set_eq:NN \@@_map_char_single:nn \@@_map_char_parse:nn
+ \cs_set_eq:NN \@@_assign_delcode:nn \@@_assign_delcode_parse:nn
+ \cs_set_eq:NN \@@_make_mathactive:nNN \@@_make_mathactive_parse:nNN
+% \end{macrocode}
+% Proceed by filling up the various `range' seqs according to the user options.
+% \begin{macrocode}
+ \seq_clear:N \l_@@_char_range_seq
+ \seq_clear:N \l_@@_mclass_range_seq
+ \seq_clear:N \l_@@_cmd_range_seq
+ \seq_clear:N \l_@@_mathalph_seq
+
+ \clist_map_inline:nn {#1}
+ {
+ \@@_if_mathalph_decl:nTF {##1}
+ {
+ \seq_put_right:Nx \l_@@_mathalph_seq
+ {
+ { \exp_not:V \l_@@_tmpa_tl }
+ { \exp_not:V \l_@@_tmpb_tl }
+ { \exp_not:V \l_@@_tmpc_tl }
+ }
+ }
+ {
+% \end{macrocode}
+% Four cases:
+% math class matching the known list;
+% single item that is a control sequence---command name;
+% single item that isn't---edge case, must be 0--9;
+% none of the above---char range.
+% \begin{macrocode}
+ \seq_if_in:NnTF \g_@@_mathclasses_seq {##1}
+ { \seq_put_right:Nn \l_@@_mclass_range_seq {##1} }
+ {
+ \bool_lazy_and:nnTF { \tl_if_single_p:n {##1} } { \token_if_cs_p:N ##1 }
+ { \seq_put_right:Nn \l_@@_cmd_range_seq {##1} }
+ { \seq_put_right:Nn \l_@@_char_range_seq {##1} }
+ }
+ }
+ }
+ }
+ }
+% \end{macrocode}
+%
+%
+% \begin{macro}{\@@_if_mathalph_decl:nTF}
+% Possible forms of input:\\
+% |\mathscr|\\
+% |\mathscr->\mathup|\\
+% |\mathscr/{Latin}|\\
+% |\mathscr/{Latin}->\mathup|\\
+% Outputs:\\
+% |tmpa|: math style (\eg, |\mathscr|)\\
+% |tmpb|: alphabets (\eg, |Latin|)\\
+% |tmpc|: remap style (\eg, |\mathup|). Defaults to |tmpa|.
+%
+% The remap style can also be |\mathcal->stixcal|, which I marginally prefer
+% in the general case.
+% \begin{macrocode}
+\prg_new_conditional:Nnn \@@_if_mathalph_decl:n {TF}
+ {
+ \tl_set:Nn \l_@@_tmpa_tl {#1}
+ \tl_clear:N \l_@@_tmpb_tl
+ \tl_clear:N \l_@@_tmpc_tl
+
+ \tl_if_in:NnT \l_@@_tmpa_tl {->}
+ { \exp_after:wN \@@_split_arrow:w \l_@@_tmpa_tl \q_nil }
+
+ \tl_if_in:NnT \l_@@_tmpa_tl {/}
+ { \exp_after:wN \@@_split_slash:w \l_@@_tmpa_tl \q_nil }
+
+ \tl_set:Nx \l_@@_tmpa_tl { \tl_to_str:N \l_@@_tmpa_tl }
+ \exp_args:NNx \tl_remove_all:Nn \l_@@_tmpa_tl { \token_to_str:N \math }
+ \exp_args:NNx \tl_remove_all:Nn \l_@@_tmpa_tl { \token_to_str:N \sym }
+ \tl_trim_spaces:N \l_@@_tmpa_tl
+
+ \tl_if_empty:NT \l_@@_tmpc_tl
+ { \tl_set_eq:NN \l_@@_tmpc_tl \l_@@_tmpa_tl }
+
+ \seq_if_in:NVTF \g_@@_named_ranges_seq \l_@@_tmpa_tl
+ { \prg_return_true: } { \prg_return_false: }
+ }
+% \end{macrocode}
+% \begin{macrocode}
+\cs_set:Npn \@@_split_arrow:w #1->#2 \q_nil
+ {
+ \tl_set:Nx \l_@@_tmpa_tl { \tl_trim_spaces:n {#1} }
+ \tl_set:Nx \l_@@_tmpc_tl { \tl_trim_spaces:n {#2} }
+ }
+% \end{macrocode}
+% \begin{macrocode}
+\cs_set:Npn \@@_split_slash:w #1/#2 \q_nil
+ {
+ \tl_set:Nx \l_@@_tmpa_tl { \tl_trim_spaces:n {#1} }
+ \tl_set:Nx \l_@@_tmpb_tl { \tl_trim_spaces:n {#2} }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% Pretty basic comma separated range processing.
+% Donald Arseneau's \pkg{selectp} package has a cleverer technique.
+%
+% \begin{macro}{\@@_if_char_spec:nNNT}
+% \darg{Unicode character slot}
+% \darg{control sequence (character macro)}
+% \darg{control sequence (math class)}
+% \darg{code to execute}
+% This macro expands to |#4|
+% if any of its arguments are contained in \cmd\l_@@_char_range_seq.
+% This list can contain either character ranges (for checking with |#1|) or control sequences.
+% These latter can either be the command name of a specific character, \emph{or} the math
+% type of one (\eg, \cmd\mathbin).
+%
+% Character ranges are passed to \cs{@@_if_char_spec:nNNT}, which accepts input in the form shown in \tabref{ranges}.
+%
+% \begin{table}[htbp]
+% \centering
+% \topcaption{Ranges accepted by \cs{@@_if_char_spec:nNNT}.}
+% \label{tab:ranges}
+% \begin{tabular}{>{\ttfamily}cc}
+% \textrm{Input} & Range \\
+% \hline
+% x & $r=x$ \\
+% x- & $r\geq x$ \\
+% -y & $r\leq y$ \\
+% x-y & $x \leq r \leq y$ \\
+% \end{tabular}
+% \end{table}
+%
+% We have three tests, performed sequentially in order of execution time.
+% Any test finding a match jumps directly to the end.
+% \begin{macrocode}
+\cs_new:Nn \@@_if_char_spec:nNNT
+ {
+ % math class:
+ \seq_if_in:NnT \l_@@_mclass_range_seq {#3}
+ { \use_none_delimit_by_q_nil:w }
+
+ % command name:
+ \seq_if_in:NnT \l_@@_cmd_range_seq {#2}
+ { \use_none_delimit_by_q_nil:w }
+
+ % character slot:
+ \seq_map_inline:Nn \l_@@_char_range_seq
+ {
+ \@@_int_if_slot_in_range:nnT {#1} {##1}
+ { \seq_map_break:n { \use_none_delimit_by_q_nil:w } }
+ }
+
+ % the following expands to nil if no match was found:
+ \use_none:nnn
+ \q_nil
+ \use:n
+ {
+ \clist_put_right:Nx \l_@@_char_nrange_clist { \int_eval:n {#1} }
+ #4
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_int_if_slot_in_range:nnT}
+% A `numrange' is like |-2,5-8,12,17-| (can be unsorted).
+%
+% Four cases, four argument types:
+% \begin{Verbatim}
+% input #2 #3 #4
+% "1 " [ 1] - [qn] - [ ] qs
+% "1- " [ 1] - [ ] - [qn-] qs
+% " -3" [ ] - [ 3] - [qn-] qs
+% "1-3" [ 1] - [ 3] - [qn-] qs
+% \end{Verbatim}
+%
+% \begin{macrocode}
+\cs_new:Nn \@@_int_if_slot_in_range:nnT
+ { \@@_numrange_parse:nwT {#1} #2 - \q_nil - \q_stop {#3} }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_set:Npn \@@_numrange_parse:nwT #1 #2 - #3 - #4 \q_stop #5
+ {
+ \tl_if_empty:nTF {#4} { \int_compare:nT {#1=#2} {#5} }
+ {
+ \tl_if_empty:nTF {#3} { \int_compare:nT {#1>=#2} {#5} }
+ {
+ \tl_if_empty:nTF {#2} { \int_compare:nT {#1<=#3} {#5} }
+ {
+ \int_compare:nT {#1>=#2} { \int_compare:nT {#1<=#3} {#5} }
+ } } }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+
+\endinput
+
+% /©
+%
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
+%
+% ©/
Property changes on: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-fontopt.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-fontparam.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-fontparam.dtx (rev 0)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-fontparam.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -0,0 +1,345 @@
+%%^^A%% um-code-fontparam.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+% \section{Common interface for font parameters}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% \XeTeX\ and \LuaTeX\ have different interfaces for math font parameters.
+% We use \LuaTeX’s interface because it’s much better, but rename the primitives to be more \LaTeX3-like.
+% There are getter and setter commands for each font parameter.
+% The names of the parameters is derived from the \LuaTeX\ names, with underscores inserted between words.
+% For every parameter \cs{Umath\meta{\LuaTeX\ name}}, we define an expandable getter command \cs{@@_\meta{\LaTeX3 name}:N} and a protected setter command \cs{@@_set_\meta{\LaTeX3 name}:Nn}.
+% The getter command takes one of the style primitives (\cs{displaystyle} etc.)\ and expands to the font parameter, which is a \meta{dimension}.
+% The setter command takes a style primitive and a dimension expression, which is parsed with \cs{dim_eval:n}.
+%
+% Often, the mapping between font dimensions and font parameters is bijective, but there are cases which require special attention:
+% \begin{itemize}
+% \item Some parameters map to different dimensions in display and non-display styles.
+% \item Likewise, one parameter maps to different dimensions in non-cramped and cramped styles.
+% \item There are a few parameters for which \XeTeX\ doesn’t seem to provide \cs{fontdimen}s; in this case the getter and setter commands are left undefined.
+% \end{itemize}
+%
+% \paragraph{Cramped style tokens}
+% \LuaTeX\ has \cs{crampeddisplaystyle} etc.,\ but they are loaded as \cs{luatexcrampeddisplaystyle} etc.\ by the \pkg{luatextra} package.
+% \XeTeX, however, doesn’t have these primitives, and their syntax cannot really be emulated.
+% Nevertheless, we define these commands as quarks, so they can be used as arguments to the font parameter commands (but nowhere else).
+% Making these commands available is necessary because we need to make a distinction between cramped and non-cramped styles for one font parameter.
+%
+% \begin{macro}{\@@_new_cramped_style:N}
+% \darg{command}
+% Define \meta{command} as a new cramped style switch.
+% For \LuaTeX, simply rename the correspronding primitive if it is not
+% already defined.
+% For \XeTeX, define \meta{command} as a new quark.
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \@@_new_cramped_style:N
+%<XE> { \quark_new:N #1 }
+%<LU> {
+%<LU> \cs_if_exist:NF #1
+%<LU> { \cs_new_eq:Nc #1 { luatex \cs_to_str:N #1 } }
+%<LU> }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\crampeddisplaystyle}
+% \begin{macro}{\crampedtextstyle}
+% \begin{macro}{\crampedscriptstyle}
+% \begin{macro}{\crampedscriptscriptstyle}
+% The cramped style commands.
+% \begin{macrocode}
+\@@_new_cramped_style:N \crampeddisplaystyle
+\@@_new_cramped_style:N \crampedtextstyle
+\@@_new_cramped_style:N \crampedscriptstyle
+\@@_new_cramped_style:N \crampedscriptscriptstyle
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \paragraph{Font dimension mapping}
+% Font parameters may differ between the styles.
+% \LuaTeX\ accounts for this by having the parameter primitives take a style token argument.
+% To replicate this behavior in \XeTeX, we have to map style tokens to specific combinations of font dimension numbers and math fonts (\cs{textfont} etc.).
+%
+% \begin{macro}{\@@_font_dimen:Nnnnn}
+% \darg{style token}
+% \darg{font dimen for display style}
+% \darg{font dimen for cramped display style}
+% \darg{font dimen for non-display styles}
+% \darg{font dimen for cramped non-display styles}
+% Map math style to \XeTeX\ math font dimension.
+% \meta{style token} must be one of the style switches (\cs{displaystyle}, \cs{crampeddisplaystyle}, \dots).
+% The other parameters are integer constants referring to font dimension numbers.
+% The macro expands to a dimension which contains the appropriate font dimension.
+% \begin{macrocode}
+%<*XE>
+ \cs_new_nopar:Npn \@@_font_dimen:Nnnnn #1 #2 #3 #4 #5 {
+ \fontdimen
+ \cs_if_eq:NNTF #1 \displaystyle {
+ #2 \textfont
+ } {
+ \cs_if_eq:NNTF #1 \crampeddisplaystyle {
+ #3 \textfont
+ } {
+ \cs_if_eq:NNTF #1 \textstyle {
+ #4 \textfont
+ } {
+ \cs_if_eq:NNTF #1 \crampedtextstyle {
+ #5 \textfont
+ } {
+ \cs_if_eq:NNTF #1 \scriptstyle {
+ #4 \scriptfont
+ } {
+ \cs_if_eq:NNTF #1 \crampedscriptstyle {
+ #5 \scriptfont
+ } {
+ \cs_if_eq:NNTF #1 \scriptscriptstyle {
+ #4 \scriptscriptfont
+ } {
+% \end{macrocode}
+% Should we check here if the style is invalid?
+% \begin{macrocode}
+ #5 \scriptscriptfont
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+% \end{macrocode}
+% Which family to use?
+% \begin{macrocode}
+ \c_two
+ }
+%</XE>
+% \end{macrocode}
+% \end{macro}
+%
+% \paragraph{Font parameters}
+% This paragraph contains macros for defining the font parameter interface, as well as the definition for all font parameters known to \LuaTeX.
+%
+% \begin{macro}{\@@_font_param:nnnnn}
+% \darg{name}
+% \darg{font dimension for non-cramped display style}
+% \darg{font dimension for cramped display style}
+% \darg{font dimension for non-cramped non-display styles}
+% \darg{font dimension for cramped non-display styles}
+% This macro defines getter and setter functions for the font parameter \meta{name}.
+% The \LuaTeX\ font parameter name is produced by removing all underscores and prefixing the result with |Umath|.
+% The \XeTeX\ font dimension numbers must be integer constants.
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \@@_font_param:nnnnn
+%<*XE>
+{
+ \@@_font_param_aux:ccnnnn { @@_ #1 :N } { @@_set_ #1 :Nn }
+ { #2 } { #3 } { #4 } { #5 }
+}
+%</XE>
+%<*LU>
+{
+ \tl_set:Nn \l_@@_tmpa_tl { #1 }
+ \tl_remove_all:Nn \l_@@_tmpa_tl { _ }
+ \@@_font_param_aux:ccc { @@_ #1 :N } { @@_set_ #1 :Nn }
+ { Umath \l_@@_tmpa_tl }
+}
+%</LU>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_font_param:nnn}
+% \darg{name}
+% \darg{font dimension for display style}
+% \darg{font dimension for non-display styles}
+% This macro defines getter and setter functions for the font parameter \meta{name}.
+% The \LuaTeX\ font parameter name is produced by removing all underscores and prefixing the result with |Umath|.
+% The \XeTeX\ font dimension numbers must be integer constants.
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \@@_font_param:nnn
+ {
+ \@@_font_param:nnnnn { #1 } { #2 } { #2 } { #3 } { #3 }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_font_param:nn}
+% \darg{name}
+% \darg{font dimension}
+% This macro defines getter and setter functions for the font parameter \meta{name}.
+% The \LuaTeX\ font parameter name is produced by removing all underscores and prefixing the result with |Umath|.
+% The \XeTeX\ font dimension number must be an integer constant.
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \@@_font_param:nn
+ {
+ \@@_font_param:nnnnn { #1 } { #2 } { #2 } { #2 } { #2 }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_font_param:n}
+% \darg{name}
+% This macro defines getter and setter functions for the font parameter \meta{name}, which is considered unavailable in \XeTeX\@.
+% The \LuaTeX\ font parameter name is produced by removing all underscores and prefixing the result with |Umath|.
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \@@_font_param:n
+%<XE> { }
+%<LU> { \@@_font_param:nnnnn { #1 } { 0 } { 0 } { 0 } { 0 } }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_font_param_aux:NNnnnn}
+% \begin{macro}{\@@_font_param_aux:NNN}
+% Auxiliary macros for generating font parameter accessor macros.
+% \begin{macrocode}
+%<*XE>
+\cs_new_protected_nopar:Nn \@@_font_param_aux:NNnnnn
+ {
+ \cs_new_nopar:Npn #1 ##1
+ {
+ \@@_font_dimen:Nnnnn ##1 { #3 } { #4 } { #5 } { #6 }
+ }
+ \cs_new_protected_nopar:Npn #2 ##1 ##2
+ {
+ #1 ##1 \dim_eval:n { ##2 }
+ }
+ }
+\cs_generate_variant:Nn \@@_font_param_aux:NNnnnn { cc }
+%</XE>
+%<*LU>
+\cs_new_protected_nopar:Nn \@@_font_param_aux:NNN
+ {
+ \cs_new_nopar:Npn #1 ##1
+ {
+ #3 ##1
+ }
+ \cs_new_protected_nopar:Npn #2 ##1 ##2
+ {
+ #3 ##1 \dim_eval:n { ##2 }
+ }
+ }
+\cs_generate_variant:Nn \@@_font_param_aux:NNN { ccc }
+%</LU>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% Now all font parameters that are listed in the \LuaTeX\ reference follow.
+% \begin{macrocode}
+\@@_font_param:nn { axis } { 15 }
+\@@_font_param:nn { operator_size } { 13 }
+\@@_font_param:n { fraction_del_size }
+\@@_font_param:nnn { fraction_denom_down } { 45 } { 44 }
+\@@_font_param:nnn { fraction_denom_vgap } { 50 } { 49 }
+\@@_font_param:nnn { fraction_num_up } { 43 } { 42 }
+\@@_font_param:nnn { fraction_num_vgap } { 47 } { 46 }
+\@@_font_param:nn { fraction_rule } { 48 }
+\@@_font_param:nn { limit_above_bgap } { 29 }
+\@@_font_param:n { limit_above_kern }
+\@@_font_param:nn { limit_above_vgap } { 28 }
+\@@_font_param:nn { limit_below_bgap } { 31 }
+\@@_font_param:n { limit_below_kern }
+\@@_font_param:nn { limit_below_vgap } { 30 }
+\@@_font_param:nn { over_delimiter_vgap } { 41 }
+\@@_font_param:nn { over_delimiter_bgap } { 38 }
+\@@_font_param:nn { under_delimiter_vgap } { 40 }
+\@@_font_param:nn { under_delimiter_bgap } { 39 }
+\@@_font_param:nn { overbar_kern } { 55 }
+\@@_font_param:nn { overbar_rule } { 54 }
+\@@_font_param:nn { overbar_vgap } { 53 }
+\@@_font_param:n { quad }
+\@@_font_param:nn { radical_kern } { 62 }
+\@@_font_param:nn { radical_rule } { 61 }
+\@@_font_param:nnn { radical_vgap } { 60 } { 59 }
+\@@_font_param:nn { radical_degree_before } { 63 }
+\@@_font_param:nn { radical_degree_after } { 64 }
+\@@_font_param:nn { radical_degree_raise } { 65 }
+\@@_font_param:nn { space_after_script } { 27 }
+\@@_font_param:nnn { stack_denom_down } { 35 } { 34 }
+\@@_font_param:nnn { stack_num_up } { 33 } { 32 }
+\@@_font_param:nnn { stack_vgap } { 37 } { 36 }
+\@@_font_param:nn { sub_shift_down } { 18 }
+\@@_font_param:nn { sub_shift_drop } { 20 }
+\@@_font_param:n { subsup_shift_down }
+\@@_font_param:nn { sub_top_max } { 19 }
+\@@_font_param:nn { subsup_vgap } { 25 }
+\@@_font_param:nn { sup_bottom_min } { 23 }
+\@@_font_param:nn { sup_shift_drop } { 24 }
+\@@_font_param:nnnnn { sup_shift_up } { 21 } { 22 } { 21 } { 22 }
+\@@_font_param:nn { supsub_bottom_max } { 26 }
+\@@_font_param:nn { underbar_kern } { 58 }
+\@@_font_param:nn { underbar_rule } { 57 }
+\@@_font_param:nn { underbar_vgap } { 56 }
+\@@_font_param:n { connector_overlap_min }
+% \end{macrocode}
+%
+% \subsection{Historical commands}
+%
+% TODO: maybe no longer necessary?
+%
+% \begin{macro}{\@@_fontdimen_to_percent:nn}
+% \begin{macro}{\@@_fontdimen_to_scale:nn}
+% \darg{Font dimen number}
+% \darg{Font `variable'}
+% \cmd\fontdimen s |10|, |11|, and |65| aren't actually dimensions, they're percentage values given in units of |sp|.
+% \cs{@@_fontdimen_to_percent:nn} takes a font dimension number and outputs the decimal value of the associated parameter.
+% \cs{@@_fontdimen_to_scale:nn} returns a dimension correspond to the current
+% font size relative proportion based on that percentage.
+% \begin{macrocode}
+\cs_new:Nn \@@_fontdimen_to_percent:nn
+ {
+ \fp_eval:n { \dim_to_decimal:n { \fontdimen #1 #2 } * 65536 / 100 }
+ }
+\cs_new:Nn \@@_fontdimen_to_scale:nn
+ {
+ \fp_eval:n {\@@_fontdimen_to_percent:nn {#1} {#2} * \f at size } pt
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@@_mathstyle_scale:Nnn}
+% \darg{A math style (\cs{scriptstyle}, say)}
+% \darg{Macro that takes a non-delimited length argument (like \cmd\kern)}
+% \darg{Length control sequence to be scaled according to the math style}
+% This macro is used to scale the lengths reported by \cmd\fontdimen\ according to the scale factor for script- and scriptscript-size objects.
+% \begin{macrocode}
+\cs_new:Nn \@@_mathstyle_scale:Nnn
+ {
+ \ifx#1\scriptstyle
+ #2 \@@_fontdimen_to_percent:nn {10} \l_@@_font #3
+ \else
+ \ifx#1\scriptscriptstyle
+ #2 \@@_fontdimen_to_percent:nn {11} \l_@@_font #3
+ \else
+ #2 #3
+ \fi
+ \fi
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+
+\endinput
+
+% /©
+%
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
+%
+% ©/
Property changes on: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-fontparam.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-main.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-main.dtx (rev 0)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-main.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -0,0 +1,562 @@
+%%^^A%% um-code-main.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+% \section{The main \cs{setmathfont} macro}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% Using a |range| including large character sets such as \cmd\mathrel,
+% \cmd\mathalpha, \etc, is \emph{very slow}!
+% I hope to improve the performance somehow.
+%
+% \begin{macro}{\@@_setmathfont:nn}
+% \begin{macrocode}
+\cs_set:Nn \@@_setmathfont:nn
+ {
+ \tl_set:Nn \l_@@_fontname_tl {#2}
+% \end{macrocode}
+% Erase any conception \LaTeX\ has of previously defined math symbol fonts;
+% this allows \cmd\DeclareSymbolFont\ at any point in the document.
+% \begin{macrocode}
+ \cs_set_eq:NN \glb at currsize \scan_stop:
+% \end{macrocode}
+% Initialise all local variabes:
+% \begin{macrocode}
+ \@@_init:
+% \end{macrocode}
+% Grab the current size information:
+% (is this robust enough? Maybe it should be preceded by \cmd\normalsize).
+% The macro \cmd\S@\meta{size}
+% contains the definitions of the sizes used for maths letters, subscripts and subsubscripts in
+% \cmd\tf at size, \cmd\sf at size, and \cmd\ssf at size, respectively.
+% \begin{macrocode}
+ \cs_if_exist:cF { S@ \f at size } { \calculate at math@sizes }
+ \csname S@\f at size\endcsname
+% \end{macrocode}
+% Parse options and tell people what's going on:
+% \begin{macrocode}
+ \keys_set_known:nnN {unicode-math} {#1} \l_@@_unknown_keys_clist
+ \bool_if:NT \l_@@_init_bool { \@@_log:n {default-math-font} }
+% \end{macrocode}
+% Use \pkg{fontspec} to select a font to use.
+% After loading the font, we detect what sizes it recommends for scriptsize and scriptscriptsize, so after setting those values appropriately, we reload the font to take these into account.
+% \begin{macrocode}
+%<debug> \csname TIC\endcsname
+ \@@_fontspec_select_font:
+%<debug> \csname TOC\endcsname
+ \bool_if:nT { \l_@@_ot_math_bool && !\g_@@_mainfont_already_set_bool }
+ {
+ \@@_declare_math_sizes:
+ \@@_fontspec_select_font:
+ }
+% \end{macrocode}
+% Now define |\l_@@_symfont_label_tl| as the \LaTeX\ math font to access everything:
+% \begin{macrocode}
+ \cs_if_exist:cF { sym \l_@@_symfont_label_tl }
+ {
+ \DeclareSymbolFont{\l_@@_symfont_label_tl}
+ {\encodingdefault}{\l_@@_family_tl}{\mddefault}{\updefault}
+ }
+ \SetSymbolFont{\l_@@_symfont_label_tl}{\l_@@_mversion_tl}
+ {\encodingdefault}{\l_@@_family_tl}{\mddefault}{\updefault}
+% \end{macrocode}
+% Set the bold math version.
+% \begin{macrocode}
+ \str_if_eq_x:nnT {\l_@@_mversion_tl} {normal}
+ {
+ \SetSymbolFont{\l_@@_symfont_label_tl}{bold}
+ {\encodingdefault}{\l_@@_family_tl}{\bfdefault}{\updefault}
+ }
+% \end{macrocode}
+% Declare the math sizes (i.e., scaling of superscripts) for the specific
+% values for this font,
+% and set defaults for math fams two and three for legacy compatibility:
+% \begin{macrocode}
+ \bool_if:nT { \l_@@_ot_math_bool && !\g_@@_mainfont_already_set_bool }
+ {
+ \bool_set_true:N \g_@@_mainfont_already_set_bool
+ \@@_setup_legacy_fam_two:
+ \@@_setup_legacy_fam_three:
+ }
+% \end{macrocode}
+% And now we input every single maths char.
+% \begin{macrocode}
+%<debug> \csname TIC\endcsname
+ \@@_input_math_symbol_table:
+%<debug> \csname TOC\endcsname
+% \end{macrocode}
+% Finally,
+% \begin{itemize}
+% \item remap symbols that don't take their natural mathcode;
+% \item activate any symbols that need to be math-active;
+% \item assign delimiter codes for symbols that need to grow;
+% \item setup the maths alphabets (\cs{symbf} etc.) ---
+% this is an extensive part of the code; see Section~\ref{sec:mathmap};
+% \item setup negations, which are handled on an ad hoc basis; see Section~\ref{sec:negations}.
+% \end{itemize}
+% \begin{macrocode}
+ \@@_remap_symbols:
+ \@@_setup_mathactives:
+ \@@_setup_delcodes:
+%<debug> \csname TIC\endcsname
+ \@@_setup_alphabets:
+%<debug> \csname TOC\endcsname
+ \@@_setup_negations:
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \paragraph{Fall-back font}
+%
+% Want to load Latin Modern Math if nothing else.
+% This needs to happen early so that all of the font-loading machinery executes before
+% the other `AtBeginDocument' code.
+% \begin{macrocode}
+\AtBeginDocument { \@@_load_lm_if_necessary: }
+\cs_new:Nn \@@_load_lm_if_necessary:
+ {
+ \cs_if_exist:NF \l_@@_fontname_tl
+ {
+ % TODO: update this when lmmath-bold.otf is released
+ \setmathfont{latinmodern-math.otf}[BoldFont={latinmodern-math.otf}]
+ \bool_set_false:N \g_@@_mainfont_already_set_bool
+ }
+ }
+% \end{macrocode}
+% Note that here we reset the `font already loaded' boolean so that a new font being set
+% will do the right thing in terms of setting up defaults.
+%
+% TODO: need a better way to do this for the general case. (Maybe a `reset' command option?)
+%
+% \begin{macro}{\@@_init:}
+% \begin{macrocode}
+\cs_new:Nn \@@_init:
+ {
+ \bool_set_true:N \l_@@_ot_math_bool
+ \tl_set:Nn \l_@@_mversion_tl {normal}
+ \tl_set:Nn \l_@@_symfont_label_tl {operators}
+% \end{macrocode}
+% Defaults for the script and scriptscript font.
+% \begin{macrocode}
+ \tl_set:Nn \l_@@_script_features_tl {Style=MathScript}
+ \tl_set:Nn \l_@@_sscript_features_tl {Style=MathScriptScript}
+ \tl_set_eq:NN \l_@@_script_font_tl \l_@@_fontname_tl
+ \tl_set_eq:NN \l_@@_sscript_font_tl \l_@@_fontname_tl
+% \end{macrocode}
+% Default to defining the font for every math symbol character.
+% \begin{macrocode}
+ \bool_set_true:N \l_@@_init_bool
+ \seq_clear:N \l_@@_char_range_seq
+ \clist_clear:N \l_@@_char_nrange_clist
+ \seq_clear:N \l_@@_mathalph_seq
+ \seq_clear:N \l_@@_missing_alph_seq
+% \end{macrocode}
+% Other range initialisations.
+% \begin{macrocode}
+ \cs_set_eq:NN \_@@_sym:nnn \@@_process_symbol_noparse:nnn
+ \cs_set_eq:NN \@@_set_mathalphabet_char:nnn \@@_mathmap_noparse:nnn
+ \cs_set_eq:NN \@@_remap_symbol:nnn \@@_remap_symbol_noparse:nnn
+ \cs_set_eq:NN \@@_maybe_init_alphabet:n \@@_init_alphabet:n
+ \cs_set_eq:NN \@@_map_char_single:nn \@@_map_char_noparse:nn
+ \cs_set_eq:NN \@@_assign_delcode:nn \@@_assign_delcode_noparse:nn
+ \cs_set_eq:NN \@@_make_mathactive:nNN \@@_make_mathactive_noparse:nNN
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_declare_math_sizes:}
+% Set the math sizes according to the recommended font parameters.
+% TODO: this shouldn't need to be per-engine; check out why the wrappers aren't used.
+% \begin{macrocode}
+\cs_new:Nn \@@_declare_math_sizes:
+ {
+%<*LU>
+ \fp_compare:nF { \@@_script_style_size:n {ScriptPercentScaleDown} == 0 }
+ {
+ \DeclareMathSizes { \f at size } { \f at size }
+ { \@@_script_style_size:n {ScriptPercentScaleDown} }
+ { \@@_script_style_size:n {ScriptScriptPercentScaleDown} }
+ }
+%</LU>
+%<*XE>
+ \dim_compare:nF { \fontdimen 10 \l_@@_font == 0pt }
+ {
+ \DeclareMathSizes { \f at size } { \f at size }
+ { \@@_fontdimen_to_scale:nn {10} {\l_@@_font} }
+ { \@@_fontdimen_to_scale:nn {11} {\l_@@_font} }
+ }
+%</XE>
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_script_style_size:n}
+% Determine script- and scriptscriptstyle sizes using luaotfload:
+% \begin{macrocode}
+%<*LU>
+\cs_new:Nn \@@_script_style_size:n
+ {
+ \fp_eval:n {\directlua{tex.sprint(luaotfload.aux.get_math_dimension("l_@@_font","#1"))} * \f at size / 100 }
+ }
+%</LU>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_setup_legacy_fam_two:}
+% \TeX\ won't load the same font twice at the same scale, so we need to magnify this one by an imperceptable amount.
+% \begin{macrocode}
+\cs_new:Nn \@@_setup_legacy_fam_two:
+ {
+ \fontspec_set_family:Nxn \l_@@_family_tl
+ {
+ \l_@@_font_keyval_tl,
+ Scale=1.00001,
+ FontAdjustment =
+ {
+ \@@_copy_fontparam:nnn { 8} {43} {FractionNumeratorDisplayStyleShiftUp}\relax
+ \@@_copy_fontparam:nnn { 9} {42} {FractionNumeratorShiftUp}\relax
+ \@@_copy_fontparam:nnn {10} {32} {StackTopShiftUp}\relax
+ \@@_copy_fontparam:nnn {11} {45} {FractionDenominatorDisplayStyleShiftDown}\relax
+ \@@_copy_fontparam:nnn {12} {44} {FractionDenominatorShiftDown}\relax
+ \@@_copy_fontparam:nnn {13} {21} {SuperscriptShiftUp}\relax
+ \@@_copy_fontparam:nnn {14} {21} {SuperscriptShiftUp}\relax
+ \@@_copy_fontparam:nnn {15} {22} {SuperscriptShiftUpCramped}\relax
+ \@@_copy_fontparam:nnn {16} {18} {SubscriptShiftDown}\relax
+ \@@_copy_fontparam:nnn {17} {18} {SubscriptShiftDownWithSuperscript}\relax
+ \@@_copy_fontparam:nnn {18} {24} {SuperscriptBaselineDropMax}\relax
+ \@@_copy_fontparam:nnn {19} {20} {SubscriptBaselineDropMin}\relax
+ \@@_zero_fontparam:n {20} % delim1 = FractionDelimiterDisplaySize
+ \@@_zero_fontparam:n {21} % delim2 = FractionDelimiterSize
+ \@@_copy_fontparam:nnn {22} {15} {AxisHeight}\relax
+ }
+ } {\l_@@_fontname_tl}
+
+ \SetSymbolFont{symbols}{\l_@@_mversion_tl}
+ {\encodingdefault}{\l_@@_family_tl}{\mddefault}{\updefault}
+
+ \str_if_eq_x:nnT {\l_@@_mversion_tl} {normal}
+ {
+ \SetSymbolFont{symbols}{bold}
+ {\encodingdefault}{\l_@@_family_tl}{\bfdefault}{\updefault}
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_setup_legacy_fam_three:}
+% Similarly, this font is shrunk by an imperceptable amount for \TeX\ to load it again.
+% \begin{macrocode}
+\cs_new:Nn \@@_setup_legacy_fam_three:
+ {
+ \fontspec_set_family:Nxn \l_@@_family_tl
+ {
+ \l_@@_font_keyval_tl,
+ Scale=0.99999,
+ FontAdjustment = {
+ \@@_copy_fontparam:nnn { 8} {48} {FractionRuleThickness}\relax
+ \@@_copy_fontparam:nnn { 9} {28} {UpperLimitGapMin}\relax
+ \@@_copy_fontparam:nnn {10} {30} {LowerLimitGapMin}\relax
+ \@@_copy_fontparam:nnn {11} {29} {UpperLimitBaselineRiseMin}\relax
+ \@@_copy_fontparam:nnn {12} {31} {LowerLimitBaselineDropMin}\relax
+ \@@_zero_fontparam:n {13}
+ }
+ } {\l_@@_fontname_tl}
+
+ \SetSymbolFont{largesymbols}{\l_@@_mversion_tl}
+ {\encodingdefault}{\l_@@_family_tl}{\mddefault}{\updefault}
+
+ \str_if_eq_x:nnT {\l_@@_mversion_tl} {normal}
+ {
+ \SetSymbolFont{largesymbols}{bold}
+ {\encodingdefault}{\l_@@_family_tl}{\bfdefault}{\updefault}
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@@_fontspec_select_font:}
+% Select the font with \cs{fontspec} and define \cs{l_@@_font} from it.
+% \begin{macrocode}
+\cs_new:Nn \@@_fontspec_select_font:
+ {
+ \tl_set:Nx \l_@@_font_keyval_tl {
+%<LU> Renderer = Basic,
+ BoldItalicFont = {}, ItalicFont = {},
+ Script = Math,
+ SizeFeatures =
+ {
+ {
+ Size = \tf at size-
+ } ,
+ {
+ Size = \sf at size-\tf at size ,
+ Font = \l_@@_script_font_tl ,
+ \l_@@_script_features_tl
+ } ,
+ {
+ Size = -\sf at size ,
+ Font = \l_@@_sscript_font_tl ,
+ \l_@@_sscript_features_tl
+ }
+ } ,
+ \l_@@_unknown_keys_clist
+ }
+
+ \fontspec_set_fontface:NNxn \l_@@_font \l_@@_family_tl
+ {\l_@@_font_keyval_tl} {\l_@@_fontname_tl}
+% \end{macrocode}
+% Check whether we're using a real maths font:
+% \begin{macrocode}
+ \group_begin:
+ \fontfamily{\l_@@_family_tl}\selectfont
+ \fontspec_if_script:nF {math} {\bool_gset_false:N \l_@@_ot_math_bool}
+ \group_end:
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Functions for setting up symbols with mathcodes}
+% \seclabel{mathsymbol}
+%
+% \begin{macro}{\@@_process_symbol_noparse:nnn}
+% \begin{macro}{\@@_process_symbol_parse:nnn}
+% If the \feat{range} font feature has been used, then only
+% a subset of the Unicode glyphs are to be defined.
+% See \secref{rangeproc} for the code that enables this.
+% \begin{macrocode}
+\cs_set:Nn \@@_process_symbol_noparse:nnn
+ {
+ \@@_set_mathsymbol:nNNn {\l_@@_symfont_label_tl} #2 #3 {#1}
+ }
+% \end{macrocode}
+% \begin{macrocode}
+\cs_set:Nn \@@_process_symbol_parse:nnn
+ {
+ \@@_if_char_spec:nNNT {#1} {#2} {#3}
+ {
+ \@@_process_symbol_noparse:nnn {#1} {#2} {#3}
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@@_remap_symbols:}
+% \begin{macro}{\@@_remap_symbol_noparse:nnn}
+% \begin{macro}{\@@_remap_symbol_parse:nnn}
+% This function is used to define the mathcodes for those chars which should
+% be mapped to a different glyph than themselves.
+% \begin{macrocode}
+\cs_new:Npn \@@_remap_symbols:
+ {
+ \@@_remap_symbol:nnn{`\-}{\mathbin}{"02212}% hyphen to minus
+ \@@_remap_symbol:nnn{`\*}{\mathbin}{"02217}% text asterisk to "centred asterisk"
+ \bool_if:NF \g_@@_literal_colon_bool
+ {
+ \@@_remap_symbol:nnn{`\:}{\mathrel}{"02236}% colon to ratio (i.e., punct to rel)
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% Where |\@@_remap_symbol:nnn| is defined to be one of these two, depending
+% on the range setup:
+% \begin{macrocode}
+\cs_new:Nn \@@_remap_symbol_parse:nnn
+ {
+ \@@_if_char_spec:nNNT {#3} {\@nil} {#2}
+ { \@@_remap_symbol_noparse:nnn {#1} {#2} {#3} }
+ }
+\cs_new:Nn \@@_remap_symbol_noparse:nnn
+ {
+ \clist_map_inline:nn {#1}
+ { \@@_set_mathcode:nnnn {##1} {#2} {\l_@@_symfont_label_tl} {#3} }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Active math characters}
+%
+% There are more math active chars later in the subscript/superscript section.
+% But they don't need to be able to be typeset directly.
+%
+% \begin{macro}{\@@_setup_mathactives:}
+% \begin{macrocode}
+\cs_new:Npn \@@_setup_mathactives:
+ {
+ \@@_make_mathactive:nNN {"2032} \@@_prime_single_mchar \mathord
+ \@@_make_mathactive:nNN {"2033} \@@_prime_double_mchar \mathord
+ \@@_make_mathactive:nNN {"2034} \@@_prime_triple_mchar \mathord
+ \@@_make_mathactive:nNN {"2057} \@@_prime_quad_mchar \mathord
+ \@@_make_mathactive:nNN {"2035} \@@_backprime_single_mchar \mathord
+ \@@_make_mathactive:nNN {"2036} \@@_backprime_double_mchar \mathord
+ \@@_make_mathactive:nNN {"2037} \@@_backprime_triple_mchar \mathord
+ \@@_make_mathactive:nNN {`\'} \mathstraightquote \mathord
+ \@@_make_mathactive:nNN {`\`} \mathbacktick \mathord
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_make_mathactive:nNN}
+% Makes |#1| a mathactive char, and gives cs |#2| the meaning of mathchar |#1|
+% with class |#3|.
+% You are responsible for giving active |#1| a particular meaning!
+% \begin{macrocode}
+\cs_new:Nn \@@_make_mathactive_parse:nNN
+ {
+ \@@_if_char_spec:nNNT {#1} #2 #3
+ { \@@_make_mathactive_noparse:nNN {#1} #2 #3 }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new:Nn \@@_make_mathactive_noparse:nNN
+ {
+ \@@_set_mathchar:NNnn #2 #3 {\l_@@_symfont_label_tl} {#1}
+ \@@_char_gmake_mathactive:n {#1}
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Delimiter codes}
+%
+% \begin{macro}{\@@_assign_delcode:nn}
+% \begin{macrocode}
+\cs_new:Nn \@@_assign_delcode_noparse:nn
+ {
+ \@@_set_delcode:nnn \l_@@_symfont_label_tl {#1} {#2}
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new:Nn \@@_assign_delcode_parse:nn
+ {
+ \@@_if_char_spec:nNNT {#2} {\@nil} {\@nil}
+ {
+ \@@_assign_delcode_noparse:nn {#1} {#2}
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_assign_delcode:n}
+% Shorthand.
+% \begin{macrocode}
+\cs_new:Nn \@@_assign_delcode:n { \@@_assign_delcode:nn {#1} {#1} }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_setup_delcodes:}
+% Some symbols that aren't mathopen/mathclose still need to have delimiter codes assigned.
+% The list of vertical arrows may be incomplete.
+% On the other hand, many fonts won't support them all being stretchy.
+% And some of them are probably not meant to stretch, either. But adding them here doesn't hurt.
+% \begin{macrocode}
+\cs_new:Npn \@@_setup_delcodes:
+ {
+ % ensure \left. and \right. work:
+ \@@_set_delcode:nnn \l_@@_symfont_label_tl {`\.} {\c_zero}
+ % this is forcefully done to fix a bug -- indicates a larger problem!
+
+ \@@_assign_delcode:nn {`\/} {\g_@@_slash_delimiter_usv}
+ \@@_assign_delcode:nn {"2044} {\g_@@_slash_delimiter_usv} % fracslash
+ \@@_assign_delcode:nn {"2215} {\g_@@_slash_delimiter_usv} % divslash
+ \@@_assign_delcode:n {"005C} % backslash
+ \@@_assign_delcode:nn {`\<} {"27E8} % angle brackets with ascii notation
+ \@@_assign_delcode:nn {`\>} {"27E9} % angle brackets with ascii notation
+ \@@_assign_delcode:n {"2191} % up arrow
+ \@@_assign_delcode:n {"2193} % down arrow
+ \@@_assign_delcode:n {"2195} % updown arrow
+ \@@_assign_delcode:n {"219F} % up arrow twohead
+ \@@_assign_delcode:n {"21A1} % down arrow twohead
+ \@@_assign_delcode:n {"21A5} % up arrow from bar
+ \@@_assign_delcode:n {"21A7} % down arrow from bar
+ \@@_assign_delcode:n {"21A8} % updown arrow from bar
+ \@@_assign_delcode:n {"21BE} % up harpoon right
+ \@@_assign_delcode:n {"21BF} % up harpoon left
+ \@@_assign_delcode:n {"21C2} % down harpoon right
+ \@@_assign_delcode:n {"21C3} % down harpoon left
+ \@@_assign_delcode:n {"21C5} % arrows up down
+ \@@_assign_delcode:n {"21F5} % arrows down up
+ \@@_assign_delcode:n {"21C8} % arrows up up
+ \@@_assign_delcode:n {"21CA} % arrows down down
+ \@@_assign_delcode:n {"21D1} % double up arrow
+ \@@_assign_delcode:n {"21D3} % double down arrow
+ \@@_assign_delcode:n {"21D5} % double updown arrow
+ \@@_assign_delcode:n {"21DE} % up arrow double stroke
+ \@@_assign_delcode:n {"21DF} % down arrow double stroke
+ \@@_assign_delcode:n {"21E1} % up arrow dashed
+ \@@_assign_delcode:n {"21E3} % down arrow dashed
+ \@@_assign_delcode:n {"21E7} % up white arrow
+ \@@_assign_delcode:n {"21E9} % down white arrow
+ \@@_assign_delcode:n {"21EA} % up white arrow from bar
+ \@@_assign_delcode:n {"21F3} % updown white arrow
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{(Big) operators}
+%
+% The engine does what is necessary to deal with big operators for us
+% automatically with \cmd\Umathchardef.
+% However, the limits aren't set automatically; that is, we want to define,
+% a la Plain \TeX\ \etc, |\def\int{\intop\nolimits}|, so there needs to be a
+% transformation from \cmd\int\ to \cmd\intop\ during the expansion of
+% \cmd\_@@_sym:nnn\ in the appropriate contexts.
+%
+% \begin{macro}{\l_@@_nolimits_tl}
+% This macro is a sequence containing those maths operators that require a
+% \cmd\nolimits\ suffix.
+% This list is used when processing |unicode-math-table.tex| to define such
+% commands automatically (see the macro \cs{@@_set_mathsymbol:nNNn}).
+% I've chosen essentially just the operators that look like integrals;
+% hopefully a better mathematician can help me out here.
+% I've a feeling that it's more useful \emph{not} to include the multiple
+% integrals such as $\iiiint$, but that might be a matter of preference.
+% \begin{macrocode}
+\tl_set:Nn \l_@@_nolimits_tl
+ {
+ \int\iint\iiint\iiiint\oint\oiint\oiiint
+ \intclockwise\varointclockwise\ointctrclockwise\sumint
+ \intbar\intBar\fint\cirfnint\awint\rppolint
+ \scpolint\npolint\pointint\sqint\intlarhk\intx
+ \intcap\intcup\upint\lowint
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Radicals}
+%
+% \begin{macro}{\l_@@_radicals_tl}
+% The radicals are organised in \cs{@@_set_mathsymbol:nNNn}.
+% We organise radicals in the same way as nolimits-operators.
+% (\cs{cuberoot} and \cs{fourthroot}, don't seem to behave as proper radicals.)
+% \begin{macrocode}
+\tl_set:Nn \l_@@_radicals_tl {\sqrt \longdivision}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+
+\endinput
+
+% /©
+%
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
+%
+% ©/
Property changes on: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-main.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-mathmap.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-mathmap.dtx (rev 0)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-mathmap.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -0,0 +1,738 @@
+%%^^A%% um-code-mathmap.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+% \section{Mapping in maths alphabets}
+% \label{sec:mathmap}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% Switching to a different style of alphabetic symbols was traditionally performed with
+% commands like \cmd\mathbf, which literally changes fonts to access alternate symbols.
+% This is not as simple with Unicode fonts.
+%
+% In traditional \TeX{} maths font setups, you simply switch between different `families' (\cmd\fam), which is analogous to changing from one font to another---a symbol such as `a' will be upright in one font, bold in another, and so on.
+% In pkg{unicode-math}, a different mechanism is used to switch between styles. For every letter (start with ascii a-zA-Z and numbers to keep things simple for now), they are assigned a `mathcode' with \cmd\Umathcode\ that maps from input letter to output font glyph slot. This is done with the equivalent of
+% \begin{Verbatim}
+% \Umathcode`\a = 7 1 "1D44E\relax
+% \Umathcode`\b = 7 1 "1D44F\relax
+% \Umathcode`\c = 7 1 "1D450\relax
+% ...
+% \end{Verbatim}
+% When switching from regular letters to, say, \cmd\mathrm, we now need to execute a new mapping:
+% \begin{Verbatim}
+% \Umathcode`\a = 7 1 `\a\relax
+% \Umathcode`\b = 7 1 `\b\relax
+% \Umathcode`\c = 7 1 `\c\relax
+% ...
+% \end{Verbatim}
+% This is fairly straightforward to perform when we're defining our own commands such as \cmd\symbf\ and so on. However, this means that `classical' \TeX\ font setups will break, because with the original mapping still in place, the engine will be attempting to insert unicode maths glyphs from a standard font.
+%
+% \subsection{Hooks into \LaTeXe}
+%
+% To overcome this, we patch \cs{use at mathgroup}.
+% (An alternative is to patch \cs{extract at alph@from at version}, which constructs the \cs{mathXYZ} commands, but this method fails if the command has been defined using \cs{DeclareSymbolFontAlphabet}.)
+% As far as I can tell, this is only used inside of commands such as \cs{mathXYZ}, so this shouldn't have any major side-effects.
+%
+% \begin{macrocode}
+\cs_set:Npn \use at mathgroup #1 #2
+ {
+ \mode_if_math:T % <- not sure if this is really necessary since we've just checked for mmode and raised an error if not!
+ {
+ \math at bgroup
+ \cs_if_eq:cNF {M@\f at encoding} #1 {#1}
+ \@@_switchto_literal:
+ \mathgroup #2 \relax
+ \math at egroup
+ }
+ }
+% \end{macrocode}
+%
+% In LaTeX maths, the command |\operator at font| is defined that switches to the |operator| mathgroup. The classic example is the |\sin| in |$\sin{x}$|; essentially we're using |\mathrm| to typeset the upright symbols, but the syntax is |{\operator at font sin}|.
+% I thought that hooking into |\operator at font| would be hard because all other maths font selection in 2e uses |\mathrm{...}| style.
+% Then reading source2e a little more I stumbled upon:
+% \begin{macro}{\operator at font}
+% \begin{macrocode}
+\cs_set:Npn \operator at font
+ {
+ \@@_switchto_literal:
+ \@fontswitch {} { \g_@@_operator_mathfont_tl }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Setting styles}
+%
+% Algorithm for setting alphabet fonts.
+% By default, when |range| is empty, we are in \emph{implicit} mode.
+% If |range| contains the name of the math alphabet, we are in \emph{explicit}
+% mode and do things slightly differently.
+%
+% Implicit mode:
+% \begin{itemize}
+% \item Try and set all of the alphabet shapes.
+% \item Check for the first glyph of each alphabet to detect if the font supports each
+% alphabet shape.
+% \item For alphabets that do exist, overwrite whatever's already there.
+% \item For alphabets that are not supported, \emph{do nothing}.
+% (This includes leaving the old alphabet definition in place.)
+% \end{itemize}
+%
+% Explicit mode:
+% \begin{itemize}
+% \item Only set the alphabets specified.
+% \item Check for the first glyph of the alphabet to detect if the font contains
+% the alphabet shape in the Unicode math plane.
+% \item For Unicode math alphabets, overwrite whatever's already there.
+% \item Otherwise, use the \ascii\ glyph slots instead.
+% \end{itemize}
+%
+%
+%
+% \subsection{Defining the math style macros}
+%
+% We call the different shapes that a math alphabet can be a `math style'.
+% Note that different alphabets can exist within the same math style. E.g.,
+% we call `bold' the math style |bf| and within it there are upper and lower
+% case Greek and Roman alphabets and Arabic numerals.
+%
+% \begin{macro}{\@@_prepare_mathstyle:n}
+% \darg{math style name (e.g., \texttt{it} or \texttt{bb})}
+% Define the high level math alphabet macros (\cs{mathit}, etc.) in terms of
+% unicode-math definitions. Use \cs{bgroup}/\cs{egroup} so s'scripts scan the
+% whole thing.
+%
+% The flag \cs{l_@@_mathstyle_tl} is for other applications to query the
+% current math style.
+% \begin{macrocode}
+\cs_new:Nn \@@_prepare_mathstyle:n
+ {
+ \seq_put_right:Nn \g_@@_mathstyles_seq {#1}
+ \@@_init_alphabet:n {#1}
+ \cs_set:cpn {_@@_sym_#1_aux:n}
+ { \use:c {@@_switchto_#1:} \math at egroup }
+ \cs_set_protected:cpx {sym#1}
+ {
+ \exp_not:n
+ {
+ \math at bgroup
+ \mode_if_math:F
+ {
+ \egroup\expandafter
+ \non at alpherr\expandafter{\csname sym#1\endcsname\space}
+ }
+ \tl_set:Nn \l_@@_mathstyle_tl {#1}
+ }
+ \exp_not:c {_@@_sym_#1_aux:n}
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@@_init_alphabet:n}
+% \darg{math alphabet name (e.g., \texttt{it} or \texttt{bb})}
+% This macro initialises the macros used to set up a math alphabet.
+% First used when the math alphabet macro is first defined, but then used
+% later when redefining a particular maths alphabet.
+% \begin{macrocode}
+\cs_set:Nn \@@_init_alphabet:n
+ {
+ \@@_log:nx {alph-initialise} {#1}
+ \cs_set_eq:cN {@@_switchto_#1:} \prg_do_nothing:
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Definition of alphabets and styles}
+%
+% First of all, we break up unicode into `named ranges', such as |up|, |bb|, |sfup|, and so on, which refer to specific blocks of unicode that contain various symbols (usually alphabetical symbols).
+%
+% \begin{macrocode}
+\cs_new:Nn \@@_new_named_range:n
+ {
+ \prop_new:c {g_@@_named_range_#1_prop}
+ }
+\clist_set:Nn \g_@@_named_ranges_clist
+ {
+ up, it, tt, bfup, bfit, bb , bbit, scr, bfscr, cal, bfcal,
+ frak, bffrak, sfup, sfit, bfsfup, bfsfit, bfsf
+ }
+\clist_map_inline:Nn \g_@@_named_ranges_clist
+ { \@@_new_named_range:n {#1} }
+% \end{macrocode}
+%
+%
+% Each alphabet style needs to be configured.
+% This happens in Section~\ref{sec:setupalphabets}.
+% \begin{macrocode}
+\cs_new:Nn \@@_new_alphabet_config:nnn
+ {
+ \prop_if_exist:cF {g_@@_named_range_#1_prop}
+ { \@@_warning:nnn {no-named-range} {#1} {#2} }
+
+ \prop_gput:cnn {g_@@_named_range_#1_prop} { alpha_tl }
+ {
+ \prop_item:cn {g_@@_named_range_#1_prop} { alpha_tl }
+ {#2}
+ }
+ % Q: do I need to bother removing duplicates?
+
+ \cs_new:cn { @@_config_#1_#2:n } {#3}
+ }
+% \end{macrocode}
+% \begin{macrocode}
+\cs_new:Nn \@@_alphabet_config:nnn
+ {
+ \use:c {@@_config_#1_#2:n} {#3}
+ }
+% \end{macrocode}
+% \begin{macrocode}
+\prg_new_conditional:Nnn \@@_if_alphabet_exists:nn {T,TF}
+ {
+ \cs_if_exist:cTF {@@_config_#1_#2:n}
+ \prg_return_true: \prg_return_false:
+ }
+% \end{macrocode}
+%
+% The linking between named ranges and symbol style commands happens here.
+% It's currently not using all of the machinery we're in the process of setting up above.
+% Baby steps.
+% \begin{macrocode}
+\cs_new:Nn \@@_default_mathalph:nnn
+ {
+ \seq_put_right:Nx \g_@@_named_ranges_seq { \tl_to_str:n {#1} }
+ \seq_put_right:Nn \g_@@_default_mathalph_seq {{#1}{#2}{#3}}
+ \prop_gput:cnn { g_@@_named_range_#1_prop } { default-alpha } {#2}
+ }
+\@@_default_mathalph:nnn {up } {latin,Latin,greek,Greek,num,misc} {up }
+\@@_default_mathalph:nnn {it } {latin,Latin,greek,Greek,misc} {it }
+\@@_default_mathalph:nnn {bb } {latin,Latin,num,misc} {bb }
+\@@_default_mathalph:nnn {bbit } {misc} {bbit }
+\@@_default_mathalph:nnn {scr } {latin,Latin} {scr }
+\@@_default_mathalph:nnn {cal } {Latin} {scr }
+\@@_default_mathalph:nnn {bfcal } {Latin} {bfscr }
+\@@_default_mathalph:nnn {frak } {latin,Latin} {frak }
+\@@_default_mathalph:nnn {tt } {latin,Latin,num} {tt }
+\@@_default_mathalph:nnn {sfup } {latin,Latin,num} {sfup }
+\@@_default_mathalph:nnn {sfit } {latin,Latin} {sfit }
+\@@_default_mathalph:nnn {bfup } {latin,Latin,greek,Greek,num,misc} {bfup }
+\@@_default_mathalph:nnn {bfit } {latin,Latin,greek,Greek,misc} {bfit }
+\@@_default_mathalph:nnn {bfscr } {latin,Latin} {bfscr }
+\@@_default_mathalph:nnn {bffrak} {latin,Latin} {bffrak}
+\@@_default_mathalph:nnn {bfsfup} {latin,Latin,greek,Greek,num,misc} {bfsfup}
+\@@_default_mathalph:nnn {bfsfit} {latin,Latin,greek,Greek,misc} {bfsfit}
+% \end{macrocode}
+%
+% \subsubsection{Define symbol style commands}
+% Finally, all of the `symbol styles' commands are set up, which are the commands to access each of the named alphabet styles. There is not a one-to-one mapping between symbol style commands and named style ranges!
+% \begin{macrocode}
+\clist_map_inline:nn
+ {
+ up, it, bfup, bfit, sfup, sfit, bfsfup, bfsfit, bfsf,
+ tt, bb, bbit, scr, bfscr, cal, bfcal, frak, bffrak,
+ normal, literal, sf, bf,
+ }
+ { \@@_prepare_mathstyle:n {#1} }
+% \end{macrocode}
+%
+%
+% \subsubsection{New names for legacy textmath alphabet selection}
+% In case a package option overwrites, say, \cs{mathbf} with \cs{symbf}.
+% \begin{macrocode}
+\clist_map_inline:nn
+ { rm, it, bf, sf, tt }
+ { \cs_set_eq:cc { mathtext #1 } { math #1 } }
+% \end{macrocode}
+% Perhaps these should actually be defined using a hypothetical unicode-math interface to creating new such styles. To come.
+%
+%
+% \subsubsection{Replacing legacy pure-maths alphabets}
+% The following are alphabets which do not have a math/text ambiguity.
+% \begin{macrocode}
+\clist_map_inline:nn
+ {
+ normal, bb , bbit, scr, bfscr, cal, bfcal, frak, bffrak, tt,
+ bfup, bfit, sfup, sfit, bfsfup, bfsfit, bfsf
+ }
+ {
+ \cs_set:cpx { math #1 } { \exp_not:c { sym #1 } }
+ }
+% \end{macrocode}
+%
+%
+% \subsubsection{New commands for ambiguous alphabets}
+% \begin{macrocode}
+\AtBeginDocument{
+\clist_map_inline:nn
+ { rm, it, bf, sf, tt }
+ {
+ \cs_set_protected:cpx { math #1 }
+ {
+ \exp_not:n { \bool_if:NTF } \exp_not:c { g_@@_ math #1 _text_bool}
+ { \exp_not:c { mathtext #1 } }
+ { \exp_not:c { sym #1 } }
+ }
+ }}
+% \end{macrocode}
+%
+% \paragraph{Alias \cs{mathrm} as legacy name for \cs{mathup}}
+% \begin{macrocode}
+\cs_set_protected:Npn \mathup { \mathrm }
+\cs_set_protected:Npn \symrm { \symup }
+% \end{macrocode}
+%
+%
+%
+%
+% \subsection{Defining the math alphabets per style}
+%
+% \begin{macro}{\@@_setup_alphabets:}
+% This function is called within \cs{setmathfont} to configure the
+% mapping between characters inside math styles.
+% \begin{macrocode}
+\cs_new:Npn \@@_setup_alphabets:
+ {
+% \end{macrocode}
+% If |range=| has been used to configure styles, those choices will be in
+% |\l_@@_mathalph_seq|. If not, set up the styles implicitly:
+% \begin{macrocode}
+ \seq_if_empty:NTF \l_@@_mathalph_seq
+ {
+ \@@_log:n {setup-implicit}
+ \seq_set_eq:NN \l_@@_mathalph_seq \g_@@_default_mathalph_seq
+ \bool_set_true:N \l_@@_implicit_alph_bool
+ \@@_maybe_init_alphabet:n {sf}
+ \@@_maybe_init_alphabet:n {bf}
+ \@@_maybe_init_alphabet:n {bfsf}
+ }
+% \end{macrocode}
+% If |range=| has been used then we're in explicit mode:
+% \begin{macrocode}
+ {
+ \@@_log:n {setup-explicit}
+ \bool_set_false:N \l_@@_implicit_alph_bool
+ \cs_set_eq:NN \@@_set_mathalphabet_char:nnn \@@_mathmap_noparse:nnn
+ \cs_set_eq:NN \@@_map_char_single:nn \@@_map_char_noparse:nn
+ }
+
+ % Now perform the mapping:
+ \seq_map_inline:Nn \l_@@_mathalph_seq
+ {
+ \tl_set:No \l_@@_style_tl { \use_i:nnn ##1 }
+ \clist_set:No \l_@@_alphabet_clist { \use_ii:nnn ##1 }
+ \tl_set:No \l_@@_remap_style_tl { \use_iii:nnn ##1 }
+
+ % If no set of alphabets is defined:
+ \clist_if_empty:NT \l_@@_alphabet_clist
+ {
+ \cs_set_eq:NN \@@_maybe_init_alphabet:n \@@_init_alphabet:n
+ \prop_get:cnN { g_@@_named_range_ \l_@@_style_tl _prop }
+ { default-alpha } \l_@@_alphabet_clist
+ }
+
+ \@@_setup_math_alphabet:
+ }
+ \seq_if_empty:NF \l_@@_missing_alph_seq { \@@_log:n { missing-alphabets } }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_setup_math_alphabet:}
+% \begin{macrocode}
+\cs_new:Nn \@@_setup_math_alphabet:
+ {
+% \end{macrocode}
+% First check that at least one of the alphabets for the font shape is defined
+% (this process is fast) \dots
+% \begin{macrocode}
+ \clist_map_inline:Nn \l_@@_alphabet_clist
+ {
+ \tl_set:Nn \l_@@_alphabet_tl {##1}
+ \@@_if_alphabet_exists:nnTF \l_@@_style_tl \l_@@_alphabet_tl
+ {
+ \str_if_eq_x:nnTF {\l_@@_alphabet_tl} {misc}
+ {
+ \@@_maybe_init_alphabet:n \l_@@_style_tl
+ \clist_map_break:
+ }
+ {
+ \@@_glyph_if_exist:NnT \l_@@_font { \@@_to_usv:nn {\l_@@_style_tl} {\l_@@_alphabet_tl} }
+ {
+ \@@_maybe_init_alphabet:n \l_@@_style_tl
+ \clist_map_break:
+ }
+ }
+ }
+ { \msg_warning:nnx {unicode-math} {no-alphabet} { \l_@@_style_tl / \l_@@_alphabet_tl } }
+ }
+% \end{macrocode}
+% \dots and then loop through them defining the individual ranges:
+% (currently this process is slow)
+% \begin{macrocode}
+%<debug> \csname TIC\endcsname
+ \clist_map_inline:Nn \l_@@_alphabet_clist
+ {
+ \tl_set:Nx \l_@@_alphabet_tl { \tl_trim_spaces:n {##1} }
+ \cs_if_exist:cT {@@_config_ \l_@@_style_tl _ \l_@@_alphabet_tl :n}
+ {
+ \exp_args:No \tl_if_eq:nnTF \l_@@_alphabet_tl {misc}
+ {
+ \@@_log:nx {setup-alph} {sym \l_@@_style_tl~(\l_@@_alphabet_tl)}
+ \@@_alphabet_config:nnn {\l_@@_style_tl} {\l_@@_alphabet_tl} {\l_@@_remap_style_tl}
+ }
+ {
+ \@@_glyph_if_exist:NnTF \l_@@_font { \@@_to_usv:nn {\l_@@_remap_style_tl} {\l_@@_alphabet_tl} }
+ {
+ \@@_log:nx {setup-alph} {sym \l_@@_style_tl~(\l_@@_alphabet_tl)}
+ \@@_alphabet_config:nnn {\l_@@_style_tl} {\l_@@_alphabet_tl} {\l_@@_remap_style_tl}
+ }
+ {
+ \bool_if:NTF \l_@@_implicit_alph_bool
+ {
+ \seq_put_right:Nx \l_@@_missing_alph_seq
+ {
+ \@backslashchar sym \l_@@_style_tl \space
+ (\tl_use:c{c_@@_math_alphabet_name_ \l_@@_alphabet_tl _tl})
+ }
+ }
+ {
+ \@@_alphabet_config:nnn {\l_@@_style_tl} {\l_@@_alphabet_tl} {up}
+ }
+ }
+ }
+ }
+ }
+%<debug> \csname TOC\endcsname
+ }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Mapping `naked' math characters}
+%
+% Before we show the definitions of the alphabet mappings using the functions
+% |\@@_alphabet_config:nnn \l_@@_style_tl {##1} {...}|, we first want to define some functions
+% to be used inside them to actually perform the character mapping.
+%
+% \subsubsection{Functions}
+%
+% \begin{macro}{\@@_map_char_single:nn}
+% Wrapper for |\@@_map_char_noparse:nn| or |\@@_map_char_parse:nn|
+% depending on the context.
+%
+% \begin{macro}{\@@_map_char_noparse:nn}
+% \begin{macro}{\@@_map_char_parse:nn}
+% \begin{macrocode}
+\cs_new:Nn \@@_map_char_noparse:nn
+ { \@@_set_mathcode:nnnn {#1}{\mathalpha}{\l_@@_symfont_label_tl}{#2} }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new:Nn \@@_map_char_parse:nn
+ {
+ \@@_if_char_spec:nNNT {#1} {\@nil} {\mathalpha}
+ { \@@_map_char_noparse:nn {#1}{#2} }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@@_map_char_single:nnn}
+% \darg{char name (`dotlessi')}
+% \darg{from alphabet(s)}
+% \darg{to alphabet}
+% Logical interface to \cs{@@_map_char_single:nn}.
+% \begin{macrocode}
+\cs_new:Nn \@@_map_char_single:nnn
+ {
+ \@@_map_char_single:nn { \@@_to_usv:nn {#1}{#3} }
+ { \@@_to_usv:nn {#2}{#3} }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@@_map_chars_range:nnnn}
+% \darg{Number of chars (26)}
+% \darg{From style, one or more (it)}
+% \darg{To style (up)}
+% \darg{Alphabet name (Latin)}
+% First the function with numbers:
+% \begin{macrocode}
+\cs_set:Nn \@@_map_chars_range:nnn
+ {
+ \int_step_inline:nnnn {0}{1}{#1-1}
+ { \@@_map_char_single:nn {#2+##1}{#3+##1} }
+ }
+% \end{macrocode}
+% And the wrapper with names:
+% \begin{macrocode}
+\cs_new:Nn \@@_map_chars_range:nnnn
+ {
+ \@@_map_chars_range:nnn {#1} { \@@_to_usv:nn {#2}{#4} }
+ { \@@_to_usv:nn {#3}{#4} }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Functions for `normal' alphabet symbols}
+%
+% \begin{macro}{\@@_set_normal_char:nnn}
+% \begin{macrocode}
+\cs_set:Nn \@@_set_normal_char:nnn
+ {
+ \@@_usv_if_exist:nnT {#3} {#1}
+ {
+ \clist_map_inline:nn {#2}
+ {
+ \@@_set_mathalphabet_pos:nnnn {normal} {#1} {##1} {#3}
+ \@@_map_char_single:nnn {##1} {#3} {#1}
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\cs_new:Nn \@@_set_normal_Latin:nn
+ {
+ \clist_map_inline:nn {#1}
+ {
+ \@@_set_mathalphabet_Latin:nnn {normal} {##1} {#2}
+ \@@_map_chars_range:nnnn {26} {##1} {#2} {Latin}
+ }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new:Nn \@@_set_normal_latin:nn
+ {
+ \clist_map_inline:nn {#1}
+ {
+ \@@_set_mathalphabet_latin:nnn {normal} {##1} {#2}
+ \@@_map_chars_range:nnnn {26} {##1} {#2} {latin}
+ }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new:Nn \@@_set_normal_greek:nn
+ {
+ \clist_map_inline:nn {#1}
+ {
+ \@@_set_mathalphabet_greek:nnn {normal} {##1} {#2}
+ \@@_map_chars_range:nnnn {25} {##1} {#2} {greek}
+ \@@_map_char_single:nnn {##1} {#2} {epsilon}
+ \@@_map_char_single:nnn {##1} {#2} {vartheta}
+ \@@_map_char_single:nnn {##1} {#2} {varkappa}
+ \@@_map_char_single:nnn {##1} {#2} {phi}
+ \@@_map_char_single:nnn {##1} {#2} {varrho}
+ \@@_map_char_single:nnn {##1} {#2} {varpi}
+ \@@_set_mathalphabet_pos:nnnn {normal} {epsilon} {##1} {#2}
+ \@@_set_mathalphabet_pos:nnnn {normal} {vartheta} {##1} {#2}
+ \@@_set_mathalphabet_pos:nnnn {normal} {varkappa} {##1} {#2}
+ \@@_set_mathalphabet_pos:nnnn {normal} {phi} {##1} {#2}
+ \@@_set_mathalphabet_pos:nnnn {normal} {varrho} {##1} {#2}
+ \@@_set_mathalphabet_pos:nnnn {normal} {varpi} {##1} {#2}
+ }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new:Nn \@@_set_normal_Greek:nn
+ {
+ \clist_map_inline:nn {#1}
+ {
+ \@@_set_mathalphabet_Greek:nnn {normal} {##1} {#2}
+ \@@_map_chars_range:nnnn {25} {##1} {#2} {Greek}
+ \@@_map_char_single:nnn {##1} {#2} {varTheta}
+ \@@_set_mathalphabet_pos:nnnn {normal} {varTheta} {##1} {#2}
+ }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new:Nn \@@_set_normal_numbers:nn
+ {
+ \@@_set_mathalphabet_numbers:nnn {normal} {#1} {#2}
+ \@@_map_chars_range:nnnn {10} {#1} {#2} {num}
+ }
+% \end{macrocode}
+%
+%
+% \subsection{Mapping chars inside a math style}
+%
+% \subsubsection{Functions for setting up the maths alphabets}
+%
+% \begin{macro}{\@@_set_mathalphabet_char:Nnn}
+% This is a wrapper for either |\@@_mathmap_noparse:nnn| or
+% |\@@_mathmap_parse:Nnn|, depending on the context.
+% \end{macro}
+%
+% \begin{macro}{\@@_mathmap_noparse:nnn}
+% \darg{Maths alphabet, \eg, `bb'}
+% \darg{Input slot(s), \eg, the slot for `A' (comma separated)}
+% \darg{Output slot, \eg, the slot for `$\mathbb{A}$'}
+% Adds \cs{@@_set_mathcode:nnnn} declarations to the specified maths alphabet's definition.
+% \begin{macrocode}
+\cs_new:Nn \@@_mathmap_noparse:nnn
+ {
+ \clist_map_inline:nn {#2}
+ {
+ \tl_put_right:cx {@@_switchto_#1:}
+ {
+ \@@_set_mathcode:nnnn {##1} {\mathalpha} {\l_@@_symfont_label_tl} {#3}
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_mathmap_parse:nnn}
+% \darg{Maths alphabet, \eg, `bb'}
+% \darg{Input slot(s), \eg, the slot for `A' (comma separated)}
+% \darg{Output slot, \eg, the slot for `$\mathbb{A}$'}
+% When \cmd\@@_if_char_spec:nNNT\ is executed, it populates the \cmd\l_@@_char_nrange_clist\
+% macro with slot numbers corresponding to the specified range. This range is used to
+% conditionally add \cs{@@_set_mathcode:nnnn} declaractions to the maths alphabet definition.
+% \begin{macrocode}
+\cs_new:Nn \@@_mathmap_parse:nnn
+ {
+ \clist_if_in:NnT \l_@@_char_nrange_clist {#3}
+ {
+ \@@_mathmap_noparse:nnn {#1}{#2}{#3}
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_set_mathalphabet_char:nnnn}
+% \darg{math style command}
+% \darg{input math alphabet name}
+% \darg{output math alphabet name}
+% \darg{char name to map}
+% \begin{macrocode}
+\cs_new:Nn \@@_set_mathalphabet_char:nnnn
+ {
+ \@@_set_mathalphabet_char:nnn {#1} { \@@_to_usv:nn {#2} {#4} }
+ { \@@_to_usv:nn {#3} {#4} }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_set_mathalph_range:nnnn}
+% \darg{Number of iterations}
+% \darg{Maths alphabet}
+% \darg{Starting input char (single)}
+% \darg{Starting output char}
+% Loops through character ranges setting \cmd\mathcode.
+% First the version that uses numbers:
+% \begin{macrocode}
+\cs_new:Nn \@@_set_mathalph_range:nnnn
+ {
+ \int_step_inline:nnnn {0} {1} {#1-1}
+ { \@@_set_mathalphabet_char:nnn {#2} { ##1 + #3 } { ##1 + #4 } }
+ }
+% \end{macrocode}
+% Then the wrapper version that uses names:
+% \begin{macrocode}
+\cs_new:Nn \@@_set_mathalph_range:nnnnn
+ {
+ \@@_set_mathalph_range:nnnn {#1} {#2} { \@@_to_usv:nn {#3} {#5} }
+ { \@@_to_usv:nn {#4} {#5} }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Individual mapping functions for different alphabets}
+%
+% \begin{macrocode}
+\cs_new:Nn \@@_set_mathalphabet_pos:nnnn
+ {
+ \@@_usv_if_exist:nnT {#4} {#2}
+ {
+ \clist_map_inline:nn {#3}
+ { \@@_set_mathalphabet_char:nnnn {#1} {##1} {#4} {#2} }
+ }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new:Nn \@@_set_mathalphabet_numbers:nnn
+ {
+ \clist_map_inline:nn {#2}
+ { \@@_set_mathalph_range:nnnnn {10} {#1} {##1} {#3} {num} }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new:Nn \@@_set_mathalphabet_Latin:nnn
+ {
+ \clist_map_inline:nn {#2}
+ { \@@_set_mathalph_range:nnnnn {26} {#1} {##1} {#3} {Latin} }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new:Nn \@@_set_mathalphabet_latin:nnn
+ {
+ \clist_map_inline:nn {#2}
+ {
+ \@@_set_mathalph_range:nnnnn {26} {#1} {##1} {#3} {latin}
+ \@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {h}
+ }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new:Nn \@@_set_mathalphabet_Greek:nnn
+ {
+ \clist_map_inline:nn {#2}
+ {
+ \@@_set_mathalph_range:nnnnn {25} {#1} {##1} {#3} {Greek}
+ \@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {varTheta}
+ }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new:Nn \@@_set_mathalphabet_greek:nnn
+ {
+ \clist_map_inline:nn {#2}
+ {
+ \@@_set_mathalph_range:nnnnn {25} {#1} {##1} {#3} {greek}
+ \@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {epsilon}
+ \@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {vartheta}
+ \@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {varkappa}
+ \@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {phi}
+ \@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {varrho}
+ \@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {varpi}
+ }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+
+\endinput
+
+% /©
+%
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
+%
+% ©/
Property changes on: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-mathmap.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-mathtext.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-mathtext.dtx (rev 0)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-mathtext.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -0,0 +1,142 @@
+%%^^A%% um-code-mathtext.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+% \section{Maths text commands}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% \subsection{\cs{setmathfontface}}
+%
+% \begin{macro}{\@@_setmathfontface:Nnn}
+% \begin{macrocode}
+\keys_define:nn {@@_mathface}
+ {
+ version .code:n =
+ { \tl_set:Nn \l_@@_mversion_tl {#1} }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_set:Nn \@@_setmathfontface:Nnn
+ {
+ \tl_clear:N \l_@@_mversion_tl
+
+ \keys_set_known:nnN {@@_mathface} {#2} \l_@@_keyval_clist
+
+ \exp_args:Nnx \fontspec_set_family:Nxn \l_@@_tmpa_tl
+ { ItalicFont={}, BoldFont={}, \exp_not:V \l_@@_keyval_clist } {#3}
+
+ \tl_if_empty:NT \l_@@_mversion_tl
+ {
+ \tl_set:Nn \l_@@_mversion_tl {normal}
+ \DeclareMathAlphabet #1 {\g_fontspec_encoding_tl} {\l_@@_tmpa_tl} {\mddefault} {\updefault}
+ }
+
+ \SetMathAlphabet #1 {\l_@@_mversion_tl} {\g_fontspec_encoding_tl} {\l_@@_tmpa_tl} {\mddefault} {\updefault}
+
+ % integrate with fontspec's \setmathrm etc:
+ \tl_case:Nn #1
+ {
+ \mathrm { \cs_set_eq:NN \g__fontspec_mathrm_tl \l_@@_tmpa_tl }
+ \mathsf { \cs_set_eq:NN \g__fontspec_mathsf_tl \l_@@_tmpa_tl }
+ \mathtt { \cs_set_eq:NN \g__fontspec_mathtt_tl \l_@@_tmpa_tl }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Hooks into \pkg{fontspec}}
+%
+% Historically, \cs{mathrm} and so on were completely overwritten by \pkg{unicode-math}, and \pkg{fontspec}'s methods for setting these fonts in the classical manner were bypassed.
+%
+% While we could now re-activate the way that \pkg{fontspec} does the following, because we can now change maths fonts whenever it's better to define new commands in \pkg{unicode-math} to define the \cs{mathXYZ} fonts.
+%
+% \subsubsection{Text font}
+% \begin{macrocode}
+\cs_generate_variant:Nn \tl_if_eq:nnT {o}
+\cs_set:Nn \__fontspec_setmainfont_hook:nn
+ {
+ \tl_if_eq:onT {\g__fontspec_mathrm_tl} {\rmdefault}
+ {
+%<XE> \fontspec_set_family:Nnn \g__fontspec_mathrm_tl {#1} {#2}
+%<LU> \fontspec_set_family:Nnn \g__fontspec_mathrm_tl {Renderer=Basic,#1} {#2}
+ \SetMathAlphabet\mathrm{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\updefault
+ \SetMathAlphabet\mathit{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\itdefault
+ \SetMathAlphabet\mathbf{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\bfdefault\updefault
+ }
+ }
+
+\cs_set:Nn \__fontspec_setsansfont_hook:nn
+ {
+ \tl_if_eq:onT {\g__fontspec_mathsf_tl} {\sfdefault}
+ {
+%<XE> \fontspec_set_family:Nnn \g__fontspec_mathsf_tl {#1} {#2}
+%<LU> \fontspec_set_family:Nnn \g__fontspec_mathsf_tl {Renderer=Basic,#1} {#2}
+ \SetMathAlphabet\mathsf{normal}\g_fontspec_encoding_tl\g__fontspec_mathsf_tl\mddefault\updefault
+ \SetMathAlphabet\mathsf{bold} \g_fontspec_encoding_tl\g__fontspec_mathsf_tl\bfdefault\updefault
+ }
+ }
+
+\cs_set:Nn \__fontspec_setmonofont_hook:nn
+ {
+ \tl_if_eq:onT {\g__fontspec_mathtt_tl} {\ttdefault}
+ {
+%<XE> \fontspec_set_family:Nnn \g__fontspec_mathtt_tl {#1} {#2}
+%<LU> \fontspec_set_family:Nnn \g__fontspec_mathtt_tl {Renderer=Basic,#1} {#2}
+ \SetMathAlphabet\mathtt{normal}\g_fontspec_encoding_tl\g__fontspec_mathtt_tl\mddefault\updefault
+ \SetMathAlphabet\mathtt{bold} \g_fontspec_encoding_tl\g__fontspec_mathtt_tl\bfdefault\updefault
+ }
+ }
+% \end{macrocode}
+%
+% \subsubsection{Maths font}
+% If the maths fonts are set explicitly, then the text commands above will not execute their branches to set the maths font alphabets.
+% \begin{macrocode}
+\cs_set:Nn \__fontspec_setmathrm_hook:nn
+ {
+ \SetMathAlphabet\mathrm{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\updefault
+ \SetMathAlphabet\mathit{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\itdefault
+ \SetMathAlphabet\mathbf{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\bfdefault\updefault
+ }
+\cs_set:Nn \__fontspec_setboldmathrm_hook:nn
+ {
+ \SetMathAlphabet\mathrm{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\mddefault\updefault
+ \SetMathAlphabet\mathbf{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\bfdefault\updefault
+ \SetMathAlphabet\mathit{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\mddefault\itdefault
+ }
+\cs_set:Nn \__fontspec_setmathsf_hook:nn
+ {
+ \SetMathAlphabet\mathsf{normal}\g_fontspec_encoding_tl\g__fontspec_mathsf_tl\mddefault\updefault
+ \SetMathAlphabet\mathsf{bold} \g_fontspec_encoding_tl\g__fontspec_mathsf_tl\bfdefault\updefault
+ }
+\cs_set:Nn \__fontspec_setmathtt_hook:nn
+ {
+ \SetMathAlphabet\mathtt{normal}\g_fontspec_encoding_tl\g__fontspec_mathtt_tl\mddefault\updefault
+ \SetMathAlphabet\mathtt{bold} \g_fontspec_encoding_tl\g__fontspec_mathtt_tl\bfdefault\updefault
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+
+\endinput
+
+% /©
+%
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
+%
+% ©/
Property changes on: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-mathtext.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-msg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-msg.dtx (rev 0)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-msg.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -0,0 +1,129 @@
+%%^^A%% um-code-msg.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+% \section{Error messages}
+% \seclabel{codemsg}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% Wrapper functions:
+% \begin{macrocode}
+\cs_new:Npn \@@_error:n { \msg_error:nn {unicode-math} }
+\cs_new:Npn \@@_warning:n { \msg_warning:nn {unicode-math} }
+\cs_new:Npn \@@_warning:nnn { \msg_warning:nnxx {unicode-math} }
+\cs_new:Npn \@@_log:n { \msg_log:nn {unicode-math} }
+\cs_new:Npn \@@_log:nx { \msg_log:nnx {unicode-math} }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\msg_new:nnn {unicode-math} {no-tfrac}
+{
+ Small~ fraction~ command~ \protect\tfrac\ not~ defined.\\
+ Load~ amsmath~ or~ define~ it~ manually~ before~ loading~ unicode-math.
+}
+\msg_new:nnn {unicode-math} {default-math-font}
+{
+ Defining~ the~ default~ maths~ font~ as~ '\l_@@_fontname_tl'.
+}
+\msg_new:nnn {unicode-math} {setup-implicit}
+{
+ Setup~ alphabets:~ implicit~ mode.
+}
+\msg_new:nnn {unicode-math} {setup-explicit}
+{
+ Setup~ alphabets:~ explicit~ mode.
+}
+\msg_new:nnn {unicode-math} {alph-initialise}
+{
+ Initialising~ \@backslashchar math#1.
+}
+\msg_new:nnn {unicode-math} {setup-alph}
+{
+ Setup~ alphabet:~ #1.
+}
+\msg_new:nnn {unicode-math} {no-alphabet}
+{
+ I~ am~ trying~ to~ set~ up~ alphabet~"#1"~ but~ there~ are~ no~ configuration~ settings~ for~ it.~
+ (See~ source~ file~ "unicode-math-alphabets.dtx"~ to~ debug.)
+}
+\msg_new:nnn { unicode-math } { no-named-range }
+ {
+ I~ am~ trying~ to~ define~ new~ alphabet~ "#2"~ in~ range~ "#1",~ but~ range~ "#1"~ hasn't~ been~ defined~ yet.
+ }
+\msg_new:nnn { unicode-math } { missing-alphabets }
+ {
+ Missing~math~alphabets~in~font~ "\fontname\l_@@_font" \\ \\
+ \seq_map_function:NN \l_@@_missing_alph_seq \@@_print_indent:n
+ }
+\cs_new:Nn \@@_print_indent:n { \space\space\space\space #1 \\ }
+\msg_new:nnn {unicode-math} {macro-expected}
+{
+ I've~ expected~ that~ #1~ is~ a~ macro,~ but~ it~ isn't.
+}
+\msg_new:nnn {unicode-math} {wrong-meaning}
+{
+ I've~ expected~ #1~ to~ have~ the~ meaning~ #3,~ but~ it~ has~ the~ meaning~ #2.
+}
+\msg_new:nnn {unicode-math} {patch-macro}
+{
+ I'm~ going~ to~ patch~ macro~ #1.
+}
+\msg_new:nnn { unicode-math } { mathtools-overbracket } {
+ Using~ \token_to_str:N \overbracket\ and~
+ \token_to_str:N \underbracket\ from~
+ `mathtools'~ package.\\
+ \\
+ Use~ \token_to_str:N \Uoverbracket\ and~
+ \token_to_str:N \Uunderbracket\ for~
+ original~ `unicode-math'~ definition.
+}
+\msg_new:nnn { unicode-math } { mathtools-colon } {
+ I'm~ going~ to~ overwrite~ the~ following~ commands~ from~
+ the~ `mathtools'~ package: \\ \\
+ \ \ \ \ \token_to_str:N \dblcolon,~
+ \token_to_str:N \coloneqq,~
+ \token_to_str:N \Coloneqq,~
+ \token_to_str:N \eqqcolon. \\ \\
+ Note~ that~ since~ I~ won't~ overwrite~ the~ other~ colon-like~
+ commands,~ using~ them~ will~ lead~ to~ inconsistencies.
+}
+\msg_new:nnn { unicode-math } { colonequals } {
+ I'm~ going~ to~ overwrite~ the~ following~ commands~ from~
+ the~ `colonequals'~ package: \\ \\
+ \ \ \ \ \token_to_str:N \ratio,~
+ \token_to_str:N \coloncolon,~
+ \token_to_str:N \minuscolon, \\
+ \ \ \ \ \token_to_str:N \colonequals,~
+ \token_to_str:N \equalscolon,~
+ \token_to_str:N \coloncolonequals. \\ \\
+ Note~ that~ since~ I~ won't~ overwrite~ the~ other~ colon-like~
+ commands,~ using~ them~ will~ lead~ to~ inconsistencies.~
+ Furthermore,~ changing~ \token_to_str:N \colonsep \c_space_tl
+ or~ \token_to_str:N \doublecolonsep \c_space_tl won't~ have~
+ any~ effect~ on~ the~ re-defined~ commands.
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+
+\endinput
+
+% /©
+%
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
+%
+% ©/
Property changes on: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-msg.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-opening.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-opening.dtx (rev 0)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-opening.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -0,0 +1,249 @@
+%%^^A%% um-code-opening.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+% \section{Start of the package code}
+%
+% The prefix for \pkg{unicode-math} is \texttt{um}:
+% \begin{macrocode}
+%<@@=um>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*LU>
+\RequirePackage{lualatex-math}
+%</LU>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ExplSyntaxOn
+% \end{macrocode}
+%
+% \subsection{\pkg{expl3} variants}
+%
+% Variants needed from \pkg{expl3}:
+% \begin{macrocode}
+\cs_set_protected_nopar:Npn \exp_last_unbraced:NNx { \::N \::x_unbraced \::: }
+% \end{macrocode}
+%
+% For \pkg{fontspec}:
+% \begin{macrocode}
+\cs_generate_variant:Nn \fontspec_set_family:Nnn {Nx}
+\cs_generate_variant:Nn \fontspec_set_fontface:NNnn {NNx}
+% \end{macrocode}
+%
+%
+% \subsection{Primitive font commands}
+%
+% What might end up being provided by the kernel.
+%
+% \begin{macro}{\@@_glyph_if_exist:NnTF}
+% \begin{macrocode}
+\prg_new_conditional:Nnn \@@_glyph_if_exist:Nn {p,TF,T,F}
+ {
+ \etex_iffontchar:D #1 #2 \scan_stop:
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Mathcode and friends}
+%
+% \begin{macro}{\@@_set_mathcode:nnnn}
+% \begin{macro}{\@@_set_mathcode:nnn}
+% These are all wrappers for the primitive commands that take numerical
+% input only.
+% \begin{macrocode}
+\cs_set:Npn \@@_set_mathcode:nnnn #1#2#3#4
+ {
+ \Umathcode \int_eval:n {#1} =
+ \mathchar at type#2 \csname sym#3\endcsname \int_eval:n {#4} \scan_stop:
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_set:Npn \@@_set_mathcode:nnn #1#2#3
+ {
+ \Umathcode \int_eval:n {#1} =
+ \mathchar at type#2 \csname sym#3\endcsname \int_eval:n {#1} \scan_stop:
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@@_set_mathchar:NNnn}
+% \begin{macro}{\@@_set_mathchar:cNnn}
+% \begin{macrocode}
+\cs_set:Npn \@@_set_mathchar:NNnn #1#2#3#4
+ {
+ \Umathchardef #1 =
+ \mathchar at type#2 \csname sym#3\endcsname \int_eval:n {#4} \scan_stop:
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macrocode}
+\cs_generate_variant:Nn \@@_set_mathchar:NNnn {c}
+% \end{macrocode}
+%
+% \begin{macro}{\@@_set_delcode:nnn}
+% \begin{macrocode}
+\cs_new:Nn \@@_set_delcode:nnn
+ {
+ \Udelcode#2 = \csname sym#1\endcsname #3 \scan_stop:
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_radical:nn}
+% \begin{macrocode}
+\cs_new:Nn \@@_radical:nn
+ {
+ \Uradical \csname sym#1\endcsname #2 \scan_stop:
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_delimiter:Nnn}
+% \begin{macrocode}
+\cs_new:Nn \@@_delimiter:Nnn
+ {
+ \Udelimiter \mathchar at type#1 \csname sym#2\endcsname #3 \scan_stop:
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_accent:nnn}
+% \begin{macrocode}
+\cs_new:Nn \@@_accent:nnn
+ {
+ \Umathaccent #1~ \mathchar at type\mathaccent \use:c { sym #2 } #3 \scan_stop:
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_char_gmake_mathactive:N}
+% \begin{macro}{\@@_char_gmake_mathactive:n}
+% \begin{macrocode}
+\cs_new:Nn \@@_char_gmake_mathactive:N
+ {
+ \global\mathcode `#1 = "8000 \scan_stop:
+ }
+\cs_new:Nn \@@_char_gmake_mathactive:n
+ {
+ \global\mathcode #1 = "8000 \scan_stop:
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Font parameters}
+%
+% \begin{macro}{\@@_copy_fontparam:nnn}
+% \begin{macrocode}
+\cs_new:Nn \@@_copy_fontparam:nnn
+ {
+ \fontdimen #1 \font = \@@_get_fontparam:nn {#2} {#3}
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_zero_fontparam:n}
+% \begin{macrocode}
+\cs_new:Nn \@@_zero_fontparam:n
+ {
+ \fontdimen #1 \font = 0pt\relax
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_get_fontparam:nn}
+% \begin{macrocode}
+\cs_new:Nn \@@_get_fontparam:nn
+ {
+%<XE> \the\fontdimen#1\l_@@_font\relax
+%<LU> \directlua{fontspec.mathfontdimen("l_@@_font","#2")}
+ }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Alphabet Unicode positions (USVs)}
+%
+% Before we begin, let's define the positions of the various Unicode
+% alphabets so that our code is a little more readable.\footnote{`\textsc{u.s.v.}' stands
+% for `Unicode scalar value'.}
+%
+% \begin{macro}{\usv_set:nnn,\@@_to_usv:nn}
+% Rather than `readable', in the end, this makes the code more extensible.
+% \begin{macrocode}
+\cs_new:Nn \usv_set:nnn { \tl_const:cn { c_@@_#1_#2_usv } {#3} }
+\cs_new:Nn \@@_to_usv:nn { \use:c { c_@@_#1_#2_usv } }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[TF]{\@@_usv_if_exist:nn}
+% \begin{macrocode}
+\prg_new_conditional:Nnn \@@_usv_if_exist:nn {T,F,TF}
+ {
+ \cs_if_exist:cTF { c_@@_#1_#2_usv }
+ \prg_return_true: \prg_return_false:
+ }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Overcoming \texorpdfstring{\cmd\@onlypreamble}{\textbackslash @onlypreamble}}
+%
+% The requirement of only setting up the maths fonts in the preamble is lifted.
+% (Perhaps unwisely.)
+% \begin{macrocode}
+\tl_map_inline:nn
+ {
+ \new at mathgroup\cdp at list\cdp at elt\DeclareMathSizes
+ \@DeclareMathSizes\newmathalphabet\newmathalphabet@@\newmathalphabet@@@
+ \DeclareMathVersion\define at mathalphabet\define at mathgroup\addtoversion
+ \version at list\version at elt\alpha at list\alpha at elt
+ \restore at mathversion\init at restore@version\dorestore at version\process at table
+ \new at mathversion\DeclareSymbolFont\group at list\group at elt
+ \new at symbolfont\SetSymbolFont\SetSymbolFont@\get at cdp
+ \DeclareMathAlphabet\new at mathalphabet\SetMathAlphabet\SetMathAlphabet@
+ \DeclareMathAccent\set at mathaccent\DeclareMathSymbol\set at mathchar
+ \set at mathsymbol\DeclareMathDelimiter\@xxDeclareMathDelimiter
+ \@DeclareMathDelimiter\@xDeclareMathDelimiter\set at mathdelimiter
+ \set@@mathdelimiter\DeclareMathRadical\mathchar at type
+ \DeclareSymbolFontAlphabet\DeclareSymbolFontAlphabet@
+ }
+ {
+ \tl_remove_once:Nn \@preamblecmds {\do#1}
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+
+\endinput
+
+% /©
+%
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
+%
+% ©/
Property changes on: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-opening.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-pkgopt.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-pkgopt.dtx (rev 0)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-pkgopt.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -0,0 +1,313 @@
+%%^^A%% um-code-pkgopt.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+% \section{setup and package options}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% \begin{macro}{\@@_keys_choices:nn}
+% To simplify the creation of option keys, let's iterate in pairs rather than worry about equals signs and commas.
+% \begin{macrocode}
+\cs_new:Nn \@@_keys_choices:nn
+ {
+ \cs_set:Npn \@@_keys_choices_fn:nn { \@@_keys_choices_aux:nnn {#1} }
+ \use:x
+ {
+ \exp_not:N \keys_define:nn {unicode-math}
+ {
+ #1 .choice: ,
+ \@@_tl_map_dbl:nN {#2} \@@_keys_choices_fn:nn
+ }
+ }
+ }
+\cs_new:Nn \@@_keys_choices_aux:nnn { #1 / #2 .code:n = { \exp_not:n {#3} } , }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new:Nn \@@_tl_map_dbl:nN
+ {
+ \__@@_tl_map_dbl:Nnn #2 #1 \q_recursion_tail {}{} \q_recursion_stop
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new:Nn \__@@_tl_map_dbl:Nnn
+ {
+ \quark_if_recursion_tail_stop:n {#2}
+ \quark_if_recursion_tail_stop:n {#3}
+ #1 {#2} {#3}
+ \__@@_tl_map_dbl:Nnn #1
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \paragraph{Compatibility}
+% \begin{macrocode}
+\@@_keys_choices:nn {mathup}
+ {
+ {sym} { \bool_set_false:N \g_@@_mathrm_text_bool }
+ {text} { \bool_set_true:N \g_@@_mathrm_text_bool }
+ }
+\@@_keys_choices:nn {mathrm}
+ {
+ {sym} { \bool_set_false:N \g_@@_mathrm_text_bool }
+ {text} { \bool_set_true:N \g_@@_mathrm_text_bool }
+ }
+\@@_keys_choices:nn {mathit}
+ {
+ {sym} { \bool_set_false:N \g_@@_mathit_text_bool }
+ {text} { \bool_set_true:N \g_@@_mathit_text_bool }
+ }
+\@@_keys_choices:nn {mathbf}
+ {
+ {sym} { \bool_set_false:N \g_@@_mathbf_text_bool }
+ {text} { \bool_set_true:N \g_@@_mathbf_text_bool }
+ }
+\@@_keys_choices:nn {mathsf}
+ {
+ {sym} { \bool_set_false:N \g_@@_mathsf_text_bool }
+ {text} { \bool_set_true:N \g_@@_mathsf_text_bool }
+ }
+\@@_keys_choices:nn {mathtt}
+ {
+ {sym} { \bool_set_false:N \g_@@_mathtt_text_bool }
+ {text} { \bool_set_true:N \g_@@_mathtt_text_bool }
+ }
+% \end{macrocode}
+%
+% \paragraph{math-style}
+% \begin{macrocode}
+\@@_keys_choices:nn {normal-style}
+ {
+ {ISO} {
+ \bool_set_false:N \g_@@_literal_bool
+ \bool_set_false:N \g_@@_upGreek_bool
+ \bool_set_false:N \g_@@_upgreek_bool
+ \bool_set_false:N \g_@@_upLatin_bool
+ \bool_set_false:N \g_@@_uplatin_bool
+ }
+ {TeX} {
+ \bool_set_false:N \g_@@_literal_bool
+ \bool_set_true:N \g_@@_upGreek_bool
+ \bool_set_false:N \g_@@_upgreek_bool
+ \bool_set_false:N \g_@@_upLatin_bool
+ \bool_set_false:N \g_@@_uplatin_bool
+ }
+ {french} {
+ \bool_set_false:N \g_@@_literal_bool
+ \bool_set_true:N \g_@@_upGreek_bool
+ \bool_set_true:N \g_@@_upgreek_bool
+ \bool_set_true:N \g_@@_upLatin_bool
+ \bool_set_false:N \g_@@_uplatin_bool
+ }
+ {upright} {
+ \bool_set_false:N \g_@@_literal_bool
+ \bool_set_true:N \g_@@_upGreek_bool
+ \bool_set_true:N \g_@@_upgreek_bool
+ \bool_set_true:N \g_@@_upLatin_bool
+ \bool_set_true:N \g_@@_uplatin_bool
+ }
+ {literal} {
+ \bool_set_true:N \g_@@_literal_bool
+ }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\@@_keys_choices:nn {math-style}
+ {
+ {ISO} {
+ \unimathsetup { nabla=upright, partial=italic,
+ normal-style=ISO, bold-style=ISO, sans-style=italic }
+ }
+ {TeX} {
+ \unimathsetup { nabla=upright, partial=italic,
+ normal-style=TeX, bold-style=TeX, sans-style=upright }
+ }
+ {french} {
+ \unimathsetup { nabla=upright, partial=upright,
+ normal-style=french, bold-style=upright, sans-style=upright }
+ }
+ {upright} {
+ \unimathsetup { nabla=upright, partial=upright,
+ normal-style=upright, bold-style=upright, sans-style=upright }
+ }
+ {literal} {
+ \unimathsetup { colon=literal, nabla=literal, partial=literal,
+ normal-style=literal, bold-style=literal, sans-style=literal }
+ }
+ }
+% \end{macrocode}
+%
+% \paragraph{bold-style}
+% \begin{macrocode}
+\@@_keys_choices:nn {bold-style}
+ {
+ {ISO} {
+ \bool_set_false:N \g_@@_bfliteral_bool
+ \bool_set_false:N \g_@@_bfupGreek_bool
+ \bool_set_false:N \g_@@_bfupgreek_bool
+ \bool_set_false:N \g_@@_bfupLatin_bool
+ \bool_set_false:N \g_@@_bfuplatin_bool
+ }
+ {TeX} {
+ \bool_set_false:N \g_@@_bfliteral_bool
+ \bool_set_true:N \g_@@_bfupGreek_bool
+ \bool_set_false:N \g_@@_bfupgreek_bool
+ \bool_set_true:N \g_@@_bfupLatin_bool
+ \bool_set_true:N \g_@@_bfuplatin_bool
+ }
+ {upright} {
+ \bool_set_false:N \g_@@_bfliteral_bool
+ \bool_set_true:N \g_@@_bfupGreek_bool
+ \bool_set_true:N \g_@@_bfupgreek_bool
+ \bool_set_true:N \g_@@_bfupLatin_bool
+ \bool_set_true:N \g_@@_bfuplatin_bool
+ }
+ {literal} {
+ \bool_set_true:N \g_@@_bfliteral_bool
+ }
+ }
+% \end{macrocode}
+%
+% \paragraph{sans-style}
+% \begin{macrocode}
+\@@_keys_choices:nn {sans-style}
+ {
+ {italic} { \bool_set_false:N \g_@@_upsans_bool }
+ {upright} { \bool_set_true:N \g_@@_upsans_bool }
+ {literal} { \bool_set_true:N \g_@@_sfliteral_bool }
+ }
+% \end{macrocode}
+%
+%
+% \paragraph{Nabla and partial}
+% \begin{macrocode}
+\@@_keys_choices:nn {nabla}
+ {
+ {upright} {
+ \bool_set_false:N \g_@@_literal_Nabla_bool
+ \bool_set_true:N \g_@@_upNabla_bool
+ }
+ {italic} {
+ \bool_set_false:N \g_@@_literal_Nabla_bool
+ \bool_set_false:N \g_@@_upNabla_bool
+ }
+ {literal} { \bool_set_true:N \g_@@_literal_Nabla_bool }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\@@_keys_choices:nn {partial}
+ {
+ {upright} {
+ \bool_set_false:N \g_@@_literal_partial_bool
+ \bool_set_true:N \g_@@_uppartial_bool
+ }
+ {italic} {
+ \bool_set_false:N \g_@@_literal_partial_bool
+ \bool_set_false:N \g_@@_uppartial_bool
+ }
+ {literal} { \bool_set_true:N \g_@@_literal_partial_bool }
+ }
+% \end{macrocode}
+%
+% \paragraph{Colon style}
+% \begin{macrocode}
+\@@_keys_choices:nn {colon}
+ {
+ {literal} { \bool_set_true:N \g_@@_literal_colon_bool }
+ {TeX} { \bool_set_false:N \g_@@_literal_colon_bool }
+ }
+% \end{macrocode}
+%
+% \paragraph{Slash delimiter style}
+% \begin{macrocode}
+\@@_keys_choices:nn {slash-delimiter}
+ {
+ {ascii} { \tl_set:Nn \g_@@_slash_delimiter_usv {"002F} }
+ {frac} { \tl_set:Nn \g_@@_slash_delimiter_usv {"2044} }
+ {div} { \tl_set:Nn \g_@@_slash_delimiter_usv {"2215} }
+ }
+% \end{macrocode}
+%
+%
+% \paragraph{Active fraction style}
+% \begin{macrocode}
+\@@_keys_choices:nn {active-frac}
+ {
+ {small}
+ {
+ \cs_if_exist:NTF \tfrac
+ { \bool_set_true:N \l_@@_smallfrac_bool }
+ {
+ \@@_warning:n {no-tfrac}
+ \bool_set_false:N \l_@@_smallfrac_bool
+ }
+ \use:c {@@_setup_active_frac:}
+ }
+
+ {normalsize}
+ {
+ \bool_set_false:N \l_@@_smallfrac_bool
+ \use:c {@@_setup_active_frac:}
+ }
+ }
+% \end{macrocode}
+%
+% \paragraph{Debug/tracing}
+%
+% \begin{macrocode}
+\keys_define:nn {unicode-math}
+ {
+ warnings-off .code:n =
+ {
+ \clist_map_inline:nn {#1}
+ { \msg_redirect_name:nnn { unicode-math } { ##1 } { none } }
+ }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\@@_keys_choices:nn {trace}
+ {
+ {on} {} % default
+ {debug} { \msg_redirect_module:nnn { unicode-math } { log } { warning } }
+ {off} { \msg_redirect_module:nnn { unicode-math } { log } { none } }
+ }
+% \end{macrocode}
+%
+% \subsection{Defaults}
+%
+% \begin{macrocode}
+\unimathsetup {math-style=TeX}
+\unimathsetup {slash-delimiter=ascii}
+\unimathsetup {trace=off}
+\unimathsetup {mathrm=text,mathit=text,mathbf=text,mathsf=text,mathtt=text}
+\cs_if_exist:NT \tfrac { \unimathsetup {active-frac=small} }
+\ProcessKeysOptions {unicode-math}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+
+\endinput
+
+% /©
+%
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
+%
+% ©/
Property changes on: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-pkgopt.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-primes.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-primes.dtx (rev 0)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-primes.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -0,0 +1,384 @@
+%%^^A%% um-code-primes.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+% \section{Primes}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% We need a new `prime' algorithm. Unicode math has four pre-drawn prime glyphs.
+% \begin{quote}\obeylines
+% \unichar{2032} {prime} (\cs{prime}): $x\prime$
+% \unichar{2033} {double prime} (\cs{dprime}): $x\dprime$
+% \unichar{2034} {triple prime} (\cs{trprime}): $x\trprime$
+% \unichar{2057} {quadruple prime} (\cs{qprime}): $x\qprime$
+% \end{quote}
+% As you can see, they're all drawn at the correct height without being superscripted.
+% However, in a correctly behaving OpenType font,
+% we also see different behaviour after the \texttt{ssty} feature is applied:
+% \begin{quote}
+% \font\1="[xits-math.otf]:script=math,+ssty=0"\1
+% \char"1D465\char"2032\quad
+% \char"1D465\char"2033\quad
+% \char"1D465\char"2034\quad
+% \char"1D465\char"2057
+% \end{quote}
+% The glyphs are now `full size' so that when placed inside a superscript,
+% their shape will match the originally sized ones. Many thanks to Ross Mills
+% of Tiro Typeworks for originally pointing out this behaviour.
+%
+% In regular \LaTeX, primes can be entered with the straight quote character
+% |'|, and multiple straight quotes chain together to produce multiple
+% primes. Better results can be achieved in \pkg{unicode-math} by chaining
+% multiple single primes into a pre-drawn multi-prime glyph; consider
+% $x\prime{}\prime{}\prime$ vs.\ $x\trprime$.
+%
+% For Unicode maths, we wish to conserve this behaviour and augment it with
+% the possibility of adding any combination of Unicode prime or any of the
+% $n$-prime characters. E.g., the user might copy-paste a double prime from
+% another source and then later type another single prime after it; the output
+% should be the triple prime.
+%
+% Our algorithm is:
+% \begin{itemize}[nolistsep]
+% \item Prime encountered; pcount=1.
+% \item Scan ahead; if prime: pcount:=pcount+1; repeat.
+% \item If not prime, stop scanning.
+% \item If pcount=1, \cs{prime}, end.
+% \item If pcount=2, check \cs{dprime}; if it exists, use it, end; if not, goto last step.
+% \item Ditto pcount=3 \& \cs{trprime}.
+% \item Ditto pcount=4 \& \cs{qprime}.
+% \item If pcount>4 or the glyph doesn't exist, insert pcount \cs{prime}s with \cs{primekern} between each.
+% \end{itemize}
+%
+% This is a wrapper to insert a superscript; if there is a subsequent
+% trailing superscript, then it is included within the insertion.
+% \begin{macrocode}
+\cs_new:Nn \@@_arg_i_before_egroup:n {#1\egroup}
+\cs_new:Nn \@@_superscript:n
+ {
+ ^\bgroup #1
+ \peek_meaning_remove:NTF ^ \@@_arg_i_before_egroup:n \egroup
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new:Nn \@@_nprimes:Nn
+ {
+ \@@_superscript:n
+ {
+ #1
+ \prg_replicate:nn {#2-1} { \mskip \g_@@_primekern_muskip #1 }
+ }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new:Nn \@@_nprimes_select:nn
+ {
+ \int_case:nnF {#2}
+ {
+ {1} { \@@_superscript:n {#1} }
+ {2} {
+ \@@_glyph_if_exist:NnTF \l_@@_font {"2033}
+ { \@@_superscript:n {\@@_prime_double_mchar} }
+ { \@@_nprimes:Nn #1 {#2} }
+ }
+ {3} {
+ \@@_glyph_if_exist:NnTF \l_@@_font {"2034}
+ { \@@_superscript:n {\@@_prime_triple_mchar} }
+ { \@@_nprimes:Nn #1 {#2} }
+ }
+ {4} {
+ \@@_glyph_if_exist:NnTF \l_@@_font {"2057}
+ { \@@_superscript:n {\@@_prime_quad_mchar} }
+ { \@@_nprimes:Nn #1 {#2} }
+ }
+ }
+ {
+ \@@_nprimes:Nn #1 {#2}
+ }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new:Nn \@@_nbackprimes_select:nn
+ {
+ \int_case:nnF {#2}
+ {
+ {1} { \@@_superscript:n {#1} }
+ {2} {
+ \@@_glyph_if_exist:NnTF \l_@@_font {"2036}
+ { \@@_superscript:n {\@@_backprime_double_mchar} }
+ { \@@_nprimes:Nn #1 {#2} }
+ }
+ {3} {
+ \@@_glyph_if_exist:NnTF \l_@@_font {"2037}
+ { \@@_superscript:n {\@@_backprime_triple_mchar} }
+ { \@@_nprimes:Nn #1 {#2} }
+ }
+ }
+ {
+ \@@_nprimes:Nn #1 {#2}
+ }
+ }
+% \end{macrocode}
+%
+% Scanning is annoying because I'm too lazy to do it for the general case.
+%
+% \begin{macrocode}
+\cs_new:Npn \@@_scan_prime:
+ {
+ \cs_set_eq:NN \@@_superscript:n \use:n
+ \int_zero:N \l_@@_primecount_int
+ \@@_scanprime_collect:N \@@_prime_single_mchar
+ }
+\cs_new:Npn \@@_scan_dprime:
+ {
+ \cs_set_eq:NN \@@_superscript:n \use:n
+ \int_set:Nn \l_@@_primecount_int {1}
+ \@@_scanprime_collect:N \@@_prime_single_mchar
+ }
+\cs_new:Npn \@@_scan_trprime:
+ {
+ \cs_set_eq:NN \@@_superscript:n \use:n
+ \int_set:Nn \l_@@_primecount_int {2}
+ \@@_scanprime_collect:N \@@_prime_single_mchar
+ }
+\cs_new:Npn \@@_scan_qprime:
+ {
+ \cs_set_eq:NN \@@_superscript:n \use:n
+ \int_set:Nn \l_@@_primecount_int {3}
+ \@@_scanprime_collect:N \@@_prime_single_mchar
+ }
+\cs_new:Npn \@@_scan_sup_prime:
+ {
+ \int_zero:N \l_@@_primecount_int
+ \@@_scanprime_collect:N \@@_prime_single_mchar
+ }
+\cs_new:Npn \@@_scan_sup_dprime:
+ {
+ \int_set:Nn \l_@@_primecount_int {1}
+ \@@_scanprime_collect:N \@@_prime_single_mchar
+ }
+\cs_new:Npn \@@_scan_sup_trprime:
+ {
+ \int_set:Nn \l_@@_primecount_int {2}
+ \@@_scanprime_collect:N \@@_prime_single_mchar
+ }
+\cs_new:Npn \@@_scan_sup_qprime:
+ {
+ \int_set:Nn \l_@@_primecount_int {3}
+ \@@_scanprime_collect:N \@@_prime_single_mchar
+ }
+\cs_new:Nn \@@_scanprime_collect:N
+ {
+ \int_incr:N \l_@@_primecount_int
+ \peek_meaning_remove:NTF '
+ { \@@_scanprime_collect:N #1 }
+ {
+ \peek_meaning_remove:NTF \@@_scan_prime:
+ { \@@_scanprime_collect:N #1 }
+ {
+ \peek_meaning_remove:NTF ^^^^2032
+ { \@@_scanprime_collect:N #1 }
+ {
+ \peek_meaning_remove:NTF \@@_scan_dprime:
+ {
+ \int_incr:N \l_@@_primecount_int
+ \@@_scanprime_collect:N #1
+ }
+ {
+ \peek_meaning_remove:NTF ^^^^2033
+ {
+ \int_incr:N \l_@@_primecount_int
+ \@@_scanprime_collect:N #1
+ }
+ {
+ \peek_meaning_remove:NTF \@@_scan_trprime:
+ {
+ \int_add:Nn \l_@@_primecount_int {2}
+ \@@_scanprime_collect:N #1
+ }
+ {
+ \peek_meaning_remove:NTF ^^^^2034
+ {
+ \int_add:Nn \l_@@_primecount_int {2}
+ \@@_scanprime_collect:N #1
+ }
+ {
+ \peek_meaning_remove:NTF \@@_scan_qprime:
+ {
+ \int_add:Nn \l_@@_primecount_int {3}
+ \@@_scanprime_collect:N #1
+ }
+ {
+ \peek_meaning_remove:NTF ^^^^2057
+ {
+ \int_add:Nn \l_@@_primecount_int {3}
+ \@@_scanprime_collect:N #1
+ }
+ {
+ \@@_nprimes_select:nn {#1} {\l_@@_primecount_int}
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new:Npn \@@_scan_backprime:
+ {
+ \cs_set_eq:NN \@@_superscript:n \use:n
+ \int_zero:N \l_@@_primecount_int
+ \@@_scanbackprime_collect:N \@@_backprime_single_mchar
+ }
+\cs_new:Npn \@@_scan_backdprime:
+ {
+ \cs_set_eq:NN \@@_superscript:n \use:n
+ \int_set:Nn \l_@@_primecount_int {1}
+ \@@_scanbackprime_collect:N \@@_backprime_single_mchar
+ }
+\cs_new:Npn \@@_scan_backtrprime:
+ {
+ \cs_set_eq:NN \@@_superscript:n \use:n
+ \int_set:Nn \l_@@_primecount_int {2}
+ \@@_scanbackprime_collect:N \@@_backprime_single_mchar
+ }
+\cs_new:Npn \@@_scan_sup_backprime:
+ {
+ \int_zero:N \l_@@_primecount_int
+ \@@_scanbackprime_collect:N \@@_backprime_single_mchar
+ }
+\cs_new:Npn \@@_scan_sup_backdprime:
+ {
+ \int_set:Nn \l_@@_primecount_int {1}
+ \@@_scanbackprime_collect:N \@@_backprime_single_mchar
+ }
+\cs_new:Npn \@@_scan_sup_backtrprime:
+ {
+ \int_set:Nn \l_@@_primecount_int {2}
+ \@@_scanbackprime_collect:N \@@_backprime_single_mchar
+ }
+\cs_new:Nn \@@_scanbackprime_collect:N
+ {
+ \int_incr:N \l_@@_primecount_int
+ \peek_meaning_remove:NTF `
+ {
+ \@@_scanbackprime_collect:N #1
+ }
+ {
+ \peek_meaning_remove:NTF \@@_scan_backprime:
+ {
+ \@@_scanbackprime_collect:N #1
+ }
+ {
+ \peek_meaning_remove:NTF ^^^^2035
+ {
+ \@@_scanbackprime_collect:N #1
+ }
+ {
+ \peek_meaning_remove:NTF \@@_scan_backdprime:
+ {
+ \int_incr:N \l_@@_primecount_int
+ \@@_scanbackprime_collect:N #1
+ }
+ {
+ \peek_meaning_remove:NTF ^^^^2036
+ {
+ \int_incr:N \l_@@_primecount_int
+ \@@_scanbackprime_collect:N #1
+ }
+ {
+ \peek_meaning_remove:NTF \@@_scan_backtrprime:
+ {
+ \int_add:Nn \l_@@_primecount_int {2}
+ \@@_scanbackprime_collect:N #1
+ }
+ {
+ \peek_meaning_remove:NTF ^^^^2037
+ {
+ \int_add:Nn \l_@@_primecount_int {2}
+ \@@_scanbackprime_collect:N #1
+ }
+ {
+ \@@_nbackprimes_select:nn {#1} {\l_@@_primecount_int}
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\AtBeginDocument { \@@_define_prime_commands: \@@_define_prime_chars: }
+\cs_new:Nn \@@_define_prime_commands:
+ {
+ \cs_set_eq:NN \prime \@@_prime_single_mchar
+ \cs_set_eq:NN \dprime \@@_prime_double_mchar
+ \cs_set_eq:NN \trprime \@@_prime_triple_mchar
+ \cs_set_eq:NN \qprime \@@_prime_quad_mchar
+ \cs_set_eq:NN \backprime \@@_backprime_single_mchar
+ \cs_set_eq:NN \backdprime \@@_backprime_double_mchar
+ \cs_set_eq:NN \backtrprime \@@_backprime_triple_mchar
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\group_begin:
+ \char_set_catcode_active:N \'
+ \char_set_catcode_active:N \`
+ \char_set_catcode_active:n {"2032}
+ \char_set_catcode_active:n {"2033}
+ \char_set_catcode_active:n {"2034}
+ \char_set_catcode_active:n {"2057}
+ \char_set_catcode_active:n {"2035}
+ \char_set_catcode_active:n {"2036}
+ \char_set_catcode_active:n {"2037}
+ \cs_gset:Nn \@@_define_prime_chars:
+ {
+ \cs_set_eq:NN ' \@@_scan_sup_prime:
+ \cs_set_eq:NN ^^^^2032 \@@_scan_sup_prime:
+ \cs_set_eq:NN ^^^^2033 \@@_scan_sup_dprime:
+ \cs_set_eq:NN ^^^^2034 \@@_scan_sup_trprime:
+ \cs_set_eq:NN ^^^^2057 \@@_scan_sup_qprime:
+ \cs_set_eq:NN ` \@@_scan_sup_backprime:
+ \cs_set_eq:NN ^^^^2035 \@@_scan_sup_backprime:
+ \cs_set_eq:NN ^^^^2036 \@@_scan_sup_backdprime:
+ \cs_set_eq:NN ^^^^2037 \@@_scan_sup_backtrprime:
+ }
+\group_end:
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+
+\endinput
+
+% /©
+%
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
+%
+% ©/
Property changes on: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-primes.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-setchar.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-setchar.dtx (rev 0)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-setchar.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -0,0 +1,287 @@
+%%^^A%% um-code-setchar.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+% \section{Setting up maths chars}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% \subsection{A token list to contain the data of the math table}
+%
+% Instead of \cmd\input-ing the unicode math table every time we
+% want to re-read its data, we save it within a macro. This has two
+% advantages: 1.~it should be slightly faster, at the expense of memory;
+% 2.~we don't need to worry about catcodes later, since they're frozen
+% at this point.
+%
+% In time, the case statement inside |set_mathsymbol| will be moved in here
+% to avoid re-running it every time.
+% \begin{macrocode}
+\cs_new:Npn \@@_symbol_setup:
+ {
+ \cs_set:Npn \UnicodeMathSymbol ##1##2##3##4
+ {
+ \exp_not:n { \_@@_sym:nnn {##1} {##2} {##3} }
+ }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\tl_set_from_file_x:Nnn \g_@@_mathtable_tl {\@@_symbol_setup:} {unicode-math-table.tex}
+% \end{macrocode}
+%
+%
+% \begin{macro}{\@@_input_math_symbol_table:}
+% This function simply expands to the token list containing all the data.
+% \begin{macrocode}
+\cs_new:Nn \@@_input_math_symbol_table: {\g_@@_mathtable_tl}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Definitions of the active math characters}
+%
+% Now give \cmd\_@@_sym:nnn\ a definition in terms of \cmd\@@_cs_set_eq_active_char:Nw\
+% and we're good to go.
+%
+% Ensure catcodes are appropriate;
+% make sure |#| is an `other' so that we don't get confused with \cs{mathoctothorpe}.
+% \begin{macrocode}
+\AtBeginDocument{\@@_define_math_chars:}
+\cs_new:Nn \@@_define_math_chars:
+ {
+ \group_begin:
+ \cs_set:Npn \_@@_sym:nnn ##1##2##3
+ {
+ \tl_if_in:nnT
+ { \mathord \mathalpha \mathbin \mathrel \mathpunct \mathop \mathfence }
+ {##3}
+ {
+ \exp_last_unbraced:NNx \cs_gset_eq:NN ##2 { \Ucharcat ##1 ~ 12 ~ }
+ }
+ }
+ \@@_input_math_symbol_table:
+ \group_end:
+ }
+% \end{macrocode}
+%
+%
+%
+% \subsection{Commands for each symbol/glyph/char}
+%
+% \begin{macro}{\@@_set_mathsymbol:nNNn}
+% \darg{A \LaTeX\ symbol font, e.g., \texttt{operators}}
+% \darg{Symbol macro, \eg, \cmd\alpha}
+% \darg{Type, \eg, \cmd\mathalpha}
+% \darg{Slot, \eg, \texttt{"221E}}
+% There are a bunch of tests to perform to process the various characters.
+% The following assignments should all be fairly straightforward.
+%
+% The catcode setting is to work around (strange?) behaviour in LuaTeX in which catcode 11 characters don't have italic correction for maths.
+% We don't adjust ascii chars, however, because certain punctuation should not have their catcodes changed.
+% \begin{macrocode}
+\cs_set:Nn \@@_set_mathsymbol:nNNn
+ {
+ \bool_lazy_and:nnT
+ {
+ \int_compare_p:nNn {#4} > {127}
+ }
+ {
+ \int_compare_p:nNn { \char_value_catcode:n {#4} } = {11}
+ }
+ { \char_set_catcode_other:n {#4} }
+
+ \tl_case:Nn #3
+ {
+ \mathord { \@@_set_mathcode:nnn {#4} {#3} {#1} }
+ \mathalpha { \@@_set_mathcode:nnn {#4} {#3} {#1} }
+ \mathbin { \@@_set_mathcode:nnn {#4} {#3} {#1} }
+ \mathrel { \@@_set_mathcode:nnn {#4} {#3} {#1} }
+ \mathpunct { \@@_set_mathcode:nnn {#4} {#3} {#1} }
+ \mathop { \@@_set_big_operator:nnn {#1} {#2} {#4} }
+ \mathopen { \@@_set_math_open:nnn {#1} {#2} {#4} }
+ \mathclose { \@@_set_math_close:nnn {#1} {#2} {#4} }
+ \mathfence { \@@_set_math_fence:nnnn {#1} {#2} {#3} {#4} }
+ \mathaccent
+ { \@@_set_math_accent:Nnnn #2 {fixed} {#1} {#4} }
+ \mathbotaccent
+ { \@@_set_math_accent:Nnnn #2 {bottom~ fixed} {#1} {#4} }
+ \mathaccentwide
+ { \@@_set_math_accent:Nnnn #2 {} {#1} {#4} }
+ \mathbotaccentwide
+ { \@@_set_math_accent:Nnnn #2 {bottom} {#1} {#4} }
+ \mathover
+ { \@@_set_math_overunder:Nnnn #2 {} {#1} {#4} }
+ \mathunder
+ { \@@_set_math_overunder:Nnnn #2 {bottom} {#1} {#4} }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\edef\mathfence{\string\mathfence}
+\edef\mathover{\string\mathover}
+\edef\mathunder{\string\mathunder}
+\edef\mathbotaccent{\string\mathbotaccent}
+\edef\mathaccentwide{\string\mathaccentwide}
+\edef\mathbotaccentwide{\string\mathbotaccentwide}
+% \end{macrocode}
+%
+%
+% \begin{macro}{\@@_set_big_operator:nnn}
+% \darg{Symbol font name}
+% \darg{Macro to assign}
+% \darg{Glyph slot}
+% In the examples following, say we're defining for the symbol \cmd\sum\ ($\sum$).
+% In order for literal Unicode characters to be used in the source and still
+% have the correct limits behaviour, big operators are made math-active.
+% This involves three steps:
+% \begin{itemize}
+% \item
+% The active math char is defined to expand to the macro \cs{sum_sym}.
+% (Later, the control sequence \cs{sum} will be assigned the math char.)
+% \item
+% Declare the plain old mathchardef for the control sequence \cmd\sumop.
+% (This follows the convention of \LaTeX/\pkg{amsmath}.)
+% \item
+% Define \cs{sum_sym} as \cmd\sumop, followed by \cmd\nolimits\ if necessary.
+% \end{itemize}
+% Whether the \cmd\nolimits\ suffix is inserted is controlled by the
+% token list \cs{l_@@_nolimits_tl}, which contains a list of such characters.
+% This list is checked dynamically to allow it to be updated mid-document.
+%
+% Examples of expansion, by default, for two big operators:
+% \begin{quote}
+% (~\cs{sum} $\to$~) $\sum$ $\to$ \cs{sum_sym} $\to$ \cs{sumop}\cs{nolimits}\par
+% (~\cs{int} $\to$~) $\int$ $\to$ \cs{int_sym} $\to$ \cs{intop}
+% \end{quote}
+% \begin{macrocode}
+\cs_new:Nn \@@_set_big_operator:nnn
+ {
+ \@@_char_gmake_mathactive:n {#3}
+ \cs_set_protected_nopar:Npx \@@_tmpa: { \exp_not:c { \cs_to_str:N #2 _sym } }
+ \char_gset_active_eq:nN {#3} \@@_tmpa:
+
+ \@@_set_mathchar:cNnn {\cs_to_str:N #2 op} \mathop {#1} {#3}
+
+ \cs_gset:cpx { \cs_to_str:N #2 _sym }
+ {
+ \exp_not:c { \cs_to_str:N #2 op }
+ \exp_not:n { \tl_if_in:NnT \l_@@_nolimits_tl {#2} \nolimits }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_set_math_open:nnn}
+% \darg{Symbol font name}
+% \darg{Macro to assign}
+% \darg{Glyph slot}
+% \begin{macrocode}
+\cs_new:Nn \@@_set_math_open:nnn
+ {
+ \tl_if_in:NnTF \l_@@_radicals_tl {#2}
+ {
+ \cs_gset_protected_nopar:cpx {\cs_to_str:N #2 sign}
+ { \@@_radical:nn {#1} {#3} }
+ \tl_set:cn {l_@@_radical_\cs_to_str:N #2_tl} {\use:c{sym #1}~ #3}
+ }
+ {
+ \@@_set_delcode:nnn {#1} {#3} {#3}
+ \@@_set_mathcode:nnn {#3} \mathopen {#1}
+ \cs_gset_protected_nopar:Npx #2
+ { \@@_delimiter:Nnn \mathopen {#1} {#3} }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_set_math_close:nnn}
+% \darg{Symbol font name}
+% \darg{Macro to assign}
+% \darg{Glyph slot}
+% \begin{macrocode}
+\cs_new:Nn \@@_set_math_close:nnn
+ {
+ \@@_set_delcode:nnn {#1} {#3} {#3}
+ \@@_set_mathcode:nnn {#3} \mathclose {#1}
+ \cs_gset_protected_nopar:Npx #2
+ { \@@_delimiter:Nnn \mathclose {#1} {#3} }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_set_math_fence:nnnn}
+% \darg{Symbol font name}
+% \darg{Macro to assign}
+% \darg{Type, \eg, \cmd\mathalpha}
+% \darg{Glyph slot}
+% \begin{macrocode}
+\cs_new:Nn \@@_set_math_fence:nnnn
+ {
+ \@@_set_mathcode:nnn {#4} {#3} {#1}
+ \@@_set_delcode:nnn {#1} {#4} {#4}
+ \cs_gset_protected_nopar:cpx {l \cs_to_str:N #2}
+ { \@@_delimiter:Nnn \mathopen {#1} {#4} }
+ \cs_gset_protected_nopar:cpx {r \cs_to_str:N #2}
+ { \@@_delimiter:Nnn \mathclose {#1} {#4} }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_set_math_accent:Nnnn}
+% \darg{Accend command}
+% \darg{Accent type (string)}
+% \darg{Symbol font name}
+% \darg{Glyph slot}
+% \begin{macrocode}
+\cs_new:Nn \@@_set_math_accent:Nnnn
+ {
+ \cs_gset_protected_nopar:Npx #1
+ { \@@_accent:nnn {#2} {#3} {#4} }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_set_math_overunder:Nnnn}
+% \darg{Accend command}
+% \darg{Accent type (string)}
+% \darg{Symbol font name}
+% \darg{Glyph slot}
+% \begin{macrocode}
+\cs_new:Nn \@@_set_math_overunder:Nnnn
+ {
+ \cs_gset_protected_nopar:Npx #1 ##1
+ {
+ \mathop
+ { \@@_accent:nnn {#2} {#3} {#4} {##1} }
+ \limits
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+
+\endinput
+
+% /©
+%
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
+%
+% ©/
Property changes on: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-setchar.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-sscript.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-sscript.dtx (rev 0)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-sscript.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -0,0 +1,203 @@
+%%^^A%% um-code-sscript.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+% \section{Unicode sub- and super-scripts}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% The idea here is to enter a scanning state after a superscript or subscript
+% is encountered.
+% If subsequent superscripts or subscripts (resp.) are found,
+% they are lumped together.
+% Each sub/super has a corresponding regular size
+% glyph which is used by \XeTeX\ to typeset the results; this means that the
+% actual subscript/superscript glyphs are never seen in the output
+% document~--- they are only used as input characters.
+%
+% Open question: should the superscript-like `modifiers' (\unichar{1D2C}
+% {modifier capital letter a} and on) be included here?
+% \begin{macrocode}
+\group_begin:
+% \end{macrocode}
+% \paragraph{Superscripts}
+% Populate a property list with superscript characters; themselves as their
+% key, and their replacement as each key's value.
+% Then make the superscript active and bind it to the scanning function.
+%
+% \cs{scantokens} makes this process much simpler since we can activate the
+% char and assign its meaning in one step.
+% \begin{macrocode}
+\cs_new:Nn \@@_setup_active_superscript:nn
+ {
+ \prop_gput:Nnn \g_@@_supers_prop {#1} {#2}
+ \char_set_catcode_active:N #1
+ \@@_char_gmake_mathactive:N #1
+ \scantokens
+ {
+ \cs_gset:Npn #1
+ {
+ \tl_set:Nn \l_@@_ss_chain_tl {#2}
+ \cs_set_eq:NN \@@_sub_or_super:n \sp
+ \tl_set:Nn \l_@@_tmpa_tl {supers}
+ \@@_scan_sscript:
+ }
+ }
+ }
+% \end{macrocode}
+% Bam:
+% \begin{macrocode}
+\@@_setup_active_superscript:nn {^^^^2070} {0}
+\@@_setup_active_superscript:nn {^^^^00b9} {1}
+\@@_setup_active_superscript:nn {^^^^00b2} {2}
+\@@_setup_active_superscript:nn {^^^^00b3} {3}
+\@@_setup_active_superscript:nn {^^^^2074} {4}
+\@@_setup_active_superscript:nn {^^^^2075} {5}
+\@@_setup_active_superscript:nn {^^^^2076} {6}
+\@@_setup_active_superscript:nn {^^^^2077} {7}
+\@@_setup_active_superscript:nn {^^^^2078} {8}
+\@@_setup_active_superscript:nn {^^^^2079} {9}
+\@@_setup_active_superscript:nn {^^^^207a} {+}
+\@@_setup_active_superscript:nn {^^^^207b} {-}
+\@@_setup_active_superscript:nn {^^^^207c} {=}
+\@@_setup_active_superscript:nn {^^^^207d} {(}
+\@@_setup_active_superscript:nn {^^^^207e} {)}
+\@@_setup_active_superscript:nn {^^^^2071} {i}
+\@@_setup_active_superscript:nn {^^^^207f} {n}
+\@@_setup_active_superscript:nn {^^^^02b0} {h}
+\@@_setup_active_superscript:nn {^^^^02b2} {j}
+\@@_setup_active_superscript:nn {^^^^02b3} {r}
+\@@_setup_active_superscript:nn {^^^^02b7} {w}
+\@@_setup_active_superscript:nn {^^^^02b8} {y}
+% \end{macrocode}
+% \paragraph{Subscripts} Ditto above.
+% \begin{macrocode}
+\cs_new:Nn \@@_setup_active_subscript:nn
+ {
+ \prop_gput:Nnn \g_@@_subs_prop {#1} {#2}
+ \char_set_catcode_active:N #1
+ \@@_char_gmake_mathactive:N #1
+ \scantokens
+ {
+ \cs_gset:Npn #1
+ {
+ \tl_set:Nn \l_@@_ss_chain_tl {#2}
+ \cs_set_eq:NN \@@_sub_or_super:n \sb
+ \tl_set:Nn \l_@@_tmpa_tl {subs}
+ \@@_scan_sscript:
+ }
+ }
+ }
+% \end{macrocode}
+% A few more subscripts than superscripts:
+% \begin{macrocode}
+\@@_setup_active_subscript:nn {^^^^2080} {0}
+\@@_setup_active_subscript:nn {^^^^2081} {1}
+\@@_setup_active_subscript:nn {^^^^2082} {2}
+\@@_setup_active_subscript:nn {^^^^2083} {3}
+\@@_setup_active_subscript:nn {^^^^2084} {4}
+\@@_setup_active_subscript:nn {^^^^2085} {5}
+\@@_setup_active_subscript:nn {^^^^2086} {6}
+\@@_setup_active_subscript:nn {^^^^2087} {7}
+\@@_setup_active_subscript:nn {^^^^2088} {8}
+\@@_setup_active_subscript:nn {^^^^2089} {9}
+\@@_setup_active_subscript:nn {^^^^208a} {+}
+\@@_setup_active_subscript:nn {^^^^208b} {-}
+\@@_setup_active_subscript:nn {^^^^208c} {=}
+\@@_setup_active_subscript:nn {^^^^208d} {(}
+\@@_setup_active_subscript:nn {^^^^208e} {)}
+\@@_setup_active_subscript:nn {^^^^2090} {a}
+\@@_setup_active_subscript:nn {^^^^2091} {e}
+\@@_setup_active_subscript:nn {^^^^2095} {h}
+\@@_setup_active_subscript:nn {^^^^1d62} {i}
+\@@_setup_active_subscript:nn {^^^^2c7c} {j}
+\@@_setup_active_subscript:nn {^^^^2096} {k}
+\@@_setup_active_subscript:nn {^^^^2097} {l}
+\@@_setup_active_subscript:nn {^^^^2098} {m}
+\@@_setup_active_subscript:nn {^^^^2099} {n}
+\@@_setup_active_subscript:nn {^^^^2092} {o}
+\@@_setup_active_subscript:nn {^^^^209a} {p}
+\@@_setup_active_subscript:nn {^^^^1d63} {r}
+\@@_setup_active_subscript:nn {^^^^209b} {s}
+\@@_setup_active_subscript:nn {^^^^209c} {t}
+\@@_setup_active_subscript:nn {^^^^1d64} {u}
+\@@_setup_active_subscript:nn {^^^^1d65} {v}
+\@@_setup_active_subscript:nn {^^^^2093} {x}
+\@@_setup_active_subscript:nn {^^^^1d66} {\beta}
+\@@_setup_active_subscript:nn {^^^^1d67} {\gamma}
+\@@_setup_active_subscript:nn {^^^^1d68} {\rho}
+\@@_setup_active_subscript:nn {^^^^1d69} {\phi}
+\@@_setup_active_subscript:nn {^^^^1d6a} {\chi}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\group_end:
+% \end{macrocode}
+% The scanning command, which collects a chain of subscripts or a chain
+% of superscripts and then typesets what it has collected.
+% \begin{macrocode}
+\cs_new:Npn \@@_scan_sscript:
+ {
+ \@@_scan_sscript:TF
+ {
+ \@@_scan_sscript:
+ }
+ {
+ \@@_sub_or_super:n {\l_@@_ss_chain_tl}
+ }
+ }
+% \end{macrocode}
+% We do not skip spaces when scanning ahead, and we explicitly wish to
+% bail out on encountering a space or a brace. These cases are filtered
+% using \cs{peek_N_type:TF}. Otherwise the token can be taken as an
+% \texttt{N}-type argument. Then we search for it in the appropriate
+% property list (\cs{l_@@_tmpa_tl} is |subs| or |supers|).
+% If found, add the value to the current chain of sub/superscripts.
+% Remember to put the character back in the input otherwise.
+% The \cs{group_align_safe_begin:} and \cs{group_align_safe_end:} are
+% needed in case |#3| is |&|.
+% \begin{macrocode}
+\cs_new:Npn \@@_scan_sscript:TF #1#2
+ {
+ \peek_N_type:TF
+ {
+ \group_align_safe_begin:
+ \@@_scan_sscript_aux:nnN {#1} {#2}
+ }
+ {#2}
+ }
+\cs_new:Npn \@@_scan_sscript_aux:nnN #1#2#3
+ {
+ \prop_get:cnNTF {g_@@_\l_@@_tmpa_tl _prop} {#3} \l_@@_tmpb_tl
+ {
+ \tl_put_right:NV \l_@@_ss_chain_tl \l_@@_tmpb_tl
+ \group_align_safe_end:
+ #1
+ }
+ { \group_align_safe_end: #2 #3 }
+ }
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+
+\endinput
+
+% /©
+%
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
+%
+% ©/
Property changes on: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-sscript.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-ui.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-ui.dtx (rev 0)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-ui.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -0,0 +1,100 @@
+%%^^A%% um-code-ui.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+% \section{The user interface commands}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% \begin{macro}{\unimathsetup}
+% This macro can be used in lieu of or later to override
+% options declared when the package is loaded.
+% \begin{macrocode}
+\NewDocumentCommand \unimathsetup {m} { \keys_set:nn {unicode-math} {#1} }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\setmathfont}
+% \doarg{font features (first optional argument retained for backwards compatibility)}
+% \darg{font name}
+% \doarg{font features}
+% \begin{macrocode}
+\NewDocumentCommand \setmathfont { O{} m O{} }
+ {
+ \@@_setmathfont:nn {#1,#3} {#2}
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\setmathfontface}
+% \begin{macrocode}
+\NewDocumentCommand \setmathfontface { m O{} m O{} }
+ {
+ \@@_setmathfontface:Nnn #1 {#2,#4} {#3}
+ }
+% \end{macrocode}
+%
+% Note that \LaTeX’s \cs{SetMathAlphabet} simply doesn’t work to “reset” a maths alphabet font after \verb”\begin{document}”, so unlike most of the other maths commands around we still restrict this one to the preamble.
+% \begin{macrocode}
+\@onlypreamble \setmathfontface
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\setoperatorfont}
+% TODO: add check?
+% \begin{macrocode}
+\NewDocumentCommand \setoperatorfont {m}
+ {
+ \tl_set:Nn \g_@@_operator_mathfont_tl {#1}
+ }
+\setoperatorfont{\mathrm}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addnolimits}
+% This macro appends material to the macro containing the list of operators
+% that don’t take limits.
+% \begin{macrocode}
+\NewDocumentCommand \addnolimits {m}
+ {
+ \tl_put_right:Nn \l_@@_nolimits_tl {#1}
+ }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\removenolimits}
+% Can this macro be given a better name?
+% It removes an item from the nolimits list.
+% \begin{macrocode}
+\NewDocumentCommand \removenolimits {m}
+ {
+ \tl_remove_all:Nn \l_@@_nolimits_tl {#1}
+ }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+
+\endinput
+
+% /©
+%
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
+%
+% ©/
Property changes on: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-ui.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-usv.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-usv.dtx (rev 0)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-usv.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -0,0 +1,587 @@
+%%^^A%% um-code-usv.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+% \section{Alphabet Unicode positions}
+%
+% Before we begin, let's define the positions of the various Unicode
+% alphabets so that our code is a little more readable.\footnote{`\textsc{u.s.v.}' stands
+% for `Unicode scalar value'.}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% \paragraph{Alphabets}
+% \begin{macrocode}
+\usv_set:nnn {normal} {num} {48}
+\usv_set:nnn {normal} {Latin}{"1D434}
+\usv_set:nnn {normal} {latin}{"1D44E}
+\usv_set:nnn {normal} {Greek}{"1D6E2}
+\usv_set:nnn {normal} {greek}{"1D6FC}
+\usv_set:nnn {normal}{varTheta} {"1D6F3}
+\usv_set:nnn {normal}{epsilon}{"1D716}
+\usv_set:nnn {normal}{vartheta} {"1D717}
+\usv_set:nnn {normal}{varkappa} {"1D718}
+\usv_set:nnn {normal}{phi} {"1D719}
+\usv_set:nnn {normal}{varrho} {"1D71A}
+\usv_set:nnn {normal}{varpi} {"1D71B}
+\usv_set:nnn {normal} {Nabla}{"1D6FB}
+\usv_set:nnn {normal} {partial}{"1D715}
+
+\usv_set:nnn {up} {num} {48}
+\usv_set:nnn {up} {Latin}{65}
+\usv_set:nnn {up} {latin}{97}
+\usv_set:nnn {up} {Greek}{"391}
+\usv_set:nnn {up} {greek}{"3B1}
+\usv_set:nnn {it} {Latin}{"1D434}
+\usv_set:nnn {it} {latin}{"1D44E}
+\usv_set:nnn {it} {Greek}{"1D6E2}
+\usv_set:nnn {it} {greek}{"1D6FC}
+\usv_set:nnn {bb} {num} {"1D7D8}
+\usv_set:nnn {bb} {Latin}{"1D538}
+\usv_set:nnn {bb} {latin}{"1D552}
+\usv_set:nnn {scr} {Latin}{"1D49C}
+\usv_set:nnn {cal} {Latin}{"1D49C}
+\usv_set:nnn {scr} {latin}{"1D4B6}
+\usv_set:nnn {frak}{Latin}{"1D504}
+\usv_set:nnn {frak}{latin}{"1D51E}
+\usv_set:nnn {sf} {num} {"1D7E2}
+\usv_set:nnn {sfup}{num} {"1D7E2}
+\usv_set:nnn {sfit}{num} {"1D7E2}
+\usv_set:nnn {sfup}{Latin}{"1D5A0}
+\usv_set:nnn {sf} {Latin}{"1D5A0}
+\usv_set:nnn {sfup}{latin}{"1D5BA}
+\usv_set:nnn {sf} {latin}{"1D5BA}
+\usv_set:nnn {sfit}{Latin}{"1D608}
+\usv_set:nnn {sfit}{latin}{"1D622}
+\usv_set:nnn {tt} {num} {"1D7F6}
+\usv_set:nnn {tt} {Latin}{"1D670}
+\usv_set:nnn {tt} {latin}{"1D68A}
+% \end{macrocode}
+% Bold:
+% \begin{macrocode}
+\usv_set:nnn {bf} {num} {"1D7CE}
+\usv_set:nnn {bfup} {num} {"1D7CE}
+\usv_set:nnn {bfit} {num} {"1D7CE}
+\usv_set:nnn {bfup} {Latin}{"1D400}
+\usv_set:nnn {bfup} {latin}{"1D41A}
+\usv_set:nnn {bfup} {Greek}{"1D6A8}
+\usv_set:nnn {bfup} {greek}{"1D6C2}
+\usv_set:nnn {bfit} {Latin}{"1D468}
+\usv_set:nnn {bfit} {latin}{"1D482}
+\usv_set:nnn {bfit} {Greek}{"1D71C}
+\usv_set:nnn {bfit} {greek}{"1D736}
+\usv_set:nnn {bffrak}{Latin}{"1D56C}
+\usv_set:nnn {bffrak}{latin}{"1D586}
+\usv_set:nnn {bfscr} {Latin}{"1D4D0}
+\usv_set:nnn {bfcal} {Latin}{"1D4D0}
+\usv_set:nnn {bfscr} {latin}{"1D4EA}
+\usv_set:nnn {bfsf} {num} {"1D7EC}
+\usv_set:nnn {bfsfup}{num} {"1D7EC}
+\usv_set:nnn {bfsfit}{num} {"1D7EC}
+\usv_set:nnn {bfsfup}{Latin}{"1D5D4}
+\usv_set:nnn {bfsfup}{latin}{"1D5EE}
+\usv_set:nnn {bfsfup}{Greek}{"1D756}
+\usv_set:nnn {bfsfup}{greek}{"1D770}
+\usv_set:nnn {bfsfit}{Latin}{"1D63C}
+\usv_set:nnn {bfsfit}{latin}{"1D656}
+\usv_set:nnn {bfsfit}{Greek}{"1D790}
+\usv_set:nnn {bfsfit}{greek}{"1D7AA}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\usv_set:nnn {bfsf}{Latin}{ \bool_if:NTF \g_@@_upLatin_bool \g_@@_bfsfup_Latin_usv \g_@@_bfsfit_Latin_usv }
+\usv_set:nnn {bfsf}{latin}{ \bool_if:NTF \g_@@_uplatin_bool \g_@@_bfsfup_latin_usv \g_@@_bfsfit_latin_usv }
+\usv_set:nnn {bfsf}{Greek}{ \bool_if:NTF \g_@@_upGreek_bool \g_@@_bfsfup_Greek_usv \g_@@_bfsfit_Greek_usv }
+\usv_set:nnn {bfsf}{greek}{ \bool_if:NTF \g_@@_upgreek_bool \g_@@_bfsfup_greek_usv \g_@@_bfsfit_greek_usv }
+\usv_set:nnn {bf} {Latin}{ \bool_if:NTF \g_@@_bfupLatin_bool \g_@@_bfup_Latin_usv \g_@@_bfit_Latin_usv }
+\usv_set:nnn {bf} {latin}{ \bool_if:NTF \g_@@_bfuplatin_bool \g_@@_bfup_latin_usv \g_@@_bfit_latin_usv }
+\usv_set:nnn {bf} {Greek}{ \bool_if:NTF \g_@@_bfupGreek_bool \g_@@_bfup_Greek_usv \g_@@_bfit_Greek_usv }
+\usv_set:nnn {bf} {greek}{ \bool_if:NTF \g_@@_bfupgreek_bool \g_@@_bfup_greek_usv \g_@@_bfit_greek_usv }
+% \end{macrocode}
+% Greek variants:
+% \begin{macrocode}
+\usv_set:nnn {up}{varTheta} {"3F4}
+\usv_set:nnn {up}{Digamma} {"3DC}
+\usv_set:nnn {up}{epsilon}{"3F5}
+\usv_set:nnn {up}{vartheta} {"3D1}
+\usv_set:nnn {up}{varkappa} {"3F0}
+\usv_set:nnn {up}{phi} {"3D5}
+\usv_set:nnn {up}{varrho} {"3F1}
+\usv_set:nnn {up}{varpi} {"3D6}
+\usv_set:nnn {up}{digamma} {"3DD}
+% \end{macrocode}
+% Bold:
+% \begin{macrocode}
+\usv_set:nnn {bfup}{varTheta} {"1D6B9}
+\usv_set:nnn {bfup}{Digamma} {"1D7CA}
+\usv_set:nnn {bfup}{epsilon}{"1D6DC}
+\usv_set:nnn {bfup}{vartheta} {"1D6DD}
+\usv_set:nnn {bfup}{varkappa} {"1D6DE}
+\usv_set:nnn {bfup}{phi} {"1D6DF}
+\usv_set:nnn {bfup}{varrho} {"1D6E0}
+\usv_set:nnn {bfup}{varpi} {"1D6E1}
+\usv_set:nnn {bfup}{digamma} {"1D7CB}
+% \end{macrocode}
+% Italic Greek variants:
+% \begin{macrocode}
+\usv_set:nnn {it}{varTheta} {"1D6F3}
+\usv_set:nnn {it}{epsilon}{"1D716}
+\usv_set:nnn {it}{vartheta} {"1D717}
+\usv_set:nnn {it}{varkappa} {"1D718}
+\usv_set:nnn {it}{phi} {"1D719}
+\usv_set:nnn {it}{varrho} {"1D71A}
+\usv_set:nnn {it}{varpi} {"1D71B}
+% \end{macrocode}
+% Bold italic:
+% \begin{macrocode}
+\usv_set:nnn {bfit}{varTheta} {"1D72D}
+\usv_set:nnn {bfit}{epsilon}{"1D750}
+\usv_set:nnn {bfit}{vartheta} {"1D751}
+\usv_set:nnn {bfit}{varkappa} {"1D752}
+\usv_set:nnn {bfit}{phi} {"1D753}
+\usv_set:nnn {bfit}{varrho} {"1D754}
+\usv_set:nnn {bfit}{varpi} {"1D755}
+% \end{macrocode}
+% Bold sans:
+% \begin{macrocode}
+\usv_set:nnn {bfsfup}{varTheta} {"1D767}
+\usv_set:nnn {bfsfup}{epsilon}{"1D78A}
+\usv_set:nnn {bfsfup}{vartheta} {"1D78B}
+\usv_set:nnn {bfsfup}{varkappa} {"1D78C}
+\usv_set:nnn {bfsfup}{phi} {"1D78D}
+\usv_set:nnn {bfsfup}{varrho} {"1D78E}
+\usv_set:nnn {bfsfup}{varpi} {"1D78F}
+% \end{macrocode}
+% Bold sans italic:
+% \begin{macrocode}
+\usv_set:nnn {bfsfit}{varTheta} {"1D7A1}
+\usv_set:nnn {bfsfit}{epsilon}{"1D7C4}
+\usv_set:nnn {bfsfit}{vartheta} {"1D7C5}
+\usv_set:nnn {bfsfit}{varkappa} {"1D7C6}
+\usv_set:nnn {bfsfit}{phi} {"1D7C7}
+\usv_set:nnn {bfsfit}{varrho} {"1D7C8}
+\usv_set:nnn {bfsfit}{varpi} {"1D7C9}
+% \end{macrocode}
+% Nabla:
+% \begin{macrocode}
+\usv_set:nnn {up} {Nabla}{"02207}
+\usv_set:nnn {it} {Nabla}{"1D6FB}
+\usv_set:nnn {bfup} {Nabla}{"1D6C1}
+\usv_set:nnn {bfit} {Nabla}{"1D735}
+\usv_set:nnn {bfsfup}{Nabla}{"1D76F}
+\usv_set:nnn {bfsfit}{Nabla}{"1D7A9}
+% \end{macrocode}
+% Partial:
+% \begin{macrocode}
+\usv_set:nnn {up} {partial}{"02202}
+\usv_set:nnn {it} {partial}{"1D715}
+\usv_set:nnn {bfup} {partial}{"1D6DB}
+\usv_set:nnn {bfit} {partial}{"1D74F}
+\usv_set:nnn {bfsfup}{partial}{"1D789}
+\usv_set:nnn {bfsfit}{partial}{"1D7C3}
+% \end{macrocode}
+% \paragraph{Exceptions}
+% These are need for mapping with the exceptions in other alphabets:
+% (coming up)
+% \begin{macrocode}
+\usv_set:nnn {up}{B}{`\B}
+\usv_set:nnn {up}{C}{`\C}
+\usv_set:nnn {up}{D}{`\D}
+\usv_set:nnn {up}{E}{`\E}
+\usv_set:nnn {up}{F}{`\F}
+\usv_set:nnn {up}{H}{`\H}
+\usv_set:nnn {up}{I}{`\I}
+\usv_set:nnn {up}{L}{`\L}
+\usv_set:nnn {up}{M}{`\M}
+\usv_set:nnn {up}{N}{`\N}
+\usv_set:nnn {up}{P}{`\P}
+\usv_set:nnn {up}{Q}{`\Q}
+\usv_set:nnn {up}{R}{`\R}
+\usv_set:nnn {up}{Z}{`\Z}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\usv_set:nnn {it}{B}{"1D435}
+\usv_set:nnn {it}{C}{"1D436}
+\usv_set:nnn {it}{D}{"1D437}
+\usv_set:nnn {it}{E}{"1D438}
+\usv_set:nnn {it}{F}{"1D439}
+\usv_set:nnn {it}{H}{"1D43B}
+\usv_set:nnn {it}{I}{"1D43C}
+\usv_set:nnn {it}{L}{"1D43F}
+\usv_set:nnn {it}{M}{"1D440}
+\usv_set:nnn {it}{N}{"1D441}
+\usv_set:nnn {it}{P}{"1D443}
+\usv_set:nnn {it}{Q}{"1D444}
+\usv_set:nnn {it}{R}{"1D445}
+\usv_set:nnn {it}{Z}{"1D44D}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\usv_set:nnn {up}{d}{`\d}
+\usv_set:nnn {up}{e}{`\e}
+\usv_set:nnn {up}{g}{`\g}
+\usv_set:nnn {up}{h}{`\h}
+\usv_set:nnn {up}{i}{`\i}
+\usv_set:nnn {up}{j}{`\j}
+\usv_set:nnn {up}{o}{`\o}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\usv_set:nnn {it}{d}{"1D451}
+\usv_set:nnn {it}{e}{"1D452}
+\usv_set:nnn {it}{g}{"1D454}
+\usv_set:nnn {it}{h}{"0210E}
+\usv_set:nnn {it}{i}{"1D456}
+\usv_set:nnn {it}{j}{"1D457}
+\usv_set:nnn {it}{o}{"1D45C}
+% \end{macrocode}
+% Latin `h':
+% \begin{macrocode}
+\usv_set:nnn {bb} {h}{"1D559}
+\usv_set:nnn {tt} {h}{"1D691}
+\usv_set:nnn {scr} {h}{"1D4BD}
+\usv_set:nnn {frak} {h}{"1D525}
+\usv_set:nnn {bfup} {h}{"1D421}
+\usv_set:nnn {bfit} {h}{"1D489}
+\usv_set:nnn {sfup} {h}{"1D5C1}
+\usv_set:nnn {sfit} {h}{"1D629}
+\usv_set:nnn {bffrak}{h}{"1D58D}
+\usv_set:nnn {bfscr} {h}{"1D4F1}
+\usv_set:nnn {bfsfup}{h}{"1D5F5}
+\usv_set:nnn {bfsfit}{h}{"1D65D}
+% \end{macrocode}
+% Dotless `i' and `j:
+% \begin{macrocode}
+\usv_set:nnn {up}{dotlessi}{"00131}
+\usv_set:nnn {up}{dotlessj}{"00237}
+\usv_set:nnn {it}{dotlessi}{"1D6A4}
+\usv_set:nnn {it}{dotlessj}{"1D6A5}
+% \end{macrocode}
+% Blackboard:
+% \begin{macrocode}
+\usv_set:nnn {bb}{C}{"2102}
+\usv_set:nnn {bb}{H}{"210D}
+\usv_set:nnn {bb}{N}{"2115}
+\usv_set:nnn {bb}{P}{"2119}
+\usv_set:nnn {bb}{Q}{"211A}
+\usv_set:nnn {bb}{R}{"211D}
+\usv_set:nnn {bb}{Z}{"2124}
+\usv_set:nnn {up}{Pi} {"003A0}
+\usv_set:nnn {up}{pi} {"003C0}
+\usv_set:nnn {up}{Gamma} {"00393}
+\usv_set:nnn {up}{gamma} {"003B3}
+\usv_set:nnn {up}{summation}{"02211}
+\usv_set:nnn {it}{Pi} {"1D6F1}
+\usv_set:nnn {it}{pi} {"1D70B}
+\usv_set:nnn {it}{Gamma} {"1D6E4}
+\usv_set:nnn {it}{gamma} {"1D6FE}
+\usv_set:nnn {bb}{Pi} {"0213F}
+\usv_set:nnn {bb}{pi} {"0213C}
+\usv_set:nnn {bb}{Gamma} {"0213E}
+\usv_set:nnn {bb}{gamma} {"0213D}
+\usv_set:nnn {bb}{summation}{"02140}
+% \end{macrocode}
+% Italic blackboard:
+% \begin{macrocode}
+\usv_set:nnn {bbit}{D}{"2145}
+\usv_set:nnn {bbit}{d}{"2146}
+\usv_set:nnn {bbit}{e}{"2147}
+\usv_set:nnn {bbit}{i}{"2148}
+\usv_set:nnn {bbit}{j}{"2149}
+% \end{macrocode}
+% Script exceptions:
+% \begin{macrocode}
+\usv_set:nnn {scr}{B}{"212C}
+\usv_set:nnn {scr}{E}{"2130}
+\usv_set:nnn {scr}{F}{"2131}
+\usv_set:nnn {scr}{H}{"210B}
+\usv_set:nnn {scr}{I}{"2110}
+\usv_set:nnn {scr}{L}{"2112}
+\usv_set:nnn {scr}{M}{"2133}
+\usv_set:nnn {scr}{R}{"211B}
+\usv_set:nnn {scr}{e}{"212F}
+\usv_set:nnn {scr}{g}{"210A}
+\usv_set:nnn {scr}{o}{"2134}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\usv_set:nnn {cal}{B}{"212C}
+\usv_set:nnn {cal}{E}{"2130}
+\usv_set:nnn {cal}{F}{"2131}
+\usv_set:nnn {cal}{H}{"210B}
+\usv_set:nnn {cal}{I}{"2110}
+\usv_set:nnn {cal}{L}{"2112}
+\usv_set:nnn {cal}{M}{"2133}
+\usv_set:nnn {cal}{R}{"211B}
+% \end{macrocode}
+% Fractur exceptions:
+% \begin{macrocode}
+\usv_set:nnn {frak}{C}{"212D}
+\usv_set:nnn {frak}{H}{"210C}
+\usv_set:nnn {frak}{I}{"2111}
+\usv_set:nnn {frak}{R}{"211C}
+\usv_set:nnn {frak}{Z}{"2128}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+%
+% \subsection{STIX fonts}
+%
+% Version 1.0.0 of the STIX fonts contains a number of
+% alphabets in the private use area of Unicode; i.e.,
+% it contains many math glyphs that have not (yet or if ever)
+% been accepted into the Unicode standard.
+%
+% But we still want to be able to use them if possible.
+%
+% \begin{macrocode}
+%<*stix>
+% \end{macrocode}
+%
+% \paragraph{Upright}
+% \begin{macrocode}
+\usv_set:nnn {stixsfup}{partial}{"E17C}
+\usv_set:nnn {stixsfup}{Greek}{"E17D}
+\usv_set:nnn {stixsfup}{greek}{"E196}
+\usv_set:nnn {stixsfup}{varTheta}{"E18E}
+\usv_set:nnn {stixsfup}{epsilon}{"E1AF}
+\usv_set:nnn {stixsfup}{vartheta}{"E1B0}
+\usv_set:nnn {stixsfup}{varkappa}{0000} % ???
+\usv_set:nnn {stixsfup}{phi}{"E1B1}
+\usv_set:nnn {stixsfup}{varrho}{"E1B2}
+\usv_set:nnn {stixsfup}{varpi}{"E1B3}
+\usv_set:nnn {stixupslash}{Greek}{"E2FC}
+% \end{macrocode}
+%
+% \paragraph{Italic}
+% \begin{macrocode}
+\usv_set:nnn {stixbbit}{A}{"E154}
+\usv_set:nnn {stixbbit}{B}{"E155}
+\usv_set:nnn {stixbbit}{E}{"E156}
+\usv_set:nnn {stixbbit}{F}{"E157}
+\usv_set:nnn {stixbbit}{G}{"E158}
+\usv_set:nnn {stixbbit}{I}{"E159}
+\usv_set:nnn {stixbbit}{J}{"E15A}
+\usv_set:nnn {stixbbit}{K}{"E15B}
+\usv_set:nnn {stixbbit}{L}{"E15C}
+\usv_set:nnn {stixbbit}{M}{"E15D}
+\usv_set:nnn {stixbbit}{O}{"E15E}
+\usv_set:nnn {stixbbit}{S}{"E15F}
+\usv_set:nnn {stixbbit}{T}{"E160}
+\usv_set:nnn {stixbbit}{U}{"E161}
+\usv_set:nnn {stixbbit}{V}{"E162}
+\usv_set:nnn {stixbbit}{W}{"E163}
+\usv_set:nnn {stixbbit}{X}{"E164}
+\usv_set:nnn {stixbbit}{Y}{"E165}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\usv_set:nnn {stixbbit}{a}{"E166}
+\usv_set:nnn {stixbbit}{b}{"E167}
+\usv_set:nnn {stixbbit}{c}{"E168}
+\usv_set:nnn {stixbbit}{f}{"E169}
+\usv_set:nnn {stixbbit}{g}{"E16A}
+\usv_set:nnn {stixbbit}{h}{"E16B}
+\usv_set:nnn {stixbbit}{k}{"E16C}
+\usv_set:nnn {stixbbit}{l}{"E16D}
+\usv_set:nnn {stixbbit}{m}{"E16E}
+\usv_set:nnn {stixbbit}{n}{"E16F}
+\usv_set:nnn {stixbbit}{o}{"E170}
+\usv_set:nnn {stixbbit}{p}{"E171}
+\usv_set:nnn {stixbbit}{q}{"E172}
+\usv_set:nnn {stixbbit}{r}{"E173}
+\usv_set:nnn {stixbbit}{s}{"E174}
+\usv_set:nnn {stixbbit}{t}{"E175}
+\usv_set:nnn {stixbbit}{u}{"E176}
+\usv_set:nnn {stixbbit}{v}{"E177}
+\usv_set:nnn {stixbbit}{w}{"E178}
+\usv_set:nnn {stixbbit}{x}{"E179}
+\usv_set:nnn {stixbbit}{y}{"E17A}
+\usv_set:nnn {stixbbit}{z}{"E17B}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\usv_set:nnn {stixsfit}{Numerals}{"E1B4}
+\usv_set:nnn {stixsfit}{partial}{"E1BE}
+\usv_set:nnn {stixsfit}{Greek}{"E1BF}
+\usv_set:nnn {stixsfit}{greek}{"E1D8}
+\usv_set:nnn {stixsfit}{varTheta}{"E1D0}
+\usv_set:nnn {stixsfit}{epsilon}{"E1F1}
+\usv_set:nnn {stixsfit}{vartheta}{"E1F2}
+\usv_set:nnn {stixsfit}{varkappa}{0000} % ???
+\usv_set:nnn {stixsfit}{phi}{"E1F3}
+\usv_set:nnn {stixsfit}{varrho}{"E1F4}
+\usv_set:nnn {stixsfit}{varpi}{"E1F5}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\usv_set:nnn {stixcal}{Latin}{"E22D}
+\usv_set:nnn {stixcal}{num}{"E262}
+\usv_set:nnn {scr}{num}{48}
+\usv_set:nnn {it}{num}{48}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\usv_set:nnn {stixsfitslash}{Latin}{"E294}
+\usv_set:nnn {stixsfitslash}{latin}{"E2C8}
+\usv_set:nnn {stixsfitslash}{greek}{"E32C}
+\usv_set:nnn {stixsfitslash}{epsilon}{"E37A}
+\usv_set:nnn {stixsfitslash}{vartheta}{"E35E}
+\usv_set:nnn {stixsfitslash}{varkappa}{"E374}
+\usv_set:nnn {stixsfitslash}{phi}{"E360}
+\usv_set:nnn {stixsfitslash}{varrho}{"E376}
+\usv_set:nnn {stixsfitslash}{varpi}{"E362}
+\usv_set:nnn {stixsfitslash}{digamma}{"E36A}
+% \end{macrocode}
+%
+% \paragraph{Bold}
+%
+% \begin{macrocode}
+\usv_set:nnn {stixbfupslash}{Greek}{"E2FD}
+\usv_set:nnn {stixbfupslash}{Digamma}{"E369}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\usv_set:nnn {stixbfbb}{A}{"E38A}
+\usv_set:nnn {stixbfbb}{B}{"E38B}
+\usv_set:nnn {stixbfbb}{E}{"E38D}
+\usv_set:nnn {stixbfbb}{F}{"E38E}
+\usv_set:nnn {stixbfbb}{G}{"E38F}
+\usv_set:nnn {stixbfbb}{I}{"E390}
+\usv_set:nnn {stixbfbb}{J}{"E391}
+\usv_set:nnn {stixbfbb}{K}{"E392}
+\usv_set:nnn {stixbfbb}{L}{"E393}
+\usv_set:nnn {stixbfbb}{M}{"E394}
+\usv_set:nnn {stixbfbb}{O}{"E395}
+\usv_set:nnn {stixbfbb}{S}{"E396}
+\usv_set:nnn {stixbfbb}{T}{"E397}
+\usv_set:nnn {stixbfbb}{U}{"E398}
+\usv_set:nnn {stixbfbb}{V}{"E399}
+\usv_set:nnn {stixbfbb}{W}{"E39A}
+\usv_set:nnn {stixbfbb}{X}{"E39B}
+\usv_set:nnn {stixbfbb}{Y}{"E39C}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\usv_set:nnn {stixbfbb}{a}{"E39D}
+\usv_set:nnn {stixbfbb}{b}{"E39E}
+\usv_set:nnn {stixbfbb}{c}{"E39F}
+\usv_set:nnn {stixbfbb}{f}{"E3A2}
+\usv_set:nnn {stixbfbb}{g}{"E3A3}
+\usv_set:nnn {stixbfbb}{h}{"E3A4}
+\usv_set:nnn {stixbfbb}{k}{"E3A7}
+\usv_set:nnn {stixbfbb}{l}{"E3A8}
+\usv_set:nnn {stixbfbb}{m}{"E3A9}
+\usv_set:nnn {stixbfbb}{n}{"E3AA}
+\usv_set:nnn {stixbfbb}{o}{"E3AB}
+\usv_set:nnn {stixbfbb}{p}{"E3AC}
+\usv_set:nnn {stixbfbb}{q}{"E3AD}
+\usv_set:nnn {stixbfbb}{r}{"E3AE}
+\usv_set:nnn {stixbfbb}{s}{"E3AF}
+\usv_set:nnn {stixbfbb}{t}{"E3B0}
+\usv_set:nnn {stixbfbb}{u}{"E3B1}
+\usv_set:nnn {stixbfbb}{v}{"E3B2}
+\usv_set:nnn {stixbfbb}{w}{"E3B3}
+\usv_set:nnn {stixbfbb}{x}{"E3B4}
+\usv_set:nnn {stixbfbb}{y}{"E3B5}
+\usv_set:nnn {stixbfbb}{z}{"E3B6}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\usv_set:nnn {stixbfsfup}{Numerals}{"E3B7}
+% \end{macrocode}
+%
+% \paragraph{Bold Italic}
+% \begin{macrocode}
+\usv_set:nnn {stixbfsfit}{Numerals}{"E1F6}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\usv_set:nnn {stixbfbbit}{A}{"E200}
+\usv_set:nnn {stixbfbbit}{B}{"E201}
+\usv_set:nnn {stixbfbbit}{E}{"E203}
+\usv_set:nnn {stixbfbbit}{F}{"E204}
+\usv_set:nnn {stixbfbbit}{G}{"E205}
+\usv_set:nnn {stixbfbbit}{I}{"E206}
+\usv_set:nnn {stixbfbbit}{J}{"E207}
+\usv_set:nnn {stixbfbbit}{K}{"E208}
+\usv_set:nnn {stixbfbbit}{L}{"E209}
+\usv_set:nnn {stixbfbbit}{M}{"E20A}
+\usv_set:nnn {stixbfbbit}{O}{"E20B}
+\usv_set:nnn {stixbfbbit}{S}{"E20C}
+\usv_set:nnn {stixbfbbit}{T}{"E20D}
+\usv_set:nnn {stixbfbbit}{U}{"E20E}
+\usv_set:nnn {stixbfbbit}{V}{"E20F}
+\usv_set:nnn {stixbfbbit}{W}{"E210}
+\usv_set:nnn {stixbfbbit}{X}{"E211}
+\usv_set:nnn {stixbfbbit}{Y}{"E212}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\usv_set:nnn {stixbfbbit}{a}{"E213}
+\usv_set:nnn {stixbfbbit}{b}{"E214}
+\usv_set:nnn {stixbfbbit}{c}{"E215}
+\usv_set:nnn {stixbfbbit}{e}{"E217}
+\usv_set:nnn {stixbfbbit}{f}{"E218}
+\usv_set:nnn {stixbfbbit}{g}{"E219}
+\usv_set:nnn {stixbfbbit}{h}{"E21A}
+\usv_set:nnn {stixbfbbit}{k}{"E21D}
+\usv_set:nnn {stixbfbbit}{l}{"E21E}
+\usv_set:nnn {stixbfbbit}{m}{"E21F}
+\usv_set:nnn {stixbfbbit}{n}{"E220}
+\usv_set:nnn {stixbfbbit}{o}{"E221}
+\usv_set:nnn {stixbfbbit}{p}{"E222}
+\usv_set:nnn {stixbfbbit}{q}{"E223}
+\usv_set:nnn {stixbfbbit}{r}{"E224}
+\usv_set:nnn {stixbfbbit}{s}{"E225}
+\usv_set:nnn {stixbfbbit}{t}{"E226}
+\usv_set:nnn {stixbfbbit}{u}{"E227}
+\usv_set:nnn {stixbfbbit}{v}{"E228}
+\usv_set:nnn {stixbfbbit}{w}{"E229}
+\usv_set:nnn {stixbfbbit}{x}{"E22A}
+\usv_set:nnn {stixbfbbit}{y}{"E22B}
+\usv_set:nnn {stixbfbbit}{z}{"E22C}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\usv_set:nnn {stixbfcal}{Latin}{"E247}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\usv_set:nnn {stixbfitslash}{Latin}{"E295}
+\usv_set:nnn {stixbfitslash}{latin}{"E2C9}
+\usv_set:nnn {stixbfitslash}{greek}{"E32D}
+\usv_set:nnn {stixsfitslash}{epsilon}{"E37B}
+\usv_set:nnn {stixsfitslash}{vartheta}{"E35F}
+\usv_set:nnn {stixsfitslash}{varkappa}{"E375}
+\usv_set:nnn {stixsfitslash}{phi}{"E361}
+\usv_set:nnn {stixsfitslash}{varrho}{"E377}
+\usv_set:nnn {stixsfitslash}{varpi}{"E363}
+\usv_set:nnn {stixsfitslash}{digamma}{"E36B}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</stix>
+% \end{macrocode}
+
+\endinput
+
+% /©
+%
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
+%
+% ©/
Property changes on: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-usv.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-variables.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-code-variables.dtx (rev 0)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-code-variables.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -0,0 +1,185 @@
+%%^^A%% um-code-variables.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+% \section{Variable initialisation}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+%
+% \paragraph{Conditionals}
+%
+% True if using a proper OpenType font with unicode maths
+% \begin{macrocode}
+\bool_new:N \l_@@_ot_math_bool
+% \end{macrocode}
+%
+% \begin{macrocode}
+\bool_new:N \l_@@_init_bool
+\bool_new:N \l_@@_implicit_alph_bool
+\bool_new:N \g_@@_mainfont_already_set_bool
+% \end{macrocode}
+% For \opt{math-style}:
+% \begin{macrocode}
+\bool_new:N \g_@@_literal_bool
+\bool_new:N \g_@@_upLatin_bool
+\bool_new:N \g_@@_uplatin_bool
+\bool_new:N \g_@@_upGreek_bool
+\bool_new:N \g_@@_upgreek_bool
+% \end{macrocode}
+% For \opt{bold-style}:
+% \begin{macrocode}
+\bool_new:N \g_@@_bfliteral_bool
+\bool_new:N \g_@@_bfupLatin_bool
+\bool_new:N \g_@@_bfuplatin_bool
+\bool_new:N \g_@@_bfupGreek_bool
+\bool_new:N \g_@@_bfupgreek_bool
+% \end{macrocode}
+% For \opt{sans-style}:
+% \begin{macrocode}
+\bool_new:N \g_@@_upsans_bool
+\bool_new:N \g_@@_sfliteral_bool
+% \end{macrocode}
+% For assorted package options:
+% \begin{macrocode}
+\bool_new:N \g_@@_upNabla_bool
+\bool_new:N \g_@@_uppartial_bool
+\bool_new:N \g_@@_literal_Nabla_bool
+\bool_new:N \g_@@_literal_partial_bool
+\bool_new:N \l_@@_smallfrac_bool
+\bool_new:N \g_@@_literal_colon_bool
+\bool_new:N \g_@@_mathrm_text_bool
+\bool_new:N \g_@@_mathit_text_bool
+\bool_new:N \g_@@_mathbf_text_bool
+\bool_new:N \g_@@_mathsf_text_bool
+\bool_new:N \g_@@_mathtt_text_bool
+% \end{macrocode}
+%
+% \paragraph{Variables}
+% \begin{macrocode}
+\int_new:N \g_@@_fam_int
+% \end{macrocode}
+%
+% For displaying in warning messages, etc.:
+% \begin{macrocode}
+\tl_const:Nn \c_@@_math_alphabet_name_latin_tl {Latin,~lowercase}
+\tl_const:Nn \c_@@_math_alphabet_name_Latin_tl {Latin,~uppercase}
+\tl_const:Nn \c_@@_math_alphabet_name_greek_tl {Greek,~lowercase}
+\tl_const:Nn \c_@@_math_alphabet_name_Greek_tl {Greek,~uppercase}
+\tl_const:Nn \c_@@_math_alphabet_name_num_tl {Numerals}
+\tl_const:Nn \c_@@_math_alphabet_name_misc_tl {Misc.}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\tl_new:N \l_@@_mathstyle_tl
+\tl_new:N \l_@@_radicals_tl
+\tl_new:N \l_@@_nolimits_tl
+% \end{macrocode}
+%
+% Used to store the font switch for the \cs{operator at font}.
+% \begin{macrocode}
+\tl_new:N \g_@@_operator_mathfont_tl
+% \end{macrocode}
+%
+% \begin{macrocode}
+\seq_new:N \l_@@_missing_alph_seq
+\seq_new:N \l_@@_mathalph_seq
+\seq_new:N \l_@@_char_range_seq
+\seq_new:N \l_@@_mclass_range_seq
+\seq_new:N \l_@@_cmd_range_seq
+% \end{macrocode}
+%
+% \begin{macro}{\g_@@_alphabets_seq}
+% Each of math `style' (bfup, sfit, etc.) usually contains one or more `alphabets', which are currently |latin|, |Latin|, |greek|, |Greek|, |num|, and |misc|, although there's an implicit potential for more.
+% |misc| is not included in the official list to avoid checking code.
+% \begin{macrocode}
+\clist_new:N \g_@@_alphabets_seq
+\clist_set:Nn \g_@@_alphabets_seq { latin, Latin, greek, Greek, num }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\clist_new:N \g_@@_named_ranges_clist
+\clist_new:N \g_@@_char_nrange_clist
+\clist_new:N \g_@@_unknown_keys_clist
+\clist_new:N \g_@@_alphabet_clist
+% \end{macrocode}
+%
+% \begin{macro}{\g_@@_mathclasses_seq}
+% Every math class.
+% \begin{macrocode}
+\seq_new:N \g_@@_mathclasses_seq
+\seq_set_from_clist:Nn \g_@@_mathclasses_seq
+ {
+ \mathord,\mathalpha,\mathbin,\mathrel,\mathpunct,
+ \mathop,
+ \mathopen,\mathclose,
+ \mathfence,\mathover,\mathunder,
+ \mathaccent,\mathbotaccent,\mathaccentwide,\mathbotaccentwide
+ }
+% \end{macrocode}
+% \end{macro}
+%
+
+% \begin{macro}{\g_@@_default_mathalph_seq}
+% This sequence stores the alphabets in each math style.
+% \begin{macrocode}
+\seq_new:N \g_@@_default_mathalph_seq
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\g_@@_mathstyles_seq}
+% This is every `named range' and every `math style' known to \pkg{unicode-math}.
+% A named range is such as "bfit" and "sfit", which are also math styles (with \cs{symbfit} and \cs{symsfit}).
+% `Mathstyles' are a superset of named ranges and also include commands such as \cs{symbf} and \cs{symsf}.
+%
+% N.B. for parsing purposes `named ranges' are defined as strings!
+% \begin{macrocode}
+\seq_new:N \g_@@_named_ranges_seq
+\seq_new:N \g_@@_mathstyles_seq
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\muskip_new:N \g_@@_primekern_muskip
+\muskip_gset:Nn \g_@@_primekern_muskip { -\thinmuskip/2 }% arbitrary
+\int_new:N \l_@@_primecount_int
+\prop_new:N \g_@@_supers_prop
+\prop_new:N \g_@@_subs_prop
+\tl_new:N \l_not_token_name_tl
+% \end{macrocode}
+%
+% \begin{macrocode}
+\tl_new:N \g_@@_slash_delimiter_usv
+\tl_new:N \g_@@_mathtable_tl
+\tl_new:N \g_@@_fontname_tl
+\tl_new:N \g_@@_mversion_tl
+\tl_new:N \g_@@_symfont_tl
+\tl_new:N \g_@@_font_keyval_tl
+\tl_new:N \g_@@_family_tl
+\tl_new:N \g_@@_style_tl
+\tl_new:N \g_@@_remap_style_tl
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+
+\endinput
+
+% /©
+%
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
+%
+% ©/
Property changes on: trunk/Master/texmf-dist/source/latex/unicode-math/um-code-variables.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/unicode-math/um-doc-legacyfontdimen.tex
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-doc-legacyfontdimen.tex (rev 0)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-doc-legacyfontdimen.tex 2017-11-18 21:45:46 UTC (rev 45845)
@@ -0,0 +1,76 @@
+%%^^A%% um-doc-legacyfontdimen.tex -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+\section{Legacy \TeX\ font dimensions}
+
+\centerline{%
+\begin{tabular}[t]{@{}lp{4cm}@{}}
+\toprule
+\multicolumn{2}{@{}c@{}}{Text fonts} \\
+\midrule
+$\phi_1$ & slant per pt \\
+$\phi_2$ & interword space \\
+$\phi_3$ & interword stretch \\
+$\phi_4$ & interword shrink \\
+$\phi_5$ & x-height \\
+$\phi_6$ & quad width \\
+$\phi_7$ & extra space \\
+$\phi_8$ & cap height (\XeTeX\ only) \\
+\bottomrule
+\end{tabular}
+\quad
+\begin{tabular}[t]{@{}lp{4cm}@{}}
+\toprule
+\multicolumn{2}{@{}c@{}}{Maths font, \cs{fam}2} \\
+\midrule
+$\sigma_5$ & x height \\
+$\sigma_6$ & quad \\
+$\sigma_8$ & num1 \\
+$\sigma_9$ & num2 \\
+$\sigma_{10}$ & num3 \\
+$\sigma_{11}$ & denom1 \\
+$\sigma_{12}$ & denom2 \\
+$\sigma_{13}$ & sup1 \\
+$\sigma_{14}$ & sup2 \\
+$\sigma_{15}$ & sup3 \\
+$\sigma_{16}$ & sub1 \\
+$\sigma_{17}$ & sub2 \\
+$\sigma_{18}$ & sup drop \\
+$\sigma_{19}$ & sub drop \\
+$\sigma_{20}$ & delim1 \\
+$\sigma_{21}$ & delim2 \\
+$\sigma_{22}$ & axis height \\
+\bottomrule
+\end{tabular}
+\quad
+\begin{tabular}[t]{@{}lp{4cm}@{}}
+\toprule
+\multicolumn{2}{@{}c@{}}{Maths font, \cs{fam}3} \\
+\midrule
+$\xi_8$ & default rule thickness \\
+$\xi_9$ & big op spacing1 \\
+$\xi_{10}$ & big op spacing2 \\
+$\xi_{11}$ & big op spacing3 \\
+$\xi_{12}$ & big op spacing4 \\
+$\xi_{13}$ & big op spacing5 \\
+\bottomrule
+\end{tabular}
+}
+
+\endinput
+
+% /©
+%
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
+%
+% ©/
Property changes on: trunk/Master/texmf-dist/source/latex/unicode-math/um-doc-legacyfontdimen.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/unicode-math/um-doc-mathfontdimen.tex
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-doc-mathfontdimen.tex (rev 0)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-doc-mathfontdimen.tex 2017-11-18 21:45:46 UTC (rev 45845)
@@ -0,0 +1,151 @@
+%%^^A%% um-doc-mathfontdimen.tex -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+\section{\Hologo{XeTeX} math font dimensions}
+
+These are the extended \cmd\fontdimen s available for suitable fonts
+in \XeTeX. Note that Lua\TeX\ takes an alternative route, and this package
+will eventually provide a wrapper interface to the two (I hope).
+
+\newcounter{mfdimen}
+\setcounter{mfdimen}{9}
+\newcommand\mathfontdimen[2]{^^A
+ \stepcounter{mfdimen}^^A
+ \themfdimen & {\scshape\small #1} & #2\vspace{0.5ex} \tabularnewline}
+
+\begin{longtable}{
+ @{}c>{\raggedright\parfillskip=0pt}p{4cm}>{\raggedright}p{7cm}@{}}
+\toprule \cmd\fontdimen & Dimension name & Description\tabularnewline\midrule \endhead
+\bottomrule\endfoot
+\mathfontdimen{Script\-Percent\-Scale\-Down}
+{Percentage of scaling down for script level 1. Suggested value: 80\%.}
+\mathfontdimen{Script\-Script\-Percent\-Scale\-Down}
+{Percentage of scaling down for script level 2 (Script\-Script). Suggested value: 60\%.}
+\mathfontdimen{Delimited\-Sub\-Formula\-Min\-Height}
+{Minimum height required for a delimited expression to be treated as a subformula. Suggested value: normal line height\,×\,1.5.}
+\mathfontdimen{Display\-Operator\-Min\-Height}
+{Minimum height of n-ary operators (such as integral and summation) for formulas in display mode.}
+\mathfontdimen{Math\-Leading}
+{White space to be left between math formulas to ensure proper line spacing. For example, for applications that treat line gap as a part of line ascender, formulas with ink going above (os2.sTypoAscender + os2.sTypoLineGap – MathLeading) or with ink going below os2.sTypoDescender will result in increasing line height.}
+\mathfontdimen{Axis\-Height}
+{Axis height of the font. }
+\mathfontdimen{Accent\-Base\-Height}
+{Maximum (ink) height of accent base that does not require raising the accents. Suggested: x-height of the font (os2.sxHeight) plus any possible overshots. }
+\mathfontdimen{Flattened\-Accent\-Base\-Height}
+{Maximum (ink) height of accent base that does not require flattening the accents. Suggested: cap height of the font (os2.sCapHeight).}
+\mathfontdimen{Subscript\-Shift\-Down}
+{The standard shift down applied to subscript elements. Positive for moving in the downward direction. Suggested: os2.ySubscriptYOffset.}
+\mathfontdimen{Subscript\-Top\-Max}
+{Maximum allowed height of the (ink) top of subscripts that does not require moving subscripts further down. Suggested: /5 x-height.}
+\mathfontdimen{Subscript\-Baseline\-Drop\-Min}
+{Minimum allowed drop of the baseline of subscripts relative to the (ink) bottom of the base. Checked for bases that are treated as a box or extended shape. Positive for subscript baseline dropped below the base bottom.}
+\mathfontdimen{Superscript\-Shift\-Up}
+{Standard shift up applied to superscript elements. Suggested: os2.ySuperscriptYOffset.}
+\mathfontdimen{Superscript\-Shift\-Up\-Cramped}
+{Standard shift of superscripts relative to the base, in cramped style.}
+\mathfontdimen{Superscript\-Bottom\-Min}
+{Minimum allowed height of the (ink) bottom of superscripts that does not require moving subscripts further up. Suggested: ¼ x-height.}
+\mathfontdimen{Superscript\-Baseline\-Drop\-Max}
+{Maximum allowed drop of the baseline of superscripts relative to the (ink) top of the base. Checked for bases that are treated as a box or extended shape. Positive for superscript baseline below the base top.}
+\mathfontdimen{Sub\-Superscript\-Gap\-Min}
+{Minimum gap between the superscript and subscript ink. Suggested: 4×default rule thickness.}
+\mathfontdimen{Superscript\-Bottom\-Max\-With\-Subscript}
+{The maximum level to which the (ink) bottom of superscript can be pushed to increase the gap between superscript and subscript, before subscript starts being moved down.
+Suggested: /5 x-height.}
+\mathfontdimen{Space\-After\-Script}
+{Extra white space to be added after each subscript and superscript. Suggested: 0.5pt for a 12 pt font.}
+\mathfontdimen{Upper\-Limit\-Gap\-Min}
+{Minimum gap between the (ink) bottom of the upper limit, and the (ink) top of the base operator. }
+\mathfontdimen{Upper\-Limit\-Baseline\-Rise\-Min}
+{Minimum distance between baseline of upper limit and (ink) top of the base operator.}
+\mathfontdimen{Lower\-Limit\-Gap\-Min}
+{Minimum gap between (ink) top of the lower limit, and (ink) bottom of the base operator.}
+\mathfontdimen{Lower\-Limit\-Baseline\-Drop\-Min}
+{Minimum distance between baseline of the lower limit and (ink) bottom of the base operator.}
+\mathfontdimen{Stack\-Top\-Shift\-Up}
+{Standard shift up applied to the top element of a stack.}
+\mathfontdimen{Stack\-Top\-Display\-Style\-Shift\-Up}
+{Standard shift up applied to the top element of a stack in display style.}
+\mathfontdimen{Stack\-Bottom\-Shift\-Down}
+{Standard shift down applied to the bottom element of a stack. Positive for moving in the downward direction.}
+\mathfontdimen{Stack\-Bottom\-Display\-Style\-Shift\-Down}
+{Standard shift down applied to the bottom element of a stack in display style. Positive for moving in the downward direction.}
+\mathfontdimen{Stack\-Gap\-Min}
+{Minimum gap between (ink) bottom of the top element of a stack, and the (ink) top of the bottom element. Suggested: 3×default rule thickness.}
+\mathfontdimen{Stack\-Display\-Style\-Gap\-Min}
+{Minimum gap between (ink) bottom of the top element of a stack, and the (ink) top of the bottom element in display style. Suggested: 7×default rule thickness.}
+\mathfontdimen{Stretch\-Stack\-Top\-Shift\-Up}
+{Standard shift up applied to the top element of the stretch stack.}
+\mathfontdimen{Stretch\-Stack\-Bottom\-Shift\-Down}
+{Standard shift down applied to the bottom element of the stretch stack. Positive for moving in the downward direction.}
+\mathfontdimen{Stretch\-Stack\-Gap\-Above\-Min}
+{Minimum gap between the ink of the stretched element, and the (ink) bottom of the element above. Suggested: Upper\-Limit\-Gap\-Min}
+\mathfontdimen{Stretch\-Stack\-Gap\-Below\-Min}
+{Minimum gap between the ink of the stretched element, and the (ink) top of the element below. Suggested: Lower\-Limit\-Gap\-Min.}
+\mathfontdimen{Fraction\-Numerator\-Shift\-Up}
+{Standard shift up applied to the numerator. }
+\mathfontdimen{Fraction\-Numerator\-Display\-Style\-Shift\-Up}
+{Standard shift up applied to the numerator in display style. Suggested: Stack\-Top\-Display\-Style\-Shift\-Up.}
+\mathfontdimen{Fraction\-Denominator\-Shift\-Down}
+{Standard shift down applied to the denominator. Positive for moving in the downward direction.}
+\mathfontdimen{Fraction\-Denominator\-Display\-Style\-Shift\-Down}
+{Standard shift down applied to the denominator in display style. Positive for moving in the downward direction. Suggested: Stack\-Bottom\-Display\-Style\-Shift\-Down.}
+\mathfontdimen{Fraction\-Numerator\-Gap\-Min}
+{Minimum tolerated gap between the (ink) bottom of the numerator and the ink of the fraction bar. Suggested: default rule thickness}
+\mathfontdimen{Fraction\-Num\-Display\-Style\-Gap\-Min}
+{Minimum tolerated gap between the (ink) bottom of the numerator and the ink of the fraction bar in display style. Suggested: 3×default rule thickness.}
+\mathfontdimen{Fraction\-Rule\-Thickness}
+{Thickness of the fraction bar. Suggested: default rule thickness.}
+\mathfontdimen{Fraction\-Denominator\-Gap\-Min}
+{Minimum tolerated gap between the (ink) top of the denominator and the ink of the fraction bar. Suggested: default rule thickness}
+\mathfontdimen{Fraction\-Denom\-Display\-Style\-Gap\-Min}
+{Minimum tolerated gap between the (ink) top of the denominator and the ink of the fraction bar in display style. Suggested: 3×default rule thickness.}
+\mathfontdimen{Skewed\-Fraction\-Horizontal\-Gap}
+{Horizontal distance between the top and bottom elements of a skewed fraction.}
+\mathfontdimen{Skewed\-Fraction\-Vertical\-Gap}
+{Vertical distance between the ink of the top and bottom elements of a skewed fraction.}
+\mathfontdimen{Overbar\-Vertical\-Gap}
+{Distance between the overbar and the (ink) top of he base. Suggested: 3×default rule thickness.}
+\mathfontdimen{Overbar\-Rule\-Thickness}
+{Thickness of overbar. Suggested: default rule thickness.}
+\mathfontdimen{Overbar\-Extra\-Ascender}
+{Extra white space reserved above the overbar. Suggested: default rule thickness.}
+\mathfontdimen{Underbar\-Vertical\-Gap}
+{Distance between underbar and (ink) bottom of the base. Suggested: 3×default rule thickness.}
+\mathfontdimen{Underbar\-Rule\-Thickness}
+{Thickness of underbar. Suggested: default rule thickness.}
+\mathfontdimen{Underbar\-Extra\-Descender}
+{Extra white space reserved below the underbar. Always positive. Suggested: default rule thickness.}
+\mathfontdimen{Radical\-Vertical\-Gap}
+{Space between the (ink) top of the expression and the bar over it. Suggested: 1¼ default rule thickness.}
+\mathfontdimen{Radical\-Display\-Style\-Vertical\-Gap}
+{Space between the (ink) top of the expression and the bar over it. Suggested: default rule thickness + ¼ x-height. }
+\mathfontdimen{Radical\-Rule\-Thickness}
+{Thickness of the radical rule. This is the thickness of the rule in designed or constructed radical signs. Suggested: default rule thickness.}
+\mathfontdimen{Radical\-Extra\-Ascender}
+{Extra white space reserved above the radical. Suggested: Radical\-Rule\-Thickness.}
+\mathfontdimen{Radical\-Kern\-Before\-Degree}
+{Extra horizontal kern before the degree of a radical, if such is present. Suggested: 5/18 of em.}
+\mathfontdimen{Radical\-Kern\-After\-Degree}
+{Negative kern after the degree of a radical, if such is present. Suggested: −10/18 of em.}
+\mathfontdimen{Radical\-Degree\-Bottom\-Raise\-Percent}
+{Height of the bottom of the radical degree, if such is present, in proportion to the ascender of the radical sign. Suggested: 60\%.}
+\end{longtable}
+
+\endinput
+
+% /©
+%
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
+%
+% ©/
Property changes on: trunk/Master/texmf-dist/source/latex/unicode-math/um-doc-mathfontdimen.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/unicode-math/um-doc-nfsssummary.tex
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-doc-nfsssummary.tex (rev 0)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-doc-nfsssummary.tex 2017-11-18 21:45:46 UTC (rev 45845)
@@ -0,0 +1,84 @@
+%%^^A%% um-doc-nfsssummary.tex -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+\section{Documenting maths support in the NFSS}
+
+In the following, \meta{NFSS decl.} stands for something like |{T1}{lmr}{m}{n}|.
+
+\begin{description}
+\item[Maths symbol fonts] Fonts for symbols: $\propto$, $\leq$, $\rightarrow$
+
+\cmd\DeclareSymbolFont\marg{name}\meta{NFSS decl.}\\
+Declares a named maths font such as |operators| from which symbols are defined with \cmd\DeclareMathSymbol.
+
+\item[Maths alphabet fonts] Fonts for {\font\1=cmmi10 at 10pt\1 ABC}\,–\,{\font\1=cmmi10 at 10pt\1 xyz}, {\font\1=eufm10 at 10pt\1 ABC}\,–\,{\font\1=cmsy10 at 10pt\1 XYZ}, etc.
+
+\cmd\DeclareMathAlphabet\marg{cmd}\meta{NFSS decl.}
+
+For commands such as \cmd\mathbf, accessed
+through maths mode that are unaffected by the current text font, and which are used for
+alphabetic symbols in the \ascii\ range.
+
+\cmd\DeclareSymbolFontAlphabet\marg{cmd}\marg{name}
+
+Alternative (and optimisation) for \cmd\DeclareMathAlphabet\ if a single font is being used
+for both alphabetic characters (as above) and symbols.
+
+\item[Maths `versions'] Different maths weights can be defined with the following, switched
+in text with the \cmd\mathversion\marg{maths version} command.
+
+\cmd\SetSymbolFont\marg{name}\marg{maths version}\meta{NFSS decl.}\\
+\cmd\SetMathAlphabet\marg{cmd}\marg{maths version}\meta{NFSS decl.}
+
+\item[Maths symbols] Symbol definitions in maths for both characters (=) and macros (\cmd\eqdef):
+\cmd\DeclareMathSymbol\marg{symbol}\marg{type}\marg{named font}\marg{slot}
+This is the macro that actually defines which font each symbol comes from and how they behave.
+\end{description}
+Delimiters and radicals use wrappers around \TeX's \cmd\delimiter/\cmd\radical\ primitives,
+which are re-designed in \XeTeX. The syntax used in \LaTeX's NFSS is therefore not so relevant here.
+\begin{description}
+\item[Delimiters] A special class of maths symbol which enlarge themselves in certain contexts.
+
+\cmd\DeclareMathDelimiter\marg{symbol}\marg{type}\marg{sym.\ font}\marg{slot}\marg{sym.\ font}\marg{slot}
+
+\item[Radicals] Similar to delimiters (\cmd\DeclareMathRadical\ takes the same syntax) but
+behave `weirdly'.
+\end{description}
+In those cases, glyph slots in \emph{two} symbol fonts are required; one for the small (`regular') case,
+the other for situations when the glyph is larger. This is not the case in \XeTeX.
+
+Accents are not included yet.
+
+\paragraph{Summary}
+
+For symbols, something like:
+\begin{Verbatim}
+\def\DeclareMathSymbol#1#2#3#4{
+ \global\mathchardef#1"\mathchar at type#2
+ \expandafter\hexnumber@\csname sym#2\endcsname
+ {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}}
+\end{Verbatim}
+For characters, something like:
+\begin{Verbatim}
+\def\DeclareMathSymbol#1#2#3#4{
+ \global\mathcode`#1"\mathchar at type#2
+ \expandafter\hexnumber@\csname sym#2\endcsname
+ {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}}
+\end{Verbatim}
+\endinput
+
+% /©
+%
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
+%
+% ©/
Property changes on: trunk/Master/texmf-dist/source/latex/unicode-math/um-doc-nfsssummary.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/unicode-math/um-doc-stixextract.tex
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-doc-stixextract.tex (rev 0)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-doc-stixextract.tex 2017-11-18 21:45:46 UTC (rev 45845)
@@ -0,0 +1,38 @@
+%%^^A%% um-doc-stixextract.tex -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+\section{\STIX\ table data extraction}\label{part:awk}
+
+The source for the \TeX\ names for the very large number of mathematical
+glyphs are provided via Barbara Beeton's table file for the \STIX\ project
+(|ams.org/STIX|). A version is located at
+|http://www.ams.org/STIX/bnb/stix-tbl.asc|
+but check |http://www.ams.org/STIX/| for more up-to-date info.
+
+This table is converted into a form suitable for reading by \TeX.
+A single file is produced containing all (more than 3298) symbols.
+Future optimisations might include generating various (possibly overlapping) subsets
+so not all definitions must be read just to redefine a small range of symbols.
+Performance for now seems to be acceptable without such measures.
+
+This file is currently developed outside this DTX file. It will be
+incorporated when the final version is ready. (I know this is not how
+things are supposed to work!)
+
+\endinput
+
+% /©
+%
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
+%
+% ©/
Property changes on: trunk/Master/texmf-dist/source/latex/unicode-math/um-doc-stixextract.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/unicode-math/um-doc-style.tex
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-doc-style.tex (rev 0)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-doc-style.tex 2017-11-18 21:45:46 UTC (rev 45845)
@@ -0,0 +1,129 @@
+%%^^A%% um-doc-style.tex -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+\makeatletter
+\input{unicode-math.dtx}
+\GetFileInfo{unicode-math.dtx}
+\let\umfiledate\filedate
+\let\umfileversion\fileversion
+
+\CheckSum{0}
+\EnableCrossrefs
+\CodelineIndex
+\setcounter{IndexColumns}{2}
+
+\usepackage[svgnames]{xcolor}
+\usepackage[inline]{enumitem}
+\usepackage{array,booktabs,calc,enumitem,fancyvrb,graphicx,ifthen,longtable,refstyle,subfig,topcapt,url,varioref,underscore}
+\setcounter{LTchunksize}{100}
+\usepackage[slash-delimiter=frac,nabla=literal]{unicode-math}
+\usepackage{metalogo,hologo}
+
+\fvset{fontsize=\small,xleftmargin=2em}
+\usepackage[it]{titlesec}
+
+\setmainfont{texgyrepagella}%
+ [
+ Extension = .otf ,
+ UprightFont = *-regular ,
+ ItalicFont = *-italic ,
+ BoldFont = *-bold ,
+ BoldItalicFont = *-bolditalic ,
+ ]
+\setsansfont{Iwona}%
+ [
+ Scale=MatchLowercase,
+ Extension = .otf,
+ UprightFont = *-Regular,
+ ItalicFont = *-Italic,
+ BoldFont = *-Bold,
+ BoldItalicFont = *-BoldItalic,
+ ]
+\setmonofont{Inconsolatazi4-Regular.otf}%
+ [
+ Scale=MatchLowercase,
+ BoldFont=Inconsolatazi4-Bold.otf
+ ]
+
+\setmathfont{texgyrepagella-math.otf}
+\setmathfont[version=xits]{xits-math.otf}
+\newfontface\umfont{xits-math.otf}
+
+\usepackage{hypdoc}
+\hypersetup{linktocpage}
+
+% work around some issue turning | into "j" inside mathsf in the definition of \Module:
+% (also prettify)
+\def\Module#1{{\footnotesize\color{red}$\langle$\texttt{#1}$\rangle$}}
+
+\linespread{1.1}
+\frenchspacing
+
+\definecolor{niceblue}{rgb}{0.2,0.4,0.8}
+
+\def\theCodelineNo{\textcolor{niceblue}{\sffamily\tiny\arabic{CodelineNo}}}
+
+\newcommand*\name[1]{{#1}}
+\newcommand*\pkg[1]{\textsf{#1}}
+\newcommand*\feat[1]{\texttt{#1}}
+\newcommand*\opt[1]{\texttt{#1}}
+
+\newcommand*\note[1]{\unskip\footnote{#1}}
+
+\let\latin\textit
+\def\eg{\latin{e.g.}}
+\def\Eg{\latin{E.g.}}
+\def\ie{\latin{i.e.}}
+\def\etc{\@ifnextchar.{\latin{etc}}{\latin{etc.}\@}}
+
+\def\STIX{\textsc{stix}}
+\def\MacOSX{Mac~OS~X}
+\def\ascii{\textsc{ascii}}
+\def\OMEGA{Omega}
+
+\newcounter{argument}
+
+\makeatletter
+\g at addto@macro\endmacro{\setcounter{argument}{0}}
+\makeatother
+
+\newcommand*\darg[1]{%
+ \stepcounter{argument}%
+ {\ttfamily\char`\#\theargument~:~}#1\par\noindent\ignorespaces
+}
+\newcommand*\doarg[1]{%
+ \stepcounter{argument}%
+ {\ttfamily\makebox[0pt][r]{[}\char`\#\theargument]:~}#1\par\noindent\ignorespaces
+}
+
+\newcommand\codeline[1]{\par{\centering#1\par\noindent}\ignorespaces}
+
+\newcommand\unichar[1]{\textsc{u}+\texttt{\small#1}}
+
+\setlength\parindent{2em}
+
+\def \MakePrivateLetters {%
+ \catcode`\@=11\relax
+ \catcode`\_=11\relax
+ \catcode`\:=11\relax
+}
+
+\makeatother
+
+\endinput
+
+% /©
+%
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
+%
+% ©/
Property changes on: trunk/Master/texmf-dist/source/latex/unicode-math/um-doc-style.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/unicode-math/um-doc.tex
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/um-doc.tex (rev 0)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/um-doc.tex 2017-11-18 21:45:46 UTC (rev 45845)
@@ -0,0 +1,1137 @@
+%%^^A%% um-doc.tex -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+\begin{abstract}
+\noindent
+This document describes the \pkg{unicode-math} package, which is
+intended as an implementation of Unicode
+maths for \LaTeX\ using the \XeTeX\ and Lua\TeX\ typesetting engines.
+With this package, changing maths fonts is as easy as changing
+text fonts --- and there are more and more maths fonts appearing now.
+Maths input can also be simplified with Unicode since literal glyphs may be
+entered instead of control sequences in your document source.
+
+The package provides support for both \XeTeX\ and Lua\TeX. The different
+engines provide differing levels of support for Unicode maths.
+Please let us know of any troubles.
+
+Alongside this documentation file, you should be able to find a minimal
+example demonstrating the use of the package,
+`\texttt{unimath-example.ltx}'. It also comes with a separate document,
+`\texttt{unimath-symbols.pdf}',
+containing a complete listing of mathematical symbols defined by
+\pkg{unicode-math}, including comparisons between different fonts.
+
+Finally, while the STIX fonts may be used with this package, accessing
+their alphabets in their `private user area' is not yet supported.
+(Of these additional alphabets there is a separate caligraphic design
+distinct to the script design already included.)
+Better support for the STIX fonts is planned for an upcoming revision of the
+package after any problems have been ironed out with the initial version.
+
+\end{abstract}
+
+\newpage
+\tableofcontents
+
+\clearpage
+\section{Introduction}
+
+This document describes the \pkg{unicode-math} package, which is an
+\emph{experimental} implementation of a macro to Unicode glyph encoding for
+mathematical characters.
+
+Users who desire to specify maths alphabets only (Greek and Latin letters,
+and Arabic numerals)
+may wish to use Andrew Moschou's \pkg{mathspec} package instead.
+(\XeTeX-only at time of writing.)
+
+\section{Acknowledgements}
+
+Many thanks to:
+Microsoft for developing the mathematics extension to OpenType as part of
+Microsoft Office~2007;
+Jonathan Kew for implementing Unicode math support in \XeTeX;
+Taco Hoekwater for implementing Unicode math support in \LuaTeX;
+Barbara Beeton for her prodigious effort compiling the definitive list of Unicode math
+glyphs and their \LaTeX\ names (inventing them where necessary), and also
+for her thoughtful replies to my sometimes incessant questions;
+Philipp Stephani for extending the package to support \LuaTeX.
+Ross Moore and Chris Rowley have provided moral and technical support
+from the very early days with great insight into the issues we face trying
+to extend and use \TeX\ in the future.
+Apostolos Syropoulos, Joel Salomon, Khaled Hosny, and Mariusz Wodzicki
+have been fantastic beta testers.
+
+\section{Getting started}
+
+Load \pkg{unicode-math} as a regular \LaTeX\ package. It should be loaded
+after any other maths or font-related package in case it needs to overwrite
+their definitions. Here's an example using the filename syntax to load the \TeX\ Gyre Pagella Math font: (this works for both \XeLaTeX\ and \LuaLaTeX)
+\begin{Verbatim}
+\usepackage{amsmath} % if desired
+\usepackage{unicode-math}
+\setmathfont{texgyrepagella-math.otf}
+\end{Verbatim}
+
+Once the package is loaded, traditional TFM-based maths fonts are no longer supported;
+you can only switch to a different OpenType maths font using the \cs{setmathfont} command.
+If you do not load an OpenType maths font before |\begin{document}|, Latin Modern Math (see above) will be loaded automatically.
+
+\subsection{New commands}
+\LaTeX, since the first version of \LaTeXe, changed the math group
+selection from, say, |{\bf x}| to |\mathbf{x}|. It introduced commands
+such as |\mathbf|, |\mathit|, |\mathsf|, |\mathtt| and |\mathcal|,
+besides |\mathnormal|. This was not only done to maintain the analogy
+with |\textbf|, |\textit| and so on, but with the precise purpose of
+loading the needed math groups (or math families) on demand and not
+allocating them if not required by the document.
+
+The introduction of \pkg{unicode-math} posed new problems. For
+instance, there is a big difference between say |fit| as an operator
+name in boldface type and the product of three boldface variables.
+With legacy \TeX{} engines, |\mathbf{fit}| would use a ligature and
+the same would happen with the input |\mathbf{f}\mathbf{i}\mathbf{t}|.
+For the latter case, the user should probably use |\mathbf{f\/}|.
+
+However, there is another important point from a \emph{conceptual}
+point of view. A boldface variable name should be printed using the
+\emph{math font}, whereas a boldface operator name should be printed
+using the \emph{text font}. OpenType math fonts make this distinction
+feasible, because they contain several math alphabets. Of course a
+boldface text~`x' will not differ much (or at all) from a boldface
+math~`x', but this is not the point: they \emph{should} be considered
+different, because the former is |U+0078| in Unicode, the latter is
+|U+1D431|.
+
+When discussing the matter, it soon appeared clear that \emph{two}
+different commands are needed: one for using text boldface in math,
+one for using math boldface. Only the document's author can know
+whether one or the other is needed. The decision was to split off
+the two meanings by using either |\mathbf| (for the boldface text font
+in math) or |\symbf| (for the bold math font).
+
+To be more detailed, most alphabet commands are provided with the
+\cs{math...} prefix synonyms, but there are five `legacy' font alphabets
+that intentionally behave somewhat different. These are \cs{mathup},
+\cs{mathit}, \cs{mathbf}, \cs{mathsf}, and \cs{mathtt}. (N.B.:
+\cs{mathrm} is defined as a synonym for \cs{mathup}, but the latter is
+prefered as it is a script-agnostic term.)
+
+The \cs{symbf} command switches to single-letter mathematical symbols
+(generally within the same OpenType font). The \cs{mathbf} command
+switches to a text font that is set up to behave correctly in
+mathematics, and should be used for multi-letter identifiers. These
+could be denoted `text math alphabets'; further details are discussed
+in \secref{mathselect}. Additional similar `text math alphabet'
+commands can be defined using the \cs{setmathfontface} command
+discussed in \secref{mathselect}. To control the behaviour of the
+default text math alphabet commands to behave in a
+backwards-compatible mode, see the package options described in
+\secref{textmathlegacy}.
+
+\begin{table}\centering
+ \topcaption{New \pkg{unicode-math} commands.}
+ \tablabel{symvsmath}
+ \begin{tabular}{lll}
+ \toprule
+ \pkg{unicode-math} command & Synonym \\
+ \midrule
+ |\symup| & \\
+ |\symit| & \\
+ |\symbf| & \\
+ |\symsf| & \\
+ |\symtt| & \\
+ \midrule
+ |\symnormal| & |\mathnormal| \\
+ |\symliteral| & \\
+ |\symbfup| & |\mathbfup| \\
+ |\symbfit| & |\mathbfit| \\
+ |\symsfup| & |\mathsfup| \\
+ |\symsfit| & |\mathsfit| \\
+ |\symbfsfup| & |\mathbfsfup| \\
+ |\symbfsfit| & |\mathbfsfit| \\
+ |\symbfsf| & |\mathbfsf| \\
+ |\symbb| & |\mathbb| \\
+ |\symbbit| & |\mathbbit| \\
+ |\symscr| & |\mathscr| \\
+ |\symbfscr| & |\mathbfscr| \\
+ |\symcal| & |\mathcal| \\
+ |\symbfcal| & |\mathbfcal| \\
+ |\symfrak| & |\mathfrak| \\
+ |\symbffrak| & |\mathbffrak| \\
+ \bottomrule
+ \end{tabular}
+\end{table}
+
+Thus \pkg{unicode-math} provides a number of commands (such as
+|\symbfsf|) to select specific `symbol alphabets' within the unicode
+maths font, with usage, e.g., |$\symbfsf{g}$|${}\to\symbfsf{g}$. The
+full listing is shown in \Tabref{symvsmath}. For backwards
+compatibility, many of these are also defined with `familiar' synonyms
+such as |\mathbfsf|. However, where possible the `sym' prefix
+commands should be preferred, as certain synonyms may become
+deprecated in time. The |\symliteral| command is described in
+\secref{math-style}.
+
+
+
+\subsection{Package options}
+Package options may be set when the package as loaded or at any later
+stage with the \cs{unimathsetup} command. Therefore, the following two
+examples are equivalent:
+\begin{Verbatim}
+\usepackage[math-style=TeX]{unicode-math}
+% OR
+\usepackage{unicode-math}
+\unimathsetup{math-style=TeX}
+\end{Verbatim}
+Note, however, that some package options affects how maths is initialised
+and changing an option such as |math-style| will not take effect until a
+new maths font is set up.
+
+Package options may \emph{also} be used when declaring new maths fonts,
+passed via options to the \cs{setmathfont} command.
+Therefore, the following two examples are equivalent:
+\begin{Verbatim}
+\unimathsetup{math-style=TeX}
+\setmathfont{Cambria Math}
+% OR
+\setmathfont{Cambria Math}[math-style=TeX]
+\end{Verbatim}
+
+A summary list of package options is shown in \tabref{pkgopt}.
+See following sections for more information.
+
+\begin{table}\centering
+ \topcaption{Package options.}
+ \tablabel{pkgopt}
+ \begin{tabular}{lll}
+ \toprule
+ Option & Description & See\dots \\
+ \midrule
+ |math-style| & Style of letters & \secref{math-style} \\
+ |bold-style| & Style of bold letters & \secref{bold-style} \\
+ |sans-style| & Style of sans serif letters & \secref{sans-style} \\
+ |nabla| & Style of the nabla symbol & \secref{nabla} \\
+ |partial| & Style of the partial symbol & \secref{partial} \\
+ |colon| & Behaviour of \cs{colon} & \secref{colon} \\
+ |slash-delimiter| & Glyph to use for `stretchy' slash & \secref{slash-delimiter} \\
+ \bottomrule
+ \end{tabular}
+\end{table}
+
+
+\section{Unicode maths font setup}
+
+In the ideal case, a single Unicode font will contain all maths glyphs we
+need. The file |unicode-math-table.tex| (based on Barbara Beeton's \STIX\ table)
+provides the mapping between Unicode
+maths glyphs and macro names (all 3298 — or however many — of them!). A
+single command
+\codeline{\cmd\setmathfont\marg{font name}\oarg{font features}}
+implements this for every every symbol and alphabetic variant.
+That means |x| to $x$, |\xi| to $\xi$, |\leq| to $\leq$, etc., |\symscr{H}|
+to $\symscr{H}$ and so on, all for Unicode glyphs within a single font.
+
+This package deals well with Unicode characters for maths
+input. This includes using literal Greek letters in formulae,
+resolving to upright or italic depending on preference.
+
+Font features specific to \pkg{unicode-math} are shown in \tabref{mathfontfeatures}.
+Package options (see \tabref{pkgopt}) may also be used.
+Other \pkg{fontspec} features are also valid.
+
+\begin{table}\centering
+ \topcaption{Maths font options.}
+ \tablabel{mathfontfeatures}
+ \begin{tabular}{lll}
+ \toprule
+ Option & Description & See\dots \\
+ \midrule
+ |range| & Style of letters & \secref{range} \\
+ |script-font| & Font to use for sub- and super-scripts & \secref{sscript} \\
+ |script-features| & Font features for sub- and super-scripts & \secref{sscript} \\
+ |sscript-font| & Font to use for nested sub- and super-scripts & \secref{sscript} \\
+ |sscript-features| & Font features for nested sub- and super-scripts & \secref{sscript} \\
+ \bottomrule
+ \end{tabular}
+\end{table}
+
+\subsection{Using multiple fonts}
+\seclabel{range}
+
+There will probably be few cases where a single Unicode maths font suffices
+(simply due to glyph coverage). The \STIX\ font comes to mind as a
+possible exception. It will therefore be necessary to delegate specific
+Unicode ranges of glyphs to separate fonts:
+ \codeline{\cmd\setmathfont\marg{font name}|[range=|\meta{unicode range}|,|\meta{font features}|]|}
+where \meta{unicode range} is a comma-separated list of Unicode slot numbers and ranges such as |{"27D0-"27EB,"27FF,"295B-"297F}|.
+Note that \TeX's syntax for accessing the slot number of a character, such as |`\+|, will also work here.
+
+You may also use the macro for accessing the glyph, such as \cs{int}, or whole collection of symbols with the same math type, such as \cs{mathopen}, or complete math styles such as \cs{symbb}.
+(Only numerical slots, however, can be used in ranged declarations.)
+
+\subsubsection{Control over alphabet ranges}
+
+As discussed earlier, Unicode mathematics consists of a number of `alphabet styles' within a single font. In \pkg{unicode-math}, these ranges are indicated with the following (hopefully self-explanatory) labels:
+\begin{quote}\ttfamily
+\ExplSyntaxOn
+\clist_use:Nn \g__um_named_ranges_clist {\,,\,~}
+\ExplSyntaxOff
+\end{quote}
+Fonts can be selected for specified ranges only using the following syntax, in which case all other maths font setup remains untouched:
+\begin{itemize}
+\item |[range=bb]| to use the font for `|bb|' letters only.
+\item |[range=bfsfit/{greek,Greek}]| for Greek lowercase and uppercase only (also with |latin|, |Latin|, |num| as possible options for Latin lower-/upper-case and numbers, resp.).
+\item |[range=up->sfup]| to map to different output styles.
+\end{itemize}
+
+Note that `meta-styles' such as `|bf|' and `|sf|' are not included here since they are context dependent. Use |[range=bfup]| and |[range=bfit]| to effect changes to the particular ranges selected by `|bf|' (and similarly for `|sf|').
+
+If a particular math style is not defined in the font, we fall back onto the lower-base plane (i.e., `upright') glyphs.
+Therefore, to use an \ascii-encoded fractur font, for example, write
+\begin{Verbatim}
+ \setmathfont{SomeFracturFont}[range=frak]
+\end{Verbatim}
+and because the math plane fractur glyphs will be missing, \pkg{unicode-math} will know to use the \ascii\ ones instead.
+If necessary this behaviour can be forced with |[range=frak->up]|, since the `|up|' range corresponds to \ascii\ letters.
+
+%If you wanted to swap the maths symbols with sans serif forms, it would be possible to write |[range={up->sfup,it->sfit}]|.
+%Note, however, that at present Unicode does not encode glyphs for sans serif Greek (\tabref{mathalphabets}).
+
+Users of the impressive Minion Math fonts (commercial) may use remapping to access the bold glyphs using:
+\begin{Verbatim}
+ \setmathfont{MinionMath-Regular.otf}
+ \setmathfont{MinionMath-Bold.otf}[range={bfup->up,bfit->it}]
+\end{Verbatim}
+To set up the complete range of optical sizes for these fonts, a font declaration such as the following may be used: (adjust may be desired according to the font size of the document)
+\begin{Verbatim}
+\setmathfont{Minion Math}[
+ SizeFeatures = {
+ {Size = -6.01, Font = MinionMath-Tiny},
+ {Size = 6.01-8.41, Font = MinionMath-Capt},
+ {Size = 8.41-13.01, Font = MinionMath-Regular},
+ {Size = 13.01-19.91, Font = MinionMath-Subh},
+ {Size = 19.91-, Font = MinionMath-Disp}
+ }]
+
+\setmathfont{Minion Math}[range = {bfup->up,bfit->it},
+ SizeFeatures = {
+ {Size = -6.01, Font = MinionMath-BoldTiny},
+ {Size = 6.01-8.41, Font = MinionMath-BoldCapt},
+ {Size = 8.41-13.01, Font = MinionMath-Bold},
+ {Size = 13.01-19.91, Font = MinionMath-BoldSubh},
+ {Size = 19.91-, Font = MinionMath-BoldDisp}
+ }]
+\end{Verbatim}
+\textbf{v0.8:} Note that in previous versions of \pkg{unicode-math}, these features were labelled |[range=\mathbb]| and so on. This old syntax is still supported for backwards compatibility, but is now discouraged.
+
+
+\subsection{Script and scriptscript fonts/features}
+\seclabel{sscript}
+
+Cambria Math uses OpenType font features to activate smaller optical sizes
+for scriptsize and scriptscriptsize symbols (the $B$ and $C$, respectively,
+in $A_{B_C}$).
+Other typefaces (such as Minion Math) may use entirely separate font files.
+
+The features |script-font| and |sscript-font| allow alternate fonts to be
+selected for the script and scriptscript sizes, and |script-features| and
+|sscript-features| to apply different OpenType features to them.
+
+By default |script-features| is defined as |Style=MathScript| and |sscript-features| is |Style=MathScriptScript|.
+These correspond to the two levels of OpenType's |ssty| feature tag.
+If the |(s)script-features| options are specified manually, you must
+additionally specify the |Style| options as above.
+
+
+\subsection{Maths `versions'}
+
+\LaTeX\ uses a concept known as `maths versions' to switch math fonts
+mid-document.
+This is useful because it is more efficient than loading a complete maths
+font from scratch every time---especially with thousands of glyphs in the case of Unicode maths!
+The canonical example for maths versions is to select a `bold' maths font
+which might be suitable for section headings, say.
+(Not everyone agrees with this typesetting choice, though; be careful.)
+
+To select a new maths font in a particular version, use the syntax
+ \codeline{\cmd\setmathfont\marg{font name}|[version=|\meta{version name}|,|\meta{font features}|]|}
+and to switch between maths versions mid-document use the standard \LaTeX\ command
+\cmd\mathversion\marg{version name}.
+
+
+\subsection{Legacy maths `alphabet' commands}
+\seclabel{mathselect}
+
+\LaTeX\ traditionally uses \cs{DeclareMathAlphabet} and \cs{SetMathAlphabet} to define document commands such as \cs{mathit}, \cs{mathbf}, and so on.
+While these commands can still be used, \pkg{unicode-math} defines a wrapper command to assist with the creation of new such maths alphabet commands.
+This command is known as \cs{setmathface} in symmetry with \pkg{fontspec}'s \cs{newfontface} command; it takes syntax:
+\begin{quote}
+ \cmd\setmathfontface\meta{command}\marg{font name}|[|\meta{font features}|]|
+
+ \makebox[0pt][l]{\cmd\setmathfontface\meta{command}\marg{font name}|[||version=|\meta{version name}|,|\meta{font features}|]|}
+\end{quote}
+For example, if you want to define a new legacy maths alphabet font \cs{mathittt}:
+\begin{verbatim}
+ \setmathfontface\mathittt{texgyrecursor-italic.otf}
+ ...
+ $\mathittt{foo} = \mathittt{a} + \mathittt{b}$
+\end{verbatim}
+
+
+\subsubsection{Default `text math' fonts}
+
+The five `text math' fonts, discussed above, are: \cs{mathrm}, \cs{mathbf}, \cs{mathit}, \cs{mathsf}, and \cs{mathtt}.
+These commands are also defined with their original definition under synonyms \cs{mathtextrm}, \cs{mathtextbf}, and so on.
+
+When selecting document fonts using \pkg{fontspec} commands such as \cs{setmainfont}, \pkg{unicode-math} inserts some additional code into \pkg{fontspec} that keeps the current default fonts `in sync' with their corresponding \cs{mathrm} commands, etc.
+
+For example, in standard \LaTeX, \cs{mathsf} doesn't change even if the main document font is changed using |\renewcommand\sfdefault{...}|. With \pkg{unicode-math} loaded, after writing |\setsansfont{Helvetica}|, \cs{mathsf} will now be set in Helvetica.
+
+If the \cs{mathsf} font is set explicitly at any time in the preamble, this `auto-following' does not occur. The legacy math font switches can be defined either with commands defined by \pkg{fontspec} (|\setmathrm|, |\setmathsf|, etc.) or using the more general |\setmathfontface\mathsf| interface defined by \pkg{unicode-math}.
+
+
+\subsubsection{Replacing `text math' fonts by symbols}
+\seclabel{textmathlegacy}
+
+For certain types of documents that use legacy input syntax, it may be preferable to have |\mathbf| behave as if it were |\symbf| en masse (et cetera respectively).
+A series of package options (\tabref{legacyfontswitch}) are provided to facilitate switching the definition of \cs{mathXYZ} for the five legacy text math font definitions.
+
+For example, if in a particular document |\mathbf| is used only for choosing symbols of vectors and matrices, a dedicated symbol font (|\symbf|) will produce better spacing and will better match the main math font.
+In that case loading |unicode-math| with the |mathbf=sym| will achieve the desired result.
+
+\begin{table}
+ \centering
+ \topcaption{Maths text font configuration options. Note that \cs{mathup} and \cs{mathrm} are aliases of each other and cannot be configured separately.}
+ \tablabel{legacyfontswitch}
+ \begin{tabular}{lll}
+ \toprule
+ Defaults (from `text' font) & From `maths symbols' \\
+ \midrule
+ |mathrm=text| & |mathrm=sym | \\
+ |mathup=text|\rlap{$^\ast$} & |mathup=sym|{}\rlap{$^\ast$} \\
+ |mathit=text| & |mathit=sym | \\
+ |mathsf=text| & |mathsf=sym | \\
+ |mathbf=text| & |mathbf=sym | \\
+ |mathtt=text| & |mathtt=sym | \\
+ \bottomrule
+ \end{tabular}
+\end{table}
+
+
+\subsubsection{Operator font}
+
+\LaTeX\ defines an internal command \cs{operator at font} for typesetting elements such as |\sin| and |\cos|.
+This font is selected from the legacy |operators| NFSS `MathAlphabet', which is no longer relevant in the context of \pkg{unicode-math}.
+By default, the \cs{operator at font} command is defined to switch to the \cs{mathrm} font.
+You may now change these using the command:
+\begin{Verbatim}
+\setoperatorfont\mathit
+\end{Verbatim}
+Or, to select a \pkg{unicode-math} range:
+\begin{Verbatim}
+\setoperatorfont\symscr
+\end{Verbatim}
+\setoperatorfont\symscr
+For example, after the latter above, |$\sin x$| will produce `$\sin x$'.
+
+\mathversion{normal}
+\setoperatorfont\mathrm
+
+
+\section{Maths input}
+
+\XeTeX's Unicode support allows maths input through two methods. Like
+classical \TeX, macros such as \cmd\alpha, \cmd\sum, \cmd\pm, \cmd\leq, and
+so on, provide verbose access to the entire repertoire of characters defined
+by Unicode. The literal characters themselves may be used instead, for more
+readable input files.
+
+\subsection{Math `style'}
+\seclabel{math-style}
+
+Classically, \TeX\ uses italic lowercase Greek letters and \emph{upright}
+uppercase Greek letters for variables in mathematics. This is contrary to
+the \textsc{iso} standards of using italic forms for both upper- and lowercase.
+Furthermore, in various historical contexts, often associated with French typesetting, it was common to use upright uppercase \emph{Latin} letters as well as upright
+upper- and lowercase Greek, but italic lowercase latin. Finally, it is not unknown to use upright letters
+for all characters, as seen in the Euler fonts.
+
+The \pkg{unicode-math} package accommodates these possibilities with the
+option \opt{math-style} that takes one of four (case sensitive) arguments:
+\opt{TeX}, \opt{ISO}, \opt{french}, or \opt{upright}.\footnote{Interface inspired by Walter Schmidt's \pkg{lucimatx} package.}
+The \opt{math-style} options' effects are shown in brief in \tabref{math-style}.
+
+The philosophy behind the interface to the mathematical symbols
+lies in \LaTeX's attempt of separating content and formatting. Because input
+source text may come from a variety of places, the upright and
+`mathematical' italic Latin and Greek alphabets are \emph{unified} from the
+point of view of having a specified meaning in the source text. That is, to
+get a mathematical ‘$x$’, either the \ascii\ (`keyboard') letter |x| may
+be typed, or the actual Unicode character may be used. Similarly for Greek
+letters. The upright or italic forms are then chosen based on the
+|math-style| package option.
+
+If glyphs are desired that do not map as per the package option (for
+example, an upright `g' is desired but typing |$g$| yields `$g$'),
+\emph{markup} is required to specify this; to follow from the example:
+|\symup{g}|.
+Maths style commands such as \cmd\symup\ are detailed later.
+
+\paragraph{`Literal' interface}
+Some may not like this convention of normalising their input.
+For them, an upright |x| is an upright `x' and that's that.
+(This will be the case when obtaining source text from copy/pasting PDF or
+Microsoft Word documents, for example.)
+For these users, the |literal| option to |math-style| will effect this behaviour.
+The \cs{symliteral}\marg{syms} command can also be used, regardless of package setting, to force the style to match the literal input characters.
+This is a `mirror' to \cs{symnormal}\marg{syms} (also alias \cs{mathnormal}) which `resets' the character mapping in its argument to that originally set up through package options.
+
+\begin{table}
+ \centering
+ \topcaption{Effects of the \opt{math-style} package option.}
+ \tablabel{math-style}
+ \begin{tabular}{@{}>{\ttfamily}lcc@{}}
+ \toprule
+ & \multicolumn{2}{c}{Example} \\
+ \cmidrule(l){2-3}
+ \rmfamily Package option & Latin & Greek \\
+ \midrule
+ math-style=ISO & $(a,z,B,X)$ & $\symit{(\alpha,\beta,\Gamma,\Xi)}$ \\
+ math-style=TeX & $(a,z,B,X)$ & $(\symit\alpha,\symit\beta,\symup\Gamma,\symup\Xi)$ \\
+ math-style=french & $(a,z,\symup B,\symup X)$ & $(\symup\alpha,\symup\beta,\symup\Gamma,\symup\Xi)$ \\
+ math-style=upright & $(\symup a,\symup z,\symup B,\symup X)$ & $(\symup\alpha,\symup\beta,\symup\Gamma,\symup\Xi)$ \\
+ \bottomrule
+ \end{tabular}
+\end{table}
+
+
+\subsection{Bold style}
+\seclabel{bold-style}
+
+Similar as in the previous section, ISO standards differ somewhat to \TeX's
+conventions (and classical typesetting) for `boldness' in mathematics. In
+the past, it has been customary to use bold \emph{upright} letters to denote
+things like vectors and matrices. For example, \( \symbfup{M} =
+(\mitM_x,\mitM_y,\mitM_z) \). Presumably, this was due to the relatively
+scarcity of bold italic fonts in the pre-digital typesetting era.
+It has been suggested by some that \emph{italic} bold symbols should be used nowadays instead, but this practise is certainly not widespread.
+
+Bold Greek letters have simply been bold variant glyphs of their regular
+weight, as in \( \mbfitxi = (\mitxi_\mitr,\mitxi_\mitphi,\mitxi_\mittheta)
+\).
+Confusingly, the syntax in \LaTeX\ traditionally has been different for obtaining `normal' bold symbols in Latin and Greek: \cmd\mathbf\ in the former (`$\symbfup{M}$'), and \cmd\bm\ (or
+\cmd\boldsymbol, deprecated) in the latter (`$\mbfitxi$').
+
+In \pkg{unicode-math}, the \cmd\symbf\ command works directly with both
+Greek and Latin maths characters and depending on package option
+either switches to upright for Latin letters (|bold-style=TeX|) as well or
+keeps them italic (|bold-style=ISO|).
+To match the package options for non-bold characters, with option
+|bold-style=upright| all bold characters are upright, and
+|bold-style=literal| does not change the upright/italic shape of the letter.
+The \opt{bold-style} options' effects are shown in brief in \tabref{bold-style}.
+
+Upright and italic bold mathematical letters input as direct Unicode
+characters are normalised with the same rules. For example, with
+|bold-style=TeX|, a literal bold italic latin character will be typeset
+upright.
+
+Note that \opt{bold-style} is independent of \opt{math-style}, although if
+the former is not specified then matching defaults are chosen based on the
+latter.
+
+\begin{table}
+ \centering
+ \topcaption{Effects of the \opt{bold-style} package option.}
+ \tablabel{bold-style}
+ \begin{tabular}{@{}>{\ttfamily}lcc@{}}
+ \toprule
+ & \multicolumn{2}{c}{Example} \\
+ \cmidrule(l){2-3}
+ \rmfamily Package option & Latin & Greek \\
+ \midrule
+ bold-style=ISO & $(\symbfit a, \symbfit z, \symbfit B, \symbfit X)$ & $(\symbfit\alpha, \symbfit\beta, \symbfit\Gamma, \symbfit\Xi)$ \\
+ bold-style=TeX & $(\symbfup a,\symbfup z,\symbfup B,\symbfup X)$ & $(\symbfit\alpha, \symbfit\beta,\symbfup \Gamma,\symbfup \Xi)$ \\
+ bold-style=upright & $(\symbfup a,\symbfup z,\symbfup B,\symbfup X)$ & $(\symbfup \alpha,\symbfup \beta,\symbfup \Gamma,\symbfup \Xi)$ \\
+ \bottomrule
+ \end{tabular}
+\end{table}
+
+
+\subsection{Sans serif style}
+\seclabel{sans-style}
+
+Unicode contains upright and italic, medium and bold mathematical style characters.
+These may be explicitly selected with the \cs{mathsfup}, \cs{mathsfit}, \cs{mathbfsfup}, and \cs{mathbfsfit}
+commands discussed in \secref{all-math-alphabets}.
+
+How should the generic \cs{mathsf} behave? Unlike bold, sans serif is used much more sparingly
+in mathematics. I've seen recommendations to typeset tensors in sans serif italic
+or sans serif italic bold (e.g., examples in the \pkg{isomath} and \pkg{mattens} packages).
+But \LaTeX's \cs{mathsf} is \textsl{upright} sans serif.
+
+Therefore I reluctantly add the package options |[sans-style=upright]| and |[sans-style=italic]| to control the behaviour of \cs{mathsf}.
+The |upright| style sets up the command to use upright sans serif, including Greek;
+the |italic| style switches to using italic in both Latin and Greek.
+In other words, this option simply changes the meaning of \cs{mathsf} to either \cs{mathsfup} or \cs{mathsfit}, respectively.
+Please let me know if more granular control is necessary here.
+
+There is also a |[sans-style=literal]| setting, set automatically with |[math-style=literal]|, which retains the uprightness of the input characters used when selecting the sans serif output.
+
+\subsubsection{What about bold sans serif?}
+
+While you might want your bold upright and your sans serif italic, I don't believe you'd also want
+your bold sans serif upright (or all vice versa, if that's even conceivable). Therefore, bold sans
+serif follows from the setting for sans serif; it is completely independent of the setting for bold.
+
+In other words, \cs{mathbfsf} is either \cs{mathbfsfup} or \cs{mathbfsfit} based on |[sans-style=upright]| or |[sans-style=italic]|, respectively. And \texttt{[sans-style = literal]} causes \cs{mathbfsf} to retain the same italic or upright shape as the input, and turns it bold sans serif.
+
+N.B.: there is no medium-weight sans serif Greek range in Unicode.
+Therefore, |\symsf{\alpha}| does not make sense (it produces `$\symsf{\alpha}$'), while |\symbfsf{\alpha}| gives `$\symbfsfup{\alpha}$' or `$\symbfsfit{\alpha}$' according to the |sans-style|.
+
+\subsection{All (the rest) of the mathematical styles}
+\seclabel{all-math-alphabets}
+
+Unicode contains separate codepoints for most if not all variations of style
+shape one may wish to use in mathematical notation. The complete list is shown
+in \tabref{mathalphabets}. Some of these have been covered in the previous sections.
+
+The math font switching commands do not nest; therefore if you want
+sans serif bold, you must write |\symbfsf{...}| rather than |\symbf{\symsf{...}}|.
+This may change in the future.
+
+\begin{table}
+\caption{Mathematical styles defined in Unicode. Black dots indicate an style exists in the font specified; blue dots indicate shapes that should always be taken from the upright font even in the italic style. See main text for description of \cs{mathbbit}.}
+\tablabel{mathalphabets}
+\centering
+\def\Y{\textbullet}
+\def\M{\textcolor[rgb]{0.5,0.5,1}{\textbullet}}
+\begin{tabular}{@{} lll l ccc @{}}
+\toprule
+\multicolumn{3}{c}{Font} & & \multicolumn{3}{c}{Alphabet} \\
+\cmidrule(r){1-3}
+\cmidrule(l){5-7}
+Style & Shape & Series & Switch & Latin & Greek & Numerals \\
+\midrule
+Serif & Upright & Normal & \cs{mathup} & \Y & \Y & \Y \\
+ & & Bold & \cs{mathbfup} & \Y & \Y & \Y \\
+ & Italic & Normal & \cs{mathit} & \Y & \Y & \M \\
+ & & Bold & \cs{mathbfit} & \Y & \Y & \M \\
+Sans serif & Upright & Normal & \cs{mathsfup} & \Y & & \Y \\
+ & Italic & Normal & \cs{mathsfit} & \Y & & \M \\
+ & Upright & Bold & \cs{mathbfsfup} & \Y & \Y & \Y \\
+ & Italic & Bold & \cs{mathbfsfit} & \Y & \Y & \M \\
+Typewriter & Upright & Normal & \cs{mathtt} & \Y & & \Y \\
+Double-struck & Upright & Normal & \cs{mathbb} & \Y & & \Y \\
+ & Italic & Normal & \cs{mathbbit} & \Y & & \\
+Script & Upright & Normal & \cs{mathscr} & \Y & & \\
+ & & Bold & \cs{mathbfscr} & \Y & & \\
+Fraktur & Upright & Normal & \cs{mathfrak} & \Y & & \\
+ & & Bold & \cs{mathbffrac} & \Y & & \\
+\bottomrule
+\end{tabular}
+\end{table}
+
+\subsubsection{Double-struck}
+
+The double-struck style (also known as `blackboard bold') consists of
+upright Latin letters $\{\symbb{a}$--$\symbb{z}$,$\symbb{A}$$\symbb{Z}\}$,
+numerals $\symbb{0}$--$\symbb{9}$, summation symbol $\symbb\sum$, and four
+Greek letters only: $\{\symbb{\gamma\pi\Gamma\Pi}\}$.
+
+While |\symbb{\sum}| does produce a double-struck summation symbol,
+its limits aren't properly aligned. Therefore,
+either the literal character or the control sequence \cs{Bbbsum} are
+recommended instead.
+
+There are also five Latin \emph{italic} double-struck letters: $\symbbit{Ddeij}$.
+These can be accessed (if not with their literal characters or control sequences)
+with the \cs{mathbbit} style switch, but note that only those five letters
+will give the expected output.
+
+\subsubsection{Caligraphic vs.\ Script variants}
+
+The Unicode maths encoding contains a style for `Script' letters,
+and while by default \cs{mathcal} and \cs{mathscr}
+are synonyms, there are some situations when a
+separate `Caligraphic' style is needed as well.
+
+If a font contains alternate glyphs for a separat caligraphic style,
+they can be selected explicitly as shown below.
+This feature is currently only supported by the XITS~Math font, where
+the caligraphic letters are accessed with the same glyph slots as the
+script letters but with the first stylistic set feature (|ss01|) applied.
+\begin{verbatim}
+ \setmathfont{xits-math.otf}[range={cal,bfcal},StylisticSet=1]
+\end{verbatim}
+An example is shown below.
+\begin{quote}
+\setmathfont{xits-math.otf}[range=scr]
+\setmathfont{xits-math.otf}[range=cal,StylisticSet=1]
+The Script style (\cs{mathscr}) in XITS Math is: $\symscr{ABCXYZ}$\par
+The Caligraphic style (\cs{mathcal}) in XITS Math is: $\symcal{ABCXYZ}$
+\end{quote}
+
+
+\subsection{Miscellanea}
+
+\subsubsection{Nabla}
+\seclabel{nabla}
+
+ The symbol $\nabla$ comes in the six forms shown in \tabref{nabla}.
+ We want an individual option to specify whether we want upright or italic
+ nabla by default (when either upright or italic nabla is used in the
+ source). \TeX\ classically uses an upright nabla, and \textsc{iso}
+ standards agree with this convention.
+ The package options |nabla=upright| and
+ |nabla=italic| switch between the two choices, and |nabla=literal| respects
+ the shape of the input character. This is then inherited
+ through \cmd\symbf; \cmd\symit\ and \cmd\symup\ can be used to force one
+ way or the other.
+
+|nabla=italic| is the default. |nabla=literal| is
+activated automatically after |math-style=literal|.
+
+\begin{table}
+ \begin{minipage}[b]{0.49\textwidth}
+ \centering
+ \topcaption{The various forms of nabla.}
+ \tablabel{nabla}
+ \let \tmpshow\empty
+ \begin{tabular}{@{}llc@{}}
+ \toprule
+ \multicolumn{2}{@{}l}{Description} & Glyph
+ \\ \cmidrule(r){1-2}\cmidrule(l){3-3}
+ Upright & Serif & $\symup\nabla$ \\
+ & Bold serif & $\symbfup\nabla$ \\
+ & Bold sans & $\symbfsfup\nabla$ \\
+ \cmidrule(lr){1-2}\cmidrule(lr){3-3}
+ Italic & Serif & $\symit\nabla$ \\
+ & Bold serif & $\symbfit\nabla$ \\
+ & Bold sans & $\symbfsfit\nabla$ \\
+ \bottomrule
+ \end{tabular}
+ \end{minipage}\hfill
+ \begin{minipage}[b]{0.49\textwidth}
+ \centering
+ \topcaption{The partial differential.}
+ \tablabel{partial}
+ \begin{tabular}{@{}llc@{}}
+ \toprule
+ \multicolumn{2}{@{}l}{Description} & Glyph
+ \\ \cmidrule(r){1-2}\cmidrule(l){3-3}
+ Regular & Upright & $\symup\partial$ \\
+ & Italic & $\symit\partial$ \\
+ Bold & Upright & $\symbfup\partial$ \\
+ & Italic & $\symbfit\partial$ \\
+ Sans bold & Upright & $\symbfsfup\partial$ \\
+ & Italic & $\symbfsfit\partial$ \\
+ \bottomrule
+ \end{tabular}
+ \end{minipage}
+\end{table}
+
+
+\subsubsection{Partial}
+\seclabel{partial}
+
+The same applies to the symbols \unichar{2202} partial differential and
+\unichar{1D715} math italic partial differential.
+
+At time of writing, both the Cambria Math and STIX fonts display these
+two glyphs in the same italic style, but this is hopefully a bug that will
+be corrected in the future~--- the `plain' partial differential should
+really have an upright shape.
+
+Use the |partial=upright| or |partial=italic| package options to specify
+which one you would like, or |partial=literal| to have the same character
+used in the output as was used for the input.
+The default is (always, unless someone requests and
+argues otherwise) |partial=italic|.\footnote{A good argument would revolve
+around some international standards body recommending upright over italic.
+I just don't have the time right now to look it up.} |partial=literal|
+is activated following |math-style=literal|.
+
+See \tabref{partial} for the variations on the partial differential symbol.
+
+
+\subsubsection{Primes}
+
+Primes ($x'$) may be input in several ways. You may use any combination
+the \ascii\ straight quote (\texttt{\char`\'}) or the Unicode prime \unichar{2032}
+($'$); when multiple primes occur next to each other, they chain
+together to form double, triple, or quadruple primes if the font contains
+pre-drawn glyphs. The individual prime glyphs are accessed, as usual,
+with the \cs{prime} command, and the double-, triple-, and quadruple-prime
+glyphs are available with \cs{dprime}, \cs{trprime}, and \cs{qprime},
+respectively.
+
+If the font does not contain the pre-drawn glyphs or more than four primes
+are used, the single prime glyph is used multiple times with a negative
+kern to get the spacing right. There is no user interface to adjust this
+negative kern yet (because I haven't decided what it should look like);
+if you need to, write something like this:
+\begin{Verbatim}
+\ExplSyntaxOn
+\muskip_gset:Nn \g_@@_primekern_muskip { -\thinmuskip/2 }
+\ExplySyntaxOff
+\end{Verbatim}
+Backwards or reverse primes behave in exactly the same way; use the \ascii\
+back tick (\texttt{\char`\`}) or the Unicode reverse prime \unichar{2035}
+({\umfont\char"2035}).
+The command to access the backprime is \cs{backprime}, and
+multiple backwards primes can accessed with \cs{backdprime},
+\cs{backtrprime}, and \cs{backqprime}.
+
+In all cases above, no error checking is performed if you attempt to
+access a multi-prime glyph in a font that doesn't contain one. For this
+reason, it may be safer to write |x''''| instead of |x\qprime|
+in general.
+
+If you ever need to enter the straight quote |'| or the backtick |`| in
+maths mode, these glyphs can be accessed with \cs{mathstraightquote} and
+\cs{mathbacktick}.
+
+\subsubsection{Unicode subscripts and superscripts}
+
+You may, if you wish, use Unicode subscripts and superscripts in your
+source document. For basic expressions, the use of these characters
+can make the input more readable.
+Adjacent sub- or super-scripts will be concatenated into a single
+expression.
+
+The range of subscripts and superscripts supported by this package
+are shown in \figref{superscripts,subscripts}. Please request more if
+you think it is appropriate.
+
+\begin{figure}\centering
+\fbox{\fontspec{CharisSILR.ttf}\Large
+A
+^^^^2070 ^^^^00b9 ^^^^00b2 ^^^^00b3 ^^^^2074 ^^^^2075 ^^^^2076 ^^^^2077
+^^^^2078 ^^^^2079 ^^^^207a ^^^^207b ^^^^207c ^^^^207d ^^^^207e ^^^^2071
+^^^^207f ^^^^207f ^^^^02b0 ^^^^02b2 ^^^^02b3 ^^^^02b7 ^^^^02b8
+Z}
+\caption{
+ The Unicode superscripts supported as input characters.
+ These are the literal glyphs from Charis SIL,
+ not the output seen when used for maths input.
+ The `A' and `Z' are to provide context for the size and
+ location of the superscript glyphs.
+}
+\figlabel{superscripts}
+\end{figure}
+
+\begin{figure}\centering
+\fbox{\fontspec{CharisSILR.ttf}\Large
+A
+^^^^2080 ^^^^2081 ^^^^2082 ^^^^2083 ^^^^2084 ^^^^2085 ^^^^2086 ^^^^2087
+^^^^2088 ^^^^2089 ^^^^208a ^^^^208b ^^^^208c ^^^^208d ^^^^208e ^^^^2090
+^^^^2091 ^^^^1d62 ^^^^2092 ^^^^1d63 ^^^^1d64 ^^^^1d65 ^^^^2093 ^^^^1d66
+^^^^1d67 ^^^^1d68 ^^^^1d69 ^^^^1d6a
+Z}
+\caption{
+ The Unicode subscripts supported as input characters.
+ See note from \figref{superscripts}.
+}
+\figlabel{subscripts}
+\end{figure}
+
+\subsubsection{Colon}
+\seclabel{colon}
+
+The colon is one of the few confusing characters of Unicode maths.
+In \TeX, \texttt{:} is defined as a colon with relation spacing: `$a:b$'.
+While \cs{colon} is defined as a colon with punctuation spacing: `$a\colon b$'.
+
+In Unicode, \unichar{003A} {colon} is defined as a punctuation symbol,
+while \unichar{2236} {ratio} is the colon-like symbol used in mathematics to denote
+ratios and other things.
+
+This breaks the usual straightforward mapping from control sequence to Unicode input character
+to (the same) Unicode glyph.
+
+To preserve input compatibility, we remap the \ascii\ input character `\texttt{:}' to \unichar{2236}.
+Typing a literal \unichar{2236} char will result in the same output.
+If \pkg{amsmath} is loaded, then the definition of \cs{colon} is inherited from there
+(it looks like a punctuation colon with additional space around it).
+Otherwise, \cs{colon} is made to output a colon with \cs{mathpunct} spacing.
+
+The package option |colon=literal| forces \ascii\ input `|:|' to be printed as \cs{mathcolon} instead.
+
+
+\subsubsection{Slashes and backslashes}
+\seclabel{slash-delimiter}
+
+There are several slash-like symbols defined in Unicode. The complete list is shown in \tabref{slashes}.
+
+\begin{table}\centering
+\caption{Slashes and backslashes.}
+\tablabel{slashes}
+\begin{tabular}{@{}cl@{}cl@{}}
+\toprule
+Slot & Name & Glyph & Command \\
+\midrule
+\unichar{002F} & \textsc{solidus} & \umfont \char"002F & \cs{slash} \\
+\unichar{2044} & \textsc{fraction slash} & \umfont \char"2044 & \cs{fracslash} \\
+\unichar{2215} & \textsc{division slash} & \umfont \char"2215 & \cs{divslash} \\
+\unichar{29F8} & \textsc{big solidus} & \umfont \char"29F8 & \cs{xsol} \\
+\midrule
+\unichar{005C} & \textsc{reverse solidus} & \umfont \char"005C & \cs{backslash} \\
+\unichar{2216} & \textsc{set minus} & \umfont \char"2216 & \cs{smallsetminus} \\
+\unichar{29F5} & \textsc{reverse solidus operator}& \umfont \char"29F5 & \cs{setminus} \\
+\unichar{29F9} & \textsc{big reverse solidus} & \umfont \char"29F9 & \cs{xbsol} \\
+\bottomrule
+\end{tabular}
+\end{table}
+
+In regular \LaTeX\ we can write \cs{left}\cs{slash}\dots\cs{right}\cs{backslash}
+and so on and obtain extensible delimiter-like symbols. Not all of the Unicode slashes
+are suitable for this (and do not have the font support to do it).
+
+\paragraph{Slash}
+
+Of \unichar{2044} {fraction slash}, TR25 says that it is:
+\begin{quote}
+\dots used to build up simple fractions in running text\dots
+however parsers of mathematical texts should be prepared to handle fraction slash
+when it is received from other sources.
+\end{quote}
+
+\unichar{2215} {division slash} should be used when division is represented
+without a built-up fraction; $\pi\approx22/7$, for example.
+
+\unichar{29F8} {big solidus} is a `big operator' (like $\sum$).
+
+\paragraph{Backslash}
+
+The \unichar{005C} {reverse solidus} character \cs{backslash} is used for denoting
+double cosets: $A\backslash B$. (So I'm led to believe.)
+It may be used as a `stretchy' delimiter if supported by the font.
+
+MathML uses \unichar{2216} {set minus} like this: $A\smallsetminus B$.\footnote{\S4.4.5.11 \url{http://www.w3.org/TR/MathML3/}}
+The \LaTeX\ command name \cs{smallsetminus} is used for backwards compatibility.
+
+Presumably, \unichar{29F5} {reverse solidus operator} is intended to
+be used in a similar way, but it could also (perhaps?) be used to
+represent `inverse division': $\pi\approx7\mathbin{\backslash}22$.^^A
+\footnote{This is valid syntax in the Octave and Matlab programming languages,
+in which it means matrix inverse pre-multiplication. I.e., $A\mathbin{\backslash} B\equiv A^{-1}B$.}
+The \LaTeX\ name for this character is \cs{setminus}.
+
+Finally, \unichar{29F9} {big reverse solidus} is a `big operator' (like $\sum$).
+
+\paragraph{How to use all of these things}
+
+Unfortunately, font support for the above characters/glyphs is rather inconsistent.
+In Cambria Math, the only slash that grows (say when writing
+\[
+\left.\left[\begin{array}{cc} a & b \\ c & d\end{array}\right]\middle\slash
+ \left[\begin{array}{cc} 1 & 1 \\ 1 & 0\end{array}\right] \right.\quad )
+\]
+is the \textsc{fraction slash}, which we just established above is
+sort of only supposed to be used in text.
+
+Of the above characters, the following are allowed to be used after
+\cs{left}, \cs{middle}, and \cs{right}:
+\begin{itemize}
+\item \cs{fracslash};
+\item \cs{slash}; and,
+\item \cs{backslash} (the only reverse slash).
+\end{itemize}
+
+However, we assume that there is only \emph{one} stretchy slash
+in the font; this is assumed by default to be \unichar{002F} {solidus}.
+Writing \cs{left/} or \cs{left}\cs{slash} or \cs{left}\cs{fracslash}
+will all result in the same stretchy delimiter being used.
+
+The delimiter used can be changed with the |slash-delimiter| package option.
+Allowed values are |ascii|, |frac|, and |div|, corresponding to the respective
+Unicode slots.
+
+For example: as mentioned above, Cambria Math's stretchy slash is
+\unichar{2044} {fraction slash}. When using Cambria Math, then
+\pkg{unicode-math} should be loaded with the |slash-delimiter=frac| option.
+(This should be a font option rather than a package option, but
+it will change soon.)
+
+
+\subsubsection{Growing and non-growing accents}
+\seclabel{growing-accents}
+
+There are a few accents for which \TeX\ has both non-growing and growing
+versions. Among these are \cs{hat} and \cs{tilde}; the corresponding growing
+versions are called \cs{widehat} and \cs{widetilde}, respectively.
+
+Older versions of \XeTeX\ and \LuaTeX\ did not support this distinction,
+however, and \emph{all} accents there were growing automatically. (I.e.,
+\cs{hat} and \cs{widehat} are equivalent.) As of \LuaTeX\ v0.65 and \XeTeX\
+v0.9998, these wide/non-wide commands will again behave in their expected
+manner.
+
+
+\subsubsection{Pre-drawn fraction characters}
+
+Pre-drawn fractions \unichar{00BC}--\unichar{00BE}, \unichar{2150}--\unichar{215E}
+are not suitable for use in mathematics output. However, they can be useful
+as input characters to abbreviate common fractions.
+\begin{center}
+\fontspec{DejaVuSerif.ttf} ^^A available in TeX Live 2012 if not earlier
+¼ ½ ¾ ↉ ⅐ ⅑ ⅒ ⅓ ⅔ ⅕ ⅖ ⅗ ⅘ ⅙ ⅚ ⅛ ⅜ ⅝ ⅞
+\end{center}
+For example, instead of writing `|\tfrac12 x|', you may consider it more readable to have
+`|½x|' in the source instead.
+
+If the \cs{tfrac} command exists (i.e., if \pkg{amsmath} is loaded or
+you have specially defined \cs{tfrac} for this purpose), it will be used
+to typeset the fractions. If not, regular \cs{frac} will be used. The command
+to use (\cs{tfrac} or \cs{frac}) can be forced either way with the package
+option |active-frac=small| or |active-frac=normalsize|, respectively.
+
+\subsubsection{Circles}
+
+Unicode defines a large number of different types of circles for a variety
+of mathematical purposes. There are thirteen alone just considering the
+all white and all black ones, shown in \tabref{circles}.
+
+\LaTeX\ defines considerably fewer: \cs{circ} and \cs{bigcirc} for white;
+\cs{bullet} for black. This package maps those commands to \cs{vysmwhtcircle},
+\cs{mdlgwhtcircle}, and \cs{smblkcircle}, respectively.
+
+\begin{table}\centering
+\def\showchar#1#2#3{ \textsc{u}+{\small\ttfamily #1} & \texttt{\string#3} & \umfont \char"#1 \\}
+\begin{tabular}{@{}llc@{}}
+\toprule
+Slot & Command & Glyph \\
+\midrule
+\showchar{00B7}{centerdot}{\cdotp}
+\showchar{22C5}{small middle dot}{\cdot}
+\showchar{2219}{bullet operator}{\vysmblkcircle}
+\showchar{2022}{round bullet, filled}{\smblkcircle}
+\showchar{2981}{z notation spot}{\mdsmblkcircle}
+\showchar{26AB}{medium black circle}{\mdblkcircle}
+\showchar{25CF}{circle, filled}{\mdlgblkcircle}
+\showchar{2B24}{black large circle}{\lgblkcircle}
+\bottomrule
+\end{tabular}
+\def\showchar#1#2#3{ \umfont \char"#1 & \texttt{\string#3} & \textsc{u}+{\small\ttfamily #1} \\}
+\begin{tabular}{@{}cll@{}}
+\toprule
+Glyph & Command & Slot \\
+\midrule
+\\
+\\
+\showchar{2218}{composite function (small circle)}{\vysmwhtcircle}
+\showchar{25E6}{white bullet}{\smwhtcircle}
+\showchar{26AC}{medium small white circle}{\mdsmwhtcircle}
+\showchar{26AA}{medium white circle}{\mdwhtcircle}
+\showchar{25CB}{large circle}{\mdlgwhtcircle}
+\showchar{25EF}{large circle}{\lgwhtcircle}
+\bottomrule
+\end{tabular}
+\caption{Filled and hollow Unicode circles.}
+\tablabel{circles}
+\end{table}
+
+\subsubsection{Triangles}
+
+While there aren't as many different sizes of triangle as there are circle,
+there's some important distinctions to make between a few similar characters. See \tabref{uptriangles} for the full summary.
+
+These triangles all have different intended meanings. Note for backwards
+compatibility with \TeX, \unichar{25B3} has \emph{two} different mappings
+in \pkg{unicode-math}. \cs{bigtriangleup} is intended as a binary operator
+whereas \cs{triangle} is intended to be used as a letter-like symbol.
+
+But you're better off if you're using the latter form to indicate an
+increment to use the glyph intended for this purpose, \unichar{2206}: $\increment x$.
+
+Finally, given that $\triangle$ and $\increment$ are provided for you
+already, it is better off to only use upright Greek Delta $\Delta$ if you're
+actually using it as a symbolic entity such as a variable on its own.
+
+\begin{table}\centering
+\begin{tabular}{@{}llcl@{}}
+\toprule
+Slot & Command & Glyph & Class \\
+\midrule
+\unichar{25B5} & \cs{vartriangle} & \umfont \char"25B5 & binary \\
+\unichar{25B3} & \cs{bigtriangleup} & \umfont \char"25B3 & binary \\
+\unichar{25B3} & \cs{triangle} & \umfont \char"25B3 & ordinary \\
+\unichar{2206} & \cs{increment} & \umfont \char"2206 & ordinary \\
+\unichar{0394} & \cs{mathup}\cs{Delta} & \umfont \char"0394 & ordinary \\
+\bottomrule
+\end{tabular}
+\caption{Different upwards pointing triangles.}
+\tablabel{uptriangles}
+\end{table}
+
+\iffalse
+\subsubsection{Normalising some input characters}
+
+I believe
+all variant forms should be used as legal input that is normalised to
+a consistent output glyph, because we want to be fault-tolerant in the input.
+Here are the duplicates:
+\begin{quote}\obeylines
+\unichar {251} {latin small letter alpha}
+\unichar {25B} {latin small letter epsilon}
+\unichar {263} {latin small letter gamma}
+\unichar {269} {latin small letter iota}
+\unichar {278} {latin small letter phi}
+\unichar {28A} {latin small letter upsilon}
+\unichar {190} {latin capital letter epsilon}
+\unichar {194} {latin capital letter gamma}
+\unichar {196} {latin capital letter iota}
+\unichar {1B1} {latin capital letter upsilon}
+\end{quote}
+
+(Not yet implemented.)
+\fi
+
+\section{Advanced}
+
+\subsection{Warning messages}
+
+This package can produce a number of informational messages to try and inform the user when something might be going wrong due to package conflicts or something else.
+As an experimental feature, these can be turn off on an individual basis with the package option |warnings-off| which takes a comma-separated list of warnings to suppress.
+A warning will give you its name when printed on the console output; e.g.,
+\begin{Verbatim}
+ * unicode-math warning: "mathtools-colon"
+ *
+ * ... <warning message> ...
+\end{Verbatim}
+This warning could be suppressed by loading the package as follows:
+\begin{Verbatim}
+ \usepackage[warnings-off={mathtools-colon}]{unicode-math}
+\end{Verbatim}
+
+\subsection{Programmer's interface}
+
+(Tentative and under construction.)
+If you are writing some code that needs to know the current
+maths style (\cs{mathbf}, \cs{mathit}, etc.), you can query the
+variable \cs{l_@@_mathstyle_tl}. It will contain the maths style
+without the leading `math' string; for example,
+|\symbf { \show \l_@@_mathstyle_tl }|
+will produce `bf'.
+
+\endinput
+
+% /©
+%
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
+%
+% ©/
Property changes on: trunk/Master/texmf-dist/source/latex/unicode-math/um-doc.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Deleted: trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-alphabets.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-alphabets.dtx 2017-11-18 01:22:09 UTC (rev 45844)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-alphabets.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -1,904 +0,0 @@
-% \section{\DTXCURR --- Setting up alphabets}
-% \label{sec:setupalphabets}
-%
-% \begin{macrocode}
-%<*package&(XE|LU)>
-% \end{macrocode}
-%
-%
-% \subsubsection{Upright: up}
-%
-% \begin{macrocode}
-\@@_new_alphabet_config:nnn {up} {num}
- {
- \@@_set_normal_numbers:nn {up} {#1}
- \@@_set_mathalphabet_numbers:nnn {up} {up} {#1}
- }
-
-\@@_new_alphabet_config:nnn {up} {Latin}
- {
- \bool_if:NTF \g_@@_literal_bool { \@@_set_normal_Latin:nn {up} {#1} }
- {
- \bool_if:NT \g_@@_upLatin_bool { \@@_set_normal_Latin:nn {up,it} {#1} }
- }
- \@@_set_mathalphabet_Latin:nnn {up} {up,it} {#1}
- \@@_set_mathalphabet_Latin:nnn {literal} {up} {up}
- \@@_set_mathalphabet_Latin:nnn {literal} {it} {it}
- }
-
-\@@_new_alphabet_config:nnn {up} {latin}
- {
- \bool_if:NTF \g_@@_literal_bool { \@@_set_normal_latin:nn {up} {#1} }
- {
- \bool_if:NT \g_@@_uplatin_bool
- {
- \@@_set_normal_latin:nn {up,it} {#1}
- \@@_set_normal_char:nnn {h} {up,it} {#1}
- \@@_set_normal_char:nnn {dotlessi} {up,it} {#1}
- \@@_set_normal_char:nnn {dotlessj} {up,it} {#1}
- }
- }
- \@@_set_mathalphabet_latin:nnn {up} {up,it}{#1}
- \@@_set_mathalphabet_latin:nnn {literal} {up} {up}
- \@@_set_mathalphabet_latin:nnn {literal} {it} {it}
- }
-
-\@@_new_alphabet_config:nnn {up} {Greek}
- {
- \bool_if:NTF \g_@@_literal_bool { \@@_set_normal_Greek:nn {up}{#1} }
- {
- \bool_if:NT \g_@@_upGreek_bool { \@@_set_normal_Greek:nn {up,it}{#1} }
- }
- \@@_set_mathalphabet_Greek:nnn {up} {up,it}{#1}
- \@@_set_mathalphabet_Greek:nnn {literal} {up} {up}
- \@@_set_mathalphabet_Greek:nnn {literal} {it} {it}
- }
-
-\@@_new_alphabet_config:nnn {up} {greek}
- {
- \bool_if:NTF \g_@@_literal_bool { \@@_set_normal_greek:nn {up} {#1} }
- {
- \bool_if:NT \g_@@_upgreek_bool
- {
- \@@_set_normal_greek:nn {up,it} {#1}
- }
- }
- \@@_set_mathalphabet_greek:nnn {up} {up,it} {#1}
- \@@_set_mathalphabet_greek:nnn {literal} {up} {up}
- \@@_set_mathalphabet_greek:nnn {literal} {it} {it}
- }
-
-\@@_new_alphabet_config:nnn {up} {misc}
- {
- \bool_if:NTF \g_@@_literal_Nabla_bool
- {
- \@@_set_normal_char:nnn {Nabla}{up}{up}
- }
- {
- \bool_if:NT \g_@@_upNabla_bool
- {
- \@@_set_normal_char:nnn {Nabla}{up,it}{up}
- }
- }
- \bool_if:NTF \g_@@_literal_partial_bool
- {
- \@@_set_normal_char:nnn {partial}{up}{up}
- }
- {
- \bool_if:NT \g_@@_uppartial_bool
- {
- \@@_set_normal_char:nnn {partial}{up,it}{up}
- }
- }
- \@@_set_mathalphabet_pos:nnnn {up} {partial} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {up} {Nabla} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {up} {dotlessi} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {up} {dotlessj} {up,it} {#1}
- }
-% \end{macrocode}
-%
-% \subsubsection{Italic: it}
-%
-% \begin{macrocode}
-\@@_new_alphabet_config:nnn {it} {Latin}
- {
- \bool_if:NTF \g_@@_literal_bool { \@@_set_normal_Latin:nn {it} {#1} }
- {
- \bool_if:NF \g_@@_upLatin_bool { \@@_set_normal_Latin:nn {up,it} {#1} }
- }
- \@@_set_mathalphabet_Latin:nnn {it}{up,it}{#1}
- }
-
-\@@_new_alphabet_config:nnn {it} {latin}
- {
- \bool_if:NTF \g_@@_literal_bool
- {
- \@@_set_normal_latin:nn {it} {#1}
- \@@_set_normal_char:nnn {h}{it}{#1}
- }
- {
- \bool_if:NF \g_@@_uplatin_bool
- {
- \@@_set_normal_latin:nn {up,it} {#1}
- \@@_set_normal_char:nnn {h}{up,it}{#1}
- \@@_set_normal_char:nnn {dotlessi}{up,it}{#1}
- \@@_set_normal_char:nnn {dotlessj}{up,it}{#1}
- }
- }
- \@@_set_mathalphabet_latin:nnn {it} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {it} {dotlessi} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {it} {dotlessj} {up,it} {#1}
- }
-
-\@@_new_alphabet_config:nnn {it} {Greek}
- {
- \bool_if:NTF \g_@@_literal_bool
- {
- \@@_set_normal_Greek:nn {it}{#1}
- }
- {
- \bool_if:NF \g_@@_upGreek_bool { \@@_set_normal_Greek:nn {up,it}{#1} }
- }
- \@@_set_mathalphabet_Greek:nnn {it} {up,it}{#1}
- }
-
-\@@_new_alphabet_config:nnn {it} {greek}
- {
- \bool_if:NTF \g_@@_literal_bool
- {
- \@@_set_normal_greek:nn {it} {#1}
- }
- {
- \bool_if:NF \g_@@_upgreek_bool { \@@_set_normal_greek:nn {it,up} {#1} }
- }
- \@@_set_mathalphabet_greek:nnn {it} {up,it} {#1}
- }
-
-\@@_new_alphabet_config:nnn {it} {misc}
- {
- \bool_if:NTF \g_@@_literal_Nabla_bool
- {
- \@@_set_normal_char:nnn {Nabla}{it}{it}
- }
- {
- \bool_if:NF \g_@@_upNabla_bool
- {
- \@@_set_normal_char:nnn {Nabla}{up,it}{it}
- }
- }
- \bool_if:NTF \g_@@_literal_partial_bool
- {
- \@@_set_normal_char:nnn {partial}{it}{it}
- }
- {
- \bool_if:NF \g_@@_uppartial_bool
- {
- \@@_set_normal_char:nnn {partial}{up,it}{it}
- }
- }
- \@@_set_mathalphabet_pos:nnnn {it} {partial} {up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {it} {Nabla} {up,it}{#1}
- }
-% \end{macrocode}
-%
-% \subsubsection{Blackboard or double-struck: bb and bbit}
-%
-% \begin{macrocode}
-\@@_new_alphabet_config:nnn {bb} {latin}
- {
- \@@_set_mathalphabet_latin:nnn {bb} {up,it}{#1}
- }
-
-\@@_new_alphabet_config:nnn {bb} {Latin}
- {
- \@@_set_mathalphabet_Latin:nnn {bb} {up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {bb} {C} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {bb} {H} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {bb} {N} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {bb} {P} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {bb} {Q} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {bb} {R} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {bb} {Z} {up,it} {#1}
- }
-
-\@@_new_alphabet_config:nnn {bb} {num}
- {
- \@@_set_mathalphabet_numbers:nnn {bb} {up}{#1}
- }
-
-\@@_new_alphabet_config:nnn {bb} {misc}
- {
- \@@_set_mathalphabet_pos:nnnn {bb} {Pi} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {bb} {pi} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {bb} {Gamma} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {bb} {gamma} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {bb} {summation} {up} {#1}
- }
-
-\@@_new_alphabet_config:nnn {bbit} {misc}
- {
- \@@_set_mathalphabet_pos:nnnn {bbit} {D} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {bbit} {d} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {bbit} {e} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {bbit} {i} {up,it} {#1}
- \@@_set_mathalphabet_pos:nnnn {bbit} {j} {up,it} {#1}
- }
-% \end{macrocode}
-%
-% \subsubsection{Script and caligraphic: scr and cal}
-%
-% \begin{macrocode}
-\@@_new_alphabet_config:nnn {scr} {Latin}
- {
- \@@_set_mathalphabet_Latin:nnn {scr} {up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {scr} {B}{up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {scr} {E}{up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {scr} {F}{up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {scr} {H}{up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {scr} {I}{up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {scr} {L}{up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {scr} {M}{up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {scr} {R}{up,it}{#1}
- }
-
-\@@_new_alphabet_config:nnn {scr} {latin}
- {
- \@@_set_mathalphabet_latin:nnn {scr} {up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {scr} {e}{up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {scr} {g}{up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {scr} {o}{up,it}{#1}
- }
-% \end{macrocode}
-% These are by default synonyms for the above, but with the STIX
-% fonts we want to use the alternate alphabet.
-% \begin{macrocode}
-\@@_new_alphabet_config:nnn {cal} {Latin}
- {
- \@@_set_mathalphabet_Latin:nnn {cal} {up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {cal} {B}{up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {cal} {E}{up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {cal} {F}{up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {cal} {H}{up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {cal} {I}{up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {cal} {L}{up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {cal} {M}{up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {cal} {R}{up,it}{#1}
- }
-% \end{macrocode}
-%
-% \subsubsection{Fractur or fraktur or blackletter: frak}
-%
-% \begin{macrocode}
-\@@_new_alphabet_config:nnn {frak} {Latin}
- {
- \@@_set_mathalphabet_Latin:nnn {frak} {up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {frak} {C}{up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {frak} {H}{up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {frak} {I}{up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {frak} {R}{up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {frak} {Z}{up,it}{#1}
- }
-\@@_new_alphabet_config:nnn {frak} {latin}
- {
- \@@_set_mathalphabet_latin:nnn {frak} {up,it}{#1}
- }
-% \end{macrocode}
-%
-% \subsubsection{Sans serif upright: sfup}
-% \begin{macrocode}
-\@@_new_alphabet_config:nnn {sfup} {num}
- {
- \@@_set_mathalphabet_numbers:nnn {sf} {up}{#1}
- \@@_set_mathalphabet_numbers:nnn {sfup} {up}{#1}
- }
-\@@_new_alphabet_config:nnn {sfup} {Latin}
- {
- \bool_if:NTF \g_@@_sfliteral_bool
- {
- \@@_set_normal_Latin:nn {sfup} {#1}
- \@@_set_mathalphabet_Latin:nnn {sf} {up}{#1}
- }
- {
- \bool_if:NT \g_@@_upsans_bool
- {
- \@@_set_normal_Latin:nn {sfup,sfit} {#1}
- \@@_set_mathalphabet_Latin:nnn {sf} {up,it}{#1}
- }
- }
- \@@_set_mathalphabet_Latin:nnn {sfup} {up,it}{#1}
- }
-\@@_new_alphabet_config:nnn {sfup} {latin}
- {
- \bool_if:NTF \g_@@_sfliteral_bool
- {
- \@@_set_normal_latin:nn {sfup} {#1}
- \@@_set_mathalphabet_latin:nnn {sf} {up}{#1}
- }
- {
- \bool_if:NT \g_@@_upsans_bool
- {
- \@@_set_normal_latin:nn {sfup,sfit} {#1}
- \@@_set_mathalphabet_latin:nnn {sf} {up,it}{#1}
- }
- }
- \@@_set_mathalphabet_latin:nnn {sfup} {up,it}{#1}
- }
-% \end{macrocode}
-%
-% \subsubsection{Sans serif italic: sfit}
-%
-% \begin{macrocode}
-\@@_new_alphabet_config:nnn {sfit} {Latin}
- {
- \bool_if:NTF \g_@@_sfliteral_bool
- {
- \@@_set_normal_Latin:nn {sfit} {#1}
- \@@_set_mathalphabet_Latin:nnn {sf} {it}{#1}
- }
- {
- \bool_if:NF \g_@@_upsans_bool
- {
- \@@_set_normal_Latin:nn {sfup,sfit} {#1}
- \@@_set_mathalphabet_Latin:nnn {sf} {up,it}{#1}
- }
- }
- \@@_set_mathalphabet_Latin:nnn {sfit} {up,it}{#1}
- }
-\@@_new_alphabet_config:nnn {sfit} {latin}
- {
- \bool_if:NTF \g_@@_sfliteral_bool
- {
- \@@_set_normal_latin:nn {sfit} {#1}
- \@@_set_mathalphabet_latin:nnn {sf} {it}{#1}
- }
- {
- \bool_if:NF \g_@@_upsans_bool
- {
- \@@_set_normal_latin:nn {sfup,sfit} {#1}
- \@@_set_mathalphabet_latin:nnn {sf} {up,it}{#1}
- }
- }
- \@@_set_mathalphabet_latin:nnn {sfit} {up,it}{#1}
- }
-% \end{macrocode}
-%
-% \subsubsection{Typewriter or monospaced: tt}
-% \begin{macrocode}
-\@@_new_alphabet_config:nnn {tt} {num}
- {
- \@@_set_mathalphabet_numbers:nnn {tt} {up}{#1}
- }
-\@@_new_alphabet_config:nnn {tt} {Latin}
- {
- \@@_set_mathalphabet_Latin:nnn {tt} {up,it}{#1}
- }
-\@@_new_alphabet_config:nnn {tt} {latin}
- {
- \@@_set_mathalphabet_latin:nnn {tt} {up,it}{#1}
- }
-% \end{macrocode}
-%
-%
-% \subsubsection{Bold Italic: bfit}
-% \begin{macrocode}
-\@@_new_alphabet_config:nnn {bfit} {Latin}
- {
- \bool_if:NF \g_@@_bfupLatin_bool
- {
- \@@_set_normal_Latin:nn {bfup,bfit} {#1}
- }
- \@@_set_mathalphabet_Latin:nnn {bfit} {up,it}{#1}
- \bool_if:NTF \g_@@_bfliteral_bool
- {
- \@@_set_normal_Latin:nn {bfit} {#1}
- \@@_set_mathalphabet_Latin:nnn {bf} {it}{#1}
- }
- {
- \bool_if:NF \g_@@_bfupLatin_bool
- {
- \@@_set_normal_Latin:nn {bfup,bfit} {#1}
- \@@_set_mathalphabet_Latin:nnn {bf} {up,it}{#1}
- }
- }
- }
-
-\@@_new_alphabet_config:nnn {bfit} {latin}
- {
- \bool_if:NF \g_@@_bfuplatin_bool
- {
- \@@_set_normal_latin:nn {bfup,bfit} {#1}
- }
- \@@_set_mathalphabet_latin:nnn {bfit} {up,it}{#1}
- \bool_if:NTF \g_@@_bfliteral_bool
- {
- \@@_set_normal_latin:nn {bfit} {#1}
- \@@_set_mathalphabet_latin:nnn {bf} {it}{#1}
- }
- {
- \bool_if:NF \g_@@_bfuplatin_bool
- {
- \@@_set_normal_latin:nn {bfup,bfit} {#1}
- \@@_set_mathalphabet_latin:nnn {bf} {up,it}{#1}
- }
- }
- }
-
-\@@_new_alphabet_config:nnn {bfit} {Greek}
- {
- \@@_set_mathalphabet_Greek:nnn {bfit} {up,it}{#1}
- \bool_if:NTF \g_@@_bfliteral_bool
- {
- \@@_set_normal_Greek:nn {bfit}{#1}
- \@@_set_mathalphabet_Greek:nnn {bf} {it}{#1}
- }
- {
- \bool_if:NF \g_@@_bfupGreek_bool
- {
- \@@_set_normal_Greek:nn {bfup,bfit}{#1}
- \@@_set_mathalphabet_Greek:nnn {bf} {up,it}{#1}
- }
- }
- }
-
-\@@_new_alphabet_config:nnn {bfit} {greek}
- {
- \@@_set_mathalphabet_greek:nnn {bfit} {up,it} {#1}
- \bool_if:NTF \g_@@_bfliteral_bool
- {
- \@@_set_normal_greek:nn {bfit} {#1}
- \@@_set_mathalphabet_greek:nnn {bf} {it} {#1}
- }
- {
- \bool_if:NF \g_@@_bfupgreek_bool
- {
- \@@_set_normal_greek:nn {bfit,bfup} {#1}
- \@@_set_mathalphabet_greek:nnn {bf} {up,it} {#1}
- }
- }
- }
-
-\@@_new_alphabet_config:nnn {bfit} {misc}
- {
- \bool_if:NTF \g_@@_literal_Nabla_bool
- { \@@_set_normal_char:nnn {Nabla}{bfit}{#1} }
- {
- \bool_if:NF \g_@@_upNabla_bool
- { \@@_set_normal_char:nnn {Nabla}{bfup,bfit}{#1} }
- }
- \bool_if:NTF \g_@@_literal_partial_bool
- { \@@_set_normal_char:nnn {partial}{bfit}{#1} }
- {
- \bool_if:NF \g_@@_uppartial_bool
- { \@@_set_normal_char:nnn {partial}{bfup,bfit}{#1} }
- }
- \@@_set_mathalphabet_pos:nnnn {bfit} {partial} {up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {bfit} {Nabla} {up,it}{#1}
- \bool_if:NTF \g_@@_literal_partial_bool
- {
- \@@_set_mathalphabet_pos:nnnn {bf} {partial} {it}{#1}
- }
- {
- \bool_if:NF \g_@@_uppartial_bool
- {
- \@@_set_mathalphabet_pos:nnnn {bf} {partial} {up,it}{#1}
- }
- }
- \bool_if:NTF \g_@@_literal_Nabla_bool
- {
- \@@_set_mathalphabet_pos:nnnn {bf} {Nabla} {it}{#1}
- }
- {
- \bool_if:NF \g_@@_upNabla_bool
- {
- \@@_set_mathalphabet_pos:nnnn {bf} {Nabla} {up,it}{#1}
- }
- }
- }
-% \end{macrocode}
-%
-%
-% \subsubsection{Bold Upright: bfup}
-% \begin{macrocode}
-\@@_new_alphabet_config:nnn {bfup} {num}
- {
- \@@_set_mathalphabet_numbers:nnn {bf} {up}{#1}
- \@@_set_mathalphabet_numbers:nnn {bfup} {up}{#1}
- }
-
-\@@_new_alphabet_config:nnn {bfup} {Latin}
- {
- \bool_if:NT \g_@@_bfupLatin_bool
- {
- \@@_set_normal_Latin:nn {bfup,bfit} {#1}
- }
- \@@_set_mathalphabet_Latin:nnn {bfup} {up,it}{#1}
- \bool_if:NTF \g_@@_bfliteral_bool
- {
- \@@_set_normal_Latin:nn {bfup} {#1}
- \@@_set_mathalphabet_Latin:nnn {bf} {up}{#1}
- }
- {
- \bool_if:NT \g_@@_bfupLatin_bool
- {
- \@@_set_normal_Latin:nn {bfup,bfit} {#1}
- \@@_set_mathalphabet_Latin:nnn {bf} {up,it}{#1}
- }
- }
- }
-
-\@@_new_alphabet_config:nnn {bfup} {latin}
- {
- \bool_if:NT \g_@@_bfuplatin_bool
- {
- \@@_set_normal_latin:nn {bfup,bfit} {#1}
- }
- \@@_set_mathalphabet_latin:nnn {bfup} {up,it}{#1}
- \bool_if:NTF \g_@@_bfliteral_bool
- {
- \@@_set_normal_latin:nn {bfup} {#1}
- \@@_set_mathalphabet_latin:nnn {bf} {up}{#1}
- }
- {
- \bool_if:NT \g_@@_bfuplatin_bool
- {
- \@@_set_normal_latin:nn {bfup,bfit} {#1}
- \@@_set_mathalphabet_latin:nnn {bf} {up,it}{#1}
- }
- }
- }
-\@@_new_alphabet_config:nnn {bfup} {Greek}
- {
- \@@_set_mathalphabet_Greek:nnn {bfup} {up,it}{#1}
- \bool_if:NTF \g_@@_bfliteral_bool
- {
- \@@_set_normal_Greek:nn {bfup}{#1}
- \@@_set_mathalphabet_Greek:nnn {bf} {up}{#1}
- }
- {
- \bool_if:NT \g_@@_bfupGreek_bool
- {
- \@@_set_normal_Greek:nn {bfup,bfit}{#1}
- \@@_set_mathalphabet_Greek:nnn {bf} {up,it}{#1}
- }
- }
- }
-
-\@@_new_alphabet_config:nnn {bfup} {greek}
- {
- \@@_set_mathalphabet_greek:nnn {bfup} {up,it} {#1}
- \bool_if:NTF \g_@@_bfliteral_bool
- {
- \@@_set_normal_greek:nn {bfup} {#1}
- \@@_set_mathalphabet_greek:nnn {bf} {up} {#1}
- }
- {
- \bool_if:NT \g_@@_bfupgreek_bool
- {
- \@@_set_normal_greek:nn {bfup,bfit} {#1}
- \@@_set_mathalphabet_greek:nnn {bf} {up,it} {#1}
- }
- }
- }
-
-\@@_new_alphabet_config:nnn {bfup} {misc}
- {
- \bool_if:NTF \g_@@_literal_Nabla_bool
- {
- \@@_set_normal_char:nnn {Nabla}{bfup}{#1}
- }
- {
- \bool_if:NT \g_@@_upNabla_bool
- {
- \@@_set_normal_char:nnn {Nabla}{bfup,bfit}{#1}
- }
- }
- \bool_if:NTF \g_@@_literal_partial_bool
- {
- \@@_set_normal_char:nnn {partial}{bfup}{#1}
- }
- {
- \bool_if:NT \g_@@_uppartial_bool
- {
- \@@_set_normal_char:nnn {partial}{bfup,bfit}{#1}
- }
- }
- \@@_set_mathalphabet_pos:nnnn {bfup} {partial} {up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {bfup} {Nabla} {up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {bfup} {digamma} {up}{#1}
- \@@_set_mathalphabet_pos:nnnn {bfup} {Digamma} {up}{#1}
- \@@_set_mathalphabet_pos:nnnn {bf} {digamma} {up}{#1}
- \@@_set_mathalphabet_pos:nnnn {bf} {Digamma} {up}{#1}
- \bool_if:NTF \g_@@_literal_partial_bool
- {
- \@@_set_mathalphabet_pos:nnnn {bf} {partial} {up}{#1}
- }
- {
- \bool_if:NT \g_@@_uppartial_bool
- {
- \@@_set_mathalphabet_pos:nnnn {bf} {partial} {up,it}{#1}
- }
- }
- \bool_if:NTF \g_@@_literal_Nabla_bool
- {
- \@@_set_mathalphabet_pos:nnnn {bf} {Nabla} {up}{#1}
- }
- {
- \bool_if:NT \g_@@_upNabla_bool
- {
- \@@_set_mathalphabet_pos:nnnn {bf} {Nabla} {up,it}{#1}
- }
- }
- }
-% \end{macrocode}
-%
-% \subsubsection{Bold fractur or fraktur or blackletter: bffrak}
-% \begin{macrocode}
-\@@_new_alphabet_config:nnn {bffrak} {Latin}
- {
- \@@_set_mathalphabet_Latin:nnn {bffrak} {up,it}{#1}
- }
-
-\@@_new_alphabet_config:nnn {bffrak} {latin}
- {
- \@@_set_mathalphabet_latin:nnn {bffrak} {up,it}{#1}
- }
-% \end{macrocode}
-%
-% \subsubsection{Bold script or calligraphic: bfscr}
-% \begin{macrocode}
-\@@_new_alphabet_config:nnn {bfscr} {Latin}
- {
- \@@_set_mathalphabet_Latin:nnn {bfscr} {up,it}{#1}
- }
-\@@_new_alphabet_config:nnn {bfscr} {latin}
- {
- \@@_set_mathalphabet_latin:nnn {bfscr} {up,it}{#1}
- }
-\@@_new_alphabet_config:nnn {bfcal} {Latin}
- {
- \@@_set_mathalphabet_Latin:nnn {bfcal} {up,it}{#1}
- }
-% \end{macrocode}
-%
-% \subsubsection{Bold upright sans serif: bfsfup}
-% \begin{macrocode}
-\@@_new_alphabet_config:nnn {bfsfup} {num}
- {
- \@@_set_mathalphabet_numbers:nnn {bfsf} {up}{#1}
- \@@_set_mathalphabet_numbers:nnn {bfsfup} {up}{#1}
- }
-\@@_new_alphabet_config:nnn {bfsfup} {Latin}
- {
- \bool_if:NTF \g_@@_sfliteral_bool
- {
- \@@_set_normal_Latin:nn {bfsfup} {#1}
- \@@_set_mathalphabet_Latin:nnn {bfsf} {up}{#1}
- }
- {
- \bool_if:NT \g_@@_upsans_bool
- {
- \@@_set_normal_Latin:nn {bfsfup,bfsfit} {#1}
- \@@_set_mathalphabet_Latin:nnn {bfsf} {up,it}{#1}
- }
- }
- \@@_set_mathalphabet_Latin:nnn {bfsfup} {up,it}{#1}
- }
-
-\@@_new_alphabet_config:nnn {bfsfup} {latin}
- {
- \bool_if:NTF \g_@@_sfliteral_bool
- {
- \@@_set_normal_latin:nn {bfsfup} {#1}
- \@@_set_mathalphabet_latin:nnn {bfsf} {up}{#1}
- }
- {
- \bool_if:NT \g_@@_upsans_bool
- {
- \@@_set_normal_latin:nn {bfsfup,bfsfit} {#1}
- \@@_set_mathalphabet_latin:nnn {bfsf} {up,it}{#1}
- }
- }
- \@@_set_mathalphabet_latin:nnn {bfsfup} {up,it}{#1}
- }
-
-\@@_new_alphabet_config:nnn {bfsfup} {Greek}
- {
- \bool_if:NTF \g_@@_sfliteral_bool
- {
- \@@_set_normal_Greek:nn {bfsfup}{#1}
- \@@_set_mathalphabet_Greek:nnn {bfsf} {up}{#1}
- }
- {
- \bool_if:NT \g_@@_upsans_bool
- {
- \@@_set_normal_Greek:nn {bfsfup,bfsfit}{#1}
- \@@_set_mathalphabet_Greek:nnn {bfsf} {up,it}{#1}
- }
- }
- \@@_set_mathalphabet_Greek:nnn {bfsfup} {up,it}{#1}
- }
-
-\@@_new_alphabet_config:nnn {bfsfup} {greek}
- {
- \bool_if:NTF \g_@@_sfliteral_bool
- {
- \@@_set_normal_greek:nn {bfsfup} {#1}
- \@@_set_mathalphabet_greek:nnn {bfsf} {up} {#1}
- }
- {
- \bool_if:NT \g_@@_upsans_bool
- {
- \@@_set_normal_greek:nn {bfsfup,bfsfit} {#1}
- \@@_set_mathalphabet_greek:nnn {bfsf} {up,it} {#1}
- }
- }
- \@@_set_mathalphabet_greek:nnn {bfsfup} {up,it} {#1}
- }
-\@@_new_alphabet_config:nnn {bfsfup} {misc}
- {
- \bool_if:NTF \g_@@_literal_Nabla_bool
- {
- \@@_set_normal_char:nnn {Nabla}{bfsfup}{#1}
- }
- {
- \bool_if:NT \g_@@_upNabla_bool
- {
- \@@_set_normal_char:nnn {Nabla}{bfsfup,bfsfit}{#1}
- }
- }
- \bool_if:NTF \g_@@_literal_partial_bool
- {
- \@@_set_normal_char:nnn {partial}{bfsfup}{#1}
- }
- {
- \bool_if:NT \g_@@_uppartial_bool
- {
- \@@_set_normal_char:nnn {partial}{bfsfup,bfsfit}{#1}
- }
- }
- \@@_set_mathalphabet_pos:nnnn {bfsfup} {partial} {up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {bfsfup} {Nabla} {up,it}{#1}
- \bool_if:NTF \g_@@_literal_partial_bool
- {
- \@@_set_mathalphabet_pos:nnnn {bfsf} {partial} {up}{#1}
- }
- {
- \bool_if:NT \g_@@_uppartial_bool
- {
- \@@_set_mathalphabet_pos:nnnn {bfsf} {partial} {up,it}{#1}
- }
- }
- \bool_if:NTF \g_@@_literal_Nabla_bool
- {
- \@@_set_mathalphabet_pos:nnnn {bfsf} {Nabla} {up}{#1}
- }
- {
- \bool_if:NT \g_@@_upNabla_bool
- {
- \@@_set_mathalphabet_pos:nnnn {bfsf} {Nabla} {up,it}{#1}
- }
- }
- }
-% \end{macrocode}
-%
-%
-% \subsubsection{Bold italic sans serif: bfsfit}
-% \begin{macrocode}
-\@@_new_alphabet_config:nnn {bfsfit} {Latin}
- {
- \bool_if:NTF \g_@@_sfliteral_bool
- {
- \@@_set_normal_Latin:nn {bfsfit} {#1}
- \@@_set_mathalphabet_Latin:nnn {bfsf} {it}{#1}
- }
- {
- \bool_if:NF \g_@@_upsans_bool
- {
- \@@_set_normal_Latin:nn {bfsfup,bfsfit} {#1}
- \@@_set_mathalphabet_Latin:nnn {bfsf} {up,it}{#1}
- }
- }
- \@@_set_mathalphabet_Latin:nnn {bfsfit} {up,it}{#1}
- }
-
-\@@_new_alphabet_config:nnn {bfsfit} {latin}
- {
- \bool_if:NTF \g_@@_sfliteral_bool
- {
- \@@_set_normal_latin:nn {bfsfit} {#1}
- \@@_set_mathalphabet_latin:nnn {bfsf} {it}{#1}
- }
- {
- \bool_if:NF \g_@@_upsans_bool
- {
- \@@_set_normal_latin:nn {bfsfup,bfsfit} {#1}
- \@@_set_mathalphabet_latin:nnn {bfsf} {up,it}{#1}
- }
- }
- \@@_set_mathalphabet_latin:nnn {bfsfit} {up,it}{#1}
- }
-
-\@@_new_alphabet_config:nnn {bfsfit} {Greek}
- {
- \bool_if:NTF \g_@@_sfliteral_bool
- {
- \@@_set_normal_Greek:nn {bfsfit}{#1}
- \@@_set_mathalphabet_Greek:nnn {bfsf} {it}{#1}
- }
- {
- \bool_if:NF \g_@@_upsans_bool
- {
- \@@_set_normal_Greek:nn {bfsfup,bfsfit}{#1}
- \@@_set_mathalphabet_Greek:nnn {bfsf} {up,it}{#1}
- }
- }
- \@@_set_mathalphabet_Greek:nnn {bfsfit} {up,it}{#1}
- }
-
-\@@_new_alphabet_config:nnn {bfsfit} {greek}
- {
- \bool_if:NTF \g_@@_sfliteral_bool
- {
- \@@_set_normal_greek:nn {bfsfit} {#1}
- \@@_set_mathalphabet_greek:nnn {bfsf} {it} {#1}
- }
- {
- \bool_if:NF \g_@@_upsans_bool
- {
- \@@_set_normal_greek:nn {bfsfup,bfsfit} {#1}
- \@@_set_mathalphabet_greek:nnn {bfsf} {up,it} {#1}
- }
- }
- \@@_set_mathalphabet_greek:nnn {bfsfit} {up,it} {#1}
- }
-
-\@@_new_alphabet_config:nnn {bfsfit} {misc}
- {
- \bool_if:NTF \g_@@_literal_Nabla_bool
- {
- \@@_set_normal_char:nnn {Nabla}{bfsfit}{#1}
- }
- {
- \bool_if:NF \g_@@_upNabla_bool
- {
- \@@_set_normal_char:nnn {Nabla}{bfsfup,bfsfit}{#1}
- }
- }
- \bool_if:NTF \g_@@_literal_partial_bool
- {
- \@@_set_normal_char:nnn {partial}{bfsfit}{#1}
- }
- {
- \bool_if:NF \g_@@_uppartial_bool
- {
- \@@_set_normal_char:nnn {partial}{bfsfup,bfsfit}{#1}
- }
- }
- \@@_set_mathalphabet_pos:nnnn {bfsfit} {partial} {up,it}{#1}
- \@@_set_mathalphabet_pos:nnnn {bfsfit} {Nabla} {up,it}{#1}
- \bool_if:NTF \g_@@_literal_partial_bool
- {
- \@@_set_mathalphabet_pos:nnnn {bfsf} {partial} {it}{#1}
- }
- {
- \bool_if:NF \g_@@_uppartial_bool
- {
- \@@_set_mathalphabet_pos:nnnn {bfsf} {partial} {up,it}{#1}
- }
- }
- \bool_if:NTF \g_@@_literal_Nabla_bool
- {
- \@@_set_mathalphabet_pos:nnnn {bfsf} {Nabla} {it}{#1}
- }
- {
- \bool_if:NF \g_@@_upNabla_bool
- {
- \@@_set_mathalphabet_pos:nnnn {bfsf} {Nabla} {up,it}{#1}
- }
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</package&(XE|LU)>
-% \end{macrocode}
Added: trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-code.ltx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-code.ltx (rev 0)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-code.ltx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -0,0 +1,39 @@
+%%^^A%% unicode-math-code.ltx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+\documentclass[a4paper]{ltxdoc}
+\input{um-doc-style.tex}
+\begin{document}
+
+\title{Experimental Unicode mathematical typesetting: The \pkg{unicode-math} package}
+\author{\itshape Will Robertson\\\itshape Philipp Stephani, Joseph Wright, Khaled Hosny\\\url{http://github.com/wspr/unicode-math}}
+\date{\umfiledate \qquad \umfileversion}
+
+\maketitle
+\tableofcontents
+
+\def\DTX#1{\clearpage\part{#1}\DocInput{#1}}
+\DTXFILES
+
+\clearpage
+\PrintIndex
+
+\end{document}
+
+\endinput
+
+% /©
+%
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
+%
+% ©/
Property changes on: trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-code.ltx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Deleted: trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-compat.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-compat.dtx 2017-11-18 01:22:09 UTC (rev 45844)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-compat.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -1,509 +0,0 @@
-% \section{\DTXCURR --- Compatibility}
-%
-% \begin{macrocode}
-%<*package&(XE|LU)>
-% \end{macrocode}
-%
-% \begin{macro}{\@@_check_and_fix:NNnnnn}
-% \darg{command}
-% \darg{factory command}
-% \darg{parameter text}
-% \darg{expected replacement text}
-% \darg{new replacement text for \LuaTeX}
-% \darg{new replacement text for \XeTeX}
-% Tries to patch \meta{command}.
-% If \meta{command} is undefined, do nothing.
-% Otherwise it must be a macro with the given \meta{parameter text} and \meta{expected replacement text}, created by the given \meta{factory command} or equivalent.
-% In this case it will be overwritten using the \meta{parameter text} and the \meta{new replacement text for \LuaTeX} or the \meta{new replacement text for \XeTeX}, depending on the engine.
-% Otherwise issue a warning and don’t overwrite.
-% \begin{macrocode}
-\cs_new_protected_nopar:Nn \@@_check_and_fix:NNnnnn
- {
- \cs_if_exist:NT #1
- {
- \token_if_macro:NTF #1
- {
- \group_begin:
- #2 \@@_tmpa:w #3 { #4 }
- \cs_if_eq:NNTF #1 \@@_tmpa:w
- {
- \msg_info:nnx { unicode-math } { patch-macro }
- { \token_to_str:N #1 }
- \group_end:
- #2 #1 #3
-%<XE> { #6 }
-%<LU> { #5 }
- }
- {
- \msg_warning:nnxxx { unicode-math } { wrong-meaning }
- { \token_to_str:N #1 } { \token_to_meaning:N #1 }
- { \token_to_meaning:N \@@_tmpa:w }
- \group_end:
- }
- }
- {
- \msg_warning:nnx { unicode-math } { macro-expected }
- { \token_to_str:N #1 }
- }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_check_and_fix:NNnnn}
-% \darg{command}
-% \darg{factory command}
-% \darg{parameter text}
-% \darg{expected replacement text}
-% \darg{new replacement text}
-% Tries to patch \meta{command}.
-% If \meta{command} is undefined, do nothing.
-% Otherwise it must be a macro with the given \meta{parameter text} and \meta{expected replacement text}, created by the given \meta{factory command} or equivalent.
-% In this case it will be overwritten using the \meta{parameter text} and the \meta{new replacement text}.
-% Otherwise issue a warning and don’t overwrite.
-% \begin{macrocode}
-\cs_new_protected_nopar:Nn \@@_check_and_fix:NNnnn
- {
- \@@_check_and_fix:NNnnnn #1 #2 { #3 } { #4 } { #5 } { #5 }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_check_and_fix_luatex:NNnnn}
-% \begin{macro}{\@@_check_and_fix_luatex:cNnnn}
-% \darg{command}
-% \darg{factory command}
-% \darg{parameter text}
-% \darg{expected replacement text}
-% \darg{new replacement text}
-% Tries to patch \meta{command}.
-% If \XeTeX\ is the current engine or \meta{command} is undefined, do nothing.
-% Otherwise it must be a macro with the given \meta{parameter text} and \meta{expected replacement text}, created by the given \meta{factory command} or equivalent.
-% In this case it will be overwritten using the \meta{parameter text} and the \meta{new replacement text}.
-% Otherwise issue a warning and don’t overwrite.
-% \begin{macrocode}
-\cs_new_protected_nopar:Nn \@@_check_and_fix_luatex:NNnnn
- {
-%<LU> \@@_check_and_fix:NNnnn #1 #2 { #3 } { #4 } { #5 }
- }
-\cs_generate_variant:Nn \@@_check_and_fix_luatex:NNnnn { c }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \paragraph{\pkg{url}}
-% Simply need to get \pkg{url} in a state such that
-% when it switches to math mode and enters \ascii\ characters, the maths
-% setup (i.e., \pkg{unicode-math}) doesn't remap the symbols into Plane 1.
-% Which is, of course, what \cs{mathup} is doing.
-%
-% This is the same as writing, e.g., |\def\UrlFont{\ttfamily\@@_switchto_up:}|
-% but activates automatically so old documents that might change the \cs{url}
-% font still work correctly.
-% \begin{macrocode}
-\AtEndOfPackageFile * {url}
- {
- \tl_put_left:Nn \Url at FormatString { \@@_switchto_up: }
- \tl_put_right:Nn \UrlSpecials
- {
- \do\`{\mathchar`\`}
- \do\'{\mathchar`\'}
- \do\${\mathchar`\$}
- \do\&{\mathchar`\&}
- }
- }
-% \end{macrocode}
-%
-% \paragraph{\pkg{amsmath}}
-% Since the mathcode of |`\-| is greater than eight bits, this piece of |\AtBeginDocument| code from \pkg{amsmath} dies if we try and set the maths font in the preamble:
-% \begin{macrocode}
-\AtEndOfPackageFile * {amsmath}
- {
-%<*XE>
- \tl_remove_once:Nn \@begindocumenthook
- {
- \mathchardef\std at minus\mathcode`\-\relax
- \mathchardef\std at equal\mathcode`\=\relax
- }
- \def\std at minus{\Umathcharnum\Umathcodenum`\-\relax}
- \def\std at equal{\Umathcharnum\Umathcodenum`\=\relax}
-%</XE>
-% \end{macrocode}
-%
-% \begin{macrocode}
- \cs_set:Npn \@cdots {\mathinner{\cdots}}
- \cs_set_eq:NN \dotsb@ \cdots
-% \end{macrocode}
-% This isn't as clever as the \pkg{amsmath} definition but I think it works:
-% \begin{macrocode}
-%<*XE>
- \def \resetMathstrut@
- {%
- \setbox\z@\hbox{$($}%)
- \ht\Mathstrutbox@\ht\z@ \dp\Mathstrutbox@\dp\z@
- }
-% \end{macrocode}
-% The |subarray| environment uses inappropriate font dimensions.
-% \begin{macrocode}
- \@@_check_and_fix:NNnnn \subarray \cs_set:Npn { #1 }
- {
- \vcenter
- \bgroup
- \Let@
- \restore at math@cr
- \default at tag
- \baselineskip \fontdimen 10~ \scriptfont \tw@
- \advance \baselineskip \fontdimen 12~ \scriptfont \tw@
- \lineskip \thr@@@@ \fontdimen 8~ \scriptfont \thr@@@@
- \lineskiplimit \lineskip
- \ialign
- \bgroup
- \ifx c #1 \hfil \fi
- $ \m at th \scriptstyle ## $
- \hfil
- \crcr
- }
- {
- \vcenter
- \c_group_begin_token
- \Let@
- \restore at math@cr
- \default at tag
- \skip_set:Nn \baselineskip
- {
-% \end{macrocode}
-% Here we use stack top shift + stack bottom shift, which sounds reasonable.
-% \begin{macrocode}
- \@@_stack_num_up:N \scriptstyle
- + \@@_stack_denom_down:N \scriptstyle
- }
-% \end{macrocode}
-% Here we use the minimum stack gap.
-% \begin{macrocode}
- \lineskip \@@_stack_vgap:N \scriptstyle
- \lineskiplimit \lineskip
- \ialign
- \c_group_begin_token
- \token_if_eq_meaning:NNT c #1 { \hfil }
- \c_math_toggle_token
- \m at th
- \scriptstyle
- \c_parameter_token \c_parameter_token
- \c_math_toggle_token
- \hfil
- \crcr
- }
-%</XE>
-% \end{macrocode}
-% The roots need a complete rework.
-% \begin{macrocode}
- \@@_check_and_fix_luatex:NNnnn \plainroot@ \cs_set_nopar:Npn { #1 \of #2 }
- {
- \setbox \rootbox \hbox
- {
- $ \m at th \scriptscriptstyle { #1 } $
- }
- \mathchoice
- { \r@@@@t \displaystyle { #2 } }
- { \r@@@@t \textstyle { #2 } }~
- { \r@@@@t \scriptstyle { #2 } }
- { \r@@@@t \scriptscriptstyle { #2 } }
- \egroup
- }
- {
- \bool_if:nTF
- {
- \int_compare_p:nNn { \uproot@ } = { \c_zero }
- && \int_compare_p:nNn { \leftroot@ } = { \c_zero }
- }
- {
- \Uroot \l_@@_radical_sqrt_tl { #1 } { #2 }
- }
- {
- \hbox_set:Nn \rootbox
- {
- \c_math_toggle_token
- \m at th
- \scriptscriptstyle { #1 }
- \c_math_toggle_token
- }
- \mathchoice
- { \r@@@@t \displaystyle { #2 } }
- { \r@@@@t \textstyle { #2 } }
- { \r@@@@t \scriptstyle { #2 } }
- { \r@@@@t \scriptscriptstyle { #2 } }
- }
- \c_group_end_token
- }
- \@@_check_and_fix:NNnnnn \r@@@@t \cs_set_nopar:Npn { #1 #2 }
- {
- \setboxz at h { $ \m at th #1 \sqrtsign { #2 } $ }
- \dimen@ \ht\z@
- \advance \dimen@ -\dp\z@
- \setbox\@ne \hbox { $ \m at th #1 \mskip \uproot@ mu $ }
- \advance \dimen@ by 1.667 \wd\@ne
- \mkern -\leftroot@ mu
- \mkern 5mu
- \raise .6\dimen@ \copy\rootbox
- \mkern -10mu
- \mkern \leftroot@ mu
- \boxz@
- }
- {
- \hbox_set:Nn \l_tmpa_box
- {
- \c_math_toggle_token
- \m at th
- #1
- \mskip \uproot@ mu
- \c_math_toggle_token
- }
- \Uroot \l_@@_radical_sqrt_tl
- {
- \box_move_up:nn { \box_wd:N \l_tmpa_box }
- {
- \hbox:n
- {
- \c_math_toggle_token
- \m at th
- \mkern -\leftroot@ mu
- \box_use:N \rootbox
- \mkern \leftroot@ mu
- \c_math_toggle_token
- }
- }
- }
- { #2 }
- }
- {
- \hbox_set:Nn \l_tmpa_box
- {
- \c_math_toggle_token
- \m at th
- #1
- \sqrtsign { #2 }
- \c_math_toggle_token
- }
- \hbox_set:Nn \l_tmpb_box
- {
- \c_math_toggle_token
- \m at th
- #1
- \mskip \uproot@ mu
- \c_math_toggle_token
- }
- \mkern -\leftroot@ mu
- \@@_mathstyle_scale:Nnn #1 { \kern }
- {
- \fontdimen 63 \l_@@_font
- }
- \box_move_up:nn
- {
- \box_wd:N \l_tmpb_box
- + (\box_ht:N \l_tmpa_box - \box_dp:N \l_tmpa_box)
- * \number \fontdimen 65 \l_@@_font / 100
- }
- {
- \box_use:N \rootbox
- }
- \@@_mathstyle_scale:Nnn #1 { \kern }
- {
- \fontdimen 64 \l_@@_font
- }
- \mkern \leftroot@ mu
- \box_use_clear:N \l_tmpa_box
- }
- }
-% \end{macrocode}
-%
-% \paragraph{\pkg{amsopn}}
-% This code is to improve the output of analphabetic symbols in text of operator names (\cs{sin}, \cs{cos}, etc.). Just comment out the offending lines for now:
-% \begin{macrocode}
-%<*XE>
-\AtEndOfPackageFile * {amsopn}
- {
- \cs_set:Npn \newmcodes@
- {
- \mathcode`\'39\scan_stop:
- \mathcode`\*42\scan_stop:
- \mathcode`\."613A\scan_stop:
-%% \ifnum\mathcode`\-=45 \else
-%% \mathchardef\std at minus\mathcode`\-\relax
-%% \fi
- \mathcode`\-45\scan_stop:
- \mathcode`\/47\scan_stop:
- \mathcode`\:"603A\scan_stop:
- }
- }
-%</XE>
-% \end{macrocode}
-%
-% \paragraph{\pkg{mathtools}}
-% \pkg{mathtools}’s |\cramped| command and others that make use of its internal version use an incorrect font dimension.
-%
-% \begin{macrocode}
-%<*XE>
-\AtEndOfPackageFile * { mathtools }
- {
- \@@_check_and_fix:NNnnn
- \MT_cramped_internal:Nn \cs_set_nopar:Npn { #1 #2 }
- {
- \sbox \z@
- {
- $
- \m at th
- #1
- \nulldelimiterspace = \z@
- \radical \z@ { #2 }
- $
- }
- \ifx #1 \displaystyle
- \dimen@ = \fontdimen 8 \textfont 3
- \advance \dimen@ .25 \fontdimen 5 \textfont 2
- \else
- \dimen@ = 1.25 \fontdimen 8
- \ifx #1 \textstyle
- \textfont
- \else
- \ifx #1 \scriptstyle
- \scriptfont
- \else
- \scriptscriptfont
- \fi
- \fi
- 3
- \fi
- \advance \dimen@ -\ht\z@
- \ht\z@ = -\dimen@
- \box\z@
- }
-% \end{macrocode}
-% The \XeTeX\ version is pretty similar to the legacy version, only using the correct font dimensions.
-% Note we used `\verb|\XeTeXradical|' with the family 255 to be almost sure
-% that the radical rule width is not set. Former use of `\verb|\newfam|' had an
-% upsetting effect on legacy math alphabets.
-% \begin{macrocode}
- {
- \hbox_set:Nn \l_tmpa_box
- {
- \color at setgroup
- \c_math_toggle_token
- \m at th
- #1
- \dim_zero:N \nulldelimiterspace
- \XeTeXradical \c_two_hundred_fifty_five \c_zero { #2 }
- \c_math_toggle_token
- \color at endgroup
- }
- \box_set_ht:Nn \l_tmpa_box
- {
- \box_ht:N \l_tmpa_box
-% \end{macrocode}
-% Here we use the radical vertical gap.
-% \begin{macrocode}
- - \@@_radical_vgap:N #1
- }
- \box_use_clear:N \l_tmpa_box
- }
- }
-%</XE>
-% \end{macrocode}
-%
-% \begin{macro}{\overbracket}
-% \begin{macro}{\underbracket}
-% \pkg{mathtools}’s |\overbracket| and |\underbracket| take optional
-% arguments and are defined in terms of rules, so we keep them, and rename
-% ours to |\Uoverbracket| and |\Uunderbracket|.
-% \begin{macrocode}
-\AtEndOfPackageFile * { mathtools }
- {
- \cs_set_eq:NN \MToverbracket \overbracket
- \cs_set_eq:NN \MTunderbracket \underbracket
-
- \AtBeginDocument
- {
- \msg_warning:nn { unicode-math } { mathtools-overbracket }
-
- \def\downbracketfill#1#2
- {%
-% \end{macrocode}
-% Original definition used the height of |\braceld| which is not available
-% with Unicode fonts, so we are hard coding the $5/18$ex suggested by
-% \pkg{mathtools}’s documentation.
-% \begin{macrocode}
- \edef\l_MT_bracketheight_fdim{.27ex}%
- \downbracketend{#1}{#2}
- \leaders \vrule \@height #1 \@depth \z@ \hfill
- \downbracketend{#1}{#2}%
- }
- \def\upbracketfill#1#2
- {%
- \edef\l_MT_bracketheight_fdim{.27ex}%
- \upbracketend{#1}{#2}
- \leaders \vrule \@height \z@ \@depth #1 \hfill
- \upbracketend{#1}{#2}%
- }
- \let\Uoverbracket =\overbracket
- \let\Uunderbracket=\underbracket
- \let\overbracket =\MToverbracket
- \let\underbracket =\MTunderbracket
- }% end of AtBeginDocument
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\dblcolon}
-% \begin{macro}{\coloneqq}
-% \begin{macro}{\Coloneqq}
-% \begin{macro}{\eqqcolon}
-% \pkg{mathtools} defines several commands as combinations of colons and
-% other characters, but with meanings incompatible to \pkg{unicode-math}.
-% Thus we issue a warning. Because \pkg{mathtools} uses
-% \cmd{\providecommand} \cmd{\AtBeginDocument}, we can just define the
-% offending commands here.
-% \begin{macrocode}
- \msg_warning:nn { unicode-math } { mathtools-colon }
- \NewDocumentCommand \dblcolon { } { \Colon }
- \NewDocumentCommand \coloneqq { } { \coloneq }
- \NewDocumentCommand \Coloneqq { } { \Coloneq }
- \NewDocumentCommand \eqqcolon { } { \eqcolon }
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \paragraph{\pkg{colonequals}}
-%
-% \begin{macro}{\ratio}
-% \begin{macro}{\coloncolon}
-% \begin{macro}{\minuscolon}
-% \begin{macro}{\colonequals}
-% \begin{macro}{\equalscolon}
-% \begin{macro}{\coloncolonequals}
-% Similarly to \pkg{mathtools}, the \pkg{colonequals} defines several colon
-% combinations. Fortunately there are no name clashes, so we can just
-% overwrite their definitions.
-% \begin{macrocode}
-\AtEndOfPackageFile * { colonequals }
- {
- \msg_warning:nn { unicode-math } { colonequals }
- \RenewDocumentCommand \ratio { } { \mathratio }
- \RenewDocumentCommand \coloncolon { } { \Colon }
- \RenewDocumentCommand \minuscolon { } { \dashcolon }
- \RenewDocumentCommand \colonequals { } { \coloneq }
- \RenewDocumentCommand \equalscolon { } { \eqcolon }
- \RenewDocumentCommand \coloncolonequals { } { \Coloneq }
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macrocode}
-%</package&(XE|LU)>
-% \end{macrocode}
Deleted: trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-epilogue.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-epilogue.dtx 2017-11-18 01:22:09 UTC (rev 45844)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-epilogue.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -1,336 +0,0 @@
-
-% \section{\DTXCURR --- Epilogue}
-%
-% \begin{macrocode}
-%<*package&(XE|LU)>
-% \end{macrocode}
-%
-% Lots of little things to tidy up.
-%
-% \subsection{Resolving Greek symbol name control sequences}
-%
-% \begin{macro}{\@@_resolve_greek:}
-% This macro defines \cmd\Alpha\dots\cmd\omega\ as their corresponding
-% Unicode (mathematical italic) character. Remember that the mapping
-% to upright or italic happens with the mathcode definitions, whereas these macros
-% just stand for the literal Unicode characters.
-% \begin{macrocode}
-\AtBeginDocument{\@@_resolve_greek:}
-\cs_new:Npn \@@_resolve_greek:
- {
- \clist_map_inline:nn
- {
- Alpha,Beta,Gamma,Delta,Epsilon,Zeta,Eta,Theta,Iota,Kappa,Lambda,
- alpha,beta,gamma,delta,epsilon,zeta,eta,theta,iota,kappa,lambda,
- Mu,Nu,Xi,Omicron,Pi,Rho,Sigma,Tau,Upsilon,Phi,Chi,Psi,Omega,
- mu,nu,xi,omicron,pi,rho,sigma,tau,upsilon,phi,chi,psi,omega,
- varTheta,varsigma,vartheta,varkappa,varrho,varpi,varepsilon,varphi
- }
- {
- \tl_set:cx {##1} { \exp_not:c { mit ##1 } }
- \tl_set:cx {up ##1} { \exp_not:N \symup \exp_not:c { ##1 } }
- \tl_set:cx {it ##1} { \exp_not:N \symit \exp_not:c { ##1 } }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \subsection{Unicode radicals}
-%
-% Make sure \cs{Uroot} is defined in the case where the \LaTeX{}
-% kernel doesn't make it available with its native name.
-% \begin{macrocode}
-%<*LU>
-\cs_if_exist:NF \Uroot
- { \cs_new_eq:NN \Uroot \luatexUroot }
-%</LU>
-% \end{macrocode}
-%
-% \begin{macrocode}
-\AtBeginDocument{\@@_redefine_radical:}
-\cs_new:Nn \@@_redefine_radical:
-%<*XE>
- {
- \@ifpackageloaded { amsmath } { }
- {
-% \end{macrocode}
-% \begin{macro}{\r@@t}
-% \darg{A mathstyle (for \cmd\mathpalette)}
-% \darg{Leading superscript for the sqrt sign}
-% A re-implementation of \LaTeX's hard-coded n-root sign using the appropriate \cmd\fontdimen s.
-% \begin{macrocode}
- \cs_set_nopar:Npn \r@@@@t ##1 ##2
- {
- \hbox_set:Nn \l_tmpa_box
- {
- \c_math_toggle_token
- \m at th
- ##1
- \sqrtsign { ##2 }
- \c_math_toggle_token
- }
- \@@_mathstyle_scale:Nnn ##1 { \kern }
- { \fontdimen 63 \l_@@_font }
- \box_move_up:nn
- {
- (\box_ht:N \l_tmpa_box - \box_dp:N \l_tmpa_box)
- * \number \fontdimen 65 \l_@@_font / 100
- }
- { \box_use:N \rootbox }
- \@@_mathstyle_scale:Nnn ##1 { \kern }
- { \fontdimen 64 \l_@@_font }
- \box_use_clear:N \l_tmpa_box
- }
-% \end{macrocode}
-% \end{macro}
-% \begin{macrocode}
- }
- }
-%</XE>
-%<*LU>
- {
- \@ifpackageloaded { amsmath } { }
- {
-% \end{macrocode}
-% \begin{macro}{\root}
-% Redefine this macro for \LuaTeX, which provides us a nice primitive to use.
-% \begin{macrocode}
- \cs_set:Npn \root ##1 \of ##2
- {
- \Uroot \l_@@_radical_sqrt_tl { ##1 } { ##2 }
- }
-% \end{macrocode}
-% \end{macro}
-% \begin{macrocode}
- }
- }
-%</LU>
-% \end{macrocode}
-%
-% \subsubsection{Active fractions}
-% Active fractions can be setup independently of any maths font definition;
-% all it requires is a mapping from the Unicode input chars to the relevant
-% \LaTeX\ fraction declaration.
-%
-% \begin{macrocode}
-\cs_new:Npn \@@_define_active_frac:Nw #1 #2/#3
- {
- \char_set_catcode_active:N #1
- \@@_char_gmake_mathactive:N #1
- \tl_rescan:nn
- {
- \catcode`\_=11\relax
- \catcode`\:=11\relax
- }
- {
- \cs_gset:Npx #1
- {
- \bool_if:NTF \l_@@_smallfrac_bool {\exp_not:N\tfrac} {\exp_not:N\frac}
- {#2} {#3}
- }
- }
- }
-% \end{macrocode}
-% These are redefined for each math font selection in case the |active-frac|
-% feature changes.
-% \begin{macrocode}
-\cs_new:Npn \@@_setup_active_frac:
- {
- \group_begin:
- \@@_define_active_frac:Nw ^^^^2189 0/3
- \@@_define_active_frac:Nw ^^^^2152 1/{10}
- \@@_define_active_frac:Nw ^^^^2151 1/9
- \@@_define_active_frac:Nw ^^^^215b 1/8
- \@@_define_active_frac:Nw ^^^^2150 1/7
- \@@_define_active_frac:Nw ^^^^2159 1/6
- \@@_define_active_frac:Nw ^^^^2155 1/5
- \@@_define_active_frac:Nw ^^^^00bc 1/4
- \@@_define_active_frac:Nw ^^^^2153 1/3
- \@@_define_active_frac:Nw ^^^^215c 3/8
- \@@_define_active_frac:Nw ^^^^2156 2/5
- \@@_define_active_frac:Nw ^^^^00bd 1/2
- \@@_define_active_frac:Nw ^^^^2157 3/5
- \@@_define_active_frac:Nw ^^^^215d 5/8
- \@@_define_active_frac:Nw ^^^^2154 2/3
- \@@_define_active_frac:Nw ^^^^00be 3/4
- \@@_define_active_frac:Nw ^^^^2158 4/5
- \@@_define_active_frac:Nw ^^^^215a 5/6
- \@@_define_active_frac:Nw ^^^^215e 7/8
- \group_end:
- }
-\@@_setup_active_frac:
-% \end{macrocode}
-%
-% \subsection{Synonyms and all the rest}
-%
-% These are symbols with multiple names. Eventually to be taken care of
-% automatically by the maths characters database.
-% \begin{macrocode}
-\protected\def\to{\rightarrow}
-\protected\def\le{\leq}
-\protected\def\ge{\geq}
-\protected\def\neq{\ne}
-\protected\def\triangle{\mathord{\bigtriangleup}}
-\protected\def\bigcirc{\mdlgwhtcircle}
-\protected\def\circ{\vysmwhtcircle}
-\protected\def\bullet{\smblkcircle}
-\protected\def\mathyen{\yen}
-\protected\def\mathsterling{\sterling}
-\protected\def\diamond{\smwhtdiamond}
-\protected\def\emptyset{\varnothing}
-\protected\def\hbar{\hslash}
-\protected\def\land{\wedge}
-\protected\def\lor{\vee}
-\protected\def\owns{\ni}
-\protected\def\gets{\leftarrow}
-\protected\def\mathring{\ocirc}
-\protected\def\lnot{\neg}
-\protected\def\longdivision{\longdivisionsign}
-% \end{macrocode}
-% These are somewhat odd: (and their usual Unicode uprightness does not match their amssymb glyphs)
-% \begin{macrocode}
-\protected\def\backepsilon{\upbackepsilon}
-\protected\def\eth{\matheth}
-% \end{macrocode}
-% These are names that are `frozen' in HTML but have dumb names:
-% \begin{macrocode}
-\protected\def\dbkarow {\dbkarrow}
-\protected\def\drbkarow{\drbkarrow}
-\protected\def\hksearow{\hksearrow}
-\protected\def\hkswarow{\hkswarrow}
-% \end{macrocode}
-%
-% Due to the magic of OpenType math, big operators are automatically
-% enlarged when necessary. Since there isn't a separate unicode glyph for
-% `small integral', I'm not sure if there is a better way to do this:
-% \begin{macrocode}
-\protected\def\smallint{\mathop{\textstyle\int}\limits}
-% \end{macrocode}
-%
-% \begin{macro}{\underbar}
-% \begin{macrocode}
-\cs_set_eq:NN \latexe_underbar:n \underbar
-\renewcommand\underbar
- {
- \mode_if_math:TF \mathunderbar \latexe_underbar:n
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\colon}
-% Define \cs{colon} as a mathpunct `|:|'.
-% This is wrong: it should be \unichar{003A} {colon} instead!
-% We hope no-one will notice.
-% \begin{macrocode}
-\@ifpackageloaded{amsmath}
- {
- % define their own colon, perhaps I should just steal it. (It does look much better.)
- }
- {
- \cs_set_protected:Npn \colon
- {
- \bool_if:NTF \g_@@_literal_colon_bool {:} { \mathpunct{:} }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\digamma}
-% \begin{macro}{\Digamma}
-% I might end up just changing these in the table.
-% \begin{macrocode}
-\protected\def\digamma{\updigamma}
-\protected\def\Digamma{\upDigamma}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \paragraph{Symbols}
-% \begin{macrocode}
-\cs_set_protected:Npn \| {\Vert}
-% \end{macrocode}
-% \cs{mathinner} items:
-% \begin{macrocode}
-\cs_set_protected:Npn \mathellipsis {\mathinner{\unicodeellipsis}}
-\cs_set_protected:Npn \cdots {\mathinner{\unicodecdots}}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_set_eq:NN \@@_text_slash: \slash
-\cs_set_protected:Npn \slash
- {
- \mode_if_math:TF {\mathslash} {\@@_text_slash:}
- }
-% \end{macrocode}
-%
-% \subsubsection{\cs{not}}
-% \label{sec:negations}
-%
-% The situation of \cs{not} symbol is currently messy, in Unicode it is defined
-% as a combining mark so naturally it should be treated as a math accent,
-% however neither Lua\TeX\ nor \XeTeX\ correctly place it as it needs special
-% treatment compared to other accents, furthermore a math accent changes the
-% spacing of its nucleus, so \cs{not=} will be spaced as an ordinary not
-% relational symbol, which is undesired.
-%
-% Here modify \cs{not} to a macro that tries to use predefined negated symbols,
-% which would give better results in most cases, until there is more robust
-% solution in the engines.
-%
-% This code is based on an answer to a TeX -- Stack Exchange question by Enrico
-% Gregorio\footnote{\url{http://tex.stackexchange.com/a/47260/729}}.
-%
-% \begin{macrocode}
-\cs_new:Npn \@@_newnot:N #1
- {
- \tl_set:Nx \l_not_token_name_tl { \token_to_str:N #1 }
- \exp_args:Nx \tl_if_empty:nF { \tl_tail:V \l_not_token_name_tl }
- {
- \tl_set:Nx \l_not_token_name_tl { \tl_tail:V \l_not_token_name_tl }
- }
- \cs_if_exist:cTF { n \l_not_token_name_tl }
- {
- \use:c { n \l_not_token_name_tl }
- }
- {
- \cs_if_exist:cTF { not \l_not_token_name_tl }
- {
- \use:c { not \l_not_token_name_tl }
- }
- {
- \@@_oldnot: #1
- }
- }
- }
-% \end{macrocode}
-% \begin{macrocode}
-\cs_set_eq:NN \@@_oldnot: \not
-\AtBeginDocument{\cs_set_eq:NN \not \@@_newnot:N}
-% \end{macrocode}
-% \begin{macrocode}
-\cs_new_protected_nopar:Nn \@@_setup_negations:
- {
- \cs_gset:cpn { not= } { \neq }
- \cs_gset:cpn { not< } { \nless }
- \cs_gset:cpn { not> } { \ngtr }
- \cs_gset:Npn \ngets { \nleftarrow }
- \cs_gset:Npn \nsimeq { \nsime }
- \cs_gset:Npn \nequal { \ne }
- \cs_gset:Npn \nle { \nleq }
- \cs_gset:Npn \nge { \ngeq }
- \cs_gset:Npn \ngreater { \ngtr }
- \cs_gset:Npn \nforksnot { \forks }
- }
-% \end{macrocode}
-%
-%
-%
-% \begin{macrocode}
-%</package&(XE|LU)>
-% \end{macrocode}
-%
-\endinput
-
-
Deleted: trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-fontopt.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-fontopt.dtx 2017-11-18 01:22:09 UTC (rev 45844)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-fontopt.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -1,247 +0,0 @@
-
-% \section{\DTXCURR --- Font loading options}
-%
-% \begin{macrocode}
-%<*package&(XE|LU)>
-% \end{macrocode}
-%
-% \subsection{Math version}
-% \begin{macrocode}
-\keys_define:nn {unicode-math}
- {
- version .code:n =
- {
- \tl_set:Nn \l_@@_mversion_tl {#1}
- \DeclareMathVersion {\l_@@_mversion_tl}
- }
- }
-% \end{macrocode}
-%
-% \subsection{Script and scriptscript font options}
-% \begin{macrocode}
-\keys_define:nn {unicode-math}
- {
- script-features .tl_set:N = \l_@@_script_features_tl ,
- sscript-features .tl_set:N = \l_@@_sscript_features_tl ,
- script-font .tl_set:N = \l_@@_script_font_tl ,
- sscript-font .tl_set:N = \l_@@_sscript_font_tl ,
- }
-% \end{macrocode}
-%
-% \subsection{Range processing}
-% \seclabel{rangeproc}
-%
-% \begin{macrocode}
-\keys_define:nn {unicode-math}
- {
- range .code:n =
- {
- \bool_set_false:N \l_@@_init_bool
-% \end{macrocode}
-% Set processing functions if we're not defining the full Unicode math repetoire.
-% Math symbols are defined with \cmd\_@@_sym:nnn; see \secref{mathsymbol}
-% for the individual definitions
-% \begin{macrocode}
- \int_incr:N \g_@@_fam_int
- \tl_set:Nx \@@_symfont_tl {@@_fam\int_use:N\g_@@_fam_int}
- \cs_set_eq:NN \_@@_sym:nnn \@@_process_symbol_parse:nnn
- \cs_set_eq:NN \@@_set_mathalphabet_char:Nnn \@@_mathmap_parse:Nnn
- \cs_set_eq:NN \@@_remap_symbol:nnn \@@_remap_symbol_parse:nnn
- \cs_set_eq:NN \@@_maybe_init_alphabet:n \use_none:n
- \cs_set_eq:NN \@@_map_char_single:nn \@@_map_char_parse:nn
- \cs_set_eq:NN \@@_assign_delcode:nn \@@_assign_delcode_parse:nn
- \cs_set_eq:NN \@@_make_mathactive:nNN \@@_make_mathactive_parse:nNN
-% \end{macrocode}
-% Proceed by filling up the various `range' seqs according to the user options.
-% \begin{macrocode}
- \seq_clear:N \l_@@_char_range_seq
- \seq_clear:N \l_@@_mclass_range_seq
- \seq_clear:N \l_@@_cmd_range_seq
- \seq_clear:N \l_@@_mathalph_seq
-
- \clist_map_inline:nn {#1}
- {
- \@@_if_mathalph_decl:nTF {##1}
- {
- \seq_put_right:Nx \l_@@_mathalph_seq
- {
- { \exp_not:V \l_@@_tmpa_tl }
- { \exp_not:V \l_@@_tmpb_tl }
- { \exp_not:V \l_@@_tmpc_tl }
- }
- }
- {
-% \end{macrocode}
-% Four cases:
-% math class matching the known list;
-% single item that is a control sequence---command name;
-% single item that isn't---edge case, must be 0--9;
-% none of the above---char range.
-% \begin{macrocode}
- \seq_if_in:NnTF \g_@@_mathclasses_seq {##1}
- { \seq_put_right:Nn \l_@@_mclass_range_seq {##1} }
- {
- \bool_lazy_and:nnTF { \tl_if_single_p:n {##1} } { \token_if_cs_p:N ##1 }
- { \seq_put_right:Nn \l_@@_cmd_range_seq {##1} }
- { \seq_put_right:Nn \l_@@_char_range_seq {##1} }
- }
- }
- }
- }
- }
-% \end{macrocode}
-%
-%
-% \begin{macro}{\@@_if_mathalph_decl:nTF}
-% Possible forms of input:\\
-% |\mathscr|\\
-% |\mathscr->\mathup|\\
-% |\mathscr/{Latin}|\\
-% |\mathscr/{Latin}->\mathup|\\
-% Outputs:\\
-% |tmpa|: math style (\eg, |\mathscr|)\\
-% |tmpb|: alphabets (\eg, |Latin|)\\
-% |tmpc|: remap style (\eg, |\mathup|). Defaults to |tmpa|.
-%
-% The remap style can also be |\mathcal->stixcal|, which I marginally prefer
-% in the general case.
-% \begin{macrocode}
-\prg_new_conditional:Nnn \@@_if_mathalph_decl:n {TF}
- {
- \tl_set:Nn \l_@@_tmpa_tl {#1}
- \tl_clear:N \l_@@_tmpb_tl
- \tl_clear:N \l_@@_tmpc_tl
-
- \tl_if_in:NnT \l_@@_tmpa_tl {->}
- { \exp_after:wN \@@_split_arrow:w \l_@@_tmpa_tl \q_nil }
-
- \tl_if_in:NnT \l_@@_tmpa_tl {/}
- { \exp_after:wN \@@_split_slash:w \l_@@_tmpa_tl \q_nil }
-
- \tl_set:Nx \l_@@_tmpa_tl { \tl_to_str:N \l_@@_tmpa_tl }
- \exp_args:NNx \tl_remove_all:Nn \l_@@_tmpa_tl { \token_to_str:N \math }
- \exp_args:NNx \tl_remove_all:Nn \l_@@_tmpa_tl { \token_to_str:N \sym }
- \tl_trim_spaces:N \l_@@_tmpa_tl
-
- \tl_if_empty:NT \l_@@_tmpc_tl
- { \tl_set_eq:NN \l_@@_tmpc_tl \l_@@_tmpa_tl }
-
- \seq_if_in:NVTF \g_@@_named_ranges_seq \l_@@_tmpa_tl
- { \prg_return_true: } { \prg_return_false: }
- }
-% \end{macrocode}
-% \begin{macrocode}
-\cs_set:Npn \@@_split_arrow:w #1->#2 \q_nil
- {
- \tl_set:Nx \l_@@_tmpa_tl { \tl_trim_spaces:n {#1} }
- \tl_set:Nx \l_@@_tmpc_tl { \tl_trim_spaces:n {#2} }
- }
-% \end{macrocode}
-% \begin{macrocode}
-\cs_set:Npn \@@_split_slash:w #1/#2 \q_nil
- {
- \tl_set:Nx \l_@@_tmpa_tl { \tl_trim_spaces:n {#1} }
- \tl_set:Nx \l_@@_tmpb_tl { \tl_trim_spaces:n {#2} }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% Pretty basic comma separated range processing.
-% Donald Arseneau's \pkg{selectp} package has a cleverer technique.
-%
-% \begin{macro}{\@@_if_char_spec:nNNT}
-% \darg{Unicode character slot}
-% \darg{control sequence (character macro)}
-% \darg{control sequence (math class)}
-% \darg{code to execute}
-% This macro expands to |#4|
-% if any of its arguments are contained in \cmd\l_@@_char_range_seq.
-% This list can contain either character ranges (for checking with |#1|) or control sequences.
-% These latter can either be the command name of a specific character, \emph{or} the math
-% type of one (\eg, \cmd\mathbin).
-%
-% Character ranges are passed to \cs{@@_if_char_spec:nNNT}, which accepts input in the form shown in \tabref{ranges}.
-%
-% \begin{table}[htbp]
-% \centering
-% \topcaption{Ranges accepted by \cs{@@_if_char_spec:nNNT}.}
-% \label{tab:ranges}
-% \begin{tabular}{>{\ttfamily}cc}
-% \textrm{Input} & Range \\
-% \hline
-% x & $r=x$ \\
-% x- & $r\geq x$ \\
-% -y & $r\leq y$ \\
-% x-y & $x \leq r \leq y$ \\
-% \end{tabular}
-% \end{table}
-%
-% We have three tests, performed sequentially in order of execution time.
-% Any test finding a match jumps directly to the end.
-% \begin{macrocode}
-\cs_new:Nn \@@_if_char_spec:nNNT
- {
- % math class:
- \seq_if_in:NnT \l_@@_mclass_range_seq {#3}
- { \use_none_delimit_by_q_nil:w }
-
- % command name:
- \seq_if_in:NnT \l_@@_cmd_range_seq {#2}
- { \use_none_delimit_by_q_nil:w }
-
- % character slot:
- \seq_map_inline:Nn \l_@@_char_range_seq
- {
- \@@_int_if_slot_in_range:nnT {#1} {##1}
- { \seq_map_break:n { \use_none_delimit_by_q_nil:w } }
- }
-
- % the following expands to nil if no match was found:
- \use_none:nnn
- \q_nil
- \use:n
- {
- \clist_put_right:Nx \l_@@_char_nrange_clist { \int_eval:n {#1} }
- #4
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_int_if_slot_in_range:nnT}
-% A `numrange' is like |-2,5-8,12,17-| (can be unsorted).
-%
-% Four cases, four argument types:
-% \begin{Verbatim}
-% input #2 #3 #4
-% "1 " [ 1] - [qn] - [ ] qs
-% "1- " [ 1] - [ ] - [qn-] qs
-% " -3" [ ] - [ 3] - [qn-] qs
-% "1-3" [ 1] - [ 3] - [qn-] qs
-% \end{Verbatim}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_int_if_slot_in_range:nnT
- { \@@_numrange_parse:nwT {#1} #2 - \q_nil - \q_stop {#3} }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_set:Npn \@@_numrange_parse:nwT #1 #2 - #3 - #4 \q_stop #5
- {
- \tl_if_empty:nTF {#4} { \int_compare:nT {#1=#2} {#5} }
- {
- \tl_if_empty:nTF {#3} { \int_compare:nT {#1>=#2} {#5} }
- {
- \tl_if_empty:nTF {#2} { \int_compare:nT {#1<=#3} {#5} }
- {
- \int_compare:nT {#1>=#2} { \int_compare:nT {#1<=#3} {#5} }
- } } }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-%</package&(XE|LU)>
-% \end{macrocode}
-%
-\endinput
Deleted: trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-fontparam.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-fontparam.dtx 2017-11-18 01:22:09 UTC (rev 45844)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-fontparam.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -1,327 +0,0 @@
-
-% \section{\DTXCURR --- Common interface for font parameters}
-%
-% \begin{macrocode}
-%<*package&(XE|LU)>
-% \end{macrocode}
-%
-% \XeTeX\ and \LuaTeX\ have different interfaces for math font parameters.
-% We use \LuaTeX’s interface because it’s much better, but rename the primitives to be more \LaTeX3-like.
-% There are getter and setter commands for each font parameter.
-% The names of the parameters is derived from the \LuaTeX\ names, with underscores inserted between words.
-% For every parameter \cs{Umath\meta{\LuaTeX\ name}}, we define an expandable getter command \cs{@@_\meta{\LaTeX3 name}:N} and a protected setter command \cs{@@_set_\meta{\LaTeX3 name}:Nn}.
-% The getter command takes one of the style primitives (\cs{displaystyle} etc.)\ and expands to the font parameter, which is a \meta{dimension}.
-% The setter command takes a style primitive and a dimension expression, which is parsed with \cs{dim_eval:n}.
-%
-% Often, the mapping between font dimensions and font parameters is bijective, but there are cases which require special attention:
-% \begin{itemize}
-% \item Some parameters map to different dimensions in display and non-display styles.
-% \item Likewise, one parameter maps to different dimensions in non-cramped and cramped styles.
-% \item There are a few parameters for which \XeTeX\ doesn’t seem to provide \cs{fontdimen}s; in this case the getter and setter commands are left undefined.
-% \end{itemize}
-%
-% \paragraph{Cramped style tokens}
-% \LuaTeX\ has \cs{crampeddisplaystyle} etc.,\ but they are loaded as \cs{luatexcrampeddisplaystyle} etc.\ by the \pkg{luatextra} package.
-% \XeTeX, however, doesn’t have these primitives, and their syntax cannot really be emulated.
-% Nevertheless, we define these commands as quarks, so they can be used as arguments to the font parameter commands (but nowhere else).
-% Making these commands available is necessary because we need to make a distinction between cramped and non-cramped styles for one font parameter.
-%
-% \begin{macro}{\@@_new_cramped_style:N}
-% \darg{command}
-% Define \meta{command} as a new cramped style switch.
-% For \LuaTeX, simply rename the correspronding primitive if it is not
-% already defined.
-% For \XeTeX, define \meta{command} as a new quark.
-% \begin{macrocode}
-\cs_new_protected_nopar:Nn \@@_new_cramped_style:N
-%<XE> { \quark_new:N #1 }
-%<LU> {
-%<LU> \cs_if_exist:NF #1
-%<LU> { \cs_new_eq:Nc #1 { luatex \cs_to_str:N #1 } }
-%<LU> }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\crampeddisplaystyle}
-% \begin{macro}{\crampedtextstyle}
-% \begin{macro}{\crampedscriptstyle}
-% \begin{macro}{\crampedscriptscriptstyle}
-% The cramped style commands.
-% \begin{macrocode}
-\@@_new_cramped_style:N \crampeddisplaystyle
-\@@_new_cramped_style:N \crampedtextstyle
-\@@_new_cramped_style:N \crampedscriptstyle
-\@@_new_cramped_style:N \crampedscriptscriptstyle
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \paragraph{Font dimension mapping}
-% Font parameters may differ between the styles.
-% \LuaTeX\ accounts for this by having the parameter primitives take a style token argument.
-% To replicate this behavior in \XeTeX, we have to map style tokens to specific combinations of font dimension numbers and math fonts (\cs{textfont} etc.).
-%
-% \begin{macro}{\@@_font_dimen:Nnnnn}
-% \darg{style token}
-% \darg{font dimen for display style}
-% \darg{font dimen for cramped display style}
-% \darg{font dimen for non-display styles}
-% \darg{font dimen for cramped non-display styles}
-% Map math style to \XeTeX\ math font dimension.
-% \meta{style token} must be one of the style switches (\cs{displaystyle}, \cs{crampeddisplaystyle}, \dots).
-% The other parameters are integer constants referring to font dimension numbers.
-% The macro expands to a dimension which contains the appropriate font dimension.
-% \begin{macrocode}
-%<*XE>
- \cs_new_nopar:Npn \@@_font_dimen:Nnnnn #1 #2 #3 #4 #5 {
- \fontdimen
- \cs_if_eq:NNTF #1 \displaystyle {
- #2 \textfont
- } {
- \cs_if_eq:NNTF #1 \crampeddisplaystyle {
- #3 \textfont
- } {
- \cs_if_eq:NNTF #1 \textstyle {
- #4 \textfont
- } {
- \cs_if_eq:NNTF #1 \crampedtextstyle {
- #5 \textfont
- } {
- \cs_if_eq:NNTF #1 \scriptstyle {
- #4 \scriptfont
- } {
- \cs_if_eq:NNTF #1 \crampedscriptstyle {
- #5 \scriptfont
- } {
- \cs_if_eq:NNTF #1 \scriptscriptstyle {
- #4 \scriptscriptfont
- } {
-% \end{macrocode}
-% Should we check here if the style is invalid?
-% \begin{macrocode}
- #5 \scriptscriptfont
- }
- }
- }
- }
- }
- }
- }
-% \end{macrocode}
-% Which family to use?
-% \begin{macrocode}
- \c_two
- }
-%</XE>
-% \end{macrocode}
-% \end{macro}
-%
-% \paragraph{Font parameters}
-% This paragraph contains macros for defining the font parameter interface, as well as the definition for all font parameters known to \LuaTeX.
-%
-% \begin{macro}{\@@_font_param:nnnnn}
-% \darg{name}
-% \darg{font dimension for non-cramped display style}
-% \darg{font dimension for cramped display style}
-% \darg{font dimension for non-cramped non-display styles}
-% \darg{font dimension for cramped non-display styles}
-% This macro defines getter and setter functions for the font parameter \meta{name}.
-% The \LuaTeX\ font parameter name is produced by removing all underscores and prefixing the result with |Umath|.
-% The \XeTeX\ font dimension numbers must be integer constants.
-% \begin{macrocode}
-\cs_new_protected_nopar:Nn \@@_font_param:nnnnn
-%<*XE>
-{
- \@@_font_param_aux:ccnnnn { @@_ #1 :N } { @@_set_ #1 :Nn }
- { #2 } { #3 } { #4 } { #5 }
-}
-%</XE>
-%<*LU>
-{
- \tl_set:Nn \l_@@_tmpa_tl { #1 }
- \tl_remove_all:Nn \l_@@_tmpa_tl { _ }
- \@@_font_param_aux:ccc { @@_ #1 :N } { @@_set_ #1 :Nn }
- { Umath \l_@@_tmpa_tl }
-}
-%</LU>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_font_param:nnn}
-% \darg{name}
-% \darg{font dimension for display style}
-% \darg{font dimension for non-display styles}
-% This macro defines getter and setter functions for the font parameter \meta{name}.
-% The \LuaTeX\ font parameter name is produced by removing all underscores and prefixing the result with |Umath|.
-% The \XeTeX\ font dimension numbers must be integer constants.
-% \begin{macrocode}
-\cs_new_protected_nopar:Nn \@@_font_param:nnn
- {
- \@@_font_param:nnnnn { #1 } { #2 } { #2 } { #3 } { #3 }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_font_param:nn}
-% \darg{name}
-% \darg{font dimension}
-% This macro defines getter and setter functions for the font parameter \meta{name}.
-% The \LuaTeX\ font parameter name is produced by removing all underscores and prefixing the result with |Umath|.
-% The \XeTeX\ font dimension number must be an integer constant.
-% \begin{macrocode}
-\cs_new_protected_nopar:Nn \@@_font_param:nn
- {
- \@@_font_param:nnnnn { #1 } { #2 } { #2 } { #2 } { #2 }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_font_param:n}
-% \darg{name}
-% This macro defines getter and setter functions for the font parameter \meta{name}, which is considered unavailable in \XeTeX\@.
-% The \LuaTeX\ font parameter name is produced by removing all underscores and prefixing the result with |Umath|.
-% \begin{macrocode}
-\cs_new_protected_nopar:Nn \@@_font_param:n
-%<XE> { }
-%<LU> { \@@_font_param:nnnnn { #1 } { 0 } { 0 } { 0 } { 0 } }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_font_param_aux:NNnnnn}
-% \begin{macro}{\@@_font_param_aux:NNN}
-% Auxiliary macros for generating font parameter accessor macros.
-% \begin{macrocode}
-%<*XE>
-\cs_new_protected_nopar:Nn \@@_font_param_aux:NNnnnn
- {
- \cs_new_nopar:Npn #1 ##1
- {
- \@@_font_dimen:Nnnnn ##1 { #3 } { #4 } { #5 } { #6 }
- }
- \cs_new_protected_nopar:Npn #2 ##1 ##2
- {
- #1 ##1 \dim_eval:n { ##2 }
- }
- }
-\cs_generate_variant:Nn \@@_font_param_aux:NNnnnn { cc }
-%</XE>
-%<*LU>
-\cs_new_protected_nopar:Nn \@@_font_param_aux:NNN
- {
- \cs_new_nopar:Npn #1 ##1
- {
- #3 ##1
- }
- \cs_new_protected_nopar:Npn #2 ##1 ##2
- {
- #3 ##1 \dim_eval:n { ##2 }
- }
- }
-\cs_generate_variant:Nn \@@_font_param_aux:NNN { ccc }
-%</LU>
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% Now all font parameters that are listed in the \LuaTeX\ reference follow.
-% \begin{macrocode}
-\@@_font_param:nn { axis } { 15 }
-\@@_font_param:nn { operator_size } { 13 }
-\@@_font_param:n { fraction_del_size }
-\@@_font_param:nnn { fraction_denom_down } { 45 } { 44 }
-\@@_font_param:nnn { fraction_denom_vgap } { 50 } { 49 }
-\@@_font_param:nnn { fraction_num_up } { 43 } { 42 }
-\@@_font_param:nnn { fraction_num_vgap } { 47 } { 46 }
-\@@_font_param:nn { fraction_rule } { 48 }
-\@@_font_param:nn { limit_above_bgap } { 29 }
-\@@_font_param:n { limit_above_kern }
-\@@_font_param:nn { limit_above_vgap } { 28 }
-\@@_font_param:nn { limit_below_bgap } { 31 }
-\@@_font_param:n { limit_below_kern }
-\@@_font_param:nn { limit_below_vgap } { 30 }
-\@@_font_param:nn { over_delimiter_vgap } { 41 }
-\@@_font_param:nn { over_delimiter_bgap } { 38 }
-\@@_font_param:nn { under_delimiter_vgap } { 40 }
-\@@_font_param:nn { under_delimiter_bgap } { 39 }
-\@@_font_param:nn { overbar_kern } { 55 }
-\@@_font_param:nn { overbar_rule } { 54 }
-\@@_font_param:nn { overbar_vgap } { 53 }
-\@@_font_param:n { quad }
-\@@_font_param:nn { radical_kern } { 62 }
-\@@_font_param:nn { radical_rule } { 61 }
-\@@_font_param:nnn { radical_vgap } { 60 } { 59 }
-\@@_font_param:nn { radical_degree_before } { 63 }
-\@@_font_param:nn { radical_degree_after } { 64 }
-\@@_font_param:nn { radical_degree_raise } { 65 }
-\@@_font_param:nn { space_after_script } { 27 }
-\@@_font_param:nnn { stack_denom_down } { 35 } { 34 }
-\@@_font_param:nnn { stack_num_up } { 33 } { 32 }
-\@@_font_param:nnn { stack_vgap } { 37 } { 36 }
-\@@_font_param:nn { sub_shift_down } { 18 }
-\@@_font_param:nn { sub_shift_drop } { 20 }
-\@@_font_param:n { subsup_shift_down }
-\@@_font_param:nn { sub_top_max } { 19 }
-\@@_font_param:nn { subsup_vgap } { 25 }
-\@@_font_param:nn { sup_bottom_min } { 23 }
-\@@_font_param:nn { sup_shift_drop } { 24 }
-\@@_font_param:nnnnn { sup_shift_up } { 21 } { 22 } { 21 } { 22 }
-\@@_font_param:nn { supsub_bottom_max } { 26 }
-\@@_font_param:nn { underbar_kern } { 58 }
-\@@_font_param:nn { underbar_rule } { 57 }
-\@@_font_param:nn { underbar_vgap } { 56 }
-\@@_font_param:n { connector_overlap_min }
-% \end{macrocode}
-%
-% \subsection{Historical commands}
-%
-% TODO: maybe no longer necessary?
-%
-% \begin{macro}{\@@_fontdimen_to_percent:nn}
-% \begin{macro}{\@@_fontdimen_to_scale:nn}
-% \darg{Font dimen number}
-% \darg{Font `variable'}
-% \cmd\fontdimen s |10|, |11|, and |65| aren't actually dimensions, they're percentage values given in units of |sp|.
-% \cs{@@_fontdimen_to_percent:nn} takes a font dimension number and outputs the decimal value of the associated parameter.
-% \cs{@@_fontdimen_to_scale:nn} returns a dimension correspond to the current
-% font size relative proportion based on that percentage.
-% \begin{macrocode}
-\cs_new:Nn \@@_fontdimen_to_percent:nn
- {
- \fp_eval:n { \dim_to_decimal:n { \fontdimen #1 #2 } * 65536 / 100 }
- }
-\cs_new:Nn \@@_fontdimen_to_scale:nn
- {
- \fp_eval:n {\@@_fontdimen_to_percent:nn {#1} {#2} * \f at size } pt
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@@_mathstyle_scale:Nnn}
-% \darg{A math style (\cs{scriptstyle}, say)}
-% \darg{Macro that takes a non-delimited length argument (like \cmd\kern)}
-% \darg{Length control sequence to be scaled according to the math style}
-% This macro is used to scale the lengths reported by \cmd\fontdimen\ according to the scale factor for script- and scriptscript-size objects.
-% \begin{macrocode}
-\cs_new:Nn \@@_mathstyle_scale:Nnn
- {
- \ifx#1\scriptstyle
- #2 \@@_fontdimen_to_percent:nn {10} \l_@@_font #3
- \else
- \ifx#1\scriptscriptstyle
- #2 \@@_fontdimen_to_percent:nn {11} \l_@@_font #3
- \else
- #2 #3
- \fi
- \fi
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-%</package&(XE|LU)>
-% \end{macrocode}
-%
-\endinput
Deleted: trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-main.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-main.dtx 2017-11-18 01:22:09 UTC (rev 45844)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-main.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -1,590 +0,0 @@
-
-% \section{\DTXCURR --- The main \cs{setmathfont} macro}
-%
-% \begin{macrocode}
-%<*package&(XE|LU)>
-% \end{macrocode}
-%
-% Using a |range| including large character sets such as \cmd\mathrel,
-% \cmd\mathalpha, \etc, is \emph{very slow}!
-% I hope to improve the performance somehow.
-%
-% \begin{macro}{\setmathfont}
-% \doarg{font features (first optional argument retained for backwards compatibility)}
-% \darg{font name}
-% \doarg{font features}
-% \begin{macrocode}
-\DeclareDocumentCommand \setmathfont { O{} m O{} }
- {
- \@@_setmathfont:nn {#1,#3} {#2}
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_set:Nn \@@_setmathfont:nn
- {
- \tl_set:Nn \l_@@_fontname_tl {#2}
- \@@_init:
-% \end{macrocode}
-% Grab the current size information:
-% (is this robust enough? Maybe it should be preceded by \cmd\normalsize).
-% The macro \cmd\S@\meta{size}
-% contains the definitions of the sizes used for maths letters, subscripts and subsubscripts in
-% \cmd\tf at size, \cmd\sf at size, and \cmd\ssf at size, respectively.
-% \begin{macrocode}
- \cs_if_exist:cF { S@ \f at size } { \calculate at math@sizes }
- \csname S@\f at size\endcsname
-% \end{macrocode}
-% Parse options and tell people what's going on:
-% \begin{macrocode}
- \keys_set_known:nnN {unicode-math} {#1} \l_@@_unknown_keys_clist
- \bool_if:NT \l_@@_init_bool { \@@_log:n {default-math-font} }
-% \end{macrocode}
-% Use \pkg{fontspec} to select a font to use.
-% After loading the font, we detect what sizes it recommends for scriptsize and scriptscriptsize, so after setting those values appropriately, we reload the font to take these into account.
-% \begin{macrocode}
-%<debug> \csname TIC\endcsname
- \@@_fontspec_select_font:
-%<debug> \csname TOC\endcsname
- \bool_if:nT { \l_@@_ot_math_bool && !\g_@@_mainfont_already_set_bool }
- {
- \@@_declare_math_sizes:
- \@@_fontspec_select_font:
- }
-% \end{macrocode}
-% Now define |\@@_symfont_tl| as the \LaTeX\ math font to access everything:
-% \begin{macrocode}
- \cs_if_exist:cF { sym \@@_symfont_tl }
- {
- \DeclareSymbolFont{\@@_symfont_tl}
- {\encodingdefault}{\l_@@_family_tl}{\mddefault}{\updefault}
- }
- \SetSymbolFont{\@@_symfont_tl}{\l_@@_mversion_tl}
- {\encodingdefault}{\l_@@_family_tl}{\mddefault}{\updefault}
-% \end{macrocode}
-% Set the bold math version.
-% \begin{macrocode}
- \str_if_eq_x:nnT {\l_@@_mversion_tl} {normal}
- {
- \SetSymbolFont{\@@_symfont_tl}{bold}
- {\encodingdefault}{\l_@@_family_tl}{\bfdefault}{\updefault}
- }
-% \end{macrocode}
-% Declare the math sizes (i.e., scaling of superscripts) for the specific
-% values for this font,
-% and set defaults for math fams two and three for legacy compatibility:
-% \begin{macrocode}
- \bool_if:nT { \l_@@_ot_math_bool && !\g_@@_mainfont_already_set_bool }
- {
- \bool_set_true:N \g_@@_mainfont_already_set_bool
- \@@_setup_legacy_fam_two:
- \@@_setup_legacy_fam_three:
- }
-% \end{macrocode}
-% And now we input every single maths char.
-% \begin{macrocode}
-%<debug> \csname TIC\endcsname
- \@@_input_math_symbol_table:
-%<debug> \csname TOC\endcsname
-% \end{macrocode}
-% Finally,
-% \begin{itemize}
-% \item Remap symbols that don't take their natural mathcode
-% \item Activate any symbols that need to be math-active
-% \item Enable wide/narrow accents
-% \item Assign delimiter codes for symbols that need to grow
-% \item Setup the maths alphabets (\cs{mathbf} etc.).
-% This is an extensive part of the code; see Section~\ref{sec:mathmap}.
-% \item Setup negations, which are handled on an ad hoc basis; see Section~\ref{sec:negations}.
-% \end{itemize}
-% \begin{macrocode}
- \@@_remap_symbols:
- \@@_setup_mathactives:
- \@@_setup_delcodes:
-%<debug> \csname TIC\endcsname
- \@@_setup_alphabets:
-%<debug> \csname TOC\endcsname
- \@@_setup_negations:
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \paragraph{Fall-back font}
-%
-% Want to load Latin Modern Math if nothing else.
-% This needs to happen early so that all of the font-loading machinery executes before
-% the other `AtBeginDocument' code.
-% \begin{macrocode}
-\AtBeginDocument { \@@_load_lm_if_necessary: }
-\cs_new:Nn \@@_load_lm_if_necessary:
- {
- \cs_if_exist:NF \l_@@_fontname_tl
- {
- % TODO: update this when lmmath-bold.otf is released
- \setmathfont{latinmodern-math.otf}[BoldFont={latinmodern-math.otf}]
- \bool_set_false:N \g_@@_mainfont_already_set_bool
- }
- }
-% \end{macrocode}
-% Note that here we reset the `font already loaded' boolean so that a new font being set
-% will do the right thing in terms of setting up defaults.
-%
-% TODO: need a better way to do this for the general case. (Maybe a `reset' command option?)
-%
-% \begin{macro}{\@@_init:}
-% \begin{macrocode}
-\cs_new:Nn \@@_init:
- {
-% \end{macrocode}
-% \begin{itemize}
-% \item Initially assume we're using a proper OpenType font with unicode maths.
-% \begin{macrocode}
- \bool_set_true:N \l_@@_ot_math_bool
-% \end{macrocode}
-% \item Erase any conception \LaTeX\ has of previously defined math symbol fonts;
-% this allows \cmd\DeclareSymbolFont\ at any point in the document.
-% \begin{macrocode}
- \cs_set_eq:NN \glb at currsize \scan_stop:
-% \end{macrocode}
-% \item To start with, assume we're defining the font for every math symbol character.
-% \begin{macrocode}
- \bool_set_true:N \l_@@_init_bool
- \seq_clear:N \l_@@_char_range_seq
- \clist_clear:N \l_@@_char_nrange_clist
- \seq_clear:N \l_@@_mathalph_seq
- \seq_clear:N \l_@@_missing_alph_seq
-% \end{macrocode}
-% \item By default use the `normal' math version.
-% \begin{macrocode}
- \tl_set:Nn \l_@@_mversion_tl {normal}
-% \end{macrocode}
-% \item Other range initialisations.
-% \begin{macrocode}
- \tl_set:Nn \@@_symfont_tl {operators}
- \cs_set_eq:NN \_@@_sym:nnn \@@_process_symbol_noparse:nnn
- \cs_set_eq:NN \@@_set_mathalphabet_char:nnn \@@_mathmap_noparse:nnn
- \cs_set_eq:NN \@@_remap_symbol:nnn \@@_remap_symbol_noparse:nnn
- \cs_set_eq:NN \@@_maybe_init_alphabet:n \@@_init_alphabet:n
- \cs_set_eq:NN \@@_map_char_single:nn \@@_map_char_noparse:nn
- \cs_set_eq:NN \@@_assign_delcode:nn \@@_assign_delcode_noparse:nn
- \cs_set_eq:NN \@@_make_mathactive:nNN \@@_make_mathactive_noparse:nNN
-% \end{macrocode}
-% \item Define default font features for the script and scriptscript font.
-% \begin{macrocode}
- \tl_set:Nn \l_@@_script_features_tl {Style=MathScript}
- \tl_set:Nn \l_@@_sscript_features_tl {Style=MathScriptScript}
- \tl_set_eq:NN \l_@@_script_font_tl \l_@@_fontname_tl
- \tl_set_eq:NN \l_@@_sscript_font_tl \l_@@_fontname_tl
-% \end{macrocode}
-% \end{itemize}
-% \begin{macrocode}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_declare_math_sizes:}
-% Set the math sizes according to the recommended font parameters.
-% TODO: this shouldn't need to be per-engine; check out why the wrappers aren't used.
-% \begin{macrocode}
-\cs_new:Nn \@@_declare_math_sizes:
- {
-%<*LU>
- \fp_compare:nF { \@@_script_style_size:n {ScriptPercentScaleDown} == 0 }
- {
- \DeclareMathSizes { \f at size } { \f at size }
- { \@@_script_style_size:n {ScriptPercentScaleDown} }
- { \@@_script_style_size:n {ScriptScriptPercentScaleDown} }
- }
-%</LU>
-%<*XE>
- \dim_compare:nF { \fontdimen 10 \l_@@_font == 0pt }
- {
- \DeclareMathSizes { \f at size } { \f at size }
- { \@@_fontdimen_to_scale:nn {10} {\l_@@_font} }
- { \@@_fontdimen_to_scale:nn {11} {\l_@@_font} }
- }
-%</XE>
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_script_style_size:n}
-% Determine script- and scriptscriptstyle sizes using luaotfload:
-% \begin{macrocode}
-%<*LU>
-\cs_new:Nn \@@_script_style_size:n
- {
- \fp_eval:n {\directlua{tex.sprint(luaotfload.aux.get_math_dimension("l_@@_font","#1"))} * \f at size / 100 }
- }
-%</LU>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_setup_legacy_fam_two:}
-% \TeX\ won't load the same font twice at the same scale, so we need to magnify this one by an imperceptable amount.
-% \begin{macrocode}
-\cs_new:Nn \@@_setup_legacy_fam_two:
- {
- \fontspec_set_family:Nxn \l_@@_family_tl
- {
- \l_@@_font_keyval_tl,
- Scale=1.00001,
- FontAdjustment =
- {
- \fontdimen8\font= \@@_get_fontparam:nn {43} {FractionNumeratorDisplayStyleShiftUp}\relax
- \fontdimen9\font= \@@_get_fontparam:nn {42} {FractionNumeratorShiftUp}\relax
- \fontdimen10\font=\@@_get_fontparam:nn {32} {StackTopShiftUp}\relax
- \fontdimen11\font=\@@_get_fontparam:nn {45} {FractionDenominatorDisplayStyleShiftDown}\relax
- \fontdimen12\font=\@@_get_fontparam:nn {44} {FractionDenominatorShiftDown}\relax
- \fontdimen13\font=\@@_get_fontparam:nn {21} {SuperscriptShiftUp}\relax
- \fontdimen14\font=\@@_get_fontparam:nn {21} {SuperscriptShiftUp}\relax
- \fontdimen15\font=\@@_get_fontparam:nn {22} {SuperscriptShiftUpCramped}\relax
- \fontdimen16\font=\@@_get_fontparam:nn {18} {SubscriptShiftDown}\relax
- \fontdimen17\font=\@@_get_fontparam:nn {18} {SubscriptShiftDownWithSuperscript}\relax
- \fontdimen18\font=\@@_get_fontparam:nn {24} {SuperscriptBaselineDropMax}\relax
- \fontdimen19\font=\@@_get_fontparam:nn {20} {SubscriptBaselineDropMin}\relax
- \fontdimen20\font=0pt\relax % delim1 = FractionDelimiterDisplaySize
- \fontdimen21\font=0pt\relax % delim2 = FractionDelimiterSize
- \fontdimen22\font=\@@_get_fontparam:nn {15} {AxisHeight}\relax
- }
- } {\l_@@_fontname_tl}
-
- \SetSymbolFont{symbols}{\l_@@_mversion_tl}
- {\encodingdefault}{\l_@@_family_tl}{\mddefault}{\updefault}
-
- \str_if_eq_x:nnT {\l_@@_mversion_tl} {normal}
- {
- \SetSymbolFont{symbols}{bold}
- {\encodingdefault}{\l_@@_family_tl}{\bfdefault}{\updefault}
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_setup_legacy_fam_three:}
-% Similarly, this font is shrunk by an imperceptable amount for \TeX\ to load it again.
-% \begin{macrocode}
-\cs_new:Nn \@@_setup_legacy_fam_three:
- {
- \fontspec_set_family:Nxn \l_@@_family_tl
- {
- \l_@@_font_keyval_tl,
- Scale=0.99999,
- FontAdjustment={
- \fontdimen8\font= \@@_get_fontparam:nn {48} {FractionRuleThickness}\relax
- \fontdimen9\font= \@@_get_fontparam:nn {28} {UpperLimitGapMin}\relax
- \fontdimen10\font=\@@_get_fontparam:nn {30} {LowerLimitGapMin}\relax
- \fontdimen11\font=\@@_get_fontparam:nn {29} {UpperLimitBaselineRiseMin}\relax
- \fontdimen12\font=\@@_get_fontparam:nn {31} {LowerLimitBaselineDropMin}\relax
- \fontdimen13\font=0pt\relax
- }
- } {\l_@@_fontname_tl}
-
- \SetSymbolFont{largesymbols}{\l_@@_mversion_tl}
- {\encodingdefault}{\l_@@_family_tl}{\mddefault}{\updefault}
-
- \str_if_eq_x:nnT {\l_@@_mversion_tl} {normal}
- {
- \SetSymbolFont{largesymbols}{bold}
- {\encodingdefault}{\l_@@_family_tl}{\bfdefault}{\updefault}
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_get_fontparam:nn
- {
-%<XE> \the\fontdimen#1\l_@@_font\relax
-%<LU> \directlua{fontspec.mathfontdimen("l_@@_font","#2")}
- }
-% \end{macrocode}
-%
-% \begin{macro}{\@@_fontspec_select_font:}
-% Select the font with \cs{fontspec} and define \cs{l_@@_font} from it.
-% \begin{macrocode}
-\cs_new:Nn \@@_fontspec_select_font:
- {
- \tl_set:Nx \l_@@_font_keyval_tl {
-%<LU> Renderer = Basic,
- BoldItalicFont = {}, ItalicFont = {},
- Script = Math,
- SizeFeatures =
- {
- {
- Size = \tf at size-
- } ,
- {
- Size = \sf at size-\tf at size ,
- Font = \l_@@_script_font_tl ,
- \l_@@_script_features_tl
- } ,
- {
- Size = -\sf at size ,
- Font = \l_@@_sscript_font_tl ,
- \l_@@_sscript_features_tl
- }
- } ,
- \l_@@_unknown_keys_clist
- }
- \fontspec_set_fontface:NNxn \l_@@_font \l_@@_family_tl
- {\l_@@_font_keyval_tl} {\l_@@_fontname_tl}
-% \end{macrocode}
-% Check whether we're using a real maths font:
-% \begin{macrocode}
- \group_begin:
- \fontfamily{\l_@@_family_tl}\selectfont
- \fontspec_if_script:nF {math} {\bool_gset_false:N \l_@@_ot_math_bool}
- \group_end:
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{Functions for setting up symbols with mathcodes}
-% \seclabel{mathsymbol}
-%
-% \begin{macro}{\@@_process_symbol_noparse:nnn}
-% \begin{macro}{\@@_process_symbol_parse:nnn}
-% If the \feat{range} font feature has been used, then only
-% a subset of the Unicode glyphs are to be defined.
-% See \secref{rangeproc} for the code that enables this.
-% \begin{macrocode}
-\cs_set:Nn \@@_process_symbol_noparse:nnn
- {
- \@@_set_mathsymbol:nNNn {\@@_symfont_tl} #2 #3 {#1}
- }
-% \end{macrocode}
-% \begin{macrocode}
-\cs_set:Nn \@@_process_symbol_parse:nnn
- {
- \@@_if_char_spec:nNNT {#1} {#2} {#3}
- {
- \@@_process_symbol_noparse:nnn {#1} {#2} {#3}
- }
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@@_remap_symbols:}
-% \begin{macro}{\@@_remap_symbol_noparse:nnn}
-% \begin{macro}{\@@_remap_symbol_parse:nnn}
-% This function is used to define the mathcodes for those chars which should
-% be mapped to a different glyph than themselves.
-% \begin{macrocode}
-\cs_new:Npn \@@_remap_symbols:
- {
- \@@_remap_symbol:nnn{`\-}{\mathbin}{"02212}% hyphen to minus
- \@@_remap_symbol:nnn{`\*}{\mathbin}{"02217}% text asterisk to "centred asterisk"
- \bool_if:NF \g_@@_literal_colon_bool
- {
- \@@_remap_symbol:nnn{`\:}{\mathrel}{"02236}% colon to ratio (i.e., punct to rel)
- }
- }
-% \end{macrocode}
-% \end{macro}
-% Where |\@@_remap_symbol:nnn| is defined to be one of these two, depending
-% on the range setup:
-% \begin{macrocode}
-\cs_new:Nn \@@_remap_symbol_parse:nnn
- {
- \@@_if_char_spec:nNNT {#3} {\@nil} {#2}
- { \@@_remap_symbol_noparse:nnn {#1} {#2} {#3} }
- }
-\cs_new:Nn \@@_remap_symbol_noparse:nnn
- {
- \clist_map_inline:nn {#1}
- { \@@_set_mathcode:nnnn {##1} {#2} {\@@_symfont_tl} {#3} }
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \subsection{Active math characters}
-%
-% There are more math active chars later in the subscript/superscript section.
-% But they don't need to be able to be typeset directly.
-%
-% \begin{macro}{\@@_setup_mathactives:}
-% \begin{macrocode}
-\cs_new:Npn \@@_setup_mathactives:
- {
- \@@_make_mathactive:nNN {"2032} \@@_prime_single_mchar \mathord
- \@@_make_mathactive:nNN {"2033} \@@_prime_double_mchar \mathord
- \@@_make_mathactive:nNN {"2034} \@@_prime_triple_mchar \mathord
- \@@_make_mathactive:nNN {"2057} \@@_prime_quad_mchar \mathord
- \@@_make_mathactive:nNN {"2035} \@@_backprime_single_mchar \mathord
- \@@_make_mathactive:nNN {"2036} \@@_backprime_double_mchar \mathord
- \@@_make_mathactive:nNN {"2037} \@@_backprime_triple_mchar \mathord
- \@@_make_mathactive:nNN {`\'} \mathstraightquote \mathord
- \@@_make_mathactive:nNN {`\`} \mathbacktick \mathord
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_make_mathactive:nNN}
-% Makes |#1| a mathactive char, and gives cs |#2| the meaning of mathchar |#1|
-% with class |#3|.
-% You are responsible for giving active |#1| a particular meaning!
-% \begin{macrocode}
-\cs_new:Nn \@@_make_mathactive_parse:nNN
- {
- \@@_if_char_spec:nNNT {#1} #2 #3
- { \@@_make_mathactive_noparse:nNN {#1} #2 #3 }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_make_mathactive_noparse:nNN
- {
- \@@_set_mathchar:NNnn #2 #3 {\@@_symfont_tl} {#1}
- \@@_char_gmake_mathactive:n {#1}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{Delimiter codes}
-%
-% \begin{macro}{\@@_assign_delcode:nn}
-% \begin{macrocode}
-\cs_new:Nn \@@_assign_delcode_noparse:nn
- {
- \@@_set_delcode:nnn \@@_symfont_tl {#1} {#2}
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_assign_delcode_parse:nn
- {
- \@@_if_char_spec:nNNT {#2} {\@nil} {\@nil}
- {
- \@@_assign_delcode_noparse:nn {#1} {#2}
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_assign_delcode:n}
-% Shorthand.
-% \begin{macrocode}
-\cs_new:Nn \@@_assign_delcode:n { \@@_assign_delcode:nn {#1} {#1} }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_setup_delcodes:}
-% Some symbols that aren't mathopen/mathclose still need to have delimiter codes assigned.
-% The list of vertical arrows may be incomplete.
-% On the other hand, many fonts won't support them all being stretchy.
-% And some of them are probably not meant to stretch, either. But adding them here doesn't hurt.
-% \begin{macrocode}
-\cs_new:Npn \@@_setup_delcodes:
- {
- % ensure \left. and \right. work:
- \@@_set_delcode:nnn \@@_symfont_tl {`\.} {\c_zero}
- % this is forcefully done to fix a bug -- indicates a larger problem!
-
- \@@_assign_delcode:nn {`\/} {\g_@@_slash_delimiter_usv}
- \@@_assign_delcode:nn {"2044} {\g_@@_slash_delimiter_usv} % fracslash
- \@@_assign_delcode:nn {"2215} {\g_@@_slash_delimiter_usv} % divslash
- \@@_assign_delcode:n {"005C} % backslash
- \@@_assign_delcode:nn {`\<} {"27E8} % angle brackets with ascii notation
- \@@_assign_delcode:nn {`\>} {"27E9} % angle brackets with ascii notation
- \@@_assign_delcode:n {"2191} % up arrow
- \@@_assign_delcode:n {"2193} % down arrow
- \@@_assign_delcode:n {"2195} % updown arrow
- \@@_assign_delcode:n {"219F} % up arrow twohead
- \@@_assign_delcode:n {"21A1} % down arrow twohead
- \@@_assign_delcode:n {"21A5} % up arrow from bar
- \@@_assign_delcode:n {"21A7} % down arrow from bar
- \@@_assign_delcode:n {"21A8} % updown arrow from bar
- \@@_assign_delcode:n {"21BE} % up harpoon right
- \@@_assign_delcode:n {"21BF} % up harpoon left
- \@@_assign_delcode:n {"21C2} % down harpoon right
- \@@_assign_delcode:n {"21C3} % down harpoon left
- \@@_assign_delcode:n {"21C5} % arrows up down
- \@@_assign_delcode:n {"21F5} % arrows down up
- \@@_assign_delcode:n {"21C8} % arrows up up
- \@@_assign_delcode:n {"21CA} % arrows down down
- \@@_assign_delcode:n {"21D1} % double up arrow
- \@@_assign_delcode:n {"21D3} % double down arrow
- \@@_assign_delcode:n {"21D5} % double updown arrow
- \@@_assign_delcode:n {"21DE} % up arrow double stroke
- \@@_assign_delcode:n {"21DF} % down arrow double stroke
- \@@_assign_delcode:n {"21E1} % up arrow dashed
- \@@_assign_delcode:n {"21E3} % down arrow dashed
- \@@_assign_delcode:n {"21E7} % up white arrow
- \@@_assign_delcode:n {"21E9} % down white arrow
- \@@_assign_delcode:n {"21EA} % up white arrow from bar
- \@@_assign_delcode:n {"21F3} % updown white arrow
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{(Big) operators}
-%
-% The engine does what is necessary to deal with big operators for us
-% automatically with \cmd\Umathchardef.
-% However, the limits aren't set automatically; that is, we want to define,
-% a la Plain \TeX\ \etc, |\def\int{\intop\nolimits}|, so there needs to be a
-% transformation from \cmd\int\ to \cmd\intop\ during the expansion of
-% \cmd\_@@_sym:nnn\ in the appropriate contexts.
-%
-% \begin{macro}{\l_@@_nolimits_tl}
-% This macro is a sequence containing those maths operators that require a
-% \cmd\nolimits\ suffix.
-% This list is used when processing |unicode-math-table.tex| to define such
-% commands automatically (see the macro \cs{@@_set_mathsymbol:nNNn}).
-% I've chosen essentially just the operators that look like integrals;
-% hopefully a better mathematician can help me out here.
-% I've a feeling that it's more useful \emph{not} to include the multiple
-% integrals such as $\iiiint$, but that might be a matter of preference.
-% \begin{macrocode}
-\tl_set:Nn \l_@@_nolimits_tl
- {
- \int\iint\iiint\iiiint\oint\oiint\oiiint
- \intclockwise\varointclockwise\ointctrclockwise\sumint
- \intbar\intBar\fint\cirfnint\awint\rppolint
- \scpolint\npolint\pointint\sqint\intlarhk\intx
- \intcap\intcup\upint\lowint
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\addnolimits}
-% This macro appends material to the macro containing the list of operators
-% that don't take limits.
-% \begin{macrocode}
-\DeclareDocumentCommand \addnolimits {m}
- {
- \tl_put_right:Nn \l_@@_nolimits_tl {#1}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\removenolimits}
-% Can this macro be given a better name?
-% It removes an item from the nolimits list.
-% \begin{macrocode}
-\DeclareDocumentCommand \removenolimits {m}
- {
- \tl_remove_all:Nn \l_@@_nolimits_tl {#1}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{Radicals}
-%
-% \begin{macro}{\l_@@_radicals_tl}
-% The radicals are organised in \cs{@@_set_mathsymbol:nNNn}.
-% We organise radicals in the same way as nolimits-operators.
-% (\cs{cuberoot} and \cs{fourthroot}, don't seem to behave as proper radicals.)
-% \begin{macrocode}
-\tl_set:Nn \l_@@_radicals_tl {\sqrt \longdivision}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-%</package&(XE|LU)>
-% \end{macrocode}
-%
-\endinput
Deleted: trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-mathmap.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-mathmap.dtx 2017-11-18 01:22:09 UTC (rev 45844)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-mathmap.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -1,720 +0,0 @@
-
-% \section{\DTXCURR --- Mapping in maths alphabets}
-% \label{sec:mathmap}
-%
-% \begin{macrocode}
-%<*package&(XE|LU)>
-% \end{macrocode}
-%
-% Switching to a different style of alphabetic symbols was traditionally performed with
-% commands like \cmd\mathbf, which literally changes fonts to access alternate symbols.
-% This is not as simple with Unicode fonts.
-%
-% In traditional \TeX{} maths font setups, you simply switch between different `families' (\cmd\fam), which is analogous to changing from one font to another---a symbol such as `a' will be upright in one font, bold in another, and so on.
-% In pkg{unicode-math}, a different mechanism is used to switch between styles. For every letter (start with ascii a-zA-Z and numbers to keep things simple for now), they are assigned a `mathcode' with \cmd\Umathcode\ that maps from input letter to output font glyph slot. This is done with the equivalent of
-% \begin{Verbatim}
-% \Umathcode`\a = 7 1 "1D44E\relax
-% \Umathcode`\b = 7 1 "1D44F\relax
-% \Umathcode`\c = 7 1 "1D450\relax
-% ...
-% \end{Verbatim}
-% When switching from regular letters to, say, \cmd\mathrm, we now need to execute a new mapping:
-% \begin{Verbatim}
-% \Umathcode`\a = 7 1 `\a\relax
-% \Umathcode`\b = 7 1 `\b\relax
-% \Umathcode`\c = 7 1 `\c\relax
-% ...
-% \end{Verbatim}
-% This is fairly straightforward to perform when we're defining our own commands such as \cmd\symbf\ and so on. However, this means that `classical' \TeX\ font setups will break, because with the original mapping still in place, the engine will be attempting to insert unicode maths glyphs from a standard font.
-%
-% \subsection{Hooks into \LaTeXe}
-%
-% To overcome this, we patch \cs{use at mathgroup}.
-% (An alternative is to patch \cs{extract at alph@from at version}, which constructs the \cs{mathXYZ} commands, but this method fails if the command has been defined using \cs{DeclareSymbolFontAlphabet}.)
-% As far as I can tell, this is only used inside of commands such as \cs{mathXYZ}, so this shouldn't have any major side-effects.
-%
-% \begin{macrocode}
-\cs_set:Npn \use at mathgroup #1 #2
- {
- \mode_if_math:T % <- not sure if this is really necessary since we've just checked for mmode and raised an error if not!
- {
- \math at bgroup
- \cs_if_eq:cNF {M@\f at encoding} #1 {#1}
- \@@_switchto_literal:
- \mathgroup #2 \relax
- \math at egroup
- }
- }
-% \end{macrocode}
-%
-% In LaTeX maths, the command |\operator at font| is defined that switches to the |operator| mathgroup. The classic example is the |\sin| in |$\sin{x}$|; essentially we're using |\mathrm| to typeset the upright symbols, but the syntax is |{\operator at font sin}|.
-% I thought that hooking into |\operator at font| would be hard because all other maths font selection in 2e uses |\mathrm{...}| style.
-% Then reading source2e a little more I stumbled upon:
-% \begin{macro}{\operator at font}
-% \begin{macrocode}
-\cs_set:Npn \operator at font
- {
- \@@_switchto_literal:
- \@fontswitch {} { \g_@@_operator_mathfont_tl }
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsection{Setting styles}
-%
-% Algorithm for setting alphabet fonts.
-% By default, when |range| is empty, we are in \emph{implicit} mode.
-% If |range| contains the name of the math alphabet, we are in \emph{explicit}
-% mode and do things slightly differently.
-%
-% Implicit mode:
-% \begin{itemize}
-% \item Try and set all of the alphabet shapes.
-% \item Check for the first glyph of each alphabet to detect if the font supports each
-% alphabet shape.
-% \item For alphabets that do exist, overwrite whatever's already there.
-% \item For alphabets that are not supported, \emph{do nothing}.
-% (This includes leaving the old alphabet definition in place.)
-% \end{itemize}
-%
-% Explicit mode:
-% \begin{itemize}
-% \item Only set the alphabets specified.
-% \item Check for the first glyph of the alphabet to detect if the font contains
-% the alphabet shape in the Unicode math plane.
-% \item For Unicode math alphabets, overwrite whatever's already there.
-% \item Otherwise, use the \ascii\ glyph slots instead.
-% \end{itemize}
-%
-%
-%
-% \subsection{Defining the math style macros}
-%
-% We call the different shapes that a math alphabet can be a `math style'.
-% Note that different alphabets can exist within the same math style. E.g.,
-% we call `bold' the math style |bf| and within it there are upper and lower
-% case Greek and Roman alphabets and Arabic numerals.
-%
-% \begin{macro}{\@@_prepare_mathstyle:n}
-% \darg{math style name (e.g., \texttt{it} or \texttt{bb})}
-% Define the high level math alphabet macros (\cs{mathit}, etc.) in terms of
-% unicode-math definitions. Use \cs{bgroup}/\cs{egroup} so s'scripts scan the
-% whole thing.
-%
-% The flag \cs{l_@@_mathstyle_tl} is for other applications to query the
-% current math style.
-% \begin{macrocode}
-\cs_new:Nn \@@_prepare_mathstyle:n
- {
- \seq_put_right:Nn \g_@@_mathstyles_seq {#1}
- \@@_init_alphabet:n {#1}
- \cs_set:cpn {_@@_sym_#1_aux:n}
- { \use:c {@@_switchto_#1:} \math at egroup }
- \cs_set_protected:cpx {sym#1}
- {
- \exp_not:n
- {
- \math at bgroup
- \mode_if_math:F
- {
- \egroup\expandafter
- \non at alpherr\expandafter{\csname sym#1\endcsname\space}
- }
- \tl_set:Nn \l_@@_mathstyle_tl {#1}
- }
- \exp_not:c {_@@_sym_#1_aux:n}
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\@@_init_alphabet:n}
-% \darg{math alphabet name (e.g., \texttt{it} or \texttt{bb})}
-% This macro initialises the macros used to set up a math alphabet.
-% First used when the math alphabet macro is first defined, but then used
-% later when redefining a particular maths alphabet.
-% \begin{macrocode}
-\cs_set:Nn \@@_init_alphabet:n
- {
- \@@_log:nx {alph-initialise} {#1}
- \cs_set_eq:cN {@@_switchto_#1:} \prg_do_nothing:
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{Definition of alphabets and styles}
-%
-% First of all, we break up unicode into `named ranges', such as |up|, |bb|, |sfup|, and so on, which refer to specific blocks of unicode that contain various symbols (usually alphabetical symbols).
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_new_named_range:n
- {
- \prop_new:c {g_@@_named_range_#1_prop}
- }
-\clist_set:Nn \g_@@_named_ranges_clist
- {
- up, it, tt, bfup, bfit, bb , bbit, scr, bfscr, cal, bfcal,
- frak, bffrak, sfup, sfit, bfsfup, bfsfit, bfsf
- }
-\clist_map_inline:Nn \g_@@_named_ranges_clist
- { \@@_new_named_range:n {#1} }
-% \end{macrocode}
-%
-%
-% Each alphabet style needs to be configured.
-% This happens in Section~\ref{sec:setupalphabets}.
-% \begin{macrocode}
-\cs_new:Nn \@@_new_alphabet_config:nnn
- {
- \prop_if_exist:cF {g_@@_named_range_#1_prop}
- { \@@_warning:nnn {no-named-range} {#1} {#2} }
-
- \prop_gput:cnn {g_@@_named_range_#1_prop} { alpha_tl }
- {
- \prop_item:cn {g_@@_named_range_#1_prop} { alpha_tl }
- {#2}
- }
- % Q: do I need to bother removing duplicates?
-
- \cs_new:cn { @@_config_#1_#2:n } {#3}
- }
-% \end{macrocode}
-% \begin{macrocode}
-\cs_new:Nn \@@_alphabet_config:nnn
- {
- \use:c {@@_config_#1_#2:n} {#3}
- }
-% \end{macrocode}
-% \begin{macrocode}
-\prg_new_conditional:Nnn \@@_if_alphabet_exists:nn {T,TF}
- {
- \cs_if_exist:cTF {@@_config_#1_#2:n}
- \prg_return_true: \prg_return_false:
- }
-% \end{macrocode}
-%
-% The linking between named ranges and symbol style commands happens here.
-% It's currently not using all of the machinery we're in the process of setting up above.
-% Baby steps.
-% \begin{macrocode}
-\cs_new:Nn \@@_default_mathalph:nnn
- {
- \seq_put_right:Nx \g_@@_named_ranges_seq { \tl_to_str:n {#1} }
- \seq_put_right:Nn \g_@@_default_mathalph_seq {{#1}{#2}{#3}}
- \prop_gput:cnn { g_@@_named_range_#1_prop } { default-alpha } {#2}
- }
-\@@_default_mathalph:nnn {up } {latin,Latin,greek,Greek,num,misc} {up }
-\@@_default_mathalph:nnn {it } {latin,Latin,greek,Greek,misc} {it }
-\@@_default_mathalph:nnn {bb } {latin,Latin,num,misc} {bb }
-\@@_default_mathalph:nnn {bbit } {misc} {bbit }
-\@@_default_mathalph:nnn {scr } {latin,Latin} {scr }
-\@@_default_mathalph:nnn {cal } {Latin} {scr }
-\@@_default_mathalph:nnn {bfcal } {Latin} {bfscr }
-\@@_default_mathalph:nnn {frak } {latin,Latin} {frak }
-\@@_default_mathalph:nnn {tt } {latin,Latin,num} {tt }
-\@@_default_mathalph:nnn {sfup } {latin,Latin,num} {sfup }
-\@@_default_mathalph:nnn {sfit } {latin,Latin} {sfit }
-\@@_default_mathalph:nnn {bfup } {latin,Latin,greek,Greek,num,misc} {bfup }
-\@@_default_mathalph:nnn {bfit } {latin,Latin,greek,Greek,misc} {bfit }
-\@@_default_mathalph:nnn {bfscr } {latin,Latin} {bfscr }
-\@@_default_mathalph:nnn {bffrak} {latin,Latin} {bffrak}
-\@@_default_mathalph:nnn {bfsfup} {latin,Latin,greek,Greek,num,misc} {bfsfup}
-\@@_default_mathalph:nnn {bfsfit} {latin,Latin,greek,Greek,misc} {bfsfit}
-% \end{macrocode}
-%
-% \subsubsection{Define symbol style commands}
-% Finally, all of the `symbol styles' commands are set up, which are the commands to access each of the named alphabet styles. There is not a one-to-one mapping between symbol style commands and named style ranges!
-% \begin{macrocode}
-\clist_map_inline:nn
- {
- up, it, bfup, bfit, sfup, sfit, bfsfup, bfsfit, bfsf,
- tt, bb, bbit, scr, bfscr, cal, bfcal, frak, bffrak,
- normal, literal, sf, bf,
- }
- { \@@_prepare_mathstyle:n {#1} }
-% \end{macrocode}
-%
-%
-% \subsubsection{New names for legacy textmath alphabet selection}
-% In case a package option overwrites, say, \cs{mathbf} with \cs{symbf}.
-% \begin{macrocode}
-\clist_map_inline:nn
- { rm, it, bf, sf, tt }
- { \cs_set_eq:cc { mathtext #1 } { math #1 } }
-% \end{macrocode}
-% Perhaps these should actually be defined using a hypothetical unicode-math interface to creating new such styles. To come.
-%
-%
-% \subsubsection{Replacing legacy pure-maths alphabets}
-% The following are alphabets which do not have a math/text ambiguity.
-% \begin{macrocode}
-\clist_map_inline:nn
- {
- normal, bb , bbit, scr, bfscr, cal, bfcal, frak, bffrak, tt,
- bfup, bfit, sfup, sfit, bfsfup, bfsfit, bfsf
- }
- {
- \cs_set:cpx { math #1 } { \exp_not:c { sym #1 } }
- }
-% \end{macrocode}
-%
-%
-% \subsubsection{New commands for ambiguous alphabets}
-% \begin{macrocode}
-\AtBeginDocument{
-\clist_map_inline:nn
- { rm, it, bf, sf, tt }
- {
- \cs_set_protected:cpx { math #1 }
- {
- \exp_not:n { \bool_if:NTF } \exp_not:c { g_@@_ math #1 _text_bool}
- { \exp_not:c { mathtext #1 } }
- { \exp_not:c { sym #1 } }
- }
- }}
-% \end{macrocode}
-%
-% \paragraph{Alias \cs{mathrm} as legacy name for \cs{mathup}}
-% \begin{macrocode}
-\cs_set_protected:Npn \mathup { \mathrm }
-\cs_set_protected:Npn \symrm { \symup }
-% \end{macrocode}
-%
-%
-%
-%
-% \subsection{Defining the math alphabets per style}
-%
-% \begin{macro}{\@@_setup_alphabets:}
-% This function is called within \cs{setmathfont} to configure the
-% mapping between characters inside math styles.
-% \begin{macrocode}
-\cs_new:Npn \@@_setup_alphabets:
- {
-% \end{macrocode}
-% If |range=| has been used to configure styles, those choices will be in
-% |\l_@@_mathalph_seq|. If not, set up the styles implicitly:
-% \begin{macrocode}
- \seq_if_empty:NTF \l_@@_mathalph_seq
- {
- \@@_log:n {setup-implicit}
- \seq_set_eq:NN \l_@@_mathalph_seq \g_@@_default_mathalph_seq
- \bool_set_true:N \l_@@_implicit_alph_bool
- \@@_maybe_init_alphabet:n {sf}
- \@@_maybe_init_alphabet:n {bf}
- \@@_maybe_init_alphabet:n {bfsf}
- }
-% \end{macrocode}
-% If |range=| has been used then we're in explicit mode:
-% \begin{macrocode}
- {
- \@@_log:n {setup-explicit}
- \bool_set_false:N \l_@@_implicit_alph_bool
- \cs_set_eq:NN \@@_set_mathalphabet_char:nnn \@@_mathmap_noparse:nnn
- \cs_set_eq:NN \@@_map_char_single:nn \@@_map_char_noparse:nn
- }
-
- % Now perform the mapping:
- \seq_map_inline:Nn \l_@@_mathalph_seq
- {
- \tl_set:No \l_@@_style_tl { \use_i:nnn ##1 }
- \clist_set:No \l_@@_alphabet_clist { \use_ii:nnn ##1 }
- \tl_set:No \l_@@_remap_style_tl { \use_iii:nnn ##1 }
-
- % If no set of alphabets is defined:
- \clist_if_empty:NT \l_@@_alphabet_clist
- {
- \cs_set_eq:NN \@@_maybe_init_alphabet:n \@@_init_alphabet:n
- \prop_get:cnN { g_@@_named_range_ \l_@@_style_tl _prop }
- { default-alpha } \l_@@_alphabet_clist
- }
-
- \@@_setup_math_alphabet:
- }
- \seq_if_empty:NF \l_@@_missing_alph_seq { \@@_log:n { missing-alphabets } }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_setup_math_alphabet:}
-% \begin{macrocode}
-\cs_new:Nn \@@_setup_math_alphabet:
- {
-% \end{macrocode}
-% First check that at least one of the alphabets for the font shape is defined
-% (this process is fast) \dots
-% \begin{macrocode}
- \clist_map_inline:Nn \l_@@_alphabet_clist
- {
- \tl_set:Nn \l_@@_alphabet_tl {##1}
- \@@_if_alphabet_exists:nnTF \l_@@_style_tl \l_@@_alphabet_tl
- {
- \str_if_eq_x:nnTF {\l_@@_alphabet_tl} {misc}
- {
- \@@_maybe_init_alphabet:n \l_@@_style_tl
- \clist_map_break:
- }
- {
- \@@_glyph_if_exist:nT { \@@_to_usv:nn {\l_@@_style_tl} {\l_@@_alphabet_tl} }
- {
- \@@_maybe_init_alphabet:n \l_@@_style_tl
- \clist_map_break:
- }
- }
- }
- { \msg_warning:nnx {unicode-math} {no-alphabet} { \l_@@_style_tl / \l_@@_alphabet_tl } }
- }
-% \end{macrocode}
-% \dots and then loop through them defining the individual ranges:
-% (currently this process is slow)
-% \begin{macrocode}
-%<debug> \csname TIC\endcsname
- \clist_map_inline:Nn \l_@@_alphabet_clist
- {
- \tl_set:Nx \l_@@_alphabet_tl { \tl_trim_spaces:n {##1} }
- \cs_if_exist:cT {@@_config_ \l_@@_style_tl _ \l_@@_alphabet_tl :n}
- {
- \exp_args:No \tl_if_eq:nnTF \l_@@_alphabet_tl {misc}
- {
- \@@_log:nx {setup-alph} {sym \l_@@_style_tl~(\l_@@_alphabet_tl)}
- \@@_alphabet_config:nnn {\l_@@_style_tl} {\l_@@_alphabet_tl} {\l_@@_remap_style_tl}
- }
- {
- \@@_glyph_if_exist:nTF { \@@_to_usv:nn {\l_@@_remap_style_tl} {\l_@@_alphabet_tl} }
- {
- \@@_log:nx {setup-alph} {sym \l_@@_style_tl~(\l_@@_alphabet_tl)}
- \@@_alphabet_config:nnn {\l_@@_style_tl} {\l_@@_alphabet_tl} {\l_@@_remap_style_tl}
- }
- {
- \bool_if:NTF \l_@@_implicit_alph_bool
- {
- \seq_put_right:Nx \l_@@_missing_alph_seq
- {
- \@backslashchar sym \l_@@_style_tl \space
- (\tl_use:c{c_@@_math_alphabet_name_ \l_@@_alphabet_tl _tl})
- }
- }
- {
- \@@_alphabet_config:nnn {\l_@@_style_tl} {\l_@@_alphabet_tl} {up}
- }
- }
- }
- }
- }
-%<debug> \csname TOC\endcsname
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsection{Mapping `naked' math characters}
-%
-% Before we show the definitions of the alphabet mappings using the functions
-% |\@@_alphabet_config:nnn \l_@@_style_tl {##1} {...}|, we first want to define some functions
-% to be used inside them to actually perform the character mapping.
-%
-% \subsubsection{Functions}
-%
-% \begin{macro}{\@@_map_char_single:nn}
-% Wrapper for |\@@_map_char_noparse:nn| or |\@@_map_char_parse:nn|
-% depending on the context.
-%
-% \begin{macro}{\@@_map_char_noparse:nn}
-% \begin{macro}{\@@_map_char_parse:nn}
-% \begin{macrocode}
-\cs_new:Nn \@@_map_char_noparse:nn
- { \@@_set_mathcode:nnnn {#1}{\mathalpha}{\@@_symfont_tl}{#2} }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_map_char_parse:nn
- {
- \@@_if_char_spec:nNNT {#1} {\@nil} {\mathalpha}
- { \@@_map_char_noparse:nn {#1}{#2} }
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@@_map_char_single:nnn}
-% \darg{char name (`dotlessi')}
-% \darg{from alphabet(s)}
-% \darg{to alphabet}
-% Logical interface to \cs{@@_map_char_single:nn}.
-% \begin{macrocode}
-\cs_new:Nn \@@_map_char_single:nnn
- {
- \@@_map_char_single:nn { \@@_to_usv:nn {#1}{#3} }
- { \@@_to_usv:nn {#2}{#3} }
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\@@_map_chars_range:nnnn}
-% \darg{Number of chars (26)}
-% \darg{From style, one or more (it)}
-% \darg{To style (up)}
-% \darg{Alphabet name (Latin)}
-% First the function with numbers:
-% \begin{macrocode}
-\cs_set:Nn \@@_map_chars_range:nnn
- {
- \int_step_inline:nnnn {0}{1}{#1-1}
- { \@@_map_char_single:nn {#2+##1}{#3+##1} }
- }
-% \end{macrocode}
-% And the wrapper with names:
-% \begin{macrocode}
-\cs_new:Nn \@@_map_chars_range:nnnn
- {
- \@@_map_chars_range:nnn {#1} { \@@_to_usv:nn {#2}{#4} }
- { \@@_to_usv:nn {#3}{#4} }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \subsubsection{Functions for `normal' alphabet symbols}
-%
-% \begin{macro}{\@@_set_normal_char:nnn}
-% \begin{macrocode}
-\cs_set:Nn \@@_set_normal_char:nnn
- {
- \@@_usv_if_exist:nnT {#3} {#1}
- {
- \clist_map_inline:nn {#2}
- {
- \@@_set_mathalphabet_pos:nnnn {normal} {#1} {##1} {#3}
- \@@_map_char_single:nnn {##1} {#3} {#1}
- }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_set_normal_Latin:nn
- {
- \clist_map_inline:nn {#1}
- {
- \@@_set_mathalphabet_Latin:nnn {normal} {##1} {#2}
- \@@_map_chars_range:nnnn {26} {##1} {#2} {Latin}
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_set_normal_latin:nn
- {
- \clist_map_inline:nn {#1}
- {
- \@@_set_mathalphabet_latin:nnn {normal} {##1} {#2}
- \@@_map_chars_range:nnnn {26} {##1} {#2} {latin}
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_set_normal_greek:nn
- {
- \clist_map_inline:nn {#1}
- {
- \@@_set_mathalphabet_greek:nnn {normal} {##1} {#2}
- \@@_map_chars_range:nnnn {25} {##1} {#2} {greek}
- \@@_map_char_single:nnn {##1} {#2} {epsilon}
- \@@_map_char_single:nnn {##1} {#2} {vartheta}
- \@@_map_char_single:nnn {##1} {#2} {varkappa}
- \@@_map_char_single:nnn {##1} {#2} {phi}
- \@@_map_char_single:nnn {##1} {#2} {varrho}
- \@@_map_char_single:nnn {##1} {#2} {varpi}
- \@@_set_mathalphabet_pos:nnnn {normal} {epsilon} {##1} {#2}
- \@@_set_mathalphabet_pos:nnnn {normal} {vartheta} {##1} {#2}
- \@@_set_mathalphabet_pos:nnnn {normal} {varkappa} {##1} {#2}
- \@@_set_mathalphabet_pos:nnnn {normal} {phi} {##1} {#2}
- \@@_set_mathalphabet_pos:nnnn {normal} {varrho} {##1} {#2}
- \@@_set_mathalphabet_pos:nnnn {normal} {varpi} {##1} {#2}
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_set_normal_Greek:nn
- {
- \clist_map_inline:nn {#1}
- {
- \@@_set_mathalphabet_Greek:nnn {normal} {##1} {#2}
- \@@_map_chars_range:nnnn {25} {##1} {#2} {Greek}
- \@@_map_char_single:nnn {##1} {#2} {varTheta}
- \@@_set_mathalphabet_pos:nnnn {normal} {varTheta} {##1} {#2}
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_set_normal_numbers:nn
- {
- \@@_set_mathalphabet_numbers:nnn {normal} {#1} {#2}
- \@@_map_chars_range:nnnn {10} {#1} {#2} {num}
- }
-% \end{macrocode}
-%
-%
-% \subsection{Mapping chars inside a math style}
-%
-% \subsubsection{Functions for setting up the maths alphabets}
-%
-% \begin{macro}{\@@_set_mathalphabet_char:Nnn}
-% This is a wrapper for either |\@@_mathmap_noparse:nnn| or
-% |\@@_mathmap_parse:Nnn|, depending on the context.
-% \end{macro}
-%
-% \begin{macro}{\@@_mathmap_noparse:nnn}
-% \darg{Maths alphabet, \eg, `bb'}
-% \darg{Input slot(s), \eg, the slot for `A' (comma separated)}
-% \darg{Output slot, \eg, the slot for `$\mathbb{A}$'}
-% Adds \cs{@@_set_mathcode:nnnn} declarations to the specified maths alphabet's definition.
-% \begin{macrocode}
-\cs_new:Nn \@@_mathmap_noparse:nnn
- {
- \clist_map_inline:nn {#2}
- {
- \tl_put_right:cx {@@_switchto_#1:}
- {
- \@@_set_mathcode:nnnn {##1} {\mathalpha} {\@@_symfont_tl} {#3}
- }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_mathmap_parse:nnn}
-% \darg{Maths alphabet, \eg, `bb'}
-% \darg{Input slot(s), \eg, the slot for `A' (comma separated)}
-% \darg{Output slot, \eg, the slot for `$\mathbb{A}$'}
-% When \cmd\@@_if_char_spec:nNNT\ is executed, it populates the \cmd\l_@@_char_nrange_clist\
-% macro with slot numbers corresponding to the specified range. This range is used to
-% conditionally add \cs{@@_set_mathcode:nnnn} declaractions to the maths alphabet definition.
-% \begin{macrocode}
-\cs_new:Nn \@@_mathmap_parse:nnn
- {
- \clist_if_in:NnT \l_@@_char_nrange_clist {#3}
- {
- \@@_mathmap_noparse:nnn {#1}{#2}{#3}
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_set_mathalphabet_char:nnnn}
-% \darg{math style command}
-% \darg{input math alphabet name}
-% \darg{output math alphabet name}
-% \darg{char name to map}
-% \begin{macrocode}
-\cs_new:Nn \@@_set_mathalphabet_char:nnnn
- {
- \@@_set_mathalphabet_char:nnn {#1} { \@@_to_usv:nn {#2} {#4} }
- { \@@_to_usv:nn {#3} {#4} }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_set_mathalph_range:nnnn}
-% \darg{Number of iterations}
-% \darg{Maths alphabet}
-% \darg{Starting input char (single)}
-% \darg{Starting output char}
-% Loops through character ranges setting \cmd\mathcode.
-% First the version that uses numbers:
-% \begin{macrocode}
-\cs_new:Nn \@@_set_mathalph_range:nnnn
- {
- \int_step_inline:nnnn {0} {1} {#1-1}
- { \@@_set_mathalphabet_char:nnn {#2} { ##1 + #3 } { ##1 + #4 } }
- }
-% \end{macrocode}
-% Then the wrapper version that uses names:
-% \begin{macrocode}
-\cs_new:Nn \@@_set_mathalph_range:nnnnn
- {
- \@@_set_mathalph_range:nnnn {#1} {#2} { \@@_to_usv:nn {#3} {#5} }
- { \@@_to_usv:nn {#4} {#5} }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \subsubsection{Individual mapping functions for different alphabets}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_set_mathalphabet_pos:nnnn
- {
- \@@_usv_if_exist:nnT {#4} {#2}
- {
- \clist_map_inline:nn {#3}
- { \@@_set_mathalphabet_char:nnnn {#1} {##1} {#4} {#2} }
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_set_mathalphabet_numbers:nnn
- {
- \clist_map_inline:nn {#2}
- { \@@_set_mathalph_range:nnnnn {10} {#1} {##1} {#3} {num} }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_set_mathalphabet_Latin:nnn
- {
- \clist_map_inline:nn {#2}
- { \@@_set_mathalph_range:nnnnn {26} {#1} {##1} {#3} {Latin} }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_set_mathalphabet_latin:nnn
- {
- \clist_map_inline:nn {#2}
- {
- \@@_set_mathalph_range:nnnnn {26} {#1} {##1} {#3} {latin}
- \@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {h}
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_set_mathalphabet_Greek:nnn
- {
- \clist_map_inline:nn {#2}
- {
- \@@_set_mathalph_range:nnnnn {25} {#1} {##1} {#3} {Greek}
- \@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {varTheta}
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_set_mathalphabet_greek:nnn
- {
- \clist_map_inline:nn {#2}
- {
- \@@_set_mathalph_range:nnnnn {25} {#1} {##1} {#3} {greek}
- \@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {epsilon}
- \@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {vartheta}
- \@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {varkappa}
- \@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {phi}
- \@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {varrho}
- \@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {varpi}
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</package&(XE|LU)>
-% \end{macrocode}
-%
-\endinput
Deleted: trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-mathtext.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-mathtext.dtx 2017-11-18 01:22:09 UTC (rev 45844)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-mathtext.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -1,133 +0,0 @@
-
-% \section{\DTXCURR --- Maths text commands}
-%
-% \begin{macrocode}
-%<*package&(XE|LU)>
-% \end{macrocode}
-%
-% \subsection{\cs{setmathfontface}}
-%
-% \begin{macro}{\setmathfontface}
-% \begin{macrocode}
-\keys_define:nn {@@_mathface}
- {
- version .code:n =
- { \tl_set:Nn \l_@@_mversion_tl {#1} }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\DeclareDocumentCommand \setmathfontface { m O{} m O{} }
- {
- \tl_clear:N \l_@@_mversion_tl
-
- \keys_set_known:nnN {@@_mathface} {#2,#4} \l_@@_keyval_clist
- \exp_args:Nnx \fontspec_set_family:Nxn \l_@@_tmpa_tl
- { ItalicFont={}, BoldFont={}, \exp_not:V \l_@@_keyval_clist } {#3}
-
- \tl_if_empty:NT \l_@@_mversion_tl
- {
- \tl_set:Nn \l_@@_mversion_tl {normal}
- \DeclareMathAlphabet #1 {\g_fontspec_encoding_tl} {\l_@@_tmpa_tl} {\mddefault} {\updefault}
- }
- \SetMathAlphabet #1 {\l_@@_mversion_tl} {\g_fontspec_encoding_tl} {\l_@@_tmpa_tl} {\mddefault} {\updefault}
-
- % integrate with fontspec's \setmathrm etc:
- \tl_case:Nn #1
- {
- \mathrm { \cs_set_eq:NN \g__fontspec_mathrm_tl \l_@@_tmpa_tl }
- \mathsf { \cs_set_eq:NN \g__fontspec_mathsf_tl \l_@@_tmpa_tl }
- \mathtt { \cs_set_eq:NN \g__fontspec_mathtt_tl \l_@@_tmpa_tl }
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\@onlypreamble \setmathfontface
-% \end{macrocode}
-% Note that \LaTeX's SetMathAlphabet simply doesn't work to "reset" a maths alphabet font after \verb"\begin{document}", so unlike most of the other maths commands around we still restrict this one to the preamble.
-% \end{macro}
-%
-% \begin{macro}{\setoperatorfont}
-% TODO: add check?
-% \begin{macrocode}
-\DeclareDocumentCommand \setoperatorfont {m}
- { \tl_set:Nn \g_@@_operator_mathfont_tl {#1} }
-\setoperatorfont{\mathrm}
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{Hooks into \pkg{fontspec}}
-%
-% Historically, \cs{mathrm} and so on were completely overwritten by \pkg{unicode-math}, and \pkg{fontspec}'s methods for setting these fonts in the classical manner were bypassed.
-%
-% While we could now re-activate the way that \pkg{fontspec} does the following, because we can now change maths fonts whenever it's better to define new commands in \pkg{unicode-math} to define the \cs{mathXYZ} fonts.
-%
-% \subsubsection{Text font}
-% \begin{macrocode}
-\cs_generate_variant:Nn \tl_if_eq:nnT {o}
-\cs_set:Nn \__fontspec_setmainfont_hook:nn
- {
- \tl_if_eq:onT {\g__fontspec_mathrm_tl} {\rmdefault}
- {
-%<XE> \fontspec_set_family:Nnn \g__fontspec_mathrm_tl {#1} {#2}
-%<LU> \fontspec_set_family:Nnn \g__fontspec_mathrm_tl {Renderer=Basic,#1} {#2}
- \SetMathAlphabet\mathrm{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\updefault
- \SetMathAlphabet\mathit{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\itdefault
- \SetMathAlphabet\mathbf{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\bfdefault\updefault
- }
- }
-
-\cs_set:Nn \__fontspec_setsansfont_hook:nn
- {
- \tl_if_eq:onT {\g__fontspec_mathsf_tl} {\sfdefault}
- {
-%<XE> \fontspec_set_family:Nnn \g__fontspec_mathsf_tl {#1} {#2}
-%<LU> \fontspec_set_family:Nnn \g__fontspec_mathsf_tl {Renderer=Basic,#1} {#2}
- \SetMathAlphabet\mathsf{normal}\g_fontspec_encoding_tl\g__fontspec_mathsf_tl\mddefault\updefault
- \SetMathAlphabet\mathsf{bold} \g_fontspec_encoding_tl\g__fontspec_mathsf_tl\bfdefault\updefault
- }
- }
-
-\cs_set:Nn \__fontspec_setmonofont_hook:nn
- {
- \tl_if_eq:onT {\g__fontspec_mathtt_tl} {\ttdefault}
- {
-%<XE> \fontspec_set_family:Nnn \g__fontspec_mathtt_tl {#1} {#2}
-%<LU> \fontspec_set_family:Nnn \g__fontspec_mathtt_tl {Renderer=Basic,#1} {#2}
- \SetMathAlphabet\mathtt{normal}\g_fontspec_encoding_tl\g__fontspec_mathtt_tl\mddefault\updefault
- \SetMathAlphabet\mathtt{bold} \g_fontspec_encoding_tl\g__fontspec_mathtt_tl\bfdefault\updefault
- }
- }
-% \end{macrocode}
-%
-% \subsubsection{Maths font}
-% If the maths fonts are set explicitly, then the text commands above will not execute their branches to set the maths font alphabets.
-% \begin{macrocode}
-\cs_set:Nn \__fontspec_setmathrm_hook:nn
- {
- \SetMathAlphabet\mathrm{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\updefault
- \SetMathAlphabet\mathit{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\itdefault
- \SetMathAlphabet\mathbf{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\bfdefault\updefault
- }
-\cs_set:Nn \__fontspec_setboldmathrm_hook:nn
- {
- \SetMathAlphabet\mathrm{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\mddefault\updefault
- \SetMathAlphabet\mathbf{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\bfdefault\updefault
- \SetMathAlphabet\mathit{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\mddefault\itdefault
- }
-\cs_set:Nn \__fontspec_setmathsf_hook:nn
- {
- \SetMathAlphabet\mathsf{normal}\g_fontspec_encoding_tl\g__fontspec_mathsf_tl\mddefault\updefault
- \SetMathAlphabet\mathsf{bold} \g_fontspec_encoding_tl\g__fontspec_mathsf_tl\bfdefault\updefault
- }
-\cs_set:Nn \__fontspec_setmathtt_hook:nn
- {
- \SetMathAlphabet\mathtt{normal}\g_fontspec_encoding_tl\g__fontspec_mathtt_tl\mddefault\updefault
- \SetMathAlphabet\mathtt{bold} \g_fontspec_encoding_tl\g__fontspec_mathtt_tl\bfdefault\updefault
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</package&(XE|LU)>
-% \end{macrocode}
Deleted: trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-msg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-msg.dtx 2017-11-18 01:22:09 UTC (rev 45844)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-msg.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -1,109 +0,0 @@
-
-% \section{\DTXCURR --- Error messages}
-% \seclabel{codemsg}
-%
-% \begin{macrocode}
-%<*package&(XE|LU)>
-% \end{macrocode}
-%
-% Wrapper functions:
-% \begin{macrocode}
-\cs_new:Npn \@@_error:n { \msg_error:nn {unicode-math} }
-\cs_new:Npn \@@_warning:n { \msg_warning:nn {unicode-math} }
-\cs_new:Npn \@@_warning:nnn { \msg_warning:nnxx {unicode-math} }
-\cs_new:Npn \@@_log:n { \msg_log:nn {unicode-math} }
-\cs_new:Npn \@@_log:nx { \msg_log:nnx {unicode-math} }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\msg_new:nnn {unicode-math} {no-tfrac}
-{
- Small~ fraction~ command~ \protect\tfrac\ not~ defined.\\
- Load~ amsmath~ or~ define~ it~ manually~ before~ loading~ unicode-math.
-}
-\msg_new:nnn {unicode-math} {default-math-font}
-{
- Defining~ the~ default~ maths~ font~ as~ '\l_@@_fontname_tl'.
-}
-\msg_new:nnn {unicode-math} {setup-implicit}
-{
- Setup~ alphabets:~ implicit~ mode.
-}
-\msg_new:nnn {unicode-math} {setup-explicit}
-{
- Setup~ alphabets:~ explicit~ mode.
-}
-\msg_new:nnn {unicode-math} {alph-initialise}
-{
- Initialising~ \@backslashchar math#1.
-}
-\msg_new:nnn {unicode-math} {setup-alph}
-{
- Setup~ alphabet:~ #1.
-}
-\msg_new:nnn {unicode-math} {no-alphabet}
-{
- I~ am~ trying~ to~ set~ up~ alphabet~"#1"~ but~ there~ are~ no~ configuration~ settings~ for~ it.~
- (See~ source~ file~ "unicode-math-alphabets.dtx"~ to~ debug.)
-}
-\msg_new:nnn { unicode-math } { no-named-range }
- {
- I~ am~ trying~ to~ define~ new~ alphabet~ "#2"~ in~ range~ "#1",~ but~ range~ "#1"~ hasn't~ been~ defined~ yet.
- }
-\msg_new:nnn { unicode-math } { missing-alphabets }
- {
- Missing~math~alphabets~in~font~ "\fontname\l_@@_font" \\ \\
- \seq_map_function:NN \l_@@_missing_alph_seq \@@_print_indent:n
- }
-\cs_new:Nn \@@_print_indent:n { \space\space\space\space #1 \\ }
-\msg_new:nnn {unicode-math} {macro-expected}
-{
- I've~ expected~ that~ #1~ is~ a~ macro,~ but~ it~ isn't.
-}
-\msg_new:nnn {unicode-math} {wrong-meaning}
-{
- I've~ expected~ #1~ to~ have~ the~ meaning~ #3,~ but~ it~ has~ the~ meaning~ #2.
-}
-\msg_new:nnn {unicode-math} {patch-macro}
-{
- I'm~ going~ to~ patch~ macro~ #1.
-}
-\msg_new:nnn { unicode-math } { mathtools-overbracket } {
- Using~ \token_to_str:N \overbracket\ and~
- \token_to_str:N \underbracket\ from~
- `mathtools'~ package.\\
- \\
- Use~ \token_to_str:N \Uoverbracket\ and~
- \token_to_str:N \Uunderbracket\ for~
- original~ `unicode-math'~ definition.
-}
-\msg_new:nnn { unicode-math } { mathtools-colon } {
- I'm~ going~ to~ overwrite~ the~ following~ commands~ from~
- the~ `mathtools'~ package: \\ \\
- \ \ \ \ \token_to_str:N \dblcolon,~
- \token_to_str:N \coloneqq,~
- \token_to_str:N \Coloneqq,~
- \token_to_str:N \eqqcolon. \\ \\
- Note~ that~ since~ I~ won't~ overwrite~ the~ other~ colon-like~
- commands,~ using~ them~ will~ lead~ to~ inconsistencies.
-}
-\msg_new:nnn { unicode-math } { colonequals } {
- I'm~ going~ to~ overwrite~ the~ following~ commands~ from~
- the~ `colonequals'~ package: \\ \\
- \ \ \ \ \token_to_str:N \ratio,~
- \token_to_str:N \coloncolon,~
- \token_to_str:N \minuscolon, \\
- \ \ \ \ \token_to_str:N \colonequals,~
- \token_to_str:N \equalscolon,~
- \token_to_str:N \coloncolonequals. \\ \\
- Note~ that~ since~ I~ won't~ overwrite~ the~ other~ colon-like~
- commands,~ using~ them~ will~ lead~ to~ inconsistencies.~
- Furthermore,~ changing~ \token_to_str:N \colonsep \c_space_tl
- or~ \token_to_str:N \doublecolonsep \c_space_tl won't~ have~
- any~ effect~ on~ the~ re-defined~ commands.
-}
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</package&(XE|LU)>
-% \end{macrocode}
\ No newline at end of file
Deleted: trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-pkgopt.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-pkgopt.dtx 2017-11-18 01:22:09 UTC (rev 45844)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-pkgopt.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -1,301 +0,0 @@
-
-% \section{\DTXCURR --- setup and package options}
-%
-% \begin{macrocode}
-%<*package&(XE|LU)>
-% \end{macrocode}
-%
-% \begin{macro}{\unimathsetup}
-% This macro can be used in lieu of or later to override
-% options declared when the package is loaded.
-% \begin{macrocode}
-\DeclareDocumentCommand \unimathsetup {m} { \keys_set:nn {unicode-math} {#1} }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_keys_choices:nn}
-% To simplify the creation of option keys, let's iterate in pairs rather than worry about equals signs and commas.
-% \begin{macrocode}
-\cs_new:Nn \@@_keys_choices:nn
- {
- \cs_set:Npn \@@_keys_choices_fn:nn { \@@_keys_choices_aux:nnn {#1} }
- \use:x
- {
- \exp_not:N \keys_define:nn {unicode-math}
- {
- #1 .choice: ,
- \@@_tl_map_dbl:nN {#2} \@@_keys_choices_fn:nn
- }
- }
- }
-\cs_new:Nn \@@_keys_choices_aux:nnn { #1 / #2 .code:n = { \exp_not:n {#3} } , }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_tl_map_dbl:nN
- {
- \__@@_tl_map_dbl:Nnn #2 #1 \q_recursion_tail {}{} \q_recursion_stop
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \__@@_tl_map_dbl:Nnn
- {
- \quark_if_recursion_tail_stop:n {#2}
- \quark_if_recursion_tail_stop:n {#3}
- #1 {#2} {#3}
- \__@@_tl_map_dbl:Nnn #1
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \paragraph{Compatibility}
-% \begin{macrocode}
-\@@_keys_choices:nn {mathup}
- {
- {sym} { \bool_set_false:N \g_@@_mathrm_text_bool }
- {text} { \bool_set_true:N \g_@@_mathrm_text_bool }
- }
-\@@_keys_choices:nn {mathrm}
- {
- {sym} { \bool_set_false:N \g_@@_mathrm_text_bool }
- {text} { \bool_set_true:N \g_@@_mathrm_text_bool }
- }
-\@@_keys_choices:nn {mathit}
- {
- {sym} { \bool_set_false:N \g_@@_mathit_text_bool }
- {text} { \bool_set_true:N \g_@@_mathit_text_bool }
- }
-\@@_keys_choices:nn {mathbf}
- {
- {sym} { \bool_set_false:N \g_@@_mathbf_text_bool }
- {text} { \bool_set_true:N \g_@@_mathbf_text_bool }
- }
-\@@_keys_choices:nn {mathsf}
- {
- {sym} { \bool_set_false:N \g_@@_mathsf_text_bool }
- {text} { \bool_set_true:N \g_@@_mathsf_text_bool }
- }
-\@@_keys_choices:nn {mathtt}
- {
- {sym} { \bool_set_false:N \g_@@_mathtt_text_bool }
- {text} { \bool_set_true:N \g_@@_mathtt_text_bool }
- }
-% \end{macrocode}
-%
-% \paragraph{math-style}
-% \begin{macrocode}
-\@@_keys_choices:nn {normal-style}
- {
- {ISO} {
- \bool_set_false:N \g_@@_literal_bool
- \bool_set_false:N \g_@@_upGreek_bool
- \bool_set_false:N \g_@@_upgreek_bool
- \bool_set_false:N \g_@@_upLatin_bool
- \bool_set_false:N \g_@@_uplatin_bool
- }
- {TeX} {
- \bool_set_false:N \g_@@_literal_bool
- \bool_set_true:N \g_@@_upGreek_bool
- \bool_set_false:N \g_@@_upgreek_bool
- \bool_set_false:N \g_@@_upLatin_bool
- \bool_set_false:N \g_@@_uplatin_bool
- }
- {french} {
- \bool_set_false:N \g_@@_literal_bool
- \bool_set_true:N \g_@@_upGreek_bool
- \bool_set_true:N \g_@@_upgreek_bool
- \bool_set_true:N \g_@@_upLatin_bool
- \bool_set_false:N \g_@@_uplatin_bool
- }
- {upright} {
- \bool_set_false:N \g_@@_literal_bool
- \bool_set_true:N \g_@@_upGreek_bool
- \bool_set_true:N \g_@@_upgreek_bool
- \bool_set_true:N \g_@@_upLatin_bool
- \bool_set_true:N \g_@@_uplatin_bool
- }
- {literal} {
- \bool_set_true:N \g_@@_literal_bool
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\@@_keys_choices:nn {math-style}
- {
- {ISO} {
- \unimathsetup { nabla=upright, partial=italic,
- normal-style=ISO, bold-style=ISO, sans-style=italic }
- }
- {TeX} {
- \unimathsetup { nabla=upright, partial=italic,
- normal-style=TeX, bold-style=TeX, sans-style=upright }
- }
- {french} {
- \unimathsetup { nabla=upright, partial=upright,
- normal-style=french, bold-style=upright, sans-style=upright }
- }
- {upright} {
- \unimathsetup { nabla=upright, partial=upright,
- normal-style=upright, bold-style=upright, sans-style=upright }
- }
- {literal} {
- \unimathsetup { colon=literal, nabla=literal, partial=literal,
- normal-style=literal, bold-style=literal, sans-style=literal }
- }
- }
-% \end{macrocode}
-%
-% \paragraph{bold-style}
-% \begin{macrocode}
-\@@_keys_choices:nn {bold-style}
- {
- {ISO} {
- \bool_set_false:N \g_@@_bfliteral_bool
- \bool_set_false:N \g_@@_bfupGreek_bool
- \bool_set_false:N \g_@@_bfupgreek_bool
- \bool_set_false:N \g_@@_bfupLatin_bool
- \bool_set_false:N \g_@@_bfuplatin_bool
- }
- {TeX} {
- \bool_set_false:N \g_@@_bfliteral_bool
- \bool_set_true:N \g_@@_bfupGreek_bool
- \bool_set_false:N \g_@@_bfupgreek_bool
- \bool_set_true:N \g_@@_bfupLatin_bool
- \bool_set_true:N \g_@@_bfuplatin_bool
- }
- {upright} {
- \bool_set_false:N \g_@@_bfliteral_bool
- \bool_set_true:N \g_@@_bfupGreek_bool
- \bool_set_true:N \g_@@_bfupgreek_bool
- \bool_set_true:N \g_@@_bfupLatin_bool
- \bool_set_true:N \g_@@_bfuplatin_bool
- }
- {literal} {
- \bool_set_true:N \g_@@_bfliteral_bool
- }
- }
-% \end{macrocode}
-%
-% \paragraph{sans-style}
-% \begin{macrocode}
-\@@_keys_choices:nn {sans-style}
- {
- {italic} { \bool_set_false:N \g_@@_upsans_bool }
- {upright} { \bool_set_true:N \g_@@_upsans_bool }
- {literal} { \bool_set_true:N \g_@@_sfliteral_bool }
- }
-% \end{macrocode}
-%
-%
-% \paragraph{Nabla and partial}
-% \begin{macrocode}
-\@@_keys_choices:nn {nabla}
- {
- {upright} {
- \bool_set_false:N \g_@@_literal_Nabla_bool
- \bool_set_true:N \g_@@_upNabla_bool
- }
- {italic} {
- \bool_set_false:N \g_@@_literal_Nabla_bool
- \bool_set_false:N \g_@@_upNabla_bool
- }
- {literal} { \bool_set_true:N \g_@@_literal_Nabla_bool }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\@@_keys_choices:nn {partial}
- {
- {upright} {
- \bool_set_false:N \g_@@_literal_partial_bool
- \bool_set_true:N \g_@@_uppartial_bool
- }
- {italic} {
- \bool_set_false:N \g_@@_literal_partial_bool
- \bool_set_false:N \g_@@_uppartial_bool
- }
- {literal} { \bool_set_true:N \g_@@_literal_partial_bool }
- }
-% \end{macrocode}
-%
-% \paragraph{Colon style}
-% \begin{macrocode}
-\@@_keys_choices:nn {colon}
- {
- {literal} { \bool_set_true:N \g_@@_literal_colon_bool }
- {TeX} { \bool_set_false:N \g_@@_literal_colon_bool }
- }
-% \end{macrocode}
-%
-% \paragraph{Slash delimiter style}
-% \begin{macrocode}
-\@@_keys_choices:nn {slash-delimiter}
- {
- {ascii} { \tl_set:Nn \g_@@_slash_delimiter_usv {"002F} }
- {frac} { \tl_set:Nn \g_@@_slash_delimiter_usv {"2044} }
- {div} { \tl_set:Nn \g_@@_slash_delimiter_usv {"2215} }
- }
-% \end{macrocode}
-%
-%
-% \paragraph{Active fraction style}
-% \begin{macrocode}
-\@@_keys_choices:nn {active-frac}
- {
- {small}
- {
- \cs_if_exist:NTF \tfrac
- { \bool_set_true:N \l_@@_smallfrac_bool }
- {
- \@@_warning:n {no-tfrac}
- \bool_set_false:N \l_@@_smallfrac_bool
- }
- \use:c {@@_setup_active_frac:}
- }
-
- {normalsize}
- {
- \bool_set_false:N \l_@@_smallfrac_bool
- \use:c {@@_setup_active_frac:}
- }
- }
-% \end{macrocode}
-%
-% \paragraph{Debug/tracing}
-%
-% \begin{macrocode}
-\keys_define:nn {unicode-math}
- {
- warnings-off .code:n =
- {
- \clist_map_inline:nn {#1}
- { \msg_redirect_name:nnn { unicode-math } { ##1 } { none } }
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\@@_keys_choices:nn {trace}
- {
- {on} {} % default
- {debug} { \msg_redirect_module:nnn { unicode-math } { log } { warning } }
- {off} { \msg_redirect_module:nnn { unicode-math } { log } { none } }
- }
-% \end{macrocode}
-%
-% \subsection{Defaults}
-%
-% \begin{macrocode}
-\unimathsetup {math-style=TeX}
-\unimathsetup {slash-delimiter=ascii}
-\unimathsetup {trace=off}
-\unimathsetup {mathrm=text,mathit=text,mathbf=text,mathsf=text,mathtt=text}
-\cs_if_exist:NT \tfrac { \unimathsetup {active-frac=small} }
-\ProcessKeysOptions {unicode-math}
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</package&(XE|LU)>
-% \end{macrocode}
Deleted: trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-preamble.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-preamble.dtx 2017-11-18 01:22:09 UTC (rev 45844)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-preamble.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -1,329 +0,0 @@
-
-% \section{\DTXCURR --- start of the package code}
-%
-% \begin{macrocode}
-%<*package&(XE|LU)>
-% \end{macrocode}
-%
-% \begin{macrocode}
-%<*LU>
-\RequirePackage{lualatex-math}
-%</LU>
-% \end{macrocode}
-%
-% \begin{macrocode}
-\ExplSyntaxOn
-% \end{macrocode}
-%
-% Variants needed from \pkg{expl3}:
-% \begin{macrocode}
-\cs_set_protected_nopar:Npn \exp_last_unbraced:NNx { \::N \::x_unbraced \::: }
-% \end{macrocode}
-%
-% For \pkg{fontspec}:
-% \begin{macrocode}
-\cs_generate_variant:Nn \fontspec_set_family:Nnn {Nx}
-\cs_generate_variant:Nn \fontspec_set_fontface:NNnn {NNx}
-% \end{macrocode}
-%
-% \paragraph{Conditionals}
-%
-% \begin{macrocode}
-\bool_new:N \l_@@_ot_math_bool
-\bool_new:N \l_@@_init_bool
-\bool_new:N \l_@@_implicit_alph_bool
-\bool_new:N \g_@@_mainfont_already_set_bool
-% \end{macrocode}
-% For \opt{math-style}:
-% \begin{macrocode}
-\bool_new:N \g_@@_literal_bool
-\bool_new:N \g_@@_upLatin_bool
-\bool_new:N \g_@@_uplatin_bool
-\bool_new:N \g_@@_upGreek_bool
-\bool_new:N \g_@@_upgreek_bool
-% \end{macrocode}
-% For \opt{bold-style}:
-% \begin{macrocode}
-\bool_new:N \g_@@_bfliteral_bool
-\bool_new:N \g_@@_bfupLatin_bool
-\bool_new:N \g_@@_bfuplatin_bool
-\bool_new:N \g_@@_bfupGreek_bool
-\bool_new:N \g_@@_bfupgreek_bool
-% \end{macrocode}
-% For \opt{sans-style}:
-% \begin{macrocode}
-\bool_new:N \g_@@_upsans_bool
-\bool_new:N \g_@@_sfliteral_bool
-% \end{macrocode}
-% For assorted package options:
-% \begin{macrocode}
-\bool_new:N \g_@@_upNabla_bool
-\bool_new:N \g_@@_uppartial_bool
-\bool_new:N \g_@@_literal_Nabla_bool
-\bool_new:N \g_@@_literal_partial_bool
-\bool_new:N \l_@@_smallfrac_bool
-\bool_new:N \g_@@_literal_colon_bool
-\bool_new:N \g_@@_mathrm_text_bool
-\bool_new:N \g_@@_mathit_text_bool
-\bool_new:N \g_@@_mathbf_text_bool
-\bool_new:N \g_@@_mathsf_text_bool
-\bool_new:N \g_@@_mathtt_text_bool
-% \end{macrocode}
-%
-% \paragraph{Variables}
-% \begin{macrocode}
-\int_new:N \g_@@_fam_int
-% \end{macrocode}
-%
-% For displaying in warning messages, etc.:
-% \begin{macrocode}
-\tl_const:Nn \c_@@_math_alphabet_name_latin_tl {Latin,~lowercase}
-\tl_const:Nn \c_@@_math_alphabet_name_Latin_tl {Latin,~uppercase}
-\tl_const:Nn \c_@@_math_alphabet_name_greek_tl {Greek,~lowercase}
-\tl_const:Nn \c_@@_math_alphabet_name_Greek_tl {Greek,~uppercase}
-\tl_const:Nn \c_@@_math_alphabet_name_num_tl {Numerals}
-\tl_const:Nn \c_@@_math_alphabet_name_misc_tl {Misc.}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\tl_new:N \l_@@_mathstyle_tl
-\tl_new:N \l_@@_radicals_tl
-\tl_new:N \l_@@_nolimits_tl
-% \end{macrocode}
-%
-% Used to store the font switch for the \cs{operator at font}.
-% \begin{macrocode}
-\tl_new:N \g_@@_operator_mathfont_tl
-% \end{macrocode}
-%
-% Variables:
-% \begin{macrocode}
-\seq_new:N \l_@@_missing_alph_seq
-\seq_new:N \l_@@_mathalph_seq
-\seq_new:N \l_@@_char_range_seq
-\seq_new:N \l_@@_mclass_range_seq
-\seq_new:N \l_@@_cmd_range_seq
-% \end{macrocode}
-%
-% \begin{macro}{\g_@@_alphabets_seq}
-% Each of math `style' (bfup, sfit, etc.) usually contains one or more `alphabets', which are currently |latin|, |Latin|, |greek|, |Greek|, |num|, and |misc|, although there's an implicit potential for more.
-% |misc| is not included in the official list to avoid checking code.
-% \begin{macrocode}
-\clist_new:N \g_@@_alphabets_seq
-\clist_set:Nn \g_@@_alphabets_seq { latin, Latin, greek, Greek, num }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-\clist_new:N \g_@@_named_ranges_clist
-\clist_new:N \g_@@_char_nrange_clist
-\clist_new:N \g_@@_unknown_keys_clist
-\clist_new:N \g_@@_alphabet_clist
-% \end{macrocode}
-%
-% \begin{macro}{\g_@@_mathclasses_seq}
-% Every math class.
-% \begin{macrocode}
-\seq_new:N \g_@@_mathclasses_seq
-\seq_set_from_clist:Nn \g_@@_mathclasses_seq
- {
- \mathord,\mathalpha,\mathbin,\mathrel,\mathpunct,
- \mathop,
- \mathopen,\mathclose,
- \mathfence,\mathover,\mathunder,
- \mathaccent,\mathbotaccent,\mathaccentwide,\mathbotaccentwide
- }
-% \end{macrocode}
-% \end{macro}
-%
-
-% \begin{macro}{\g_@@_default_mathalph_seq}
-% This sequence stores the alphabets in each math style.
-% \begin{macrocode}
-\seq_new:N \g_@@_default_mathalph_seq
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\g_@@_mathstyles_seq}
-% This is every `named range' and every `math style' known to \pkg{unicode-math}.
-% A named range is such as "bfit" and "sfit", which are also math styles (with \cs{symbfit} and \cs{symsfit}).
-% `Mathstyles' are a superset of named ranges and also include commands such as \cs{symbf} and \cs{symsf}.
-%
-% N.B. for parsing purposes `named ranges' are defined as strings!
-% \begin{macrocode}
-\seq_new:N \g_@@_named_ranges_seq
-\seq_new:N \g_@@_mathstyles_seq
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-\muskip_new:N \g_@@_primekern_muskip
-\muskip_gset:Nn \g_@@_primekern_muskip { -\thinmuskip/2 }% arbitrary
-\int_new:N \l_@@_primecount_int
-\prop_new:N \g_@@_supers_prop
-\prop_new:N \g_@@_subs_prop
-\tl_new:N \l_not_token_name_tl
-% \end{macrocode}
-%
-% \begin{macrocode}
-\tl_new:N \g_@@_slash_delimiter_usv
-\tl_new:N \g_@@_mathtable_tl
-\tl_new:N \g_@@_fontname_tl
-\tl_new:N \g_@@_mversion_tl
-\tl_new:N \g_@@_symfont_tl
-\tl_new:N \g_@@_font_keyval_tl
-\tl_new:N \g_@@_family_tl
-\tl_new:N \g_@@_style_tl
-\tl_new:N \g_@@_remap_style_tl
-% \end{macrocode}
-%
-% \subsection{Extras}
-%
-% What might end up being provided by the kernel.
-%
-% \begin{macro}{\@@_glyph_if_exist:nTF}
-%: TODO: Generalise for arbitrary fonts! \cs{l_@@_font} is not always the one used for a specific glyph!!
-% \begin{macrocode}
-\prg_new_conditional:Nnn \@@_glyph_if_exist:n {p,TF,T,F}
- {
- \etex_iffontchar:D \l_@@_font #1 \scan_stop:
- \prg_return_true:
- \else:
- \prg_return_false:
- \fi:
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_set_mathcode:nnnn}
-% \begin{macro}{\@@_set_mathcode:nnn}
-% \begin{macro}{\@@_set_mathchar:NNnn}
-% \begin{macro}{\@@_set_mathchar:cNnn}
-% \begin{macro}{\@@_set_delcode:nnn}
-% \begin{macro}{\@@_radical:nn}
-% \begin{macro}{\@@_delimiter:Nnn}
-% \begin{macro}{\@@_accent:nnn}
-% \begin{macro}{\@@_accent_keyword:}
-% These are all wrappers for the primitive commands that take numerical
-% input only.
-% \begin{macrocode}
-\cs_set:Npn \@@_set_mathcode:nnnn #1#2#3#4 {
- \Umathcode \int_eval:n {#1} =
- \mathchar at type#2 \csname sym#3\endcsname \int_eval:n {#4} \scan_stop:
-}
-\cs_set:Npn \@@_set_mathcode:nnn #1#2#3 {
- \Umathcode \int_eval:n {#1} =
- \mathchar at type#2 \csname sym#3\endcsname \int_eval:n {#1} \scan_stop:
-}
-\cs_set:Npn \@@_set_mathchar:NNnn #1#2#3#4 {
- \Umathchardef #1 =
- \mathchar at type#2 \csname sym#3\endcsname \int_eval:n {#4} \scan_stop:
-}
-\cs_new:Nn \@@_set_delcode:nnn {
- \Udelcode#2 = \csname sym#1\endcsname #3 \scan_stop:
-}
-\cs_new:Nn \@@_radical:nn {
- \Uradical \csname sym#1\endcsname #2 \scan_stop:
-}
-\cs_new:Nn \@@_delimiter:Nnn {
- \Udelimiter \mathchar at type#1 \csname sym#2\endcsname #3 \scan_stop:
-}
-\cs_new:Nn \@@_accent:nnn {
- \Umathaccent #1~ \mathchar at type\mathaccent \use:c { sym #2 } #3 \scan_stop:
-}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_generate_variant:Nn \@@_set_mathchar:NNnn {c}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-% \begin{macro}{\@@_char_gmake_mathactive:N}
-% \begin{macro}{\@@_char_gmake_mathactive:n}
-% \begin{macrocode}
-\cs_new:Nn \@@_char_gmake_mathactive:N
- {
- \global\mathcode `#1 = "8000 \scan_stop:
- }
-\cs_new:Nn \@@_char_gmake_mathactive:n
- {
- \global\mathcode #1 = "8000 \scan_stop:
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \subsection{Alphabet Unicode positions}
-%
-% Before we begin, let's define the positions of the various Unicode
-% alphabets so that our code is a little more readable.\footnote{`\textsc{u.s.v.}' stands
-% for `Unicode scalar value'.}
-%
-% \begin{macro}{\usv_set:nnn,\@@_to_usv:nn}
-% Rather than `readable', in the end, this makes the code more extensible.
-% \begin{macrocode}
-\cs_new:Nn \usv_set:nnn { \tl_const:cn { c_@@_#1_#2_usv } {#3} }
-\cs_new:Nn \@@_to_usv:nn { \use:c { c_@@_#1_#2_usv } }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[TF]{\@@_usv_if_exist:nn}
-% \begin{macrocode}
-\prg_new_conditional:Nnn \@@_usv_if_exist:nn {T,F,TF}
- {
- \cs_if_exist:cTF { c_@@_#1_#2_usv }
- \prg_return_true: \prg_return_false:
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{Programmers' interface}
-%
-% \begin{macro}{\unimath_get_mathstyle:}
-% This command expands to the currently math style.
-% \begin{macrocode}
-\cs_new:Nn \unimath_get_mathstyle:
- {
- \tl_use:N \l_@@_mathstyle_tl
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{Overcoming \texorpdfstring{\cmd\@onlypreamble}{\textbackslash @onlypreamble}}
-%
-% The requirement of only setting up the maths fonts in the preamble is now removed.
-% The following list might be overly ambitious.
-% \begin{macrocode}
-\tl_map_inline:nn
- {
- \new at mathgroup\cdp at list\cdp at elt\DeclareMathSizes
- \@DeclareMathSizes\newmathalphabet\newmathalphabet@@\newmathalphabet@@@
- \DeclareMathVersion\define at mathalphabet\define at mathgroup\addtoversion
- \version at list\version at elt\alpha at list\alpha at elt
- \restore at mathversion\init at restore@version\dorestore at version\process at table
- \new at mathversion\DeclareSymbolFont\group at list\group at elt
- \new at symbolfont\SetSymbolFont\SetSymbolFont@\get at cdp
- \DeclareMathAlphabet\new at mathalphabet\SetMathAlphabet\SetMathAlphabet@
- \DeclareMathAccent\set at mathaccent\DeclareMathSymbol\set at mathchar
- \set at mathsymbol\DeclareMathDelimiter\@xxDeclareMathDelimiter
- \@DeclareMathDelimiter\@xDeclareMathDelimiter\set at mathdelimiter
- \set@@mathdelimiter\DeclareMathRadical\mathchar at type
- \DeclareSymbolFontAlphabet\DeclareSymbolFontAlphabet@
- }
- {
- \tl_remove_once:Nn \@preamblecmds {\do#1}
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</package&(XE|LU)>
-% \end{macrocode}
Deleted: trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-primes.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-primes.dtx 2017-11-18 01:22:09 UTC (rev 45844)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-primes.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -1,368 +0,0 @@
-
-% \section{\DTXCURR --- Primes}
-%
-% \begin{macrocode}
-%<*package&(XE|LU)>
-% \end{macrocode}
-%
-% We need a new `prime' algorithm. Unicode math has four pre-drawn prime glyphs.
-% \begin{quote}\obeylines
-% \unichar{2032} {prime} (\cs{prime}): $x\prime$
-% \unichar{2033} {double prime} (\cs{dprime}): $x\dprime$
-% \unichar{2034} {triple prime} (\cs{trprime}): $x\trprime$
-% \unichar{2057} {quadruple prime} (\cs{qprime}): $x\qprime$
-% \end{quote}
-% As you can see, they're all drawn at the correct height without being superscripted.
-% However, in a correctly behaving OpenType font,
-% we also see different behaviour after the \texttt{ssty} feature is applied:
-% \begin{quote}
-% \font\1="[xits-math.otf]:script=math,+ssty=0"\1
-% \char"1D465\char"2032\quad
-% \char"1D465\char"2033\quad
-% \char"1D465\char"2034\quad
-% \char"1D465\char"2057
-% \end{quote}
-% The glyphs are now `full size' so that when placed inside a superscript,
-% their shape will match the originally sized ones. Many thanks to Ross Mills
-% of Tiro Typeworks for originally pointing out this behaviour.
-%
-% In regular \LaTeX, primes can be entered with the straight quote character
-% |'|, and multiple straight quotes chain together to produce multiple
-% primes. Better results can be achieved in \pkg{unicode-math} by chaining
-% multiple single primes into a pre-drawn multi-prime glyph; consider
-% $x\prime{}\prime{}\prime$ vs.\ $x\trprime$.
-%
-% For Unicode maths, we wish to conserve this behaviour and augment it with
-% the possibility of adding any combination of Unicode prime or any of the
-% $n$-prime characters. E.g., the user might copy-paste a double prime from
-% another source and then later type another single prime after it; the output
-% should be the triple prime.
-%
-% Our algorithm is:
-% \begin{itemize}[nolistsep]
-% \item Prime encountered; pcount=1.
-% \item Scan ahead; if prime: pcount:=pcount+1; repeat.
-% \item If not prime, stop scanning.
-% \item If pcount=1, \cs{prime}, end.
-% \item If pcount=2, check \cs{dprime}; if it exists, use it, end; if not, goto last step.
-% \item Ditto pcount=3 \& \cs{trprime}.
-% \item Ditto pcount=4 \& \cs{qprime}.
-% \item If pcount>4 or the glyph doesn't exist, insert pcount \cs{prime}s with \cs{primekern} between each.
-% \end{itemize}
-%
-% This is a wrapper to insert a superscript; if there is a subsequent
-% trailing superscript, then it is included within the insertion.
-% \begin{macrocode}
-\cs_new:Nn \@@_arg_i_before_egroup:n {#1\egroup}
-\cs_new:Nn \@@_superscript:n
- {
- ^\bgroup #1
- \peek_meaning_remove:NTF ^ \@@_arg_i_before_egroup:n \egroup
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_nprimes:Nn
- {
- \@@_superscript:n
- {
- #1
- \prg_replicate:nn {#2-1} { \mskip \g_@@_primekern_muskip #1 }
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_nprimes_select:nn
- {
- \int_case:nnF {#2}
- {
- {1} { \@@_superscript:n {#1} }
- {2} {
- \@@_glyph_if_exist:nTF {"2033}
- { \@@_superscript:n {\@@_prime_double_mchar} }
- { \@@_nprimes:Nn #1 {#2} }
- }
- {3} {
- \@@_glyph_if_exist:nTF {"2034}
- { \@@_superscript:n {\@@_prime_triple_mchar} }
- { \@@_nprimes:Nn #1 {#2} }
- }
- {4} {
- \@@_glyph_if_exist:nTF {"2057}
- { \@@_superscript:n {\@@_prime_quad_mchar} }
- { \@@_nprimes:Nn #1 {#2} }
- }
- }
- {
- \@@_nprimes:Nn #1 {#2}
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Nn \@@_nbackprimes_select:nn
- {
- \int_case:nnF {#2}
- {
- {1} { \@@_superscript:n {#1} }
- {2} {
- \@@_glyph_if_exist:nTF {"2036}
- { \@@_superscript:n {\@@_backprime_double_mchar} }
- { \@@_nprimes:Nn #1 {#2} }
- }
- {3} {
- \@@_glyph_if_exist:nTF {"2037}
- { \@@_superscript:n {\@@_backprime_triple_mchar} }
- { \@@_nprimes:Nn #1 {#2} }
- }
- }
- {
- \@@_nprimes:Nn #1 {#2}
- }
- }
-% \end{macrocode}
-%
-% Scanning is annoying because I'm too lazy to do it for the general case.
-%
-% \begin{macrocode}
-\cs_new:Npn \@@_scan_prime:
- {
- \cs_set_eq:NN \@@_superscript:n \use:n
- \int_zero:N \l_@@_primecount_int
- \@@_scanprime_collect:N \@@_prime_single_mchar
- }
-\cs_new:Npn \@@_scan_dprime:
- {
- \cs_set_eq:NN \@@_superscript:n \use:n
- \int_set:Nn \l_@@_primecount_int {1}
- \@@_scanprime_collect:N \@@_prime_single_mchar
- }
-\cs_new:Npn \@@_scan_trprime:
- {
- \cs_set_eq:NN \@@_superscript:n \use:n
- \int_set:Nn \l_@@_primecount_int {2}
- \@@_scanprime_collect:N \@@_prime_single_mchar
- }
-\cs_new:Npn \@@_scan_qprime:
- {
- \cs_set_eq:NN \@@_superscript:n \use:n
- \int_set:Nn \l_@@_primecount_int {3}
- \@@_scanprime_collect:N \@@_prime_single_mchar
- }
-\cs_new:Npn \@@_scan_sup_prime:
- {
- \int_zero:N \l_@@_primecount_int
- \@@_scanprime_collect:N \@@_prime_single_mchar
- }
-\cs_new:Npn \@@_scan_sup_dprime:
- {
- \int_set:Nn \l_@@_primecount_int {1}
- \@@_scanprime_collect:N \@@_prime_single_mchar
- }
-\cs_new:Npn \@@_scan_sup_trprime:
- {
- \int_set:Nn \l_@@_primecount_int {2}
- \@@_scanprime_collect:N \@@_prime_single_mchar
- }
-\cs_new:Npn \@@_scan_sup_qprime:
- {
- \int_set:Nn \l_@@_primecount_int {3}
- \@@_scanprime_collect:N \@@_prime_single_mchar
- }
-\cs_new:Nn \@@_scanprime_collect:N
- {
- \int_incr:N \l_@@_primecount_int
- \peek_meaning_remove:NTF '
- { \@@_scanprime_collect:N #1 }
- {
- \peek_meaning_remove:NTF \@@_scan_prime:
- { \@@_scanprime_collect:N #1 }
- {
- \peek_meaning_remove:NTF ^^^^2032
- { \@@_scanprime_collect:N #1 }
- {
- \peek_meaning_remove:NTF \@@_scan_dprime:
- {
- \int_incr:N \l_@@_primecount_int
- \@@_scanprime_collect:N #1
- }
- {
- \peek_meaning_remove:NTF ^^^^2033
- {
- \int_incr:N \l_@@_primecount_int
- \@@_scanprime_collect:N #1
- }
- {
- \peek_meaning_remove:NTF \@@_scan_trprime:
- {
- \int_add:Nn \l_@@_primecount_int {2}
- \@@_scanprime_collect:N #1
- }
- {
- \peek_meaning_remove:NTF ^^^^2034
- {
- \int_add:Nn \l_@@_primecount_int {2}
- \@@_scanprime_collect:N #1
- }
- {
- \peek_meaning_remove:NTF \@@_scan_qprime:
- {
- \int_add:Nn \l_@@_primecount_int {3}
- \@@_scanprime_collect:N #1
- }
- {
- \peek_meaning_remove:NTF ^^^^2057
- {
- \int_add:Nn \l_@@_primecount_int {3}
- \@@_scanprime_collect:N #1
- }
- {
- \@@_nprimes_select:nn {#1} {\l_@@_primecount_int}
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\cs_new:Npn \@@_scan_backprime:
- {
- \cs_set_eq:NN \@@_superscript:n \use:n
- \int_zero:N \l_@@_primecount_int
- \@@_scanbackprime_collect:N \@@_backprime_single_mchar
- }
-\cs_new:Npn \@@_scan_backdprime:
- {
- \cs_set_eq:NN \@@_superscript:n \use:n
- \int_set:Nn \l_@@_primecount_int {1}
- \@@_scanbackprime_collect:N \@@_backprime_single_mchar
- }
-\cs_new:Npn \@@_scan_backtrprime:
- {
- \cs_set_eq:NN \@@_superscript:n \use:n
- \int_set:Nn \l_@@_primecount_int {2}
- \@@_scanbackprime_collect:N \@@_backprime_single_mchar
- }
-\cs_new:Npn \@@_scan_sup_backprime:
- {
- \int_zero:N \l_@@_primecount_int
- \@@_scanbackprime_collect:N \@@_backprime_single_mchar
- }
-\cs_new:Npn \@@_scan_sup_backdprime:
- {
- \int_set:Nn \l_@@_primecount_int {1}
- \@@_scanbackprime_collect:N \@@_backprime_single_mchar
- }
-\cs_new:Npn \@@_scan_sup_backtrprime:
- {
- \int_set:Nn \l_@@_primecount_int {2}
- \@@_scanbackprime_collect:N \@@_backprime_single_mchar
- }
-\cs_new:Nn \@@_scanbackprime_collect:N
- {
- \int_incr:N \l_@@_primecount_int
- \peek_meaning_remove:NTF `
- {
- \@@_scanbackprime_collect:N #1
- }
- {
- \peek_meaning_remove:NTF \@@_scan_backprime:
- {
- \@@_scanbackprime_collect:N #1
- }
- {
- \peek_meaning_remove:NTF ^^^^2035
- {
- \@@_scanbackprime_collect:N #1
- }
- {
- \peek_meaning_remove:NTF \@@_scan_backdprime:
- {
- \int_incr:N \l_@@_primecount_int
- \@@_scanbackprime_collect:N #1
- }
- {
- \peek_meaning_remove:NTF ^^^^2036
- {
- \int_incr:N \l_@@_primecount_int
- \@@_scanbackprime_collect:N #1
- }
- {
- \peek_meaning_remove:NTF \@@_scan_backtrprime:
- {
- \int_add:Nn \l_@@_primecount_int {2}
- \@@_scanbackprime_collect:N #1
- }
- {
- \peek_meaning_remove:NTF ^^^^2037
- {
- \int_add:Nn \l_@@_primecount_int {2}
- \@@_scanbackprime_collect:N #1
- }
- {
- \@@_nbackprimes_select:nn {#1} {\l_@@_primecount_int}
- }
- }
- }
- }
- }
- }
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\AtBeginDocument { \@@_define_prime_commands: \@@_define_prime_chars: }
-\cs_new:Nn \@@_define_prime_commands:
- {
- \cs_set_eq:NN \prime \@@_prime_single_mchar
- \cs_set_eq:NN \dprime \@@_prime_double_mchar
- \cs_set_eq:NN \trprime \@@_prime_triple_mchar
- \cs_set_eq:NN \qprime \@@_prime_quad_mchar
- \cs_set_eq:NN \backprime \@@_backprime_single_mchar
- \cs_set_eq:NN \backdprime \@@_backprime_double_mchar
- \cs_set_eq:NN \backtrprime \@@_backprime_triple_mchar
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\group_begin:
- \char_set_catcode_active:N \'
- \char_set_catcode_active:N \`
- \char_set_catcode_active:n {"2032}
- \char_set_catcode_active:n {"2033}
- \char_set_catcode_active:n {"2034}
- \char_set_catcode_active:n {"2057}
- \char_set_catcode_active:n {"2035}
- \char_set_catcode_active:n {"2036}
- \char_set_catcode_active:n {"2037}
- \cs_gset:Nn \@@_define_prime_chars:
- {
- \cs_set_eq:NN ' \@@_scan_sup_prime:
- \cs_set_eq:NN ^^^^2032 \@@_scan_sup_prime:
- \cs_set_eq:NN ^^^^2033 \@@_scan_sup_dprime:
- \cs_set_eq:NN ^^^^2034 \@@_scan_sup_trprime:
- \cs_set_eq:NN ^^^^2057 \@@_scan_sup_qprime:
- \cs_set_eq:NN ` \@@_scan_sup_backprime:
- \cs_set_eq:NN ^^^^2035 \@@_scan_sup_backprime:
- \cs_set_eq:NN ^^^^2036 \@@_scan_sup_backdprime:
- \cs_set_eq:NN ^^^^2037 \@@_scan_sup_backtrprime:
- }
-\group_end:
-% \end{macrocode}
-%
-%
-% \begin{macrocode}
-%</package&(XE|LU)>
-% \end{macrocode}
-%
-\endinput
-
-
Deleted: trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-setchar.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-setchar.dtx 2017-11-18 01:22:09 UTC (rev 45844)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-setchar.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -1,269 +0,0 @@
-
-% \section{\DTXCURR --- Setting up maths chars}
-%
-% \begin{macrocode}
-%<*package&(XE|LU)>
-% \end{macrocode}
-%
-% \subsection{A token list to contain the data of the math table}
-%
-% Instead of \cmd\input-ing the unicode math table every time we
-% want to re-read its data, we save it within a macro. This has two
-% advantages: 1.~it should be slightly faster, at the expense of memory;
-% 2.~we don't need to worry about catcodes later, since they're frozen
-% at this point.
-%
-% In time, the case statement inside |set_mathsymbol| will be moved in here
-% to avoid re-running it every time.
-% \begin{macrocode}
-\cs_new:Npn \@@_symbol_setup:
- {
- \cs_set:Npn \UnicodeMathSymbol ##1##2##3##4
- {
- \exp_not:n { \_@@_sym:nnn {##1} {##2} {##3} }
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\tl_set_from_file_x:Nnn \g_@@_mathtable_tl {\@@_symbol_setup:} {unicode-math-table.tex}
-% \end{macrocode}
-%
-%
-% \begin{macro}{\@@_input_math_symbol_table:}
-% This function simply expands to the token list containing all the data.
-% \begin{macrocode}
-\cs_new:Nn \@@_input_math_symbol_table: {\g_@@_mathtable_tl}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsection{Definitions of the active math characters}
-%
-% Now give \cmd\_@@_sym:nnn\ a definition in terms of \cmd\@@_cs_set_eq_active_char:Nw\
-% and we're good to go.
-%
-% Ensure catcodes are appropriate;
-% make sure |#| is an `other' so that we don't get confused with \cs{mathoctothorpe}.
-% \begin{macrocode}
-\AtBeginDocument{\@@_define_math_chars:}
-\cs_new:Nn \@@_define_math_chars:
- {
- \group_begin:
- \cs_set:Npn \_@@_sym:nnn ##1##2##3
- {
- \tl_if_in:nnT
- { \mathord \mathalpha \mathbin \mathrel \mathpunct \mathop \mathfence }
- {##3}
- {
- \exp_last_unbraced:NNx \cs_gset_eq:NN ##2 { \Ucharcat ##1 ~ 12 ~ }
- }
- }
- \@@_input_math_symbol_table:
- \group_end:
- }
-% \end{macrocode}
-%
-%
-%
-% \subsection{Commands for each symbol/glyph/char}
-%
-% \begin{macro}{\@@_set_mathsymbol:nNNn}
-% \darg{A \LaTeX\ symbol font, e.g., \texttt{operators}}
-% \darg{Symbol macro, \eg, \cmd\alpha}
-% \darg{Type, \eg, \cmd\mathalpha}
-% \darg{Slot, \eg, \texttt{"221E}}
-% There are a bunch of tests to perform to process the various characters.
-% The following assignments should all be fairly straightforward.
-%
-% The catcode setting is to work around (strange?) behaviour in LuaTeX in which catcode 11 characters don't have italic correction for maths.
-% We don't adjust ascii chars, however, because certain punctuation should not have their catcodes changed.
-% \begin{macrocode}
-\cs_set:Nn \@@_set_mathsymbol:nNNn
- {
- \bool_lazy_and:nnT
- {
- \int_compare_p:nNn {#4} > {127}
- }
- {
- \int_compare_p:nNn { \char_value_catcode:n {#4} } = {11}
- }
- { \char_set_catcode_other:n {#4} }
-
- \tl_case:Nn #3
- {
- \mathord { \@@_set_mathcode:nnn {#4} {#3} {#1} }
- \mathalpha { \@@_set_mathcode:nnn {#4} {#3} {#1} }
- \mathbin { \@@_set_mathcode:nnn {#4} {#3} {#1} }
- \mathrel { \@@_set_mathcode:nnn {#4} {#3} {#1} }
- \mathpunct { \@@_set_mathcode:nnn {#4} {#3} {#1} }
- \mathop { \@@_set_big_operator:nnn {#1} {#2} {#4} }
- \mathopen { \@@_set_math_open:nnn {#1} {#2} {#4} }
- \mathclose { \@@_set_math_close:nnn {#1} {#2} {#4} }
- \mathfence { \@@_set_math_fence:nnnn {#1} {#2} {#3} {#4} }
- \mathaccent
- { \@@_set_math_accent:Nnnn #2 {fixed} {#1} {#4} }
- \mathbotaccent
- { \@@_set_math_accent:Nnnn #2 {bottom~ fixed} {#1} {#4} }
- \mathaccentwide
- { \@@_set_math_accent:Nnnn #2 {} {#1} {#4} }
- \mathbotaccentwide
- { \@@_set_math_accent:Nnnn #2 {bottom} {#1} {#4} }
- \mathover
- { \@@_set_math_overunder:Nnnn #2 {} {#1} {#4} }
- \mathunder
- { \@@_set_math_overunder:Nnnn #2 {bottom} {#1} {#4} }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-\edef\mathfence{\string\mathfence}
-\edef\mathover{\string\mathover}
-\edef\mathunder{\string\mathunder}
-\edef\mathbotaccent{\string\mathbotaccent}
-\edef\mathaccentwide{\string\mathaccentwide}
-\edef\mathbotaccentwide{\string\mathbotaccentwide}
-% \end{macrocode}
-%
-%
-% \begin{macro}{\@@_set_big_operator:nnn}
-% \darg{Symbol font name}
-% \darg{Macro to assign}
-% \darg{Glyph slot}
-% In the examples following, say we're defining for the symbol \cmd\sum\ ($\sum$).
-% In order for literal Unicode characters to be used in the source and still
-% have the correct limits behaviour, big operators are made math-active.
-% This involves three steps:
-% \begin{itemize}
-% \item
-% The active math char is defined to expand to the macro \cs{sum_sym}.
-% (Later, the control sequence \cs{sum} will be assigned the math char.)
-% \item
-% Declare the plain old mathchardef for the control sequence \cmd\sumop.
-% (This follows the convention of \LaTeX/\pkg{amsmath}.)
-% \item
-% Define \cs{sum_sym} as \cmd\sumop, followed by \cmd\nolimits\ if necessary.
-% \end{itemize}
-% Whether the \cmd\nolimits\ suffix is inserted is controlled by the
-% token list \cs{l_@@_nolimits_tl}, which contains a list of such characters.
-% This list is checked dynamically to allow it to be updated mid-document.
-%
-% Examples of expansion, by default, for two big operators:
-% \begin{quote}
-% (~\cs{sum} $\to$~) $\sum$ $\to$ \cs{sum_sym} $\to$ \cs{sumop}\cs{nolimits}\par
-% (~\cs{int} $\to$~) $\int$ $\to$ \cs{int_sym} $\to$ \cs{intop}
-% \end{quote}
-% \begin{macrocode}
-\cs_new:Nn \@@_set_big_operator:nnn
- {
- \@@_char_gmake_mathactive:n {#3}
- \cs_set_protected_nopar:Npx \@@_tmpa: { \exp_not:c { \cs_to_str:N #2 _sym } }
- \char_gset_active_eq:nN {#3} \@@_tmpa:
-
- \@@_set_mathchar:cNnn {\cs_to_str:N #2 op} \mathop {#1} {#3}
-
- \cs_gset:cpx { \cs_to_str:N #2 _sym }
- {
- \exp_not:c { \cs_to_str:N #2 op }
- \exp_not:n { \tl_if_in:NnT \l_@@_nolimits_tl {#2} \nolimits }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_set_math_open:nnn}
-% \darg{Symbol font name}
-% \darg{Macro to assign}
-% \darg{Glyph slot}
-% \begin{macrocode}
-\cs_new:Nn \@@_set_math_open:nnn
- {
- \tl_if_in:NnTF \l_@@_radicals_tl {#2}
- {
- \cs_gset_protected_nopar:cpx {\cs_to_str:N #2 sign}
- { \@@_radical:nn {#1} {#3} }
- \tl_set:cn {l_@@_radical_\cs_to_str:N #2_tl} {\use:c{sym #1}~ #3}
- }
- {
- \@@_set_delcode:nnn {#1} {#3} {#3}
- \@@_set_mathcode:nnn {#3} \mathopen {#1}
- \cs_gset_protected_nopar:Npx #2
- { \@@_delimiter:Nnn \mathopen {#1} {#3} }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_set_math_close:nnn}
-% \darg{Symbol font name}
-% \darg{Macro to assign}
-% \darg{Glyph slot}
-% \begin{macrocode}
-\cs_new:Nn \@@_set_math_close:nnn
- {
- \@@_set_delcode:nnn {#1} {#3} {#3}
- \@@_set_mathcode:nnn {#3} \mathclose {#1}
- \cs_gset_protected_nopar:Npx #2
- { \@@_delimiter:Nnn \mathclose {#1} {#3} }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_set_math_fence:nnnn}
-% \darg{Symbol font name}
-% \darg{Macro to assign}
-% \darg{Type, \eg, \cmd\mathalpha}
-% \darg{Glyph slot}
-% \begin{macrocode}
-\cs_new:Nn \@@_set_math_fence:nnnn
- {
- \@@_set_mathcode:nnn {#4} {#3} {#1}
- \@@_set_delcode:nnn {#1} {#4} {#4}
- \cs_gset_protected_nopar:cpx {l \cs_to_str:N #2}
- { \@@_delimiter:Nnn \mathopen {#1} {#4} }
- \cs_gset_protected_nopar:cpx {r \cs_to_str:N #2}
- { \@@_delimiter:Nnn \mathclose {#1} {#4} }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_set_math_accent:Nnnn}
-% \darg{Accend command}
-% \darg{Accent type (string)}
-% \darg{Symbol font name}
-% \darg{Glyph slot}
-% \begin{macrocode}
-\cs_new:Nn \@@_set_math_accent:Nnnn
- {
- \cs_gset_protected_nopar:Npx #1
- { \@@_accent:nnn {#2} {#3} {#4} }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_set_math_overunder:Nnnn}
-% \darg{Accend command}
-% \darg{Accent type (string)}
-% \darg{Symbol font name}
-% \darg{Glyph slot}
-% \begin{macrocode}
-\cs_new:Nn \@@_set_math_overunder:Nnnn
- {
- \cs_gset_protected_nopar:Npx #1 ##1
- {
- \mathop
- { \@@_accent:nnn {#2} {#3} {#4} {##1} }
- \limits
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macrocode}
-%</package&(XE|LU)>
-% \end{macrocode}
-%
-\endinput
Deleted: trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-sscript.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-sscript.dtx 2017-11-18 01:22:09 UTC (rev 45844)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-sscript.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -1,187 +0,0 @@
-
-% \section{\DTXCURR --- Unicode sub- and super-scripts}
-%
-% \begin{macrocode}
-%<*package&(XE|LU)>
-% \end{macrocode}
-%
-% The idea here is to enter a scanning state after a superscript or subscript
-% is encountered.
-% If subsequent superscripts or subscripts (resp.) are found,
-% they are lumped together.
-% Each sub/super has a corresponding regular size
-% glyph which is used by \XeTeX\ to typeset the results; this means that the
-% actual subscript/superscript glyphs are never seen in the output
-% document~--- they are only used as input characters.
-%
-% Open question: should the superscript-like `modifiers' (\unichar{1D2C}
-% {modifier capital letter a} and on) be included here?
-% \begin{macrocode}
-\group_begin:
-% \end{macrocode}
-% \paragraph{Superscripts}
-% Populate a property list with superscript characters; themselves as their
-% key, and their replacement as each key's value.
-% Then make the superscript active and bind it to the scanning function.
-%
-% \cs{scantokens} makes this process much simpler since we can activate the
-% char and assign its meaning in one step.
-% \begin{macrocode}
-\cs_new:Nn \@@_setup_active_superscript:nn
- {
- \prop_gput:Nnn \g_@@_supers_prop {#1} {#2}
- \char_set_catcode_active:N #1
- \@@_char_gmake_mathactive:N #1
- \scantokens
- {
- \cs_gset:Npn #1
- {
- \tl_set:Nn \l_@@_ss_chain_tl {#2}
- \cs_set_eq:NN \@@_sub_or_super:n \sp
- \tl_set:Nn \l_@@_tmpa_tl {supers}
- \@@_scan_sscript:
- }
- }
- }
-% \end{macrocode}
-% Bam:
-% \begin{macrocode}
-\@@_setup_active_superscript:nn {^^^^2070} {0}
-\@@_setup_active_superscript:nn {^^^^00b9} {1}
-\@@_setup_active_superscript:nn {^^^^00b2} {2}
-\@@_setup_active_superscript:nn {^^^^00b3} {3}
-\@@_setup_active_superscript:nn {^^^^2074} {4}
-\@@_setup_active_superscript:nn {^^^^2075} {5}
-\@@_setup_active_superscript:nn {^^^^2076} {6}
-\@@_setup_active_superscript:nn {^^^^2077} {7}
-\@@_setup_active_superscript:nn {^^^^2078} {8}
-\@@_setup_active_superscript:nn {^^^^2079} {9}
-\@@_setup_active_superscript:nn {^^^^207a} {+}
-\@@_setup_active_superscript:nn {^^^^207b} {-}
-\@@_setup_active_superscript:nn {^^^^207c} {=}
-\@@_setup_active_superscript:nn {^^^^207d} {(}
-\@@_setup_active_superscript:nn {^^^^207e} {)}
-\@@_setup_active_superscript:nn {^^^^2071} {i}
-\@@_setup_active_superscript:nn {^^^^207f} {n}
-\@@_setup_active_superscript:nn {^^^^02b0} {h}
-\@@_setup_active_superscript:nn {^^^^02b2} {j}
-\@@_setup_active_superscript:nn {^^^^02b3} {r}
-\@@_setup_active_superscript:nn {^^^^02b7} {w}
-\@@_setup_active_superscript:nn {^^^^02b8} {y}
-% \end{macrocode}
-% \paragraph{Subscripts} Ditto above.
-% \begin{macrocode}
-\cs_new:Nn \@@_setup_active_subscript:nn
- {
- \prop_gput:Nnn \g_@@_subs_prop {#1} {#2}
- \char_set_catcode_active:N #1
- \@@_char_gmake_mathactive:N #1
- \scantokens
- {
- \cs_gset:Npn #1
- {
- \tl_set:Nn \l_@@_ss_chain_tl {#2}
- \cs_set_eq:NN \@@_sub_or_super:n \sb
- \tl_set:Nn \l_@@_tmpa_tl {subs}
- \@@_scan_sscript:
- }
- }
- }
-% \end{macrocode}
-% A few more subscripts than superscripts:
-% \begin{macrocode}
-\@@_setup_active_subscript:nn {^^^^2080} {0}
-\@@_setup_active_subscript:nn {^^^^2081} {1}
-\@@_setup_active_subscript:nn {^^^^2082} {2}
-\@@_setup_active_subscript:nn {^^^^2083} {3}
-\@@_setup_active_subscript:nn {^^^^2084} {4}
-\@@_setup_active_subscript:nn {^^^^2085} {5}
-\@@_setup_active_subscript:nn {^^^^2086} {6}
-\@@_setup_active_subscript:nn {^^^^2087} {7}
-\@@_setup_active_subscript:nn {^^^^2088} {8}
-\@@_setup_active_subscript:nn {^^^^2089} {9}
-\@@_setup_active_subscript:nn {^^^^208a} {+}
-\@@_setup_active_subscript:nn {^^^^208b} {-}
-\@@_setup_active_subscript:nn {^^^^208c} {=}
-\@@_setup_active_subscript:nn {^^^^208d} {(}
-\@@_setup_active_subscript:nn {^^^^208e} {)}
-\@@_setup_active_subscript:nn {^^^^2090} {a}
-\@@_setup_active_subscript:nn {^^^^2091} {e}
-\@@_setup_active_subscript:nn {^^^^2095} {h}
-\@@_setup_active_subscript:nn {^^^^1d62} {i}
-\@@_setup_active_subscript:nn {^^^^2c7c} {j}
-\@@_setup_active_subscript:nn {^^^^2096} {k}
-\@@_setup_active_subscript:nn {^^^^2097} {l}
-\@@_setup_active_subscript:nn {^^^^2098} {m}
-\@@_setup_active_subscript:nn {^^^^2099} {n}
-\@@_setup_active_subscript:nn {^^^^2092} {o}
-\@@_setup_active_subscript:nn {^^^^209a} {p}
-\@@_setup_active_subscript:nn {^^^^1d63} {r}
-\@@_setup_active_subscript:nn {^^^^209b} {s}
-\@@_setup_active_subscript:nn {^^^^209c} {t}
-\@@_setup_active_subscript:nn {^^^^1d64} {u}
-\@@_setup_active_subscript:nn {^^^^1d65} {v}
-\@@_setup_active_subscript:nn {^^^^2093} {x}
-\@@_setup_active_subscript:nn {^^^^1d66} {\beta}
-\@@_setup_active_subscript:nn {^^^^1d67} {\gamma}
-\@@_setup_active_subscript:nn {^^^^1d68} {\rho}
-\@@_setup_active_subscript:nn {^^^^1d69} {\phi}
-\@@_setup_active_subscript:nn {^^^^1d6a} {\chi}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\group_end:
-% \end{macrocode}
-% The scanning command, which collects a chain of subscripts or a chain
-% of superscripts and then typesets what it has collected.
-% \begin{macrocode}
-\cs_new:Npn \@@_scan_sscript:
- {
- \@@_scan_sscript:TF
- {
- \@@_scan_sscript:
- }
- {
- \@@_sub_or_super:n {\l_@@_ss_chain_tl}
- }
- }
-% \end{macrocode}
-% We do not skip spaces when scanning ahead, and we explicitly wish to
-% bail out on encountering a space or a brace. These cases are filtered
-% using \cs{peek_N_type:TF}. Otherwise the token can be taken as an
-% \texttt{N}-type argument. Then we search for it in the appropriate
-% property list (\cs{l_@@_tmpa_tl} is |subs| or |supers|).
-% If found, add the value to the current chain of sub/superscripts.
-% Remember to put the character back in the input otherwise.
-% The \cs{group_align_safe_begin:} and \cs{group_align_safe_end:} are
-% needed in case |#3| is |&|.
-% \begin{macrocode}
-\cs_new:Npn \@@_scan_sscript:TF #1#2
- {
- \peek_N_type:TF
- {
- \group_align_safe_begin:
- \@@_scan_sscript_aux:nnN {#1} {#2}
- }
- {#2}
- }
-\cs_new:Npn \@@_scan_sscript_aux:nnN #1#2#3
- {
- \prop_get:cnNTF {g_@@_\l_@@_tmpa_tl _prop} {#3} \l_@@_tmpb_tl
- {
- \tl_put_right:NV \l_@@_ss_chain_tl \l_@@_tmpb_tl
- \group_align_safe_end:
- #1
- }
- { \group_align_safe_end: #2 #3 }
- }
-% \end{macrocode}
-%
-%
-% \begin{macrocode}
-%</package&(XE|LU)>
-% \end{macrocode}
-%
-\endinput
-
-
Deleted: trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-usv.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-usv.dtx 2017-11-18 01:22:09 UTC (rev 45844)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math-usv.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -1,567 +0,0 @@
-
-% \section{\DTXCURR --- Alphabet Unicode positions}
-%
-% Before we begin, let's define the positions of the various Unicode
-% alphabets so that our code is a little more readable.\footnote{`\textsc{u.s.v.}' stands
-% for `Unicode scalar value'.}
-%
-% \begin{macrocode}
-%<*package&(XE|LU)>
-% \end{macrocode}
-%
-% \paragraph{Alphabets}
-% \begin{macrocode}
-\usv_set:nnn {normal} {num} {48}
-\usv_set:nnn {normal} {Latin}{"1D434}
-\usv_set:nnn {normal} {latin}{"1D44E}
-\usv_set:nnn {normal} {Greek}{"1D6E2}
-\usv_set:nnn {normal} {greek}{"1D6FC}
-\usv_set:nnn {normal}{varTheta} {"1D6F3}
-\usv_set:nnn {normal}{epsilon}{"1D716}
-\usv_set:nnn {normal}{vartheta} {"1D717}
-\usv_set:nnn {normal}{varkappa} {"1D718}
-\usv_set:nnn {normal}{phi} {"1D719}
-\usv_set:nnn {normal}{varrho} {"1D71A}
-\usv_set:nnn {normal}{varpi} {"1D71B}
-\usv_set:nnn {normal} {Nabla}{"1D6FB}
-\usv_set:nnn {normal} {partial}{"1D715}
-
-\usv_set:nnn {up} {num} {48}
-\usv_set:nnn {up} {Latin}{65}
-\usv_set:nnn {up} {latin}{97}
-\usv_set:nnn {up} {Greek}{"391}
-\usv_set:nnn {up} {greek}{"3B1}
-\usv_set:nnn {it} {Latin}{"1D434}
-\usv_set:nnn {it} {latin}{"1D44E}
-\usv_set:nnn {it} {Greek}{"1D6E2}
-\usv_set:nnn {it} {greek}{"1D6FC}
-\usv_set:nnn {bb} {num} {"1D7D8}
-\usv_set:nnn {bb} {Latin}{"1D538}
-\usv_set:nnn {bb} {latin}{"1D552}
-\usv_set:nnn {scr} {Latin}{"1D49C}
-\usv_set:nnn {cal} {Latin}{"1D49C}
-\usv_set:nnn {scr} {latin}{"1D4B6}
-\usv_set:nnn {frak}{Latin}{"1D504}
-\usv_set:nnn {frak}{latin}{"1D51E}
-\usv_set:nnn {sf} {num} {"1D7E2}
-\usv_set:nnn {sfup}{num} {"1D7E2}
-\usv_set:nnn {sfit}{num} {"1D7E2}
-\usv_set:nnn {sfup}{Latin}{"1D5A0}
-\usv_set:nnn {sf} {Latin}{"1D5A0}
-\usv_set:nnn {sfup}{latin}{"1D5BA}
-\usv_set:nnn {sf} {latin}{"1D5BA}
-\usv_set:nnn {sfit}{Latin}{"1D608}
-\usv_set:nnn {sfit}{latin}{"1D622}
-\usv_set:nnn {tt} {num} {"1D7F6}
-\usv_set:nnn {tt} {Latin}{"1D670}
-\usv_set:nnn {tt} {latin}{"1D68A}
-% \end{macrocode}
-% Bold:
-% \begin{macrocode}
-\usv_set:nnn {bf} {num} {"1D7CE}
-\usv_set:nnn {bfup} {num} {"1D7CE}
-\usv_set:nnn {bfit} {num} {"1D7CE}
-\usv_set:nnn {bfup} {Latin}{"1D400}
-\usv_set:nnn {bfup} {latin}{"1D41A}
-\usv_set:nnn {bfup} {Greek}{"1D6A8}
-\usv_set:nnn {bfup} {greek}{"1D6C2}
-\usv_set:nnn {bfit} {Latin}{"1D468}
-\usv_set:nnn {bfit} {latin}{"1D482}
-\usv_set:nnn {bfit} {Greek}{"1D71C}
-\usv_set:nnn {bfit} {greek}{"1D736}
-\usv_set:nnn {bffrak}{Latin}{"1D56C}
-\usv_set:nnn {bffrak}{latin}{"1D586}
-\usv_set:nnn {bfscr} {Latin}{"1D4D0}
-\usv_set:nnn {bfcal} {Latin}{"1D4D0}
-\usv_set:nnn {bfscr} {latin}{"1D4EA}
-\usv_set:nnn {bfsf} {num} {"1D7EC}
-\usv_set:nnn {bfsfup}{num} {"1D7EC}
-\usv_set:nnn {bfsfit}{num} {"1D7EC}
-\usv_set:nnn {bfsfup}{Latin}{"1D5D4}
-\usv_set:nnn {bfsfup}{latin}{"1D5EE}
-\usv_set:nnn {bfsfup}{Greek}{"1D756}
-\usv_set:nnn {bfsfup}{greek}{"1D770}
-\usv_set:nnn {bfsfit}{Latin}{"1D63C}
-\usv_set:nnn {bfsfit}{latin}{"1D656}
-\usv_set:nnn {bfsfit}{Greek}{"1D790}
-\usv_set:nnn {bfsfit}{greek}{"1D7AA}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\usv_set:nnn {bfsf}{Latin}{ \bool_if:NTF \g_@@_upLatin_bool \g_@@_bfsfup_Latin_usv \g_@@_bfsfit_Latin_usv }
-\usv_set:nnn {bfsf}{latin}{ \bool_if:NTF \g_@@_uplatin_bool \g_@@_bfsfup_latin_usv \g_@@_bfsfit_latin_usv }
-\usv_set:nnn {bfsf}{Greek}{ \bool_if:NTF \g_@@_upGreek_bool \g_@@_bfsfup_Greek_usv \g_@@_bfsfit_Greek_usv }
-\usv_set:nnn {bfsf}{greek}{ \bool_if:NTF \g_@@_upgreek_bool \g_@@_bfsfup_greek_usv \g_@@_bfsfit_greek_usv }
-\usv_set:nnn {bf} {Latin}{ \bool_if:NTF \g_@@_bfupLatin_bool \g_@@_bfup_Latin_usv \g_@@_bfit_Latin_usv }
-\usv_set:nnn {bf} {latin}{ \bool_if:NTF \g_@@_bfuplatin_bool \g_@@_bfup_latin_usv \g_@@_bfit_latin_usv }
-\usv_set:nnn {bf} {Greek}{ \bool_if:NTF \g_@@_bfupGreek_bool \g_@@_bfup_Greek_usv \g_@@_bfit_Greek_usv }
-\usv_set:nnn {bf} {greek}{ \bool_if:NTF \g_@@_bfupgreek_bool \g_@@_bfup_greek_usv \g_@@_bfit_greek_usv }
-% \end{macrocode}
-% Greek variants:
-% \begin{macrocode}
-\usv_set:nnn {up}{varTheta} {"3F4}
-\usv_set:nnn {up}{Digamma} {"3DC}
-\usv_set:nnn {up}{epsilon}{"3F5}
-\usv_set:nnn {up}{vartheta} {"3D1}
-\usv_set:nnn {up}{varkappa} {"3F0}
-\usv_set:nnn {up}{phi} {"3D5}
-\usv_set:nnn {up}{varrho} {"3F1}
-\usv_set:nnn {up}{varpi} {"3D6}
-\usv_set:nnn {up}{digamma} {"3DD}
-% \end{macrocode}
-% Bold:
-% \begin{macrocode}
-\usv_set:nnn {bfup}{varTheta} {"1D6B9}
-\usv_set:nnn {bfup}{Digamma} {"1D7CA}
-\usv_set:nnn {bfup}{epsilon}{"1D6DC}
-\usv_set:nnn {bfup}{vartheta} {"1D6DD}
-\usv_set:nnn {bfup}{varkappa} {"1D6DE}
-\usv_set:nnn {bfup}{phi} {"1D6DF}
-\usv_set:nnn {bfup}{varrho} {"1D6E0}
-\usv_set:nnn {bfup}{varpi} {"1D6E1}
-\usv_set:nnn {bfup}{digamma} {"1D7CB}
-% \end{macrocode}
-% Italic Greek variants:
-% \begin{macrocode}
-\usv_set:nnn {it}{varTheta} {"1D6F3}
-\usv_set:nnn {it}{epsilon}{"1D716}
-\usv_set:nnn {it}{vartheta} {"1D717}
-\usv_set:nnn {it}{varkappa} {"1D718}
-\usv_set:nnn {it}{phi} {"1D719}
-\usv_set:nnn {it}{varrho} {"1D71A}
-\usv_set:nnn {it}{varpi} {"1D71B}
-% \end{macrocode}
-% Bold italic:
-% \begin{macrocode}
-\usv_set:nnn {bfit}{varTheta} {"1D72D}
-\usv_set:nnn {bfit}{epsilon}{"1D750}
-\usv_set:nnn {bfit}{vartheta} {"1D751}
-\usv_set:nnn {bfit}{varkappa} {"1D752}
-\usv_set:nnn {bfit}{phi} {"1D753}
-\usv_set:nnn {bfit}{varrho} {"1D754}
-\usv_set:nnn {bfit}{varpi} {"1D755}
-% \end{macrocode}
-% Bold sans:
-% \begin{macrocode}
-\usv_set:nnn {bfsfup}{varTheta} {"1D767}
-\usv_set:nnn {bfsfup}{epsilon}{"1D78A}
-\usv_set:nnn {bfsfup}{vartheta} {"1D78B}
-\usv_set:nnn {bfsfup}{varkappa} {"1D78C}
-\usv_set:nnn {bfsfup}{phi} {"1D78D}
-\usv_set:nnn {bfsfup}{varrho} {"1D78E}
-\usv_set:nnn {bfsfup}{varpi} {"1D78F}
-% \end{macrocode}
-% Bold sans italic:
-% \begin{macrocode}
-\usv_set:nnn {bfsfit}{varTheta} {"1D7A1}
-\usv_set:nnn {bfsfit}{epsilon}{"1D7C4}
-\usv_set:nnn {bfsfit}{vartheta} {"1D7C5}
-\usv_set:nnn {bfsfit}{varkappa} {"1D7C6}
-\usv_set:nnn {bfsfit}{phi} {"1D7C7}
-\usv_set:nnn {bfsfit}{varrho} {"1D7C8}
-\usv_set:nnn {bfsfit}{varpi} {"1D7C9}
-% \end{macrocode}
-% Nabla:
-% \begin{macrocode}
-\usv_set:nnn {up} {Nabla}{"02207}
-\usv_set:nnn {it} {Nabla}{"1D6FB}
-\usv_set:nnn {bfup} {Nabla}{"1D6C1}
-\usv_set:nnn {bfit} {Nabla}{"1D735}
-\usv_set:nnn {bfsfup}{Nabla}{"1D76F}
-\usv_set:nnn {bfsfit}{Nabla}{"1D7A9}
-% \end{macrocode}
-% Partial:
-% \begin{macrocode}
-\usv_set:nnn {up} {partial}{"02202}
-\usv_set:nnn {it} {partial}{"1D715}
-\usv_set:nnn {bfup} {partial}{"1D6DB}
-\usv_set:nnn {bfit} {partial}{"1D74F}
-\usv_set:nnn {bfsfup}{partial}{"1D789}
-\usv_set:nnn {bfsfit}{partial}{"1D7C3}
-% \end{macrocode}
-% \paragraph{Exceptions}
-% These are need for mapping with the exceptions in other alphabets:
-% (coming up)
-% \begin{macrocode}
-\usv_set:nnn {up}{B}{`\B}
-\usv_set:nnn {up}{C}{`\C}
-\usv_set:nnn {up}{D}{`\D}
-\usv_set:nnn {up}{E}{`\E}
-\usv_set:nnn {up}{F}{`\F}
-\usv_set:nnn {up}{H}{`\H}
-\usv_set:nnn {up}{I}{`\I}
-\usv_set:nnn {up}{L}{`\L}
-\usv_set:nnn {up}{M}{`\M}
-\usv_set:nnn {up}{N}{`\N}
-\usv_set:nnn {up}{P}{`\P}
-\usv_set:nnn {up}{Q}{`\Q}
-\usv_set:nnn {up}{R}{`\R}
-\usv_set:nnn {up}{Z}{`\Z}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\usv_set:nnn {it}{B}{"1D435}
-\usv_set:nnn {it}{C}{"1D436}
-\usv_set:nnn {it}{D}{"1D437}
-\usv_set:nnn {it}{E}{"1D438}
-\usv_set:nnn {it}{F}{"1D439}
-\usv_set:nnn {it}{H}{"1D43B}
-\usv_set:nnn {it}{I}{"1D43C}
-\usv_set:nnn {it}{L}{"1D43F}
-\usv_set:nnn {it}{M}{"1D440}
-\usv_set:nnn {it}{N}{"1D441}
-\usv_set:nnn {it}{P}{"1D443}
-\usv_set:nnn {it}{Q}{"1D444}
-\usv_set:nnn {it}{R}{"1D445}
-\usv_set:nnn {it}{Z}{"1D44D}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\usv_set:nnn {up}{d}{`\d}
-\usv_set:nnn {up}{e}{`\e}
-\usv_set:nnn {up}{g}{`\g}
-\usv_set:nnn {up}{h}{`\h}
-\usv_set:nnn {up}{i}{`\i}
-\usv_set:nnn {up}{j}{`\j}
-\usv_set:nnn {up}{o}{`\o}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\usv_set:nnn {it}{d}{"1D451}
-\usv_set:nnn {it}{e}{"1D452}
-\usv_set:nnn {it}{g}{"1D454}
-\usv_set:nnn {it}{h}{"0210E}
-\usv_set:nnn {it}{i}{"1D456}
-\usv_set:nnn {it}{j}{"1D457}
-\usv_set:nnn {it}{o}{"1D45C}
-% \end{macrocode}
-% Latin `h':
-% \begin{macrocode}
-\usv_set:nnn {bb} {h}{"1D559}
-\usv_set:nnn {tt} {h}{"1D691}
-\usv_set:nnn {scr} {h}{"1D4BD}
-\usv_set:nnn {frak} {h}{"1D525}
-\usv_set:nnn {bfup} {h}{"1D421}
-\usv_set:nnn {bfit} {h}{"1D489}
-\usv_set:nnn {sfup} {h}{"1D5C1}
-\usv_set:nnn {sfit} {h}{"1D629}
-\usv_set:nnn {bffrak}{h}{"1D58D}
-\usv_set:nnn {bfscr} {h}{"1D4F1}
-\usv_set:nnn {bfsfup}{h}{"1D5F5}
-\usv_set:nnn {bfsfit}{h}{"1D65D}
-% \end{macrocode}
-% Dotless `i' and `j:
-% \begin{macrocode}
-\usv_set:nnn {up}{dotlessi}{"00131}
-\usv_set:nnn {up}{dotlessj}{"00237}
-\usv_set:nnn {it}{dotlessi}{"1D6A4}
-\usv_set:nnn {it}{dotlessj}{"1D6A5}
-% \end{macrocode}
-% Blackboard:
-% \begin{macrocode}
-\usv_set:nnn {bb}{C}{"2102}
-\usv_set:nnn {bb}{H}{"210D}
-\usv_set:nnn {bb}{N}{"2115}
-\usv_set:nnn {bb}{P}{"2119}
-\usv_set:nnn {bb}{Q}{"211A}
-\usv_set:nnn {bb}{R}{"211D}
-\usv_set:nnn {bb}{Z}{"2124}
-\usv_set:nnn {up}{Pi} {"003A0}
-\usv_set:nnn {up}{pi} {"003C0}
-\usv_set:nnn {up}{Gamma} {"00393}
-\usv_set:nnn {up}{gamma} {"003B3}
-\usv_set:nnn {up}{summation}{"02211}
-\usv_set:nnn {it}{Pi} {"1D6F1}
-\usv_set:nnn {it}{pi} {"1D70B}
-\usv_set:nnn {it}{Gamma} {"1D6E4}
-\usv_set:nnn {it}{gamma} {"1D6FE}
-\usv_set:nnn {bb}{Pi} {"0213F}
-\usv_set:nnn {bb}{pi} {"0213C}
-\usv_set:nnn {bb}{Gamma} {"0213E}
-\usv_set:nnn {bb}{gamma} {"0213D}
-\usv_set:nnn {bb}{summation}{"02140}
-% \end{macrocode}
-% Italic blackboard:
-% \begin{macrocode}
-\usv_set:nnn {bbit}{D}{"2145}
-\usv_set:nnn {bbit}{d}{"2146}
-\usv_set:nnn {bbit}{e}{"2147}
-\usv_set:nnn {bbit}{i}{"2148}
-\usv_set:nnn {bbit}{j}{"2149}
-% \end{macrocode}
-% Script exceptions:
-% \begin{macrocode}
-\usv_set:nnn {scr}{B}{"212C}
-\usv_set:nnn {scr}{E}{"2130}
-\usv_set:nnn {scr}{F}{"2131}
-\usv_set:nnn {scr}{H}{"210B}
-\usv_set:nnn {scr}{I}{"2110}
-\usv_set:nnn {scr}{L}{"2112}
-\usv_set:nnn {scr}{M}{"2133}
-\usv_set:nnn {scr}{R}{"211B}
-\usv_set:nnn {scr}{e}{"212F}
-\usv_set:nnn {scr}{g}{"210A}
-\usv_set:nnn {scr}{o}{"2134}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\usv_set:nnn {cal}{B}{"212C}
-\usv_set:nnn {cal}{E}{"2130}
-\usv_set:nnn {cal}{F}{"2131}
-\usv_set:nnn {cal}{H}{"210B}
-\usv_set:nnn {cal}{I}{"2110}
-\usv_set:nnn {cal}{L}{"2112}
-\usv_set:nnn {cal}{M}{"2133}
-\usv_set:nnn {cal}{R}{"211B}
-% \end{macrocode}
-% Fractur exceptions:
-% \begin{macrocode}
-\usv_set:nnn {frak}{C}{"212D}
-\usv_set:nnn {frak}{H}{"210C}
-\usv_set:nnn {frak}{I}{"2111}
-\usv_set:nnn {frak}{R}{"211C}
-\usv_set:nnn {frak}{Z}{"2128}
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</package&(XE|LU)>
-% \end{macrocode}
-%
-% \subsection{STIX fonts}
-%
-% Version 1.0.0 of the STIX fonts contains a number of
-% alphabets in the private use area of Unicode; i.e.,
-% it contains many math glyphs that have not (yet or if ever)
-% been accepted into the Unicode standard.
-%
-% But we still want to be able to use them if possible.
-%
-% \begin{macrocode}
-%<*stix>
-% \end{macrocode}
-%
-% \paragraph{Upright}
-% \begin{macrocode}
-\usv_set:nnn {stixsfup}{partial}{"E17C}
-\usv_set:nnn {stixsfup}{Greek}{"E17D}
-\usv_set:nnn {stixsfup}{greek}{"E196}
-\usv_set:nnn {stixsfup}{varTheta}{"E18E}
-\usv_set:nnn {stixsfup}{epsilon}{"E1AF}
-\usv_set:nnn {stixsfup}{vartheta}{"E1B0}
-\usv_set:nnn {stixsfup}{varkappa}{0000} % ???
-\usv_set:nnn {stixsfup}{phi}{"E1B1}
-\usv_set:nnn {stixsfup}{varrho}{"E1B2}
-\usv_set:nnn {stixsfup}{varpi}{"E1B3}
-\usv_set:nnn {stixupslash}{Greek}{"E2FC}
-% \end{macrocode}
-%
-% \paragraph{Italic}
-% \begin{macrocode}
-\usv_set:nnn {stixbbit}{A}{"E154}
-\usv_set:nnn {stixbbit}{B}{"E155}
-\usv_set:nnn {stixbbit}{E}{"E156}
-\usv_set:nnn {stixbbit}{F}{"E157}
-\usv_set:nnn {stixbbit}{G}{"E158}
-\usv_set:nnn {stixbbit}{I}{"E159}
-\usv_set:nnn {stixbbit}{J}{"E15A}
-\usv_set:nnn {stixbbit}{K}{"E15B}
-\usv_set:nnn {stixbbit}{L}{"E15C}
-\usv_set:nnn {stixbbit}{M}{"E15D}
-\usv_set:nnn {stixbbit}{O}{"E15E}
-\usv_set:nnn {stixbbit}{S}{"E15F}
-\usv_set:nnn {stixbbit}{T}{"E160}
-\usv_set:nnn {stixbbit}{U}{"E161}
-\usv_set:nnn {stixbbit}{V}{"E162}
-\usv_set:nnn {stixbbit}{W}{"E163}
-\usv_set:nnn {stixbbit}{X}{"E164}
-\usv_set:nnn {stixbbit}{Y}{"E165}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\usv_set:nnn {stixbbit}{a}{"E166}
-\usv_set:nnn {stixbbit}{b}{"E167}
-\usv_set:nnn {stixbbit}{c}{"E168}
-\usv_set:nnn {stixbbit}{f}{"E169}
-\usv_set:nnn {stixbbit}{g}{"E16A}
-\usv_set:nnn {stixbbit}{h}{"E16B}
-\usv_set:nnn {stixbbit}{k}{"E16C}
-\usv_set:nnn {stixbbit}{l}{"E16D}
-\usv_set:nnn {stixbbit}{m}{"E16E}
-\usv_set:nnn {stixbbit}{n}{"E16F}
-\usv_set:nnn {stixbbit}{o}{"E170}
-\usv_set:nnn {stixbbit}{p}{"E171}
-\usv_set:nnn {stixbbit}{q}{"E172}
-\usv_set:nnn {stixbbit}{r}{"E173}
-\usv_set:nnn {stixbbit}{s}{"E174}
-\usv_set:nnn {stixbbit}{t}{"E175}
-\usv_set:nnn {stixbbit}{u}{"E176}
-\usv_set:nnn {stixbbit}{v}{"E177}
-\usv_set:nnn {stixbbit}{w}{"E178}
-\usv_set:nnn {stixbbit}{x}{"E179}
-\usv_set:nnn {stixbbit}{y}{"E17A}
-\usv_set:nnn {stixbbit}{z}{"E17B}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\usv_set:nnn {stixsfit}{Numerals}{"E1B4}
-\usv_set:nnn {stixsfit}{partial}{"E1BE}
-\usv_set:nnn {stixsfit}{Greek}{"E1BF}
-\usv_set:nnn {stixsfit}{greek}{"E1D8}
-\usv_set:nnn {stixsfit}{varTheta}{"E1D0}
-\usv_set:nnn {stixsfit}{epsilon}{"E1F1}
-\usv_set:nnn {stixsfit}{vartheta}{"E1F2}
-\usv_set:nnn {stixsfit}{varkappa}{0000} % ???
-\usv_set:nnn {stixsfit}{phi}{"E1F3}
-\usv_set:nnn {stixsfit}{varrho}{"E1F4}
-\usv_set:nnn {stixsfit}{varpi}{"E1F5}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\usv_set:nnn {stixcal}{Latin}{"E22D}
-\usv_set:nnn {stixcal}{num}{"E262}
-\usv_set:nnn {scr}{num}{48}
-\usv_set:nnn {it}{num}{48}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\usv_set:nnn {stixsfitslash}{Latin}{"E294}
-\usv_set:nnn {stixsfitslash}{latin}{"E2C8}
-\usv_set:nnn {stixsfitslash}{greek}{"E32C}
-\usv_set:nnn {stixsfitslash}{epsilon}{"E37A}
-\usv_set:nnn {stixsfitslash}{vartheta}{"E35E}
-\usv_set:nnn {stixsfitslash}{varkappa}{"E374}
-\usv_set:nnn {stixsfitslash}{phi}{"E360}
-\usv_set:nnn {stixsfitslash}{varrho}{"E376}
-\usv_set:nnn {stixsfitslash}{varpi}{"E362}
-\usv_set:nnn {stixsfitslash}{digamma}{"E36A}
-% \end{macrocode}
-%
-% \paragraph{Bold}
-%
-% \begin{macrocode}
-\usv_set:nnn {stixbfupslash}{Greek}{"E2FD}
-\usv_set:nnn {stixbfupslash}{Digamma}{"E369}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\usv_set:nnn {stixbfbb}{A}{"E38A}
-\usv_set:nnn {stixbfbb}{B}{"E38B}
-\usv_set:nnn {stixbfbb}{E}{"E38D}
-\usv_set:nnn {stixbfbb}{F}{"E38E}
-\usv_set:nnn {stixbfbb}{G}{"E38F}
-\usv_set:nnn {stixbfbb}{I}{"E390}
-\usv_set:nnn {stixbfbb}{J}{"E391}
-\usv_set:nnn {stixbfbb}{K}{"E392}
-\usv_set:nnn {stixbfbb}{L}{"E393}
-\usv_set:nnn {stixbfbb}{M}{"E394}
-\usv_set:nnn {stixbfbb}{O}{"E395}
-\usv_set:nnn {stixbfbb}{S}{"E396}
-\usv_set:nnn {stixbfbb}{T}{"E397}
-\usv_set:nnn {stixbfbb}{U}{"E398}
-\usv_set:nnn {stixbfbb}{V}{"E399}
-\usv_set:nnn {stixbfbb}{W}{"E39A}
-\usv_set:nnn {stixbfbb}{X}{"E39B}
-\usv_set:nnn {stixbfbb}{Y}{"E39C}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\usv_set:nnn {stixbfbb}{a}{"E39D}
-\usv_set:nnn {stixbfbb}{b}{"E39E}
-\usv_set:nnn {stixbfbb}{c}{"E39F}
-\usv_set:nnn {stixbfbb}{f}{"E3A2}
-\usv_set:nnn {stixbfbb}{g}{"E3A3}
-\usv_set:nnn {stixbfbb}{h}{"E3A4}
-\usv_set:nnn {stixbfbb}{k}{"E3A7}
-\usv_set:nnn {stixbfbb}{l}{"E3A8}
-\usv_set:nnn {stixbfbb}{m}{"E3A9}
-\usv_set:nnn {stixbfbb}{n}{"E3AA}
-\usv_set:nnn {stixbfbb}{o}{"E3AB}
-\usv_set:nnn {stixbfbb}{p}{"E3AC}
-\usv_set:nnn {stixbfbb}{q}{"E3AD}
-\usv_set:nnn {stixbfbb}{r}{"E3AE}
-\usv_set:nnn {stixbfbb}{s}{"E3AF}
-\usv_set:nnn {stixbfbb}{t}{"E3B0}
-\usv_set:nnn {stixbfbb}{u}{"E3B1}
-\usv_set:nnn {stixbfbb}{v}{"E3B2}
-\usv_set:nnn {stixbfbb}{w}{"E3B3}
-\usv_set:nnn {stixbfbb}{x}{"E3B4}
-\usv_set:nnn {stixbfbb}{y}{"E3B5}
-\usv_set:nnn {stixbfbb}{z}{"E3B6}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\usv_set:nnn {stixbfsfup}{Numerals}{"E3B7}
-% \end{macrocode}
-%
-% \paragraph{Bold Italic}
-% \begin{macrocode}
-\usv_set:nnn {stixbfsfit}{Numerals}{"E1F6}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\usv_set:nnn {stixbfbbit}{A}{"E200}
-\usv_set:nnn {stixbfbbit}{B}{"E201}
-\usv_set:nnn {stixbfbbit}{E}{"E203}
-\usv_set:nnn {stixbfbbit}{F}{"E204}
-\usv_set:nnn {stixbfbbit}{G}{"E205}
-\usv_set:nnn {stixbfbbit}{I}{"E206}
-\usv_set:nnn {stixbfbbit}{J}{"E207}
-\usv_set:nnn {stixbfbbit}{K}{"E208}
-\usv_set:nnn {stixbfbbit}{L}{"E209}
-\usv_set:nnn {stixbfbbit}{M}{"E20A}
-\usv_set:nnn {stixbfbbit}{O}{"E20B}
-\usv_set:nnn {stixbfbbit}{S}{"E20C}
-\usv_set:nnn {stixbfbbit}{T}{"E20D}
-\usv_set:nnn {stixbfbbit}{U}{"E20E}
-\usv_set:nnn {stixbfbbit}{V}{"E20F}
-\usv_set:nnn {stixbfbbit}{W}{"E210}
-\usv_set:nnn {stixbfbbit}{X}{"E211}
-\usv_set:nnn {stixbfbbit}{Y}{"E212}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\usv_set:nnn {stixbfbbit}{a}{"E213}
-\usv_set:nnn {stixbfbbit}{b}{"E214}
-\usv_set:nnn {stixbfbbit}{c}{"E215}
-\usv_set:nnn {stixbfbbit}{e}{"E217}
-\usv_set:nnn {stixbfbbit}{f}{"E218}
-\usv_set:nnn {stixbfbbit}{g}{"E219}
-\usv_set:nnn {stixbfbbit}{h}{"E21A}
-\usv_set:nnn {stixbfbbit}{k}{"E21D}
-\usv_set:nnn {stixbfbbit}{l}{"E21E}
-\usv_set:nnn {stixbfbbit}{m}{"E21F}
-\usv_set:nnn {stixbfbbit}{n}{"E220}
-\usv_set:nnn {stixbfbbit}{o}{"E221}
-\usv_set:nnn {stixbfbbit}{p}{"E222}
-\usv_set:nnn {stixbfbbit}{q}{"E223}
-\usv_set:nnn {stixbfbbit}{r}{"E224}
-\usv_set:nnn {stixbfbbit}{s}{"E225}
-\usv_set:nnn {stixbfbbit}{t}{"E226}
-\usv_set:nnn {stixbfbbit}{u}{"E227}
-\usv_set:nnn {stixbfbbit}{v}{"E228}
-\usv_set:nnn {stixbfbbit}{w}{"E229}
-\usv_set:nnn {stixbfbbit}{x}{"E22A}
-\usv_set:nnn {stixbfbbit}{y}{"E22B}
-\usv_set:nnn {stixbfbbit}{z}{"E22C}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\usv_set:nnn {stixbfcal}{Latin}{"E247}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\usv_set:nnn {stixbfitslash}{Latin}{"E295}
-\usv_set:nnn {stixbfitslash}{latin}{"E2C9}
-\usv_set:nnn {stixbfitslash}{greek}{"E32D}
-\usv_set:nnn {stixsfitslash}{epsilon}{"E37B}
-\usv_set:nnn {stixsfitslash}{vartheta}{"E35F}
-\usv_set:nnn {stixsfitslash}{varkappa}{"E375}
-\usv_set:nnn {stixsfitslash}{phi}{"E361}
-\usv_set:nnn {stixsfitslash}{varrho}{"E377}
-\usv_set:nnn {stixsfitslash}{varpi}{"E363}
-\usv_set:nnn {stixsfitslash}{digamma}{"E36B}
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</stix>
-% \end{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math.dtx 2017-11-18 01:22:09 UTC (rev 45844)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math.dtx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -1,136 +1,76 @@
-% \iffalse
-% !TEX TS-program = XeLaTeX
-% ^^A %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% ^^A SELF-EXTRACTION BEGINS HERE
-% ^^A %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%<*internal>
-\begingroup
-\input l3docstrip.tex\relax\keepsilent
-\declarepreamble\defaultpreamble
+%%^^A%% unicode-math.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
-Copyright 2006-2017 Will Robertson <will.robertson at latex-project.org>
-Copyright 2010-2013 Philipp Stephani <st_philipp at yahoo.de>
-Copyright 2012-2015 Khaled Hosny <khaledhosny at eglug.org>
-
-This package is free software and may be redistributed and/or modified under
-the conditions of the LaTeX Project Public License, version 1.3c or higher
-(your choice): <http://www.latex-project.org/lppl/>.
-
-This work is "maintained" by Will Robertson.
-\endpreamble
-\nopostamble
-\askforoverwritefalse
-\ifx\UMDEBUG\undefined\def\UMDEBUG{}\else\def\UMDEBUG{,debug}\fi
-\gdef\DTXFILES{%
- \DTX{unicode-math.dtx}%
- \DTX{unicode-math-preamble.dtx}%
- \DTX{unicode-math-pkgopt.dtx}%
- \DTX{unicode-math-msg.dtx}%
- \DTX{unicode-math-usv.dtx}%
- \DTX{unicode-math-setchar.dtx}%
- \DTX{unicode-math-mathtext.dtx}%
- \DTX{unicode-math-main.dtx}%
- \DTX{unicode-math-fontopt.dtx}%
- \DTX{unicode-math-fontparam.dtx}%
- \DTX{unicode-math-mathmap.dtx}%
- \DTX{unicode-math-mathtext.dtx}%
- \DTX{unicode-math-epilogue.dtx}%
- \DTX{unicode-math-primes.dtx}%
- \DTX{unicode-math-sscript.dtx}%
- \DTX{unicode-math-compat.dtx}%
- \DTX{unicode-math-alphabets.dtx}%
-}
-\generate{\file{unicode-math.sty}{\from{unicode-math.dtx}{preamble,load}}}
-\def\DTX#1{\from{#1}{package,XE\UMDEBUG}}
-\generate{\file{unicode-math-xetex.sty}{\DTXFILES}}
-\def\DTX#1{\from{#1}{package,LU\UMDEBUG}}
-\generate{\file{unicode-math-luatex.sty}{\DTXFILES}}
-\def\tempa{plain}\ifx\tempa\fmtname\endgroup\expandafter\bye\fi
-\endgroup
-\ProvidesFile{unicode-math.dtx}
-%</internal>
-%<package&!XE&!LU>\ProvidesPackage{unicode-math}
-%<package&XE>\ProvidesPackage{unicode-math-xetex}
-%<package&LU>\ProvidesPackage{unicode-math-luatex}
-%<*package>
- [2017/10/09 v0.8h Unicode maths in XeLaTeX and LuaLaTeX]
-%</package>
-%<*internal>
-\input{unicode-math-doc}
-%</internal>
-% \fi
+% \section{Package declaration}
%
-% \clearpage
-% \part{Package implementation}
-% \parttoc
-%
-% \section{The \texttt{unicode-math.sty} loading file}
-%
-% The prefix for \pkg{unicode-math} is \texttt{um}:
+% List all \texttt{dtx} files for
+% (a) the \texttt{ins} file and~(b) typesetting the code.
% \begin{macrocode}
-%<@@=um>
+%<*dtx>
+\def\DTXFILES{
+ \DTX{unicode-math.dtx}
+ \DTX{um-code-base.dtx}
+ \DTX{um-code-opening.dtx}
+ \DTX{um-code-variables.dtx}
+ \DTX{um-code-api.dtx}
+ \DTX{um-code-ui.dtx}
+ \DTX{um-code-pkgopt.dtx}
+ \DTX{um-code-msg.dtx}
+ \DTX{um-code-usv.dtx}
+ \DTX{um-code-setchar.dtx}
+ \DTX{um-code-mathtext.dtx}
+ \DTX{um-code-main.dtx}
+ \DTX{um-code-fontopt.dtx}
+ \DTX{um-code-fontparam.dtx}
+ \DTX{um-code-mathmap.dtx}
+ \DTX{um-code-epilogue.dtx}
+ \DTX{um-code-primes.dtx}
+ \DTX{um-code-sscript.dtx}
+ \DTX{um-code-compat.dtx}
+ \DTX{um-code-alphabets.dtx}
+}
+%</dtx>
% \end{macrocode}
%
-% The plain sty file is a stub which loads necessary packages and then bifurcates into
-% a XeTeX- or LuaTeX-specific version of the package.
-%
+% Now exit if we're using plain \TeX; this would usually be the case when
+% loading this file with \texttt{unicode-math.ins}.
% \begin{macrocode}
-%<*load>
+%<*dtx>
+\def\tmpa{plain}
+\ifx\tmpa\fmtname\expandafter\endinput\fi
+%</dtx>
% \end{macrocode}
-% Bail early if necessary.
-% \begin{macrocode}
-\ifdefined\XeTeXversion
- \ifdim\number\XeTeXversion\XeTeXrevision in<0.9998in%
- \PackageError{unicode-math}{%
- Cannot run with this version of XeTeX!\MessageBreak
- You need XeTeX 0.9998 or newer.%
- }\@ehd
- \fi
-\else\ifdefined\luatexversion
- \ifnum\luatexversion<64%
- \PackageError{unicode-math}{%
- Cannot run with this version of LuaTeX!\MessageBreak
- You need LuaTeX 0.64 or newer.%
- }\@ehd
- \fi
-\else
- \PackageError{unicode-math}{%
- Cannot be run with pdfLaTeX!\MessageBreak
- Use XeLaTeX or LuaLaTeX instead.%
- }\@ehd
-\fi\fi
-% \end{macrocode}
%
-% \paragraph{Packages}
-% Assuming people are running up-to-date packages.
+% Declare the package version and date. For loading this file directly
+% as a \texttt{dtx} file, \cs{fileversion} and \cs{filedate} will be set
+% correctly when using \cs{GetFileInfo} without having to load the package
+% directly.
% \begin{macrocode}
-\RequirePackage{expl3,xparse,l3keys2e}
-\RequirePackage{fontspec}
-\RequirePackage{ucharcat}
-\RequirePackage{fix-cm} % avoid some warnings (still necessary? check...)
-\RequirePackage{filehook}
+%<base>\ProvidesPackage{unicode-math}
+%<package&XE>\ProvidesPackage{unicode-math-xetex}
+%<package&LU>\ProvidesPackage{unicode-math-luatex}
+%<*dtx>
+\ProvidesFile{unicode-math.dtx}
+%</dtx>
+%<*base|package>
+ [2017/11/18 v0.8i Unicode maths in XeLaTeX and LuaLaTeX]
+%</base|package>
% \end{macrocode}
-% \paragraph{Bifurcate}
-% \begin{macrocode}
-\ExplSyntaxOn
-\sys_if_engine_luatex:T { \RequirePackageWithOptions{unicode-math-luatex} }
-\sys_if_engine_xetex:T { \RequirePackageWithOptions{unicode-math-xetex} }
-\ExplSyntaxOff
-% \end{macrocode}
+
+\endinput
+
+% /©
%
-% \begin{macrocode}
-%</load>
-% \end{macrocode}
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
%
-% That's the end of the base package. The subsequent packages are derived from
-% the following ordered list of \texttt{dtx} files:
-% \begin{multicols}{3}
-% \begin{enumerate}
-% \def\DTX#1{\item \texttt{#1}}
-% \DTXFILES
-% \end{enumerate}
-% \end{multicols}
-%
-\endinput
-
-
+% ©/
Added: trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math.ins (rev 0)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math.ins 2017-11-18 21:45:46 UTC (rev 45845)
@@ -0,0 +1,57 @@
+%%^^A%% unicode-math.ins -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\input unicode-math.dtx\relax
+\input l3docstrip.tex\relax
+\keepsilent
+
+\declarepreamble\defaultpreamble
+------------------------------------------------
+The UNICODE-MATH package <wspr.io/unicode-math>
+------------------------------------------------
+This package is free software and may be redistributed and/or modified under
+the conditions of the LaTeX Project Public License, version 1.3c or higher
+(your choice): <http://www.latex-project.org/lppl/>.
+------------------------------------------------
+Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+Copyright 2010-2017 Philipp Stephani
+Copyright 2011-2017 Joseph Wright
+Copyright 2012-2015 Khaled Hosny
+------------------------------------------------
+\endpreamble
+
+\nopostamble
+\askforoverwritefalse
+
+\generate{\file{unicode-math.sty}{
+ \from{unicode-math.dtx}{base}
+ \from{um-code-base.dtx}{base}
+ }}
+
+\ifx\UMDEBUG\undefined\def\UMDEBUG{}\else\def\UMDEBUG{,debug}\fi
+
+\def\DTX#1{\from{#1}{package,XE\UMDEBUG}}
+\generate{\file{unicode-math-xetex.sty}{\DTXFILES}}
+
+\def\DTX#1{\from{#1}{package,LU\UMDEBUG}}
+\generate{\file{unicode-math-luatex.sty}{\DTXFILES}}
+
+\endbatchfile
+\endinput
+
+% /©
+%
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
+%
+% ©/
Added: trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math.ltx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math.ltx (rev 0)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math.ltx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -0,0 +1,42 @@
+%%^^A%% unicode-math.ltx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+\documentclass[a4paper]{ltxdoc}
+\input{um-doc-style.tex}
+\begin{document}
+
+\title{Experimental Unicode mathematical typesetting: The \pkg{unicode-math} package}
+\author{\itshape Will Robertson\\\itshape Philipp Stephani, Joseph Wright, Khaled Hosny\\\url{http://github.com/wspr/unicode-math}}
+\date{\umfiledate \qquad \umfileversion}
+
+\maketitle
+
+\input{um-doc.tex}
+
+\clearpage
+\appendix
+
+\input{um-doc-stixextract.tex}
+\input{um-doc-nfsssummary.tex}
+\input{um-doc-legacyfontdimen.tex}
+\input{um-doc-mathfontdimen.tex}
+
+\end{document}
+
+\endinput
+
+% /©
+%
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
+%
+% ©/
Property changes on: trunk/Master/texmf-dist/source/latex/unicode-math/unicode-math.ltx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/unicode-math/unimath-example.ltx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/unimath-example.ltx (rev 0)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/unimath-example.ltx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -0,0 +1,68 @@
+%%^^A%% unimath-example.ltx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+%%%%%%%%%%%%%%%%%%%%%%%
+% UNICODE-MATH EXAMPLE FILE
+%%%%%%%%%%%%%%%%%%%%%%%
+
+\documentclass{article}
+
+% Load fontspec and define a document font:
+\usepackage{fontspec}
+\setmainfont{texgyrepagella-regular.otf}
+
+% Load unicode-math and define a math font:
+\usepackage{unicode-math}
+\setmathfont{texgyrepagella-math.otf}
+
+\begin{document}
+\title{An example of \textsf{unicode-math}}
+\author{Will Robertson}
+\maketitle
+
+This is an example of the \textsf{unicode-math} package.
+It allows you to write maths with Unicode input and to use fonts that contain Unicode mathematical glyphs. Follow along in the source code to see how it works.
+
+After loading the package and selecting a font, you shouldn't need to change much to continue to write maths as always.
+\[
+ F(s)=\symscr L \{f(t)\}=\int_0^\infty \symup e^{-st}f(t)\,\symup d t
+\]
+
+The style of Latin and Greek letters is set up by default to match the output of standard \LaTeX: Latin letters and Greek lowercase letters are italic, and Greek uppercase letters are upright. These can be configured with the \texttt{math-style} package option.
+
+One very important feature to recognise is that bold maths now works consistently for both Latin and Greek letters. By default, \verb|\symbf| will turn a Latin letter bold and upright, and a Greek letter will remain italic and also become bold. For example:
+\[
+ \symbf{a} = a\,\symbf{I} \qquad \symbf{\beta} = \beta\,\symbf{I}
+\]
+This behaviour can be configured with the \texttt{bold-style} package option.
+
+In the examples above, I've used \LaTeX\ commands to input characters like \verb|\beta|, \verb|\infty|, and so on. These may now be typed directly into the source of the document:
+\[
+ 𝐉 = ∇×𝐇 \qquad 𝐁 = μ₀(𝐌 + 𝐇)
+\]
+\[
+ ∫₀³ xⁿφ₁₂(x)\,ⅆx
+\]
+It does not matter if you use upright or italic characters; they will be normalised according to the setting of the \texttt{math-style} and \texttt{bold-style} options.
+
+And that's a brief introduction to the package. Please see the documentation for further details. This is a new package; feedback, suggestions, and bug reports are all most welcome.
+
+\end{document}
+
+\endinput
+
+% /©
+%
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
+%
+% ©/
Property changes on: trunk/Master/texmf-dist/source/latex/unicode-math/unimath-example.ltx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/unicode-math/unimath-symbols.ltx
===================================================================
--- trunk/Master/texmf-dist/source/latex/unicode-math/unimath-symbols.ltx (rev 0)
+++ trunk/Master/texmf-dist/source/latex/unicode-math/unimath-symbols.ltx 2017-11-18 21:45:46 UTC (rev 45845)
@@ -0,0 +1,502 @@
+%%^^A%% unimath-symbols.ltx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+%!TEX TS-program = LuaLaTeX
+
+%%%%%%%%%%%%%%%%%%%%%%%
+% SYMBOLS DEFINED BY UNICODE-MATH
+%%%%%%%%%%%%%%%%%%%%%%%
+
+\documentclass[final]{article}
+\makeatletter
+
+\usepackage{ragged2e,setspace,booktabs,catchfile,shortvrb,geometry,metalogo,textcomp,longtable,tabu,hyperref}
+
+\geometry{margin=3cm}
+\hypersetup{colorlinks,linkcolor=black}
+
+\def\cmd#1{\texttt{\textbackslash\expandafter\@gobble\string#1}}
+
+\usepackage{fontspec}
+\setmainfont{texgyrepagella}%
+ [
+ Extension = .otf ,
+ UprightFont = *-regular,
+ ItalicFont = *-italic,
+ BoldFont = *-bold,
+ BoldItalicFont = *-bolditalic,
+ Ligatures=TeX,
+ Numbers={Lowercase,Monospaced},
+ ]
+\usepackage[math-style=literal,bold-style=literal]{unicode-math}
+
+\ExplSyntaxOn
+\cs_generate_variant:Nn \fontspec_set_fontface:NNnn {c}
+
+\def\defmathfont#1#2#3{
+ \newcounter{#1}
+ \setcounter{#1}{-1}
+ \setmathfont[version=#1,SizeFeatures={
+ {Size=-10, Colour=999999},
+ {Size=10-, Colour=#3}}]{#2}
+ \fontspec_set_fontface:cNnn {#1} \x {ItalicFont={},BoldFont={}} {#2}
+}
+\ExplSyntaxOff
+
+\defmathfont{lm}{latinmodern-math.otf}{CC6666}
+\defmathfont{xits}{xits-math.otf}{CCCC66}
+\defmathfont{stix}{STIXMath-Regular.otf}{AA66CC}
+\defmathfont{cambria}{Cambria Math}{66CCCC}
+\defmathfont{asana}{Asana-Math.otf}{6666CC}
+\defmathfont{pagella}{texgyrepagella-math.otf}{AA6666}
+\defmathfont{dejavu}{texgyredejavu-math.otf}{AACC66}
+\defmathfont{euler}{euler.otf}{CC66CC}
+
+\def\INPUT{\input{unicode-math-table.tex}}
+\def\TABLE{%
+\par\noindent
+\begin{longtabu}[l]{@{}lcccccccclX[l]@{}}
+ \toprule
+ \textsc{usv} & M & X & S & C & A & P & D & E & Macro & Description \\
+ \midrule \endhead
+ \INPUT\\
+ \bottomrule
+\end{longtabu}
+}
+\makeatletter
+\def\USV#1{\footnotesize\scshape\MakeLowercase{u+\@gobble#1}}
+\makeatother
+\def\CMD#1{\footnotesize\cmd#1}
+\def\DESC#1{%
+ \begin{spacing}{0.5}
+ \RaggedRight\scriptsize #1%
+ \end{spacing}
+}
+
+\newcommand\SHOW[1]{%
+ \def\UnicodeMathSymbol##1##2##3##4{%
+ \def\1{#1}\def\2{##3}%
+ \ifx\1\2\PRINTLINE{##1}{##2}{##4}\fi
+ }%
+ \TABLE
+}
+\ExplSyntaxOn
+\def\PRINTLINE#1#2#3{
+ \def\tempa{
+ \USV{#1} &
+ \SYMB{#2}{lm}{#1} &
+ \SYMB{#2}{xits}{#1} &
+ \SYMB{#2}{stix}{#1} &
+ \SYMB{#2}{cambria}{#1} &
+ \SYMB{#2}{asana}{#1} &
+ \SYMB{#2}{pagella}{#1} &
+ \SYMB{#2}{dejavu}{#1} &
+ \SYMB{#2}{euler}{#1} &
+ \CMD{#2}
+ \tl_if_in:NnT \PLAIN {#2}
+ {
+ \makebox[0pt][l]
+ { \color[gray]{0.7} \textsuperscript{\sffamily (p)} }
+ }
+ \tl_if_in:NnT \LTXSYM {#2}
+ {
+ \makebox[0pt][l]
+ { \color[gray]{0.7} \textsuperscript{\sffamily (l)} }
+ }
+ \tl_if_in:NnT \AMSSYMB {#2}
+ {
+ \makebox[0pt][l]
+ { \color[gray]{0.7} \textsuperscript{\sffamily (a)} }
+ }
+ &
+ \DESC{#3} \\
+ }%
+ \expandafter\tempa
+}
+\ExplSyntaxOff
+\def\SYMB#1#2#3{%
+ \expandafter\iffontchar\csname#2\endcsname #3\relax
+ \refstepcounter{#2}%
+ \mathversion{#2}%
+ $\displaystyle#1$%
+ \fi
+}
+
+\def\PLAIN{\alpha\beta\gamma\delta\epsilon\zeta\eta\theta\iota\kappa\lambda\mu\nu\xi\pi\rho\sigma\tau\upsilon\phi\chi\psi\omega\varepsilon\vartheta\varpi\varrho\varsigma\varphi\Gamma\Delta\Theta\Lambda\Xi\Pi\Sigma\Upsilon\Phi\Psi\Omega
+%
+\aleph\hbar\imath\jmath\ell\wp\Re\Im\partial\infty\prime\emptyset\nabla\surd\top\bot\angle\triangle\forall\exists\neg\flat\natural\sharp\clubsuit\diamondsuit\heartsuit\spadesuit
+%
+\coprod\bigvee\bigwedge\biguplus\bigcap\bigcup\int\prod\sum\bigotimes\bigoplus\bigodot\oint\bigsqcup\smallint
+%
+\triangleleft\triangleright\bigtriangleup\bigtriangledown\wedge\land\vee\lor\cap\cup\ddagger\dagger\sqcap\sqcup\uplus\amalg\diamond\bullet\wr\div\odot\oslash\otimes\ominus\oplus\mp\pm\circ\bigcirc\setminus\cdot\ast\times\star\propto\sqsubseteq\sqsupseteq\parallel\mid\dashv\vdash\nearrow\searrow\nwarrow\swarrow\Leftrightarrow\Leftarrow\Rightarrow\neq\ne\lnot\leq\le\geq\ge\succ\prec\approx\succeq\preceq\supset\subset\supseteq\subseteq\in\ni\owns\gg\ll\not\leftrightarrow\leftarrow\gets\rightarrow\to\mapstochar\mapsto\sim\simeq\perp\equiv\asymp\smile\frown\leftharpoonup\leftharpoondown\rightharpoonup\rightharpoondown
+%
+\joinrel\relbar\Relbar\lhook\hookrightarrow\rhook\hookleftarrow\bowtie\models\Longrightarrow\longrightarrow\longleftarrow\Longleftarrow\longmapsto\longleftrightarrow\Longleftrightarrow\iff
+%
+\ldotp\cdotp\colon\ldots\cdots\vdots\ddots
+%
+\acute\grave\ddot\tilde\bar\breve\check\hat\vec\dot\widetilde\widehat
+%
+\overrightarrow\overleftarrow\overbrace\underbrace\lmoustache\rmoustache\lgroup\rgroup\arrowvert\Arrowvert\bracevert\Vert\vert\uparrow\downarrow\updownarrow\Uparrow\Downarrow\Updownarrow\backslash\rangle\langle\rbrace\lbrace\rceil\lceil\rfloor\lfloor\sqrt}
+
+% /©
+%
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
+%
+% ©/
+
+\def\LTXSYM{
+\cong
+\notin
+\rightleftharpoons
+\doteq
+\mathring
+}
+
+\def\AMSSYMB{\boxdot\boxplus\boxtimes\square\blacksquare\centerdot\lozenge\blacklozenge\circlearrowright\circlearrowleft\leftrightharpoons\boxminus\Vdash\Vvdash\vDash\twoheadrightarrow\twoheadleftarrow\leftleftarrows\rightrightarrows\upuparrows\downdownarrows\upharpoonright\restriction\downharpoonright\upharpoonleft\downharpoonleft\rightarrowtail\leftarrowtail\leftrightarrows\rightleftarrows\Lsh\Rsh\rightsquigarrow\leftrightsquigarrow\looparrowleft\looparrowright\circeq\succsim\gtrsim\gtrapprox\multimap\therefore\because\doteqdot\Doteq\triangleq\precsim\lesssim\lessapprox\eqslantless\eqslantgtr\curlyeqprec\curlyeqsucc\preccurlyeq\leqq\leqslant\lessgtr\backprime\risingdotseq\fallingdotseq\succcurlyeq\geqq\geqslant\gtrless\vartriangleright\vartriangleleft\trianglerighteq\trianglelefteq\bigstar\between\blacktriangledown\blacktriangleright\blacktriangleleft\vartriangle\blacktriangle\triangledown\eqcirc\lesseqgtr\gtreqless\lesseqqgtr\gtreqqless\Rrightarrow\Lleftarrow\veebar\barwedge\doublebarwedge\measuredangle\sphericalangle\varpropto\smallsmile\smallfrown\Subset\Supset\Cup\doublecup\Cap\doublecap\curlywedge\curlyvee\leftthreetimes\rightthreetimes\subseteqq\supseteqq\bumpeq\Bumpeq\lll\llless\ggg\gggtr\circledS\pitchfork\dotplus\backsim\backsimeq\complement\intercal\circledcirc\circledast\circleddash\lvertneqq\gvertneqq\nleq\ngeq\nless\ngtr\nprec\nsucc\lneqq\gneqq\nleqslant\ngeqslant\lneq\gneq\npreceq\nsucceq\precnsim\succnsim\lnsim\gnsim\nleqq\ngeqq\precneqq\succneqq\precnapprox\succnapprox\lnapprox\gnapprox\nsim\ncong\diagup\diagdown\varsubsetneq\varsupsetneq\nsubseteqq\nsupseteqq\subsetneqq\supsetneqq\varsubsetneqq\varsupsetneqq\subsetneq\supsetneq\nsubseteq\nsupseteq\nparallel\nmid\nshortmid\nshortparallel\nvdash\nVdash\nvDash\nVDash\ntrianglerighteq\ntrianglelefteq\ntriangleleft\ntriangleright\nleftarrow\nrightarrow\nLeftarrow\nRightarrow\nLeftrightarrow\nleftrightarrow\divideontimes\varnothing\nexists\Finv\Game\eth\eqsim\beth\gimel\daleth\lessdot\gtrdot\ltimes\rtimes\shortmid\shortparallel\smallsetminu!
s\thicksim\thickapprox\approxeq\succapprox\precapprox\curvearrowleft\curvearrowright\digamma\varkappa\Bbbk\hslash\backepsilon}
+
+\input{unicode-math.dtx}
+\makeatletter
+\def\GetFileInfo#1{%
+ \def\filename{#1}%
+ \def\@tempb##1 ##2 ##3\relax##4\relax{%
+ \def\filedate{##1}%
+ \def\fileversion{##2}%
+ \def\fileinfo{##3}}%
+ \edef\@tempa{\csname ver@#1\endcsname}%
+ \expandafter\@tempb\@tempa\relax? ? \relax\relax}
+\makeatother
+\GetFileInfo{unicode-math.dtx}
+\let\umfiledate\filedate
+\let\umfileversion\fileversion
+
+\begin{document}
+\MakeShortVerb\|
+\title{Every symbol (most symbols) defined by \textsf{unicode-math}}
+\author{Will Robertson}
+\date{\umfiledate \qquad \umfileversion}
+\maketitle
+
+This document uses the file \texttt{unicode-math-table.tex}
+to print every symbol defined by the \textsf{unicode-math}
+package.
+Use this document to find the command name or the Unicode glyph slot for a symbol that you wish to use.
+The following fonts are shown: (with approximate symbol counts)
+\begin{itemize}
+\item[M] \mathversion{lm} $\mathup{Latin\ Modern\ Math}$ (\ref{count:lm})
+\item[X] \mathversion{xits} $\mathup{XITS\ Math}$ (\ref{count:xits})
+\item[S] \mathversion{stix} $\mathup{STIX\ Math}$ (\ref{count:stix})
+\item[C] \mathversion{cambria} $\mathup{Cambria\ Math}$ (\ref{count:cambria})
+\item[A] \mathversion{asana} $\mathup{Asana\ Math}$ (\ref{count:asana})
+\item[P] \mathversion{pagella} $\mathup{TeX\ Gyre\ Pagella\ Math}$ (\ref{count:pagella})
+\item[D] \mathversion{dejavu} $\mathup{DejaVu\ Math\ TeX\ Gyre}$ (\ref{count:dejavu})
+\item[E] \mathversion{euler} $\mathup{Neo\ Euler}$ (\ref{count:euler})
+\end{itemize}
+Note that there are addition maths fonts in the `\TeX\ Gyre' collection which aren't included here.
+
+Symbols defined in Plain \TeX\ are indicated with {\color[gray]{0.6} \textsuperscript{\sffamily (p)}} after their macro name.
+\LaTeX\ follows Plain \TeX, but defines a handful more, indicated with {\color[gray]{0.6} \textsuperscript{\sffamily (l)}}
+Symbols defined in \textsf{amssymb} are indicated with {\color[gray]{0.6} \textsuperscript{\sffamily (a)}}.
+
+\tableofcontents
+
+\clearpage
+\section{Opening symbols, \cmd\mathopen}
+\begingroup
+\def\sqrt{\sqrtsign{}}
+\def\longdivision{\longdivisionsign{}}
+\SHOW\mathopen
+\endgroup
+
+\clearpage
+\section{Closing symbols, \cmd\mathclose}
+\SHOW\mathclose
+
+\clearpage
+\section{Fence symbols, \cmd\mathfence}
+\SHOW\mathfence
+
+\section{Punctuation symbols, \cmd\mathpunct}
+\SHOW\mathpunct
+
+\section{`Over' symbols, \cmd\mathover}
+\begingroup
+\def\SYMB#1#2#3{%
+ \expandafter\iffontchar\csname#2\endcsname #3\relax
+ \refstepcounter{#2}%
+ \mathversion{#2}%
+ $\displaystyle #1{\mitx+\mity}$%
+ \fi
+}
+\SHOW\mathover
+\endgroup
+
+
+\section{`Under' symbols, \cmd\mathunder}
+\begingroup
+\def\SYMB#1#2#3{%
+ \expandafter\iffontchar\csname#2\endcsname #3\relax
+ \refstepcounter{#2}%
+ \mathversion{#2}%
+ $\displaystyle #1{\mitx+\mity}$%
+ \fi
+}
+\SHOW\mathunder
+\endgroup
+
+\clearpage
+\section{Accents, \cmd\mathaccent}
+
+Note that accents will only be properly placed if used with an OpenType font with the necessary information.
+
+\begingroup
+\def\SYMB#1#2#3{%
+ \expandafter\iffontchar\csname#2\endcsname #3\relax
+ \refstepcounter{#2}%
+ \mathversion{#2}%
+ $\displaystyle#1 \mitx$%
+ \fi
+}
+\SHOW\mathaccent
+\endgroup
+
+\section{Bottom accents, \cmd\mathbotaccent}
+\begingroup
+\def\SYMB#1#2#3{%
+ \expandafter\iffontchar\csname#2\endcsname #3\relax
+ \refstepcounter{#2}%
+ \mathversion{#2}%
+ $\displaystyle#1 \mitx$%
+ \fi
+}
+\SHOW\mathbotaccent
+\endgroup
+
+\clearpage
+\section{Big operators, \cmd\mathop}
+
+Of the operators shown below, a subset need to be flagged by \textsf{unicode-math} for \cmd\nolimits\ adjustments.
+The limits behaviour as specified by \textsf{unicode-math} are shown with grey subscripts and superscripts.
+\begingroup
+\def\SYMB#1#2#3{%
+ \expandafter\iffontchar\csname#2\endcsname #3\relax
+ \stepcounter{#2}%
+ \mathversion{#2}%
+ $\displaystyle#1_0^1$%
+ \fi
+}
+\SHOW\mathop
+\endgroup
+
+\section{Binary relations, \cmd\mathbin}
+\SHOW\mathbin
+
+\clearpage
+\section{Ordinary symbols, \cmd\mathord}
+\SHOW\mathord
+
+\clearpage
+\section{Relation symbols, \cmd\mathrel}
+\SHOW\mathrel
+
+\clearpage
+\section{Alphabetical symbols, \cmd\mathalpha}
+
+% first read in all \mathalpha symbols into a variable:
+\ExplSyntaxOn
+\cs_set:Npn \UnicodeMathSymbol #1#2#3#4 {
+ \str_if_eq:nnT {\mathalpha} {#3} {
+ \exp_not:n { \UnicodeMathSymbol {#1}{#2}{#3}{#4} }
+ }
+}
+\CatchFileEdef
+ \ALPHA{unicode-math-table.tex}
+ {\char_set_catcode_space:N \ }
+
+% now each time we print an alphabet we remove the slot;
+% this ensures we won't miss anything
+
+\def\INPUT{\ALPHA}
+\cs_new:Npn \SLOTS #1#2 {
+ \cs_set:Npn \UnicodeMathSymbol ##1##2##3##4 {
+ \bool_lazy_and:nnT
+ { \int_compare_p:n {##1 >= #1} }
+ { \int_compare_p:n {##1 <= #2} }
+ {
+ \PRINTLINE{##1}{##2}{##4}
+ }
+ }
+ \TABLE
+ \cs_set:Npn \UnicodeMathSymbol ##1##2##3##4 {
+ \bool_lazy_or:nnT
+ { \int_compare_p:n {##1 > #2} }
+ { \int_compare_p:n {##1 < #1} }
+ {
+ \exp_not:n { \UnicodeMathSymbol {##1}{##2}{##3}{##4} }
+ }
+ }
+ \edef\ALPHA{\ALPHA}
+}
+
+\ExplSyntaxOff
+
+\subsection{Normal weight}
+
+\subsubsection{Upright Greek, uppercase}
+\SLOTS{"00391}{"003A9}
+
+\subsubsection{Upright Greek, lowercase}
+\SLOTS{"003B1}{"003F5}
+
+\subsubsection{Italic, Latin, uppercase}
+\SLOTS{"1D434}{"1D44D}
+
+\subsubsection{Italic, Latin, lowercase}
+\SLOTS{"1D44E}{"1D467}
+
+\subsubsection{Italic Greek, uppercase}
+\SLOTS{"1D6E2}{"1D6FA}
+
+\subsubsection{Italic Greek, lowercase}
+\SLOTS{"1D6FC}{"1D71B}
+
+\subsubsection{Script, Latin, uppercase}
+\SLOTS{"1D49C}{"1D4B5}
+
+\subsubsection{Script, Latin, lowercase}
+\SLOTS{"1D4B6}{"1D4CF}
+
+\subsubsection{Fraktur, Latin, uppercase}
+\SLOTS{"1D504}{"1D51C}
+
+\subsubsection{Fraktur, Latin, lowercase}
+\SLOTS{"1D51E}{"1D537}
+
+\subsubsection{Blackboard, Latin, uppercase}
+\SLOTS{"1D538}{"1D550}
+
+\subsubsection{Blackboard, Latin, lowercase}
+\SLOTS{"1D552}{"1D56B}
+
+\subsubsection{Sans serif, Latin, uppercase}
+\SLOTS{"1D5A0}{"1D5B9}
+
+\subsubsection{Sans serif, Latin, lowercase}
+\SLOTS{"1D5BA}{"1D5D3}
+
+\subsubsection{Italic sans serif, Latin, uppercase}
+\SLOTS{"1D608}{"1D621}
+
+\subsubsection{Italic sans serif, Latin, lowercase}
+\SLOTS{"1D622}{"1D63B}
+
+\subsubsection{Typewriter, Latin, uppercase}
+\SLOTS{"1D670}{"1D689}
+
+\subsubsection{Typewriter, Latin, lowercase}
+\SLOTS{"1D68A}{"1D6A3}
+
+\subsection{Bold}
+
+\subsubsection{Bold, Latin, uppercase}
+\SLOTS{"1D400}{"1D419}
+
+\subsubsection{Bold, Latin, lowercase}
+\SLOTS{"1D41A}{"1D433}
+
+\subsubsection{Bold Greek, uppercase}
+\SLOTS{"1D6A8}{"1D6C0}
+
+\subsubsection{Bold Greek, lowercase}
+\SLOTS{"1D6C2}{"1D6E1}
+
+\subsubsection{Bold italic, Latin, uppercase}
+\SLOTS{"1D468}{"1D481}
+
+\subsubsection{Bold italic, Latin, lowercase}
+\SLOTS{"1D482}{"1D49B}
+
+\subsubsection{Bold italic Greek, uppercase}
+\SLOTS{"1D71C}{"1D734}
+
+\subsubsection{Bold italic Greek, lowercase}
+\SLOTS{"1D736}{"1D755}
+
+\subsubsection{Bold script, Latin, uppercase}
+\SLOTS{"1D4D0}{"1D4E9}
+
+\subsubsection{Bold script, Latin, lowercase}
+\SLOTS{"1D4EA}{"1D503}
+
+\subsubsection{Bold fraktur, Latin, uppercase}
+\SLOTS{"1D56C}{"1D585}
+
+\subsubsection{Bold fraktur, Latin, lowercase}
+\SLOTS{"1D586}{"1D59F}
+
+\subsubsection{Bold sans serif, Latin, uppercase}
+\SLOTS{"1D5D4}{"1D5ED}
+
+\subsubsection{Bold sans serif, Latin, lowercase}
+\SLOTS{"1D5EE}{"1D607}
+
+\subsubsection{Bold italic sans serif, Latin, uppercase}
+\SLOTS{"1D63C}{"1D655}
+
+\subsubsection{Bold italic sans serif, Latin, lowercase}
+\SLOTS{"1D656}{"1D66F}
+
+\subsubsection{Bold sans serif Greek, uppercase}
+\SLOTS{"1D756}{"1D76E}
+
+\subsubsection{Bold sans serif Greek, lowercase}
+\SLOTS{"1D770}{"1D78F}
+
+\subsubsection{Bold italic sans serif Greek, uppercase}
+\SLOTS{"1D790}{"1D7A8}
+
+\subsubsection{Bold italic sans serif Greek, lowercase}
+\SLOTS{"1D7AA}{"1D7C9}
+
+\subsection{Miscellaneous}
+\def\UnicodeMathSymbol#1#2#3#4{\PRINTLINE{#1}{#2}{#4}}
+\TABLE
+
+\refstepcounter{lm}\label{count:lm}
+\refstepcounter{xits}\label{count:xits}
+\refstepcounter{stix}\label{count:stix}
+\refstepcounter{cambria}\label{count:cambria}
+\refstepcounter{asana}\label{count:asana}
+\refstepcounter{pagella}\label{count:pagella}
+\refstepcounter{euler}\label{count:euler}
+\refstepcounter{dejavu}\label{count:dejavu}
+
+\end{document}
+
+\endinput
+
+% /©
+%
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
+%
+% ©/
Property changes on: trunk/Master/texmf-dist/source/latex/unicode-math/unimath-symbols.ltx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/unicode-math/unicode-math-luatex.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/unicode-math/unicode-math-luatex.sty 2017-11-18 01:22:09 UTC (rev 45844)
+++ trunk/Master/texmf-dist/tex/latex/unicode-math/unicode-math-luatex.sty 2017-11-18 21:45:46 UTC (rev 45845)
@@ -5,40 +5,141 @@
%% The original source files were:
%%
%% unicode-math.dtx (with options: `package,LU')
-%% unicode-math-preamble.dtx (with options: `package,LU')
-%% unicode-math-pkgopt.dtx (with options: `package,LU')
-%% unicode-math-msg.dtx (with options: `package,LU')
-%% unicode-math-usv.dtx (with options: `package,LU')
-%% unicode-math-setchar.dtx (with options: `package,LU')
-%% unicode-math-mathtext.dtx (with options: `package,LU')
-%% unicode-math-main.dtx (with options: `package,LU')
-%% unicode-math-fontopt.dtx (with options: `package,LU')
-%% unicode-math-fontparam.dtx (with options: `package,LU')
-%% unicode-math-mathmap.dtx (with options: `package,LU')
-%% unicode-math-mathtext.dtx (with options: `package,LU')
-%% unicode-math-epilogue.dtx (with options: `package,LU')
-%% unicode-math-primes.dtx (with options: `package,LU')
-%% unicode-math-sscript.dtx (with options: `package,LU')
-%% unicode-math-compat.dtx (with options: `package,LU')
-%% unicode-math-alphabets.dtx (with options: `package,LU')
-%%
-%% Copyright 2006-2017 Will Robertson <will.robertson at latex-project.org>
-%% Copyright 2010-2013 Philipp Stephani <st_philipp at yahoo.de>
-%% Copyright 2012-2015 Khaled Hosny <khaledhosny at eglug.org>
-%%
+%% um-code-base.dtx (with options: `package,LU')
+%% um-code-opening.dtx (with options: `package,LU')
+%% um-code-variables.dtx (with options: `package,LU')
+%% um-code-api.dtx (with options: `package,LU')
+%% um-code-ui.dtx (with options: `package,LU')
+%% um-code-pkgopt.dtx (with options: `package,LU')
+%% um-code-msg.dtx (with options: `package,LU')
+%% um-code-usv.dtx (with options: `package,LU')
+%% um-code-setchar.dtx (with options: `package,LU')
+%% um-code-mathtext.dtx (with options: `package,LU')
+%% um-code-main.dtx (with options: `package,LU')
+%% um-code-fontopt.dtx (with options: `package,LU')
+%% um-code-fontparam.dtx (with options: `package,LU')
+%% um-code-mathmap.dtx (with options: `package,LU')
+%% um-code-epilogue.dtx (with options: `package,LU')
+%% um-code-primes.dtx (with options: `package,LU')
+%% um-code-sscript.dtx (with options: `package,LU')
+%% um-code-compat.dtx (with options: `package,LU')
+%% um-code-alphabets.dtx (with options: `package,LU')
+%% ------------------------------------------------
+%% The UNICODE-MATH package <wspr.io/unicode-math>
+%% ------------------------------------------------
%% This package is free software and may be redistributed and/or modified under
%% the conditions of the LaTeX Project Public License, version 1.3c or higher
%% (your choice): <http://www.latex-project.org/lppl/>.
-%%
-%% This work is "maintained" by Will Robertson.
+%% ------------------------------------------------
+%% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+%% Copyright 2010-2017 Philipp Stephani
+%% Copyright 2011-2017 Joseph Wright
+%% Copyright 2012-2015 Khaled Hosny
+%% ------------------------------------------------
+%%^^A%% unicode-math.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\ProvidesPackage{unicode-math-luatex}
- [2017/10/09 v0.8h Unicode maths in XeLaTeX and LuaLaTeX]
+ [2017/11/18 v0.8i Unicode maths in XeLaTeX and LuaLaTeX]
+%%^^A%% um-code-base.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+
+%%^^A%% um-code-opening.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\RequirePackage{lualatex-math}
\ExplSyntaxOn
\cs_set_protected_nopar:Npn \exp_last_unbraced:NNx { \::N \::x_unbraced \::: }
\cs_generate_variant:Nn \fontspec_set_family:Nnn {Nx}
\cs_generate_variant:Nn \fontspec_set_fontface:NNnn {NNx}
+\prg_new_conditional:Nnn \__um_glyph_if_exist:Nn {p,TF,T,F}
+ {
+ \etex_iffontchar:D #1 #2 \scan_stop:
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ }
+\cs_set:Npn \__um_set_mathcode:nnnn #1#2#3#4
+ {
+ \Umathcode \int_eval:n {#1} =
+ \mathchar at type#2 \csname sym#3\endcsname \int_eval:n {#4} \scan_stop:
+ }
+\cs_set:Npn \__um_set_mathcode:nnn #1#2#3
+ {
+ \Umathcode \int_eval:n {#1} =
+ \mathchar at type#2 \csname sym#3\endcsname \int_eval:n {#1} \scan_stop:
+ }
+\cs_set:Npn \__um_set_mathchar:NNnn #1#2#3#4
+ {
+ \Umathchardef #1 =
+ \mathchar at type#2 \csname sym#3\endcsname \int_eval:n {#4} \scan_stop:
+ }
+\cs_generate_variant:Nn \__um_set_mathchar:NNnn {c}
+\cs_new:Nn \__um_set_delcode:nnn
+ {
+ \Udelcode#2 = \csname sym#1\endcsname #3 \scan_stop:
+ }
+\cs_new:Nn \__um_radical:nn
+ {
+ \Uradical \csname sym#1\endcsname #2 \scan_stop:
+ }
+\cs_new:Nn \__um_delimiter:Nnn
+ {
+ \Udelimiter \mathchar at type#1 \csname sym#2\endcsname #3 \scan_stop:
+ }
+\cs_new:Nn \__um_accent:nnn
+ {
+ \Umathaccent #1~ \mathchar at type\mathaccent \use:c { sym #2 } #3 \scan_stop:
+ }
+\cs_new:Nn \__um_char_gmake_mathactive:N
+ {
+ \global\mathcode `#1 = "8000 \scan_stop:
+ }
+\cs_new:Nn \__um_char_gmake_mathactive:n
+ {
+ \global\mathcode #1 = "8000 \scan_stop:
+ }
+\cs_new:Nn \__um_copy_fontparam:nnn
+ {
+ \fontdimen #1 \font = \__um_get_fontparam:nn {#2} {#3}
+ }
+\cs_new:Nn \__um_zero_fontparam:n
+ {
+ \fontdimen #1 \font = 0pt\relax
+ }
+\cs_new:Nn \__um_get_fontparam:nn
+ {
+ \directlua{fontspec.mathfontdimen("l__um_font","#2")}
+ }
+\cs_new:Nn \usv_set:nnn { \tl_const:cn { c__um_#1_#2_usv } {#3} }
+\cs_new:Nn \__um_to_usv:nn { \use:c { c__um_#1_#2_usv } }
+\prg_new_conditional:Nnn \__um_usv_if_exist:nn {T,F,TF}
+ {
+ \cs_if_exist:cTF { c__um_#1_#2_usv }
+ \prg_return_true: \prg_return_false:
+ }
+\tl_map_inline:nn
+ {
+ \new at mathgroup\cdp at list\cdp at elt\DeclareMathSizes
+ \@DeclareMathSizes\newmathalphabet\newmathalphabet__um\newmathalphabet__um@
+ \DeclareMathVersion\define at mathalphabet\define at mathgroup\addtoversion
+ \version at list\version at elt\alpha at list\alpha at elt
+ \restore at mathversion\init at restore@version\dorestore at version\process at table
+ \new at mathversion\DeclareSymbolFont\group at list\group at elt
+ \new at symbolfont\SetSymbolFont\SetSymbolFont@\get at cdp
+ \DeclareMathAlphabet\new at mathalphabet\SetMathAlphabet\SetMathAlphabet@
+ \DeclareMathAccent\set at mathaccent\DeclareMathSymbol\set at mathchar
+ \set at mathsymbol\DeclareMathDelimiter\@xxDeclareMathDelimiter
+ \@DeclareMathDelimiter\@xDeclareMathDelimiter\set at mathdelimiter
+ \set__ummathdelimiter\DeclareMathRadical\mathchar at type
+ \DeclareSymbolFontAlphabet\DeclareSymbolFontAlphabet@
+ }
+ {
+ \tl_remove_once:Nn \@preamblecmds {\do#1}
+ }
+
+%%^^A%% um-code-variables.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\bool_new:N \l__um_ot_math_bool
\bool_new:N \l__um_init_bool
\bool_new:N \l__um_implicit_alph_bool
@@ -116,79 +217,42 @@
\tl_new:N \g__um_family_tl
\tl_new:N \g__um_style_tl
\tl_new:N \g__um_remap_style_tl
-\prg_new_conditional:Nnn \__um_glyph_if_exist:n {p,TF,T,F}
- {
- \etex_iffontchar:D \l__um_font #1 \scan_stop:
- \prg_return_true:
- \else:
- \prg_return_false:
- \fi:
- }
-\cs_set:Npn \__um_set_mathcode:nnnn #1#2#3#4 {
- \Umathcode \int_eval:n {#1} =
- \mathchar at type#2 \csname sym#3\endcsname \int_eval:n {#4} \scan_stop:
-}
-\cs_set:Npn \__um_set_mathcode:nnn #1#2#3 {
- \Umathcode \int_eval:n {#1} =
- \mathchar at type#2 \csname sym#3\endcsname \int_eval:n {#1} \scan_stop:
-}
-\cs_set:Npn \__um_set_mathchar:NNnn #1#2#3#4 {
- \Umathchardef #1 =
- \mathchar at type#2 \csname sym#3\endcsname \int_eval:n {#4} \scan_stop:
-}
-\cs_new:Nn \__um_set_delcode:nnn {
- \Udelcode#2 = \csname sym#1\endcsname #3 \scan_stop:
-}
-\cs_new:Nn \__um_radical:nn {
- \Uradical \csname sym#1\endcsname #2 \scan_stop:
-}
-\cs_new:Nn \__um_delimiter:Nnn {
- \Udelimiter \mathchar at type#1 \csname sym#2\endcsname #3 \scan_stop:
-}
-\cs_new:Nn \__um_accent:nnn {
- \Umathaccent #1~ \mathchar at type\mathaccent \use:c { sym #2 } #3 \scan_stop:
-}
-\cs_generate_variant:Nn \__um_set_mathchar:NNnn {c}
-\cs_new:Nn \__um_char_gmake_mathactive:N
- {
- \global\mathcode `#1 = "8000 \scan_stop:
- }
-\cs_new:Nn \__um_char_gmake_mathactive:n
- {
- \global\mathcode #1 = "8000 \scan_stop:
- }
-\cs_new:Nn \usv_set:nnn { \tl_const:cn { c__um_#1_#2_usv } {#3} }
-\cs_new:Nn \__um_to_usv:nn { \use:c { c__um_#1_#2_usv } }
-\prg_new_conditional:Nnn \__um_usv_if_exist:nn {T,F,TF}
- {
- \cs_if_exist:cTF { c__um_#1_#2_usv }
- \prg_return_true: \prg_return_false:
- }
+
+%%^^A%% um-code-api.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\cs_new:Nn \unimath_get_mathstyle:
{
\tl_use:N \l__um_mathstyle_tl
}
-\tl_map_inline:nn
- {
- \new at mathgroup\cdp at list\cdp at elt\DeclareMathSizes
- \@DeclareMathSizes\newmathalphabet\newmathalphabet__um\newmathalphabet__um@
- \DeclareMathVersion\define at mathalphabet\define at mathgroup\addtoversion
- \version at list\version at elt\alpha at list\alpha at elt
- \restore at mathversion\init at restore@version\dorestore at version\process at table
- \new at mathversion\DeclareSymbolFont\group at list\group at elt
- \new at symbolfont\SetSymbolFont\SetSymbolFont@\get at cdp
- \DeclareMathAlphabet\new at mathalphabet\SetMathAlphabet\SetMathAlphabet@
- \DeclareMathAccent\set at mathaccent\DeclareMathSymbol\set at mathchar
- \set at mathsymbol\DeclareMathDelimiter\@xxDeclareMathDelimiter
- \@DeclareMathDelimiter\@xDeclareMathDelimiter\set at mathdelimiter
- \set__ummathdelimiter\DeclareMathRadical\mathchar at type
- \DeclareSymbolFontAlphabet\DeclareSymbolFontAlphabet@
- }
- {
- \tl_remove_once:Nn \@preamblecmds {\do#1}
- }
-\DeclareDocumentCommand \unimathsetup {m} { \keys_set:nn {unicode-math} {#1} }
+%%^^A%% um-code-ui.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+\NewDocumentCommand \unimathsetup {m} { \keys_set:nn {unicode-math} {#1} }
+\NewDocumentCommand \setmathfont { O{} m O{} }
+ {
+ \__um_setmathfont:nn {#1,#3} {#2}
+ }
+\NewDocumentCommand \setmathfontface { m O{} m O{} }
+ {
+ \__um_setmathfontface:Nnn #1 {#2,#4} {#3}
+ }
+\@onlypreamble \setmathfontface
+\NewDocumentCommand \setoperatorfont {m}
+ {
+ \tl_set:Nn \g__um_operator_mathfont_tl {#1}
+ }
+\setoperatorfont{\mathrm}
+\NewDocumentCommand \addnolimits {m}
+ {
+ \tl_put_right:Nn \l__um_nolimits_tl {#1}
+ }
+\NewDocumentCommand \removenolimits {m}
+ {
+ \tl_remove_all:Nn \l__um_nolimits_tl {#1}
+ }
+
+%%^^A%% um-code-pkgopt.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\cs_new:Nn \__um_keys_choices:nn
{
\cs_set:Npn \__um_keys_choices_fn:nn { \__um_keys_choices_aux:nnn {#1} }
@@ -408,6 +472,8 @@
\cs_if_exist:NT \tfrac { \unimathsetup {active-frac=small} }
\ProcessKeysOptions {unicode-math}
+%%^^A%% um-code-msg.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\cs_new:Npn \__um_error:n { \msg_error:nn {unicode-math} }
\cs_new:Npn \__um_warning:n { \msg_warning:nn {unicode-math} }
\cs_new:Npn \__um_warning:nnn { \msg_warning:nnxx {unicode-math} }
@@ -500,6 +566,8 @@
any~ effect~ on~ the~ re-defined~ commands.
}
+%%^^A%% um-code-usv.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\usv_set:nnn {normal} {num} {48}
\usv_set:nnn {normal} {Latin}{"1D434}
\usv_set:nnn {normal} {latin}{"1D44E}
@@ -746,6 +814,8 @@
\usv_set:nnn {frak}{R}{"211C}
\usv_set:nnn {frak}{Z}{"2128}
+%%^^A%% um-code-setchar.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\cs_new:Npn \__um_symbol_setup:
{
\cs_set:Npn \UnicodeMathSymbol ##1##2##3##4
@@ -873,16 +943,19 @@
}
}
+%%^^A%% um-code-mathtext.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\keys_define:nn {__um_mathface}
{
version .code:n =
{ \tl_set:Nn \l__um_mversion_tl {#1} }
}
-\DeclareDocumentCommand \setmathfontface { m O{} m O{} }
+\cs_set:Nn \__um_setmathfontface:Nnn
{
\tl_clear:N \l__um_mversion_tl
- \keys_set_known:nnN {__um_mathface} {#2,#4} \l__um_keyval_clist
+ \keys_set_known:nnN {__um_mathface} {#2} \l__um_keyval_clist
+
\exp_args:Nnx \fontspec_set_family:Nxn \l__um_tmpa_tl
{ ItalicFont={}, BoldFont={}, \exp_not:V \l__um_keyval_clist } {#3}
@@ -891,6 +964,7 @@
\tl_set:Nn \l__um_mversion_tl {normal}
\DeclareMathAlphabet #1 {\g_fontspec_encoding_tl} {\l__um_tmpa_tl} {\mddefault} {\updefault}
}
+
\SetMathAlphabet #1 {\l__um_mversion_tl} {\g_fontspec_encoding_tl} {\l__um_tmpa_tl} {\mddefault} {\updefault}
% integrate with fontspec's \setmathrm etc:
@@ -901,10 +975,6 @@
\mathtt { \cs_set_eq:NN \g__fontspec_mathtt_tl \l__um_tmpa_tl }
}
}
-\@onlypreamble \setmathfontface
-\DeclareDocumentCommand \setoperatorfont {m}
- { \tl_set:Nn \g__um_operator_mathfont_tl {#1} }
-\setoperatorfont{\mathrm}
\cs_generate_variant:Nn \tl_if_eq:nnT {o}
\cs_set:Nn \__fontspec_setmainfont_hook:nn
{
@@ -959,49 +1029,48 @@
\SetMathAlphabet\mathtt{bold} \g_fontspec_encoding_tl\g__fontspec_mathtt_tl\bfdefault\updefault
}
-\DeclareDocumentCommand \setmathfont { O{} m O{} }
+%%^^A%% um-code-main.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+\cs_set:Nn \__um_setmathfont:nn
{
- \__um_setmathfont:nn {#1,#3} {#2}
+ \tl_set:Nn \l__um_fontname_tl {#2}
+ \cs_set_eq:NN \glb at currsize \scan_stop:
+ \__um_init:
+ \cs_if_exist:cF { S@ \f at size } { \calculate at math@sizes }
+ \csname S@\f at size\endcsname
+ \keys_set_known:nnN {unicode-math} {#1} \l__um_unknown_keys_clist
+ \bool_if:NT \l__um_init_bool { \__um_log:n {default-math-font} }
+ \__um_fontspec_select_font:
+ \bool_if:nT { \l__um_ot_math_bool && !\g__um_mainfont_already_set_bool }
+ {
+ \__um_declare_math_sizes:
+ \__um_fontspec_select_font:
+ }
+ \cs_if_exist:cF { sym \l__um_symfont_label_tl }
+ {
+ \DeclareSymbolFont{\l__um_symfont_label_tl}
+ {\encodingdefault}{\l__um_family_tl}{\mddefault}{\updefault}
+ }
+ \SetSymbolFont{\l__um_symfont_label_tl}{\l__um_mversion_tl}
+ {\encodingdefault}{\l__um_family_tl}{\mddefault}{\updefault}
+ \str_if_eq_x:nnT {\l__um_mversion_tl} {normal}
+ {
+ \SetSymbolFont{\l__um_symfont_label_tl}{bold}
+ {\encodingdefault}{\l__um_family_tl}{\bfdefault}{\updefault}
+ }
+ \bool_if:nT { \l__um_ot_math_bool && !\g__um_mainfont_already_set_bool }
+ {
+ \bool_set_true:N \g__um_mainfont_already_set_bool
+ \__um_setup_legacy_fam_two:
+ \__um_setup_legacy_fam_three:
+ }
+ \__um_input_math_symbol_table:
+ \__um_remap_symbols:
+ \__um_setup_mathactives:
+ \__um_setup_delcodes:
+ \__um_setup_alphabets:
+ \__um_setup_negations:
}
-\cs_set:Nn \__um_setmathfont:nn
- {
- \tl_set:Nn \l__um_fontname_tl {#2}
- \__um_init:
- \cs_if_exist:cF { S@ \f at size } { \calculate at math@sizes }
- \csname S@\f at size\endcsname
- \keys_set_known:nnN {unicode-math} {#1} \l__um_unknown_keys_clist
- \bool_if:NT \l__um_init_bool { \__um_log:n {default-math-font} }
- \__um_fontspec_select_font:
- \bool_if:nT { \l__um_ot_math_bool && !\g__um_mainfont_already_set_bool }
- {
- \__um_declare_math_sizes:
- \__um_fontspec_select_font:
- }
- \cs_if_exist:cF { sym \__um_symfont_tl }
- {
- \DeclareSymbolFont{\__um_symfont_tl}
- {\encodingdefault}{\l__um_family_tl}{\mddefault}{\updefault}
- }
- \SetSymbolFont{\__um_symfont_tl}{\l__um_mversion_tl}
- {\encodingdefault}{\l__um_family_tl}{\mddefault}{\updefault}
- \str_if_eq_x:nnT {\l__um_mversion_tl} {normal}
- {
- \SetSymbolFont{\__um_symfont_tl}{bold}
- {\encodingdefault}{\l__um_family_tl}{\bfdefault}{\updefault}
- }
- \bool_if:nT { \l__um_ot_math_bool && !\g__um_mainfont_already_set_bool }
- {
- \bool_set_true:N \g__um_mainfont_already_set_bool
- \__um_setup_legacy_fam_two:
- \__um_setup_legacy_fam_three:
- }
- \__um_input_math_symbol_table:
- \__um_remap_symbols:
- \__um_setup_mathactives:
- \__um_setup_delcodes:
- \__um_setup_alphabets:
- \__um_setup_negations:
- }
\AtBeginDocument { \__um_load_lm_if_necessary: }
\cs_new:Nn \__um_load_lm_if_necessary:
{
@@ -1013,28 +1082,27 @@
}
}
\cs_new:Nn \__um_init:
- {
- \bool_set_true:N \l__um_ot_math_bool
- \cs_set_eq:NN \glb at currsize \scan_stop:
- \bool_set_true:N \l__um_init_bool
- \seq_clear:N \l__um_char_range_seq
- \clist_clear:N \l__um_char_nrange_clist
- \seq_clear:N \l__um_mathalph_seq
- \seq_clear:N \l__um_missing_alph_seq
- \tl_set:Nn \l__um_mversion_tl {normal}
- \tl_set:Nn \__um_symfont_tl {operators}
- \cs_set_eq:NN \__um_sym:nnn \__um_process_symbol_noparse:nnn
- \cs_set_eq:NN \__um_set_mathalphabet_char:nnn \__um_mathmap_noparse:nnn
- \cs_set_eq:NN \__um_remap_symbol:nnn \__um_remap_symbol_noparse:nnn
- \cs_set_eq:NN \__um_maybe_init_alphabet:n \__um_init_alphabet:n
- \cs_set_eq:NN \__um_map_char_single:nn \__um_map_char_noparse:nn
- \cs_set_eq:NN \__um_assign_delcode:nn \__um_assign_delcode_noparse:nn
- \cs_set_eq:NN \__um_make_mathactive:nNN \__um_make_mathactive_noparse:nNN
- \tl_set:Nn \l__um_script_features_tl {Style=MathScript}
- \tl_set:Nn \l__um_sscript_features_tl {Style=MathScriptScript}
- \tl_set_eq:NN \l__um_script_font_tl \l__um_fontname_tl
- \tl_set_eq:NN \l__um_sscript_font_tl \l__um_fontname_tl
- }
+ {
+ \bool_set_true:N \l__um_ot_math_bool
+ \tl_set:Nn \l__um_mversion_tl {normal}
+ \tl_set:Nn \l__um_symfont_label_tl {operators}
+ \tl_set:Nn \l__um_script_features_tl {Style=MathScript}
+ \tl_set:Nn \l__um_sscript_features_tl {Style=MathScriptScript}
+ \tl_set_eq:NN \l__um_script_font_tl \l__um_fontname_tl
+ \tl_set_eq:NN \l__um_sscript_font_tl \l__um_fontname_tl
+ \bool_set_true:N \l__um_init_bool
+ \seq_clear:N \l__um_char_range_seq
+ \clist_clear:N \l__um_char_nrange_clist
+ \seq_clear:N \l__um_mathalph_seq
+ \seq_clear:N \l__um_missing_alph_seq
+ \cs_set_eq:NN \__um_sym:nnn \__um_process_symbol_noparse:nnn
+ \cs_set_eq:NN \__um_set_mathalphabet_char:nnn \__um_mathmap_noparse:nnn
+ \cs_set_eq:NN \__um_remap_symbol:nnn \__um_remap_symbol_noparse:nnn
+ \cs_set_eq:NN \__um_maybe_init_alphabet:n \__um_init_alphabet:n
+ \cs_set_eq:NN \__um_map_char_single:nn \__um_map_char_noparse:nn
+ \cs_set_eq:NN \__um_assign_delcode:nn \__um_assign_delcode_noparse:nn
+ \cs_set_eq:NN \__um_make_mathactive:nNN \__um_make_mathactive_noparse:nNN
+ }
\cs_new:Nn \__um_declare_math_sizes:
{
\fp_compare:nF { \__um_script_style_size:n {ScriptPercentScaleDown} == 0 }
@@ -1052,26 +1120,26 @@
{
\fontspec_set_family:Nxn \l__um_family_tl
{
- \l__um_font_keyval_tl,
- Scale=1.00001,
- FontAdjustment =
- {
- \fontdimen8\font= \__um_get_fontparam:nn {43} {FractionNumeratorDisplayStyleShiftUp}\relax
- \fontdimen9\font= \__um_get_fontparam:nn {42} {FractionNumeratorShiftUp}\relax
- \fontdimen10\font=\__um_get_fontparam:nn {32} {StackTopShiftUp}\relax
- \fontdimen11\font=\__um_get_fontparam:nn {45} {FractionDenominatorDisplayStyleShiftDown}\relax
- \fontdimen12\font=\__um_get_fontparam:nn {44} {FractionDenominatorShiftDown}\relax
- \fontdimen13\font=\__um_get_fontparam:nn {21} {SuperscriptShiftUp}\relax
- \fontdimen14\font=\__um_get_fontparam:nn {21} {SuperscriptShiftUp}\relax
- \fontdimen15\font=\__um_get_fontparam:nn {22} {SuperscriptShiftUpCramped}\relax
- \fontdimen16\font=\__um_get_fontparam:nn {18} {SubscriptShiftDown}\relax
- \fontdimen17\font=\__um_get_fontparam:nn {18} {SubscriptShiftDownWithSuperscript}\relax
- \fontdimen18\font=\__um_get_fontparam:nn {24} {SuperscriptBaselineDropMax}\relax
- \fontdimen19\font=\__um_get_fontparam:nn {20} {SubscriptBaselineDropMin}\relax
- \fontdimen20\font=0pt\relax % delim1 = FractionDelimiterDisplaySize
- \fontdimen21\font=0pt\relax % delim2 = FractionDelimiterSize
- \fontdimen22\font=\__um_get_fontparam:nn {15} {AxisHeight}\relax
- }
+ \l__um_font_keyval_tl,
+ Scale=1.00001,
+ FontAdjustment =
+ {
+ \__um_copy_fontparam:nnn { 8} {43} {FractionNumeratorDisplayStyleShiftUp}\relax
+ \__um_copy_fontparam:nnn { 9} {42} {FractionNumeratorShiftUp}\relax
+ \__um_copy_fontparam:nnn {10} {32} {StackTopShiftUp}\relax
+ \__um_copy_fontparam:nnn {11} {45} {FractionDenominatorDisplayStyleShiftDown}\relax
+ \__um_copy_fontparam:nnn {12} {44} {FractionDenominatorShiftDown}\relax
+ \__um_copy_fontparam:nnn {13} {21} {SuperscriptShiftUp}\relax
+ \__um_copy_fontparam:nnn {14} {21} {SuperscriptShiftUp}\relax
+ \__um_copy_fontparam:nnn {15} {22} {SuperscriptShiftUpCramped}\relax
+ \__um_copy_fontparam:nnn {16} {18} {SubscriptShiftDown}\relax
+ \__um_copy_fontparam:nnn {17} {18} {SubscriptShiftDownWithSuperscript}\relax
+ \__um_copy_fontparam:nnn {18} {24} {SuperscriptBaselineDropMax}\relax
+ \__um_copy_fontparam:nnn {19} {20} {SubscriptBaselineDropMin}\relax
+ \__um_zero_fontparam:n {20} % delim1 = FractionDelimiterDisplaySize
+ \__um_zero_fontparam:n {21} % delim2 = FractionDelimiterSize
+ \__um_copy_fontparam:nnn {22} {15} {AxisHeight}\relax
+ }
} {\l__um_fontname_tl}
\SetSymbolFont{symbols}{\l__um_mversion_tl}
@@ -1079,8 +1147,8 @@
\str_if_eq_x:nnT {\l__um_mversion_tl} {normal}
{
- \SetSymbolFont{symbols}{bold}
- {\encodingdefault}{\l__um_family_tl}{\bfdefault}{\updefault}
+ \SetSymbolFont{symbols}{bold}
+ {\encodingdefault}{\l__um_family_tl}{\bfdefault}{\updefault}
}
}
\cs_new:Nn \__um_setup_legacy_fam_three:
@@ -1087,17 +1155,17 @@
{
\fontspec_set_family:Nxn \l__um_family_tl
{
- \l__um_font_keyval_tl,
- Scale=0.99999,
- FontAdjustment={
- \fontdimen8\font= \__um_get_fontparam:nn {48} {FractionRuleThickness}\relax
- \fontdimen9\font= \__um_get_fontparam:nn {28} {UpperLimitGapMin}\relax
- \fontdimen10\font=\__um_get_fontparam:nn {30} {LowerLimitGapMin}\relax
- \fontdimen11\font=\__um_get_fontparam:nn {29} {UpperLimitBaselineRiseMin}\relax
- \fontdimen12\font=\__um_get_fontparam:nn {31} {LowerLimitBaselineDropMin}\relax
- \fontdimen13\font=0pt\relax
- }
- } {\l__um_fontname_tl}
+ \l__um_font_keyval_tl,
+ Scale=0.99999,
+ FontAdjustment = {
+ \__um_copy_fontparam:nnn { 8} {48} {FractionRuleThickness}\relax
+ \__um_copy_fontparam:nnn { 9} {28} {UpperLimitGapMin}\relax
+ \__um_copy_fontparam:nnn {10} {30} {LowerLimitGapMin}\relax
+ \__um_copy_fontparam:nnn {11} {29} {UpperLimitBaselineRiseMin}\relax
+ \__um_copy_fontparam:nnn {12} {31} {LowerLimitBaselineDropMin}\relax
+ \__um_zero_fontparam:n {13}
+ }
+ } {\l__um_fontname_tl}
\SetSymbolFont{largesymbols}{\l__um_mversion_tl}
{\encodingdefault}{\l__um_family_tl}{\mddefault}{\updefault}
@@ -1104,87 +1172,84 @@
\str_if_eq_x:nnT {\l__um_mversion_tl} {normal}
{
- \SetSymbolFont{largesymbols}{bold}
- {\encodingdefault}{\l__um_family_tl}{\bfdefault}{\updefault}
+ \SetSymbolFont{largesymbols}{bold}
+ {\encodingdefault}{\l__um_family_tl}{\bfdefault}{\updefault}
}
}
-\cs_new:Nn \__um_get_fontparam:nn
+\cs_new:Nn \__um_fontspec_select_font:
{
- \directlua{fontspec.mathfontdimen("l__um_font","#2")}
- }
-\cs_new:Nn \__um_fontspec_select_font:
- {
- \tl_set:Nx \l__um_font_keyval_tl {
+ \tl_set:Nx \l__um_font_keyval_tl {
Renderer = Basic,
- BoldItalicFont = {}, ItalicFont = {},
- Script = Math,
- SizeFeatures =
- {
- {
- Size = \tf at size-
- } ,
- {
- Size = \sf at size-\tf at size ,
- Font = \l__um_script_font_tl ,
- \l__um_script_features_tl
- } ,
- {
- Size = -\sf at size ,
- Font = \l__um_sscript_font_tl ,
- \l__um_sscript_features_tl
- }
- } ,
- \l__um_unknown_keys_clist
- }
+ BoldItalicFont = {}, ItalicFont = {},
+ Script = Math,
+ SizeFeatures =
+ {
+ {
+ Size = \tf at size-
+ } ,
+ {
+ Size = \sf at size-\tf at size ,
+ Font = \l__um_script_font_tl ,
+ \l__um_script_features_tl
+ } ,
+ {
+ Size = -\sf at size ,
+ Font = \l__um_sscript_font_tl ,
+ \l__um_sscript_features_tl
+ }
+ } ,
+ \l__um_unknown_keys_clist
+ }
+
\fontspec_set_fontface:NNxn \l__um_font \l__um_family_tl
{\l__um_font_keyval_tl} {\l__um_fontname_tl}
- \group_begin:
- \fontfamily{\l__um_family_tl}\selectfont
- \fontspec_if_script:nF {math} {\bool_gset_false:N \l__um_ot_math_bool}
- \group_end:
- }
+ \group_begin:
+ \fontfamily{\l__um_family_tl}\selectfont
+ \fontspec_if_script:nF {math} {\bool_gset_false:N \l__um_ot_math_bool}
+ \group_end:
+ }
\cs_set:Nn \__um_process_symbol_noparse:nnn
- {
- \__um_set_mathsymbol:nNNn {\__um_symfont_tl} #2 #3 {#1}
- }
+ {
+ \__um_set_mathsymbol:nNNn {\l__um_symfont_label_tl} #2 #3 {#1}
+ }
\cs_set:Nn \__um_process_symbol_parse:nnn
- {
- \__um_if_char_spec:nNNT {#1} {#2} {#3}
- {
- \__um_process_symbol_noparse:nnn {#1} {#2} {#3}
- }
- }
+ {
+ \__um_if_char_spec:nNNT {#1} {#2} {#3}
+ {
+ \__um_process_symbol_noparse:nnn {#1} {#2} {#3}
+ }
+ }
\cs_new:Npn \__um_remap_symbols:
- {
- \__um_remap_symbol:nnn{`\-}{\mathbin}{"02212}% hyphen to minus
- \__um_remap_symbol:nnn{`\*}{\mathbin}{"02217}% text asterisk to "centred asterisk"
- \bool_if:NF \g__um_literal_colon_bool
- {
- \__um_remap_symbol:nnn{`\:}{\mathrel}{"02236}% colon to ratio (i.e., punct to rel)
- }
- }
+ {
+ \__um_remap_symbol:nnn{`\-}{\mathbin}{"02212}% hyphen to minus
+ \__um_remap_symbol:nnn{`\*}{\mathbin}{"02217}% text asterisk to "centred asterisk"
+ \bool_if:NF \g__um_literal_colon_bool
+ {
+ \__um_remap_symbol:nnn{`\:}{\mathrel}{"02236}% colon to ratio (i.e., punct to rel)
+ }
+ }
\cs_new:Nn \__um_remap_symbol_parse:nnn
- {
- \__um_if_char_spec:nNNT {#3} {\@nil} {#2}
- { \__um_remap_symbol_noparse:nnn {#1} {#2} {#3} }
- }
+ {
+ \__um_if_char_spec:nNNT {#3} {\@nil} {#2}
+ { \__um_remap_symbol_noparse:nnn {#1} {#2} {#3} }
+ }
\cs_new:Nn \__um_remap_symbol_noparse:nnn
- {
- \clist_map_inline:nn {#1}
- { \__um_set_mathcode:nnnn {##1} {#2} {\__um_symfont_tl} {#3} }
- }
+ {
+ \clist_map_inline:nn {#1}
+ { \__um_set_mathcode:nnnn {##1} {#2} {\l__um_symfont_label_tl} {#3} }
+ }
\cs_new:Npn \__um_setup_mathactives:
- {
- \__um_make_mathactive:nNN {"2032} \__um_prime_single_mchar \mathord
- \__um_make_mathactive:nNN {"2033} \__um_prime_double_mchar \mathord
- \__um_make_mathactive:nNN {"2034} \__um_prime_triple_mchar \mathord
- \__um_make_mathactive:nNN {"2057} \__um_prime_quad_mchar \mathord
- \__um_make_mathactive:nNN {"2035} \__um_backprime_single_mchar \mathord
- \__um_make_mathactive:nNN {"2036} \__um_backprime_double_mchar \mathord
- \__um_make_mathactive:nNN {"2037} \__um_backprime_triple_mchar \mathord
- \__um_make_mathactive:nNN {`\'} \mathstraightquote \mathord
- \__um_make_mathactive:nNN {`\`} \mathbacktick \mathord
- }
+ {
+ \__um_make_mathactive:nNN {"2032} \__um_prime_single_mchar \mathord
+ \__um_make_mathactive:nNN {"2033} \__um_prime_double_mchar \mathord
+ \__um_make_mathactive:nNN {"2034} \__um_prime_triple_mchar \mathord
+ \__um_make_mathactive:nNN {"2057} \__um_prime_quad_mchar \mathord
+ \__um_make_mathactive:nNN {"2035} \__um_backprime_single_mchar \mathord
+ \__um_make_mathactive:nNN {"2036} \__um_backprime_double_mchar \mathord
+ \__um_make_mathactive:nNN {"2037} \__um_backprime_triple_mchar \mathord
+ \__um_make_mathactive:nNN {`\'} \mathstraightquote \mathord
+ \__um_make_mathactive:nNN {`\`} \mathbacktick \mathord
+ }
\cs_new:Nn \__um_make_mathactive_parse:nNN
{
\__um_if_char_spec:nNNT {#1} #2 #3
@@ -1192,79 +1257,73 @@
}
\cs_new:Nn \__um_make_mathactive_noparse:nNN
{
- \__um_set_mathchar:NNnn #2 #3 {\__um_symfont_tl} {#1}
+ \__um_set_mathchar:NNnn #2 #3 {\l__um_symfont_label_tl} {#1}
\__um_char_gmake_mathactive:n {#1}
}
\cs_new:Nn \__um_assign_delcode_noparse:nn
- {
- \__um_set_delcode:nnn \__um_symfont_tl {#1} {#2}
- }
+ {
+ \__um_set_delcode:nnn \l__um_symfont_label_tl {#1} {#2}
+ }
\cs_new:Nn \__um_assign_delcode_parse:nn
- {
- \__um_if_char_spec:nNNT {#2} {\@nil} {\@nil}
- {
- \__um_assign_delcode_noparse:nn {#1} {#2}
- }
- }
+ {
+ \__um_if_char_spec:nNNT {#2} {\@nil} {\@nil}
+ {
+ \__um_assign_delcode_noparse:nn {#1} {#2}
+ }
+ }
\cs_new:Nn \__um_assign_delcode:n { \__um_assign_delcode:nn {#1} {#1} }
\cs_new:Npn \__um_setup_delcodes:
- {
- % ensure \left. and \right. work:
- \__um_set_delcode:nnn \__um_symfont_tl {`\.} {\c_zero}
- % this is forcefully done to fix a bug -- indicates a larger problem!
+ {
+ % ensure \left. and \right. work:
+ \__um_set_delcode:nnn \l__um_symfont_label_tl {`\.} {\c_zero}
+ % this is forcefully done to fix a bug -- indicates a larger problem!
- \__um_assign_delcode:nn {`\/} {\g__um_slash_delimiter_usv}
- \__um_assign_delcode:nn {"2044} {\g__um_slash_delimiter_usv} % fracslash
- \__um_assign_delcode:nn {"2215} {\g__um_slash_delimiter_usv} % divslash
- \__um_assign_delcode:n {"005C} % backslash
- \__um_assign_delcode:nn {`\<} {"27E8} % angle brackets with ascii notation
- \__um_assign_delcode:nn {`\>} {"27E9} % angle brackets with ascii notation
- \__um_assign_delcode:n {"2191} % up arrow
- \__um_assign_delcode:n {"2193} % down arrow
- \__um_assign_delcode:n {"2195} % updown arrow
- \__um_assign_delcode:n {"219F} % up arrow twohead
- \__um_assign_delcode:n {"21A1} % down arrow twohead
- \__um_assign_delcode:n {"21A5} % up arrow from bar
- \__um_assign_delcode:n {"21A7} % down arrow from bar
- \__um_assign_delcode:n {"21A8} % updown arrow from bar
- \__um_assign_delcode:n {"21BE} % up harpoon right
- \__um_assign_delcode:n {"21BF} % up harpoon left
- \__um_assign_delcode:n {"21C2} % down harpoon right
- \__um_assign_delcode:n {"21C3} % down harpoon left
- \__um_assign_delcode:n {"21C5} % arrows up down
- \__um_assign_delcode:n {"21F5} % arrows down up
- \__um_assign_delcode:n {"21C8} % arrows up up
- \__um_assign_delcode:n {"21CA} % arrows down down
- \__um_assign_delcode:n {"21D1} % double up arrow
- \__um_assign_delcode:n {"21D3} % double down arrow
- \__um_assign_delcode:n {"21D5} % double updown arrow
- \__um_assign_delcode:n {"21DE} % up arrow double stroke
- \__um_assign_delcode:n {"21DF} % down arrow double stroke
- \__um_assign_delcode:n {"21E1} % up arrow dashed
- \__um_assign_delcode:n {"21E3} % down arrow dashed
- \__um_assign_delcode:n {"21E7} % up white arrow
- \__um_assign_delcode:n {"21E9} % down white arrow
- \__um_assign_delcode:n {"21EA} % up white arrow from bar
- \__um_assign_delcode:n {"21F3} % updown white arrow
- }
+ \__um_assign_delcode:nn {`\/} {\g__um_slash_delimiter_usv}
+ \__um_assign_delcode:nn {"2044} {\g__um_slash_delimiter_usv} % fracslash
+ \__um_assign_delcode:nn {"2215} {\g__um_slash_delimiter_usv} % divslash
+ \__um_assign_delcode:n {"005C} % backslash
+ \__um_assign_delcode:nn {`\<} {"27E8} % angle brackets with ascii notation
+ \__um_assign_delcode:nn {`\>} {"27E9} % angle brackets with ascii notation
+ \__um_assign_delcode:n {"2191} % up arrow
+ \__um_assign_delcode:n {"2193} % down arrow
+ \__um_assign_delcode:n {"2195} % updown arrow
+ \__um_assign_delcode:n {"219F} % up arrow twohead
+ \__um_assign_delcode:n {"21A1} % down arrow twohead
+ \__um_assign_delcode:n {"21A5} % up arrow from bar
+ \__um_assign_delcode:n {"21A7} % down arrow from bar
+ \__um_assign_delcode:n {"21A8} % updown arrow from bar
+ \__um_assign_delcode:n {"21BE} % up harpoon right
+ \__um_assign_delcode:n {"21BF} % up harpoon left
+ \__um_assign_delcode:n {"21C2} % down harpoon right
+ \__um_assign_delcode:n {"21C3} % down harpoon left
+ \__um_assign_delcode:n {"21C5} % arrows up down
+ \__um_assign_delcode:n {"21F5} % arrows down up
+ \__um_assign_delcode:n {"21C8} % arrows up up
+ \__um_assign_delcode:n {"21CA} % arrows down down
+ \__um_assign_delcode:n {"21D1} % double up arrow
+ \__um_assign_delcode:n {"21D3} % double down arrow
+ \__um_assign_delcode:n {"21D5} % double updown arrow
+ \__um_assign_delcode:n {"21DE} % up arrow double stroke
+ \__um_assign_delcode:n {"21DF} % down arrow double stroke
+ \__um_assign_delcode:n {"21E1} % up arrow dashed
+ \__um_assign_delcode:n {"21E3} % down arrow dashed
+ \__um_assign_delcode:n {"21E7} % up white arrow
+ \__um_assign_delcode:n {"21E9} % down white arrow
+ \__um_assign_delcode:n {"21EA} % up white arrow from bar
+ \__um_assign_delcode:n {"21F3} % updown white arrow
+ }
\tl_set:Nn \l__um_nolimits_tl
- {
- \int\iint\iiint\iiiint\oint\oiint\oiiint
- \intclockwise\varointclockwise\ointctrclockwise\sumint
- \intbar\intBar\fint\cirfnint\awint\rppolint
- \scpolint\npolint\pointint\sqint\intlarhk\intx
- \intcap\intcup\upint\lowint
- }
-\DeclareDocumentCommand \addnolimits {m}
- {
- \tl_put_right:Nn \l__um_nolimits_tl {#1}
- }
-\DeclareDocumentCommand \removenolimits {m}
- {
- \tl_remove_all:Nn \l__um_nolimits_tl {#1}
- }
+ {
+ \int\iint\iiint\iiiint\oint\oiint\oiiint
+ \intclockwise\varointclockwise\ointctrclockwise\sumint
+ \intbar\intBar\fint\cirfnint\awint\rppolint
+ \scpolint\npolint\pointint\sqint\intlarhk\intx
+ \intcap\intcup\upint\lowint
+ }
\tl_set:Nn \l__um_radicals_tl {\sqrt \longdivision}
+%%^^A%% um-code-fontopt.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\keys_define:nn {unicode-math}
{
version .code:n =
@@ -1286,7 +1345,7 @@
{
\bool_set_false:N \l__um_init_bool
\int_incr:N \g__um_fam_int
- \tl_set:Nx \__um_symfont_tl {__um_fam\int_use:N\g__um_fam_int}
+ \tl_set:Nx \l__um_symfont_label_tl {__um_fam\int_use:N\g__um_fam_int}
\cs_set_eq:NN \__um_sym:nnn \__um_process_symbol_parse:nnn
\cs_set_eq:NN \__um_set_mathalphabet_char:Nnn \__um_mathmap_parse:Nnn
\cs_set_eq:NN \__um_remap_symbol:nnn \__um_remap_symbol_parse:nnn
@@ -1395,6 +1454,8 @@
} } }
}
+%%^^A%% um-code-fontparam.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\cs_new_protected_nopar:Nn \__um_new_cramped_style:N
{
\cs_if_exist:NF #1
@@ -1499,6 +1560,8 @@
\fi
}
+%%^^A%% um-code-mathmap.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\cs_set:Npn \use at mathgroup #1 #2
{
\mode_if_math:T % <- not sure if this is really necessary since we've just checked for mmode and raised an error if not!
@@ -1679,7 +1742,7 @@
\clist_map_break:
}
{
- \__um_glyph_if_exist:nT { \__um_to_usv:nn {\l__um_style_tl} {\l__um_alphabet_tl} }
+ \__um_glyph_if_exist:NnT \l__um_font { \__um_to_usv:nn {\l__um_style_tl} {\l__um_alphabet_tl} }
{
\__um_maybe_init_alphabet:n \l__um_style_tl
\clist_map_break:
@@ -1699,7 +1762,7 @@
\__um_alphabet_config:nnn {\l__um_style_tl} {\l__um_alphabet_tl} {\l__um_remap_style_tl}
}
{
- \__um_glyph_if_exist:nTF { \__um_to_usv:nn {\l__um_remap_style_tl} {\l__um_alphabet_tl} }
+ \__um_glyph_if_exist:NnTF \l__um_font { \__um_to_usv:nn {\l__um_remap_style_tl} {\l__um_alphabet_tl} }
{
\__um_log:nx {setup-alph} {sym \l__um_style_tl~(\l__um_alphabet_tl)}
\__um_alphabet_config:nnn {\l__um_style_tl} {\l__um_alphabet_tl} {\l__um_remap_style_tl}
@@ -1722,7 +1785,7 @@
}
}
\cs_new:Nn \__um_map_char_noparse:nn
- { \__um_set_mathcode:nnnn {#1}{\mathalpha}{\__um_symfont_tl}{#2} }
+ { \__um_set_mathcode:nnnn {#1}{\mathalpha}{\l__um_symfont_label_tl}{#2} }
\cs_new:Nn \__um_map_char_parse:nn
{
\__um_if_char_spec:nNNT {#1} {\@nil} {\mathalpha}
@@ -1811,7 +1874,7 @@
{
\tl_put_right:cx {__um_switchto_#1:}
{
- \__um_set_mathcode:nnnn {##1} {\mathalpha} {\__um_symfont_tl} {#3}
+ \__um_set_mathcode:nnnn {##1} {\mathalpha} {\l__um_symfont_label_tl} {#3}
}
}
}
@@ -1885,92 +1948,8 @@
}
}
-\keys_define:nn {__um_mathface}
- {
- version .code:n =
- { \tl_set:Nn \l__um_mversion_tl {#1} }
- }
-\DeclareDocumentCommand \setmathfontface { m O{} m O{} }
- {
- \tl_clear:N \l__um_mversion_tl
+%%^^A%% um-code-epilogue.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
- \keys_set_known:nnN {__um_mathface} {#2,#4} \l__um_keyval_clist
- \exp_args:Nnx \fontspec_set_family:Nxn \l__um_tmpa_tl
- { ItalicFont={}, BoldFont={}, \exp_not:V \l__um_keyval_clist } {#3}
-
- \tl_if_empty:NT \l__um_mversion_tl
- {
- \tl_set:Nn \l__um_mversion_tl {normal}
- \DeclareMathAlphabet #1 {\g_fontspec_encoding_tl} {\l__um_tmpa_tl} {\mddefault} {\updefault}
- }
- \SetMathAlphabet #1 {\l__um_mversion_tl} {\g_fontspec_encoding_tl} {\l__um_tmpa_tl} {\mddefault} {\updefault}
-
- % integrate with fontspec's \setmathrm etc:
- \tl_case:Nn #1
- {
- \mathrm { \cs_set_eq:NN \g__fontspec_mathrm_tl \l__um_tmpa_tl }
- \mathsf { \cs_set_eq:NN \g__fontspec_mathsf_tl \l__um_tmpa_tl }
- \mathtt { \cs_set_eq:NN \g__fontspec_mathtt_tl \l__um_tmpa_tl }
- }
- }
-\@onlypreamble \setmathfontface
-\DeclareDocumentCommand \setoperatorfont {m}
- { \tl_set:Nn \g__um_operator_mathfont_tl {#1} }
-\setoperatorfont{\mathrm}
-\cs_generate_variant:Nn \tl_if_eq:nnT {o}
-\cs_set:Nn \__fontspec_setmainfont_hook:nn
- {
- \tl_if_eq:onT {\g__fontspec_mathrm_tl} {\rmdefault}
- {
- \fontspec_set_family:Nnn \g__fontspec_mathrm_tl {Renderer=Basic,#1} {#2}
- \SetMathAlphabet\mathrm{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\updefault
- \SetMathAlphabet\mathit{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\itdefault
- \SetMathAlphabet\mathbf{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\bfdefault\updefault
- }
- }
-
-\cs_set:Nn \__fontspec_setsansfont_hook:nn
- {
- \tl_if_eq:onT {\g__fontspec_mathsf_tl} {\sfdefault}
- {
- \fontspec_set_family:Nnn \g__fontspec_mathsf_tl {Renderer=Basic,#1} {#2}
- \SetMathAlphabet\mathsf{normal}\g_fontspec_encoding_tl\g__fontspec_mathsf_tl\mddefault\updefault
- \SetMathAlphabet\mathsf{bold} \g_fontspec_encoding_tl\g__fontspec_mathsf_tl\bfdefault\updefault
- }
- }
-
-\cs_set:Nn \__fontspec_setmonofont_hook:nn
- {
- \tl_if_eq:onT {\g__fontspec_mathtt_tl} {\ttdefault}
- {
- \fontspec_set_family:Nnn \g__fontspec_mathtt_tl {Renderer=Basic,#1} {#2}
- \SetMathAlphabet\mathtt{normal}\g_fontspec_encoding_tl\g__fontspec_mathtt_tl\mddefault\updefault
- \SetMathAlphabet\mathtt{bold} \g_fontspec_encoding_tl\g__fontspec_mathtt_tl\bfdefault\updefault
- }
- }
-\cs_set:Nn \__fontspec_setmathrm_hook:nn
- {
- \SetMathAlphabet\mathrm{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\updefault
- \SetMathAlphabet\mathit{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\itdefault
- \SetMathAlphabet\mathbf{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\bfdefault\updefault
- }
-\cs_set:Nn \__fontspec_setboldmathrm_hook:nn
- {
- \SetMathAlphabet\mathrm{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\mddefault\updefault
- \SetMathAlphabet\mathbf{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\bfdefault\updefault
- \SetMathAlphabet\mathit{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\mddefault\itdefault
- }
-\cs_set:Nn \__fontspec_setmathsf_hook:nn
- {
- \SetMathAlphabet\mathsf{normal}\g_fontspec_encoding_tl\g__fontspec_mathsf_tl\mddefault\updefault
- \SetMathAlphabet\mathsf{bold} \g_fontspec_encoding_tl\g__fontspec_mathsf_tl\bfdefault\updefault
- }
-\cs_set:Nn \__fontspec_setmathtt_hook:nn
- {
- \SetMathAlphabet\mathtt{normal}\g_fontspec_encoding_tl\g__fontspec_mathtt_tl\mddefault\updefault
- \SetMathAlphabet\mathtt{bold} \g_fontspec_encoding_tl\g__fontspec_mathtt_tl\bfdefault\updefault
- }
-
\AtBeginDocument{\__um_resolve_greek:}
\cs_new:Npn \__um_resolve_greek:
{
@@ -2132,6 +2111,8 @@
\cs_gset:Npn \nforksnot { \forks }
}
+%%^^A%% um-code-primes.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\cs_new:Nn \__um_arg_i_before_egroup:n {#1\egroup}
\cs_new:Nn \__um_superscript:n
{
@@ -2152,17 +2133,17 @@
{
{1} { \__um_superscript:n {#1} }
{2} {
- \__um_glyph_if_exist:nTF {"2033}
+ \__um_glyph_if_exist:NnTF \l__um_font {"2033}
{ \__um_superscript:n {\__um_prime_double_mchar} }
{ \__um_nprimes:Nn #1 {#2} }
}
{3} {
- \__um_glyph_if_exist:nTF {"2034}
+ \__um_glyph_if_exist:NnTF \l__um_font {"2034}
{ \__um_superscript:n {\__um_prime_triple_mchar} }
{ \__um_nprimes:Nn #1 {#2} }
}
{4} {
- \__um_glyph_if_exist:nTF {"2057}
+ \__um_glyph_if_exist:NnTF \l__um_font {"2057}
{ \__um_superscript:n {\__um_prime_quad_mchar} }
{ \__um_nprimes:Nn #1 {#2} }
}
@@ -2177,12 +2158,12 @@
{
{1} { \__um_superscript:n {#1} }
{2} {
- \__um_glyph_if_exist:nTF {"2036}
+ \__um_glyph_if_exist:NnTF \l__um_font {"2036}
{ \__um_superscript:n {\__um_backprime_double_mchar} }
{ \__um_nprimes:Nn #1 {#2} }
}
{3} {
- \__um_glyph_if_exist:nTF {"2037}
+ \__um_glyph_if_exist:NnTF \l__um_font {"2037}
{ \__um_superscript:n {\__um_backprime_triple_mchar} }
{ \__um_nprimes:Nn #1 {#2} }
}
@@ -2413,6 +2394,8 @@
}
\group_end:
+%%^^A%% um-code-sscript.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\group_begin:
\cs_new:Nn \__um_setup_active_superscript:nn
{
@@ -2535,6 +2518,9 @@
}
{ \group_align_safe_end: #2 #3 }
}
+
+%%^^A%% um-code-compat.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\cs_new_protected_nopar:Nn \__um_check_and_fix:NNnnnn
{
\cs_if_exist:NT #1
@@ -2749,6 +2735,9 @@
\RenewDocumentCommand \equalscolon { } { \eqcolon }
\RenewDocumentCommand \coloncolonequals { } { \Coloneq }
}
+
+%%^^A%% um-code-alphabets.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\__um_new_alphabet_config:nnn {up} {num}
{
\__um_set_normal_numbers:nn {up} {#1}
@@ -3573,3 +3562,4 @@
}
}
}
+
Modified: trunk/Master/texmf-dist/tex/latex/unicode-math/unicode-math-table.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/unicode-math/unicode-math-table.tex 2017-11-18 01:22:09 UTC (rev 45844)
+++ trunk/Master/texmf-dist/tex/latex/unicode-math/unicode-math-table.tex 2017-11-18 21:45:46 UTC (rev 45845)
@@ -1,3 +1,5 @@
+%%^^A%% unicode-math-table.tex -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\UnicodeMathSymbol{"00021}{\mathexclam }{\mathclose}{exclamation mark}%
\UnicodeMathSymbol{"00023}{\mathoctothorpe }{\mathord}{number sign}%
\UnicodeMathSymbol{"00024}{\mathdollar }{\mathord}{dollar sign}%
@@ -513,8 +515,8 @@
\UnicodeMathSymbol{"022BD}{\barvee }{\mathbin}{bar, vee (large vee)}%
\UnicodeMathSymbol{"022BE}{\measuredrightangle }{\mathord}{right angle-measured [with arc]}%
\UnicodeMathSymbol{"022BF}{\varlrtriangle }{\mathord}{right triangle}%
-\UnicodeMathSymbol{"022C0}{\bigwedge }{\mathop}{logical or operator}%
-\UnicodeMathSymbol{"022C1}{\bigvee }{\mathop}{logical and operator}%
+\UnicodeMathSymbol{"022C0}{\bigwedge }{\mathop}{logical and operator}%
+\UnicodeMathSymbol{"022C1}{\bigvee }{\mathop}{logical or operator}%
\UnicodeMathSymbol{"022C2}{\bigcap }{\mathop}{intersection operator}%
\UnicodeMathSymbol{"022C3}{\bigcup }{\mathop}{union operator}%
\UnicodeMathSymbol{"022C4}{\smwhtdiamond }{\mathbin}{white diamond}%
@@ -2443,3 +2445,21 @@
\UnicodeMathSymbol{"1D7FF}{\mttnine }{\mathord}{mathematical monospace digit 9}%
\UnicodeMathSymbol{"1EEF0}{\arabicmaj }{\mathop}{arabic mathematical operator meem with hah with tatweel}%
\UnicodeMathSymbol{"1EEF1}{\arabichad }{\mathop}{arabic mathematical operator hah with dal}%
+
+% /©
+%
+% ------------------------------------------------
+% The UNICODE-MATH package <wspr.io/unicode-math>
+% ------------------------------------------------
+% This package is free software and may be redistributed and/or modified under
+% the conditions of the LaTeX Project Public License, version 1.3c or higher
+% (your choice): <http://www.latex-project.org/lppl/>.
+% ------------------------------------------------
+% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+% Copyright 2010-2017 Philipp Stephani
+% Copyright 2011-2017 Joseph Wright
+% Copyright 2012-2015 Khaled Hosny
+% ------------------------------------------------
+%
+% ©/
+
Modified: trunk/Master/texmf-dist/tex/latex/unicode-math/unicode-math-xetex.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/unicode-math/unicode-math-xetex.sty 2017-11-18 01:22:09 UTC (rev 45844)
+++ trunk/Master/texmf-dist/tex/latex/unicode-math/unicode-math-xetex.sty 2017-11-18 21:45:46 UTC (rev 45845)
@@ -5,39 +5,140 @@
%% The original source files were:
%%
%% unicode-math.dtx (with options: `package,XE')
-%% unicode-math-preamble.dtx (with options: `package,XE')
-%% unicode-math-pkgopt.dtx (with options: `package,XE')
-%% unicode-math-msg.dtx (with options: `package,XE')
-%% unicode-math-usv.dtx (with options: `package,XE')
-%% unicode-math-setchar.dtx (with options: `package,XE')
-%% unicode-math-mathtext.dtx (with options: `package,XE')
-%% unicode-math-main.dtx (with options: `package,XE')
-%% unicode-math-fontopt.dtx (with options: `package,XE')
-%% unicode-math-fontparam.dtx (with options: `package,XE')
-%% unicode-math-mathmap.dtx (with options: `package,XE')
-%% unicode-math-mathtext.dtx (with options: `package,XE')
-%% unicode-math-epilogue.dtx (with options: `package,XE')
-%% unicode-math-primes.dtx (with options: `package,XE')
-%% unicode-math-sscript.dtx (with options: `package,XE')
-%% unicode-math-compat.dtx (with options: `package,XE')
-%% unicode-math-alphabets.dtx (with options: `package,XE')
-%%
-%% Copyright 2006-2017 Will Robertson <will.robertson at latex-project.org>
-%% Copyright 2010-2013 Philipp Stephani <st_philipp at yahoo.de>
-%% Copyright 2012-2015 Khaled Hosny <khaledhosny at eglug.org>
-%%
+%% um-code-base.dtx (with options: `package,XE')
+%% um-code-opening.dtx (with options: `package,XE')
+%% um-code-variables.dtx (with options: `package,XE')
+%% um-code-api.dtx (with options: `package,XE')
+%% um-code-ui.dtx (with options: `package,XE')
+%% um-code-pkgopt.dtx (with options: `package,XE')
+%% um-code-msg.dtx (with options: `package,XE')
+%% um-code-usv.dtx (with options: `package,XE')
+%% um-code-setchar.dtx (with options: `package,XE')
+%% um-code-mathtext.dtx (with options: `package,XE')
+%% um-code-main.dtx (with options: `package,XE')
+%% um-code-fontopt.dtx (with options: `package,XE')
+%% um-code-fontparam.dtx (with options: `package,XE')
+%% um-code-mathmap.dtx (with options: `package,XE')
+%% um-code-epilogue.dtx (with options: `package,XE')
+%% um-code-primes.dtx (with options: `package,XE')
+%% um-code-sscript.dtx (with options: `package,XE')
+%% um-code-compat.dtx (with options: `package,XE')
+%% um-code-alphabets.dtx (with options: `package,XE')
+%% ------------------------------------------------
+%% The UNICODE-MATH package <wspr.io/unicode-math>
+%% ------------------------------------------------
%% This package is free software and may be redistributed and/or modified under
%% the conditions of the LaTeX Project Public License, version 1.3c or higher
%% (your choice): <http://www.latex-project.org/lppl/>.
-%%
-%% This work is "maintained" by Will Robertson.
+%% ------------------------------------------------
+%% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+%% Copyright 2010-2017 Philipp Stephani
+%% Copyright 2011-2017 Joseph Wright
+%% Copyright 2012-2015 Khaled Hosny
+%% ------------------------------------------------
+%%^^A%% unicode-math.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\ProvidesPackage{unicode-math-xetex}
- [2017/10/09 v0.8h Unicode maths in XeLaTeX and LuaLaTeX]
+ [2017/11/18 v0.8i Unicode maths in XeLaTeX and LuaLaTeX]
+%%^^A%% um-code-base.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+
+%%^^A%% um-code-opening.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\ExplSyntaxOn
\cs_set_protected_nopar:Npn \exp_last_unbraced:NNx { \::N \::x_unbraced \::: }
\cs_generate_variant:Nn \fontspec_set_family:Nnn {Nx}
\cs_generate_variant:Nn \fontspec_set_fontface:NNnn {NNx}
+\prg_new_conditional:Nnn \__um_glyph_if_exist:Nn {p,TF,T,F}
+ {
+ \etex_iffontchar:D #1 #2 \scan_stop:
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ }
+\cs_set:Npn \__um_set_mathcode:nnnn #1#2#3#4
+ {
+ \Umathcode \int_eval:n {#1} =
+ \mathchar at type#2 \csname sym#3\endcsname \int_eval:n {#4} \scan_stop:
+ }
+\cs_set:Npn \__um_set_mathcode:nnn #1#2#3
+ {
+ \Umathcode \int_eval:n {#1} =
+ \mathchar at type#2 \csname sym#3\endcsname \int_eval:n {#1} \scan_stop:
+ }
+\cs_set:Npn \__um_set_mathchar:NNnn #1#2#3#4
+ {
+ \Umathchardef #1 =
+ \mathchar at type#2 \csname sym#3\endcsname \int_eval:n {#4} \scan_stop:
+ }
+\cs_generate_variant:Nn \__um_set_mathchar:NNnn {c}
+\cs_new:Nn \__um_set_delcode:nnn
+ {
+ \Udelcode#2 = \csname sym#1\endcsname #3 \scan_stop:
+ }
+\cs_new:Nn \__um_radical:nn
+ {
+ \Uradical \csname sym#1\endcsname #2 \scan_stop:
+ }
+\cs_new:Nn \__um_delimiter:Nnn
+ {
+ \Udelimiter \mathchar at type#1 \csname sym#2\endcsname #3 \scan_stop:
+ }
+\cs_new:Nn \__um_accent:nnn
+ {
+ \Umathaccent #1~ \mathchar at type\mathaccent \use:c { sym #2 } #3 \scan_stop:
+ }
+\cs_new:Nn \__um_char_gmake_mathactive:N
+ {
+ \global\mathcode `#1 = "8000 \scan_stop:
+ }
+\cs_new:Nn \__um_char_gmake_mathactive:n
+ {
+ \global\mathcode #1 = "8000 \scan_stop:
+ }
+\cs_new:Nn \__um_copy_fontparam:nnn
+ {
+ \fontdimen #1 \font = \__um_get_fontparam:nn {#2} {#3}
+ }
+\cs_new:Nn \__um_zero_fontparam:n
+ {
+ \fontdimen #1 \font = 0pt\relax
+ }
+\cs_new:Nn \__um_get_fontparam:nn
+ {
+ \the\fontdimen#1\l__um_font\relax
+ }
+\cs_new:Nn \usv_set:nnn { \tl_const:cn { c__um_#1_#2_usv } {#3} }
+\cs_new:Nn \__um_to_usv:nn { \use:c { c__um_#1_#2_usv } }
+\prg_new_conditional:Nnn \__um_usv_if_exist:nn {T,F,TF}
+ {
+ \cs_if_exist:cTF { c__um_#1_#2_usv }
+ \prg_return_true: \prg_return_false:
+ }
+\tl_map_inline:nn
+ {
+ \new at mathgroup\cdp at list\cdp at elt\DeclareMathSizes
+ \@DeclareMathSizes\newmathalphabet\newmathalphabet__um\newmathalphabet__um@
+ \DeclareMathVersion\define at mathalphabet\define at mathgroup\addtoversion
+ \version at list\version at elt\alpha at list\alpha at elt
+ \restore at mathversion\init at restore@version\dorestore at version\process at table
+ \new at mathversion\DeclareSymbolFont\group at list\group at elt
+ \new at symbolfont\SetSymbolFont\SetSymbolFont@\get at cdp
+ \DeclareMathAlphabet\new at mathalphabet\SetMathAlphabet\SetMathAlphabet@
+ \DeclareMathAccent\set at mathaccent\DeclareMathSymbol\set at mathchar
+ \set at mathsymbol\DeclareMathDelimiter\@xxDeclareMathDelimiter
+ \@DeclareMathDelimiter\@xDeclareMathDelimiter\set at mathdelimiter
+ \set__ummathdelimiter\DeclareMathRadical\mathchar at type
+ \DeclareSymbolFontAlphabet\DeclareSymbolFontAlphabet@
+ }
+ {
+ \tl_remove_once:Nn \@preamblecmds {\do#1}
+ }
+
+%%^^A%% um-code-variables.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\bool_new:N \l__um_ot_math_bool
\bool_new:N \l__um_init_bool
\bool_new:N \l__um_implicit_alph_bool
@@ -115,79 +216,42 @@
\tl_new:N \g__um_family_tl
\tl_new:N \g__um_style_tl
\tl_new:N \g__um_remap_style_tl
-\prg_new_conditional:Nnn \__um_glyph_if_exist:n {p,TF,T,F}
- {
- \etex_iffontchar:D \l__um_font #1 \scan_stop:
- \prg_return_true:
- \else:
- \prg_return_false:
- \fi:
- }
-\cs_set:Npn \__um_set_mathcode:nnnn #1#2#3#4 {
- \Umathcode \int_eval:n {#1} =
- \mathchar at type#2 \csname sym#3\endcsname \int_eval:n {#4} \scan_stop:
-}
-\cs_set:Npn \__um_set_mathcode:nnn #1#2#3 {
- \Umathcode \int_eval:n {#1} =
- \mathchar at type#2 \csname sym#3\endcsname \int_eval:n {#1} \scan_stop:
-}
-\cs_set:Npn \__um_set_mathchar:NNnn #1#2#3#4 {
- \Umathchardef #1 =
- \mathchar at type#2 \csname sym#3\endcsname \int_eval:n {#4} \scan_stop:
-}
-\cs_new:Nn \__um_set_delcode:nnn {
- \Udelcode#2 = \csname sym#1\endcsname #3 \scan_stop:
-}
-\cs_new:Nn \__um_radical:nn {
- \Uradical \csname sym#1\endcsname #2 \scan_stop:
-}
-\cs_new:Nn \__um_delimiter:Nnn {
- \Udelimiter \mathchar at type#1 \csname sym#2\endcsname #3 \scan_stop:
-}
-\cs_new:Nn \__um_accent:nnn {
- \Umathaccent #1~ \mathchar at type\mathaccent \use:c { sym #2 } #3 \scan_stop:
-}
-\cs_generate_variant:Nn \__um_set_mathchar:NNnn {c}
-\cs_new:Nn \__um_char_gmake_mathactive:N
- {
- \global\mathcode `#1 = "8000 \scan_stop:
- }
-\cs_new:Nn \__um_char_gmake_mathactive:n
- {
- \global\mathcode #1 = "8000 \scan_stop:
- }
-\cs_new:Nn \usv_set:nnn { \tl_const:cn { c__um_#1_#2_usv } {#3} }
-\cs_new:Nn \__um_to_usv:nn { \use:c { c__um_#1_#2_usv } }
-\prg_new_conditional:Nnn \__um_usv_if_exist:nn {T,F,TF}
- {
- \cs_if_exist:cTF { c__um_#1_#2_usv }
- \prg_return_true: \prg_return_false:
- }
+
+%%^^A%% um-code-api.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\cs_new:Nn \unimath_get_mathstyle:
{
\tl_use:N \l__um_mathstyle_tl
}
-\tl_map_inline:nn
- {
- \new at mathgroup\cdp at list\cdp at elt\DeclareMathSizes
- \@DeclareMathSizes\newmathalphabet\newmathalphabet__um\newmathalphabet__um@
- \DeclareMathVersion\define at mathalphabet\define at mathgroup\addtoversion
- \version at list\version at elt\alpha at list\alpha at elt
- \restore at mathversion\init at restore@version\dorestore at version\process at table
- \new at mathversion\DeclareSymbolFont\group at list\group at elt
- \new at symbolfont\SetSymbolFont\SetSymbolFont@\get at cdp
- \DeclareMathAlphabet\new at mathalphabet\SetMathAlphabet\SetMathAlphabet@
- \DeclareMathAccent\set at mathaccent\DeclareMathSymbol\set at mathchar
- \set at mathsymbol\DeclareMathDelimiter\@xxDeclareMathDelimiter
- \@DeclareMathDelimiter\@xDeclareMathDelimiter\set at mathdelimiter
- \set__ummathdelimiter\DeclareMathRadical\mathchar at type
- \DeclareSymbolFontAlphabet\DeclareSymbolFontAlphabet@
- }
- {
- \tl_remove_once:Nn \@preamblecmds {\do#1}
- }
-\DeclareDocumentCommand \unimathsetup {m} { \keys_set:nn {unicode-math} {#1} }
+%%^^A%% um-code-ui.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+\NewDocumentCommand \unimathsetup {m} { \keys_set:nn {unicode-math} {#1} }
+\NewDocumentCommand \setmathfont { O{} m O{} }
+ {
+ \__um_setmathfont:nn {#1,#3} {#2}
+ }
+\NewDocumentCommand \setmathfontface { m O{} m O{} }
+ {
+ \__um_setmathfontface:Nnn #1 {#2,#4} {#3}
+ }
+\@onlypreamble \setmathfontface
+\NewDocumentCommand \setoperatorfont {m}
+ {
+ \tl_set:Nn \g__um_operator_mathfont_tl {#1}
+ }
+\setoperatorfont{\mathrm}
+\NewDocumentCommand \addnolimits {m}
+ {
+ \tl_put_right:Nn \l__um_nolimits_tl {#1}
+ }
+\NewDocumentCommand \removenolimits {m}
+ {
+ \tl_remove_all:Nn \l__um_nolimits_tl {#1}
+ }
+
+%%^^A%% um-code-pkgopt.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\cs_new:Nn \__um_keys_choices:nn
{
\cs_set:Npn \__um_keys_choices_fn:nn { \__um_keys_choices_aux:nnn {#1} }
@@ -407,6 +471,8 @@
\cs_if_exist:NT \tfrac { \unimathsetup {active-frac=small} }
\ProcessKeysOptions {unicode-math}
+%%^^A%% um-code-msg.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\cs_new:Npn \__um_error:n { \msg_error:nn {unicode-math} }
\cs_new:Npn \__um_warning:n { \msg_warning:nn {unicode-math} }
\cs_new:Npn \__um_warning:nnn { \msg_warning:nnxx {unicode-math} }
@@ -499,6 +565,8 @@
any~ effect~ on~ the~ re-defined~ commands.
}
+%%^^A%% um-code-usv.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\usv_set:nnn {normal} {num} {48}
\usv_set:nnn {normal} {Latin}{"1D434}
\usv_set:nnn {normal} {latin}{"1D44E}
@@ -745,6 +813,8 @@
\usv_set:nnn {frak}{R}{"211C}
\usv_set:nnn {frak}{Z}{"2128}
+%%^^A%% um-code-setchar.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\cs_new:Npn \__um_symbol_setup:
{
\cs_set:Npn \UnicodeMathSymbol ##1##2##3##4
@@ -872,16 +942,19 @@
}
}
+%%^^A%% um-code-mathtext.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\keys_define:nn {__um_mathface}
{
version .code:n =
{ \tl_set:Nn \l__um_mversion_tl {#1} }
}
-\DeclareDocumentCommand \setmathfontface { m O{} m O{} }
+\cs_set:Nn \__um_setmathfontface:Nnn
{
\tl_clear:N \l__um_mversion_tl
- \keys_set_known:nnN {__um_mathface} {#2,#4} \l__um_keyval_clist
+ \keys_set_known:nnN {__um_mathface} {#2} \l__um_keyval_clist
+
\exp_args:Nnx \fontspec_set_family:Nxn \l__um_tmpa_tl
{ ItalicFont={}, BoldFont={}, \exp_not:V \l__um_keyval_clist } {#3}
@@ -890,6 +963,7 @@
\tl_set:Nn \l__um_mversion_tl {normal}
\DeclareMathAlphabet #1 {\g_fontspec_encoding_tl} {\l__um_tmpa_tl} {\mddefault} {\updefault}
}
+
\SetMathAlphabet #1 {\l__um_mversion_tl} {\g_fontspec_encoding_tl} {\l__um_tmpa_tl} {\mddefault} {\updefault}
% integrate with fontspec's \setmathrm etc:
@@ -900,10 +974,6 @@
\mathtt { \cs_set_eq:NN \g__fontspec_mathtt_tl \l__um_tmpa_tl }
}
}
-\@onlypreamble \setmathfontface
-\DeclareDocumentCommand \setoperatorfont {m}
- { \tl_set:Nn \g__um_operator_mathfont_tl {#1} }
-\setoperatorfont{\mathrm}
\cs_generate_variant:Nn \tl_if_eq:nnT {o}
\cs_set:Nn \__fontspec_setmainfont_hook:nn
{
@@ -958,49 +1028,48 @@
\SetMathAlphabet\mathtt{bold} \g_fontspec_encoding_tl\g__fontspec_mathtt_tl\bfdefault\updefault
}
-\DeclareDocumentCommand \setmathfont { O{} m O{} }
+%%^^A%% um-code-main.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+\cs_set:Nn \__um_setmathfont:nn
{
- \__um_setmathfont:nn {#1,#3} {#2}
+ \tl_set:Nn \l__um_fontname_tl {#2}
+ \cs_set_eq:NN \glb at currsize \scan_stop:
+ \__um_init:
+ \cs_if_exist:cF { S@ \f at size } { \calculate at math@sizes }
+ \csname S@\f at size\endcsname
+ \keys_set_known:nnN {unicode-math} {#1} \l__um_unknown_keys_clist
+ \bool_if:NT \l__um_init_bool { \__um_log:n {default-math-font} }
+ \__um_fontspec_select_font:
+ \bool_if:nT { \l__um_ot_math_bool && !\g__um_mainfont_already_set_bool }
+ {
+ \__um_declare_math_sizes:
+ \__um_fontspec_select_font:
+ }
+ \cs_if_exist:cF { sym \l__um_symfont_label_tl }
+ {
+ \DeclareSymbolFont{\l__um_symfont_label_tl}
+ {\encodingdefault}{\l__um_family_tl}{\mddefault}{\updefault}
+ }
+ \SetSymbolFont{\l__um_symfont_label_tl}{\l__um_mversion_tl}
+ {\encodingdefault}{\l__um_family_tl}{\mddefault}{\updefault}
+ \str_if_eq_x:nnT {\l__um_mversion_tl} {normal}
+ {
+ \SetSymbolFont{\l__um_symfont_label_tl}{bold}
+ {\encodingdefault}{\l__um_family_tl}{\bfdefault}{\updefault}
+ }
+ \bool_if:nT { \l__um_ot_math_bool && !\g__um_mainfont_already_set_bool }
+ {
+ \bool_set_true:N \g__um_mainfont_already_set_bool
+ \__um_setup_legacy_fam_two:
+ \__um_setup_legacy_fam_three:
+ }
+ \__um_input_math_symbol_table:
+ \__um_remap_symbols:
+ \__um_setup_mathactives:
+ \__um_setup_delcodes:
+ \__um_setup_alphabets:
+ \__um_setup_negations:
}
-\cs_set:Nn \__um_setmathfont:nn
- {
- \tl_set:Nn \l__um_fontname_tl {#2}
- \__um_init:
- \cs_if_exist:cF { S@ \f at size } { \calculate at math@sizes }
- \csname S@\f at size\endcsname
- \keys_set_known:nnN {unicode-math} {#1} \l__um_unknown_keys_clist
- \bool_if:NT \l__um_init_bool { \__um_log:n {default-math-font} }
- \__um_fontspec_select_font:
- \bool_if:nT { \l__um_ot_math_bool && !\g__um_mainfont_already_set_bool }
- {
- \__um_declare_math_sizes:
- \__um_fontspec_select_font:
- }
- \cs_if_exist:cF { sym \__um_symfont_tl }
- {
- \DeclareSymbolFont{\__um_symfont_tl}
- {\encodingdefault}{\l__um_family_tl}{\mddefault}{\updefault}
- }
- \SetSymbolFont{\__um_symfont_tl}{\l__um_mversion_tl}
- {\encodingdefault}{\l__um_family_tl}{\mddefault}{\updefault}
- \str_if_eq_x:nnT {\l__um_mversion_tl} {normal}
- {
- \SetSymbolFont{\__um_symfont_tl}{bold}
- {\encodingdefault}{\l__um_family_tl}{\bfdefault}{\updefault}
- }
- \bool_if:nT { \l__um_ot_math_bool && !\g__um_mainfont_already_set_bool }
- {
- \bool_set_true:N \g__um_mainfont_already_set_bool
- \__um_setup_legacy_fam_two:
- \__um_setup_legacy_fam_three:
- }
- \__um_input_math_symbol_table:
- \__um_remap_symbols:
- \__um_setup_mathactives:
- \__um_setup_delcodes:
- \__um_setup_alphabets:
- \__um_setup_negations:
- }
\AtBeginDocument { \__um_load_lm_if_necessary: }
\cs_new:Nn \__um_load_lm_if_necessary:
{
@@ -1012,28 +1081,27 @@
}
}
\cs_new:Nn \__um_init:
- {
- \bool_set_true:N \l__um_ot_math_bool
- \cs_set_eq:NN \glb at currsize \scan_stop:
- \bool_set_true:N \l__um_init_bool
- \seq_clear:N \l__um_char_range_seq
- \clist_clear:N \l__um_char_nrange_clist
- \seq_clear:N \l__um_mathalph_seq
- \seq_clear:N \l__um_missing_alph_seq
- \tl_set:Nn \l__um_mversion_tl {normal}
- \tl_set:Nn \__um_symfont_tl {operators}
- \cs_set_eq:NN \__um_sym:nnn \__um_process_symbol_noparse:nnn
- \cs_set_eq:NN \__um_set_mathalphabet_char:nnn \__um_mathmap_noparse:nnn
- \cs_set_eq:NN \__um_remap_symbol:nnn \__um_remap_symbol_noparse:nnn
- \cs_set_eq:NN \__um_maybe_init_alphabet:n \__um_init_alphabet:n
- \cs_set_eq:NN \__um_map_char_single:nn \__um_map_char_noparse:nn
- \cs_set_eq:NN \__um_assign_delcode:nn \__um_assign_delcode_noparse:nn
- \cs_set_eq:NN \__um_make_mathactive:nNN \__um_make_mathactive_noparse:nNN
- \tl_set:Nn \l__um_script_features_tl {Style=MathScript}
- \tl_set:Nn \l__um_sscript_features_tl {Style=MathScriptScript}
- \tl_set_eq:NN \l__um_script_font_tl \l__um_fontname_tl
- \tl_set_eq:NN \l__um_sscript_font_tl \l__um_fontname_tl
- }
+ {
+ \bool_set_true:N \l__um_ot_math_bool
+ \tl_set:Nn \l__um_mversion_tl {normal}
+ \tl_set:Nn \l__um_symfont_label_tl {operators}
+ \tl_set:Nn \l__um_script_features_tl {Style=MathScript}
+ \tl_set:Nn \l__um_sscript_features_tl {Style=MathScriptScript}
+ \tl_set_eq:NN \l__um_script_font_tl \l__um_fontname_tl
+ \tl_set_eq:NN \l__um_sscript_font_tl \l__um_fontname_tl
+ \bool_set_true:N \l__um_init_bool
+ \seq_clear:N \l__um_char_range_seq
+ \clist_clear:N \l__um_char_nrange_clist
+ \seq_clear:N \l__um_mathalph_seq
+ \seq_clear:N \l__um_missing_alph_seq
+ \cs_set_eq:NN \__um_sym:nnn \__um_process_symbol_noparse:nnn
+ \cs_set_eq:NN \__um_set_mathalphabet_char:nnn \__um_mathmap_noparse:nnn
+ \cs_set_eq:NN \__um_remap_symbol:nnn \__um_remap_symbol_noparse:nnn
+ \cs_set_eq:NN \__um_maybe_init_alphabet:n \__um_init_alphabet:n
+ \cs_set_eq:NN \__um_map_char_single:nn \__um_map_char_noparse:nn
+ \cs_set_eq:NN \__um_assign_delcode:nn \__um_assign_delcode_noparse:nn
+ \cs_set_eq:NN \__um_make_mathactive:nNN \__um_make_mathactive_noparse:nNN
+ }
\cs_new:Nn \__um_declare_math_sizes:
{
\dim_compare:nF { \fontdimen 10 \l__um_font == 0pt }
@@ -1047,26 +1115,26 @@
{
\fontspec_set_family:Nxn \l__um_family_tl
{
- \l__um_font_keyval_tl,
- Scale=1.00001,
- FontAdjustment =
- {
- \fontdimen8\font= \__um_get_fontparam:nn {43} {FractionNumeratorDisplayStyleShiftUp}\relax
- \fontdimen9\font= \__um_get_fontparam:nn {42} {FractionNumeratorShiftUp}\relax
- \fontdimen10\font=\__um_get_fontparam:nn {32} {StackTopShiftUp}\relax
- \fontdimen11\font=\__um_get_fontparam:nn {45} {FractionDenominatorDisplayStyleShiftDown}\relax
- \fontdimen12\font=\__um_get_fontparam:nn {44} {FractionDenominatorShiftDown}\relax
- \fontdimen13\font=\__um_get_fontparam:nn {21} {SuperscriptShiftUp}\relax
- \fontdimen14\font=\__um_get_fontparam:nn {21} {SuperscriptShiftUp}\relax
- \fontdimen15\font=\__um_get_fontparam:nn {22} {SuperscriptShiftUpCramped}\relax
- \fontdimen16\font=\__um_get_fontparam:nn {18} {SubscriptShiftDown}\relax
- \fontdimen17\font=\__um_get_fontparam:nn {18} {SubscriptShiftDownWithSuperscript}\relax
- \fontdimen18\font=\__um_get_fontparam:nn {24} {SuperscriptBaselineDropMax}\relax
- \fontdimen19\font=\__um_get_fontparam:nn {20} {SubscriptBaselineDropMin}\relax
- \fontdimen20\font=0pt\relax % delim1 = FractionDelimiterDisplaySize
- \fontdimen21\font=0pt\relax % delim2 = FractionDelimiterSize
- \fontdimen22\font=\__um_get_fontparam:nn {15} {AxisHeight}\relax
- }
+ \l__um_font_keyval_tl,
+ Scale=1.00001,
+ FontAdjustment =
+ {
+ \__um_copy_fontparam:nnn { 8} {43} {FractionNumeratorDisplayStyleShiftUp}\relax
+ \__um_copy_fontparam:nnn { 9} {42} {FractionNumeratorShiftUp}\relax
+ \__um_copy_fontparam:nnn {10} {32} {StackTopShiftUp}\relax
+ \__um_copy_fontparam:nnn {11} {45} {FractionDenominatorDisplayStyleShiftDown}\relax
+ \__um_copy_fontparam:nnn {12} {44} {FractionDenominatorShiftDown}\relax
+ \__um_copy_fontparam:nnn {13} {21} {SuperscriptShiftUp}\relax
+ \__um_copy_fontparam:nnn {14} {21} {SuperscriptShiftUp}\relax
+ \__um_copy_fontparam:nnn {15} {22} {SuperscriptShiftUpCramped}\relax
+ \__um_copy_fontparam:nnn {16} {18} {SubscriptShiftDown}\relax
+ \__um_copy_fontparam:nnn {17} {18} {SubscriptShiftDownWithSuperscript}\relax
+ \__um_copy_fontparam:nnn {18} {24} {SuperscriptBaselineDropMax}\relax
+ \__um_copy_fontparam:nnn {19} {20} {SubscriptBaselineDropMin}\relax
+ \__um_zero_fontparam:n {20} % delim1 = FractionDelimiterDisplaySize
+ \__um_zero_fontparam:n {21} % delim2 = FractionDelimiterSize
+ \__um_copy_fontparam:nnn {22} {15} {AxisHeight}\relax
+ }
} {\l__um_fontname_tl}
\SetSymbolFont{symbols}{\l__um_mversion_tl}
@@ -1074,8 +1142,8 @@
\str_if_eq_x:nnT {\l__um_mversion_tl} {normal}
{
- \SetSymbolFont{symbols}{bold}
- {\encodingdefault}{\l__um_family_tl}{\bfdefault}{\updefault}
+ \SetSymbolFont{symbols}{bold}
+ {\encodingdefault}{\l__um_family_tl}{\bfdefault}{\updefault}
}
}
\cs_new:Nn \__um_setup_legacy_fam_three:
@@ -1082,17 +1150,17 @@
{
\fontspec_set_family:Nxn \l__um_family_tl
{
- \l__um_font_keyval_tl,
- Scale=0.99999,
- FontAdjustment={
- \fontdimen8\font= \__um_get_fontparam:nn {48} {FractionRuleThickness}\relax
- \fontdimen9\font= \__um_get_fontparam:nn {28} {UpperLimitGapMin}\relax
- \fontdimen10\font=\__um_get_fontparam:nn {30} {LowerLimitGapMin}\relax
- \fontdimen11\font=\__um_get_fontparam:nn {29} {UpperLimitBaselineRiseMin}\relax
- \fontdimen12\font=\__um_get_fontparam:nn {31} {LowerLimitBaselineDropMin}\relax
- \fontdimen13\font=0pt\relax
- }
- } {\l__um_fontname_tl}
+ \l__um_font_keyval_tl,
+ Scale=0.99999,
+ FontAdjustment = {
+ \__um_copy_fontparam:nnn { 8} {48} {FractionRuleThickness}\relax
+ \__um_copy_fontparam:nnn { 9} {28} {UpperLimitGapMin}\relax
+ \__um_copy_fontparam:nnn {10} {30} {LowerLimitGapMin}\relax
+ \__um_copy_fontparam:nnn {11} {29} {UpperLimitBaselineRiseMin}\relax
+ \__um_copy_fontparam:nnn {12} {31} {LowerLimitBaselineDropMin}\relax
+ \__um_zero_fontparam:n {13}
+ }
+ } {\l__um_fontname_tl}
\SetSymbolFont{largesymbols}{\l__um_mversion_tl}
{\encodingdefault}{\l__um_family_tl}{\mddefault}{\updefault}
@@ -1099,86 +1167,83 @@
\str_if_eq_x:nnT {\l__um_mversion_tl} {normal}
{
- \SetSymbolFont{largesymbols}{bold}
- {\encodingdefault}{\l__um_family_tl}{\bfdefault}{\updefault}
+ \SetSymbolFont{largesymbols}{bold}
+ {\encodingdefault}{\l__um_family_tl}{\bfdefault}{\updefault}
}
}
-\cs_new:Nn \__um_get_fontparam:nn
+\cs_new:Nn \__um_fontspec_select_font:
{
- \the\fontdimen#1\l__um_font\relax
+ \tl_set:Nx \l__um_font_keyval_tl {
+ BoldItalicFont = {}, ItalicFont = {},
+ Script = Math,
+ SizeFeatures =
+ {
+ {
+ Size = \tf at size-
+ } ,
+ {
+ Size = \sf at size-\tf at size ,
+ Font = \l__um_script_font_tl ,
+ \l__um_script_features_tl
+ } ,
+ {
+ Size = -\sf at size ,
+ Font = \l__um_sscript_font_tl ,
+ \l__um_sscript_features_tl
+ }
+ } ,
+ \l__um_unknown_keys_clist
+ }
+
+ \fontspec_set_fontface:NNxn \l__um_font \l__um_family_tl
+ {\l__um_font_keyval_tl} {\l__um_fontname_tl}
+ \group_begin:
+ \fontfamily{\l__um_family_tl}\selectfont
+ \fontspec_if_script:nF {math} {\bool_gset_false:N \l__um_ot_math_bool}
+ \group_end:
}
-\cs_new:Nn \__um_fontspec_select_font:
- {
- \tl_set:Nx \l__um_font_keyval_tl {
- BoldItalicFont = {}, ItalicFont = {},
- Script = Math,
- SizeFeatures =
- {
+\cs_set:Nn \__um_process_symbol_noparse:nnn
+ {
+ \__um_set_mathsymbol:nNNn {\l__um_symfont_label_tl} #2 #3 {#1}
+ }
+\cs_set:Nn \__um_process_symbol_parse:nnn
+ {
+ \__um_if_char_spec:nNNT {#1} {#2} {#3}
{
- Size = \tf at size-
- } ,
+ \__um_process_symbol_noparse:nnn {#1} {#2} {#3}
+ }
+ }
+\cs_new:Npn \__um_remap_symbols:
+ {
+ \__um_remap_symbol:nnn{`\-}{\mathbin}{"02212}% hyphen to minus
+ \__um_remap_symbol:nnn{`\*}{\mathbin}{"02217}% text asterisk to "centred asterisk"
+ \bool_if:NF \g__um_literal_colon_bool
{
- Size = \sf at size-\tf at size ,
- Font = \l__um_script_font_tl ,
- \l__um_script_features_tl
- } ,
- {
- Size = -\sf at size ,
- Font = \l__um_sscript_font_tl ,
- \l__um_sscript_features_tl
+ \__um_remap_symbol:nnn{`\:}{\mathrel}{"02236}% colon to ratio (i.e., punct to rel)
}
- } ,
- \l__um_unknown_keys_clist
}
- \fontspec_set_fontface:NNxn \l__um_font \l__um_family_tl
- {\l__um_font_keyval_tl} {\l__um_fontname_tl}
- \group_begin:
- \fontfamily{\l__um_family_tl}\selectfont
- \fontspec_if_script:nF {math} {\bool_gset_false:N \l__um_ot_math_bool}
- \group_end:
- }
-\cs_set:Nn \__um_process_symbol_noparse:nnn
- {
- \__um_set_mathsymbol:nNNn {\__um_symfont_tl} #2 #3 {#1}
- }
-\cs_set:Nn \__um_process_symbol_parse:nnn
- {
- \__um_if_char_spec:nNNT {#1} {#2} {#3}
- {
- \__um_process_symbol_noparse:nnn {#1} {#2} {#3}
- }
- }
-\cs_new:Npn \__um_remap_symbols:
- {
- \__um_remap_symbol:nnn{`\-}{\mathbin}{"02212}% hyphen to minus
- \__um_remap_symbol:nnn{`\*}{\mathbin}{"02217}% text asterisk to "centred asterisk"
- \bool_if:NF \g__um_literal_colon_bool
- {
- \__um_remap_symbol:nnn{`\:}{\mathrel}{"02236}% colon to ratio (i.e., punct to rel)
- }
- }
\cs_new:Nn \__um_remap_symbol_parse:nnn
- {
- \__um_if_char_spec:nNNT {#3} {\@nil} {#2}
- { \__um_remap_symbol_noparse:nnn {#1} {#2} {#3} }
- }
+ {
+ \__um_if_char_spec:nNNT {#3} {\@nil} {#2}
+ { \__um_remap_symbol_noparse:nnn {#1} {#2} {#3} }
+ }
\cs_new:Nn \__um_remap_symbol_noparse:nnn
- {
- \clist_map_inline:nn {#1}
- { \__um_set_mathcode:nnnn {##1} {#2} {\__um_symfont_tl} {#3} }
- }
+ {
+ \clist_map_inline:nn {#1}
+ { \__um_set_mathcode:nnnn {##1} {#2} {\l__um_symfont_label_tl} {#3} }
+ }
\cs_new:Npn \__um_setup_mathactives:
- {
- \__um_make_mathactive:nNN {"2032} \__um_prime_single_mchar \mathord
- \__um_make_mathactive:nNN {"2033} \__um_prime_double_mchar \mathord
- \__um_make_mathactive:nNN {"2034} \__um_prime_triple_mchar \mathord
- \__um_make_mathactive:nNN {"2057} \__um_prime_quad_mchar \mathord
- \__um_make_mathactive:nNN {"2035} \__um_backprime_single_mchar \mathord
- \__um_make_mathactive:nNN {"2036} \__um_backprime_double_mchar \mathord
- \__um_make_mathactive:nNN {"2037} \__um_backprime_triple_mchar \mathord
- \__um_make_mathactive:nNN {`\'} \mathstraightquote \mathord
- \__um_make_mathactive:nNN {`\`} \mathbacktick \mathord
- }
+ {
+ \__um_make_mathactive:nNN {"2032} \__um_prime_single_mchar \mathord
+ \__um_make_mathactive:nNN {"2033} \__um_prime_double_mchar \mathord
+ \__um_make_mathactive:nNN {"2034} \__um_prime_triple_mchar \mathord
+ \__um_make_mathactive:nNN {"2057} \__um_prime_quad_mchar \mathord
+ \__um_make_mathactive:nNN {"2035} \__um_backprime_single_mchar \mathord
+ \__um_make_mathactive:nNN {"2036} \__um_backprime_double_mchar \mathord
+ \__um_make_mathactive:nNN {"2037} \__um_backprime_triple_mchar \mathord
+ \__um_make_mathactive:nNN {`\'} \mathstraightquote \mathord
+ \__um_make_mathactive:nNN {`\`} \mathbacktick \mathord
+ }
\cs_new:Nn \__um_make_mathactive_parse:nNN
{
\__um_if_char_spec:nNNT {#1} #2 #3
@@ -1186,79 +1251,73 @@
}
\cs_new:Nn \__um_make_mathactive_noparse:nNN
{
- \__um_set_mathchar:NNnn #2 #3 {\__um_symfont_tl} {#1}
+ \__um_set_mathchar:NNnn #2 #3 {\l__um_symfont_label_tl} {#1}
\__um_char_gmake_mathactive:n {#1}
}
\cs_new:Nn \__um_assign_delcode_noparse:nn
- {
- \__um_set_delcode:nnn \__um_symfont_tl {#1} {#2}
- }
+ {
+ \__um_set_delcode:nnn \l__um_symfont_label_tl {#1} {#2}
+ }
\cs_new:Nn \__um_assign_delcode_parse:nn
- {
- \__um_if_char_spec:nNNT {#2} {\@nil} {\@nil}
- {
- \__um_assign_delcode_noparse:nn {#1} {#2}
- }
- }
+ {
+ \__um_if_char_spec:nNNT {#2} {\@nil} {\@nil}
+ {
+ \__um_assign_delcode_noparse:nn {#1} {#2}
+ }
+ }
\cs_new:Nn \__um_assign_delcode:n { \__um_assign_delcode:nn {#1} {#1} }
\cs_new:Npn \__um_setup_delcodes:
- {
- % ensure \left. and \right. work:
- \__um_set_delcode:nnn \__um_symfont_tl {`\.} {\c_zero}
- % this is forcefully done to fix a bug -- indicates a larger problem!
+ {
+ % ensure \left. and \right. work:
+ \__um_set_delcode:nnn \l__um_symfont_label_tl {`\.} {\c_zero}
+ % this is forcefully done to fix a bug -- indicates a larger problem!
- \__um_assign_delcode:nn {`\/} {\g__um_slash_delimiter_usv}
- \__um_assign_delcode:nn {"2044} {\g__um_slash_delimiter_usv} % fracslash
- \__um_assign_delcode:nn {"2215} {\g__um_slash_delimiter_usv} % divslash
- \__um_assign_delcode:n {"005C} % backslash
- \__um_assign_delcode:nn {`\<} {"27E8} % angle brackets with ascii notation
- \__um_assign_delcode:nn {`\>} {"27E9} % angle brackets with ascii notation
- \__um_assign_delcode:n {"2191} % up arrow
- \__um_assign_delcode:n {"2193} % down arrow
- \__um_assign_delcode:n {"2195} % updown arrow
- \__um_assign_delcode:n {"219F} % up arrow twohead
- \__um_assign_delcode:n {"21A1} % down arrow twohead
- \__um_assign_delcode:n {"21A5} % up arrow from bar
- \__um_assign_delcode:n {"21A7} % down arrow from bar
- \__um_assign_delcode:n {"21A8} % updown arrow from bar
- \__um_assign_delcode:n {"21BE} % up harpoon right
- \__um_assign_delcode:n {"21BF} % up harpoon left
- \__um_assign_delcode:n {"21C2} % down harpoon right
- \__um_assign_delcode:n {"21C3} % down harpoon left
- \__um_assign_delcode:n {"21C5} % arrows up down
- \__um_assign_delcode:n {"21F5} % arrows down up
- \__um_assign_delcode:n {"21C8} % arrows up up
- \__um_assign_delcode:n {"21CA} % arrows down down
- \__um_assign_delcode:n {"21D1} % double up arrow
- \__um_assign_delcode:n {"21D3} % double down arrow
- \__um_assign_delcode:n {"21D5} % double updown arrow
- \__um_assign_delcode:n {"21DE} % up arrow double stroke
- \__um_assign_delcode:n {"21DF} % down arrow double stroke
- \__um_assign_delcode:n {"21E1} % up arrow dashed
- \__um_assign_delcode:n {"21E3} % down arrow dashed
- \__um_assign_delcode:n {"21E7} % up white arrow
- \__um_assign_delcode:n {"21E9} % down white arrow
- \__um_assign_delcode:n {"21EA} % up white arrow from bar
- \__um_assign_delcode:n {"21F3} % updown white arrow
- }
+ \__um_assign_delcode:nn {`\/} {\g__um_slash_delimiter_usv}
+ \__um_assign_delcode:nn {"2044} {\g__um_slash_delimiter_usv} % fracslash
+ \__um_assign_delcode:nn {"2215} {\g__um_slash_delimiter_usv} % divslash
+ \__um_assign_delcode:n {"005C} % backslash
+ \__um_assign_delcode:nn {`\<} {"27E8} % angle brackets with ascii notation
+ \__um_assign_delcode:nn {`\>} {"27E9} % angle brackets with ascii notation
+ \__um_assign_delcode:n {"2191} % up arrow
+ \__um_assign_delcode:n {"2193} % down arrow
+ \__um_assign_delcode:n {"2195} % updown arrow
+ \__um_assign_delcode:n {"219F} % up arrow twohead
+ \__um_assign_delcode:n {"21A1} % down arrow twohead
+ \__um_assign_delcode:n {"21A5} % up arrow from bar
+ \__um_assign_delcode:n {"21A7} % down arrow from bar
+ \__um_assign_delcode:n {"21A8} % updown arrow from bar
+ \__um_assign_delcode:n {"21BE} % up harpoon right
+ \__um_assign_delcode:n {"21BF} % up harpoon left
+ \__um_assign_delcode:n {"21C2} % down harpoon right
+ \__um_assign_delcode:n {"21C3} % down harpoon left
+ \__um_assign_delcode:n {"21C5} % arrows up down
+ \__um_assign_delcode:n {"21F5} % arrows down up
+ \__um_assign_delcode:n {"21C8} % arrows up up
+ \__um_assign_delcode:n {"21CA} % arrows down down
+ \__um_assign_delcode:n {"21D1} % double up arrow
+ \__um_assign_delcode:n {"21D3} % double down arrow
+ \__um_assign_delcode:n {"21D5} % double updown arrow
+ \__um_assign_delcode:n {"21DE} % up arrow double stroke
+ \__um_assign_delcode:n {"21DF} % down arrow double stroke
+ \__um_assign_delcode:n {"21E1} % up arrow dashed
+ \__um_assign_delcode:n {"21E3} % down arrow dashed
+ \__um_assign_delcode:n {"21E7} % up white arrow
+ \__um_assign_delcode:n {"21E9} % down white arrow
+ \__um_assign_delcode:n {"21EA} % up white arrow from bar
+ \__um_assign_delcode:n {"21F3} % updown white arrow
+ }
\tl_set:Nn \l__um_nolimits_tl
- {
- \int\iint\iiint\iiiint\oint\oiint\oiiint
- \intclockwise\varointclockwise\ointctrclockwise\sumint
- \intbar\intBar\fint\cirfnint\awint\rppolint
- \scpolint\npolint\pointint\sqint\intlarhk\intx
- \intcap\intcup\upint\lowint
- }
-\DeclareDocumentCommand \addnolimits {m}
- {
- \tl_put_right:Nn \l__um_nolimits_tl {#1}
- }
-\DeclareDocumentCommand \removenolimits {m}
- {
- \tl_remove_all:Nn \l__um_nolimits_tl {#1}
- }
+ {
+ \int\iint\iiint\iiiint\oint\oiint\oiiint
+ \intclockwise\varointclockwise\ointctrclockwise\sumint
+ \intbar\intBar\fint\cirfnint\awint\rppolint
+ \scpolint\npolint\pointint\sqint\intlarhk\intx
+ \intcap\intcup\upint\lowint
+ }
\tl_set:Nn \l__um_radicals_tl {\sqrt \longdivision}
+%%^^A%% um-code-fontopt.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\keys_define:nn {unicode-math}
{
version .code:n =
@@ -1280,7 +1339,7 @@
{
\bool_set_false:N \l__um_init_bool
\int_incr:N \g__um_fam_int
- \tl_set:Nx \__um_symfont_tl {__um_fam\int_use:N\g__um_fam_int}
+ \tl_set:Nx \l__um_symfont_label_tl {__um_fam\int_use:N\g__um_fam_int}
\cs_set_eq:NN \__um_sym:nnn \__um_process_symbol_parse:nnn
\cs_set_eq:NN \__um_set_mathalphabet_char:Nnn \__um_mathmap_parse:Nnn
\cs_set_eq:NN \__um_remap_symbol:nnn \__um_remap_symbol_parse:nnn
@@ -1389,6 +1448,8 @@
} } }
}
+%%^^A%% um-code-fontparam.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\cs_new_protected_nopar:Nn \__um_new_cramped_style:N
{ \quark_new:N #1 }
\__um_new_cramped_style:N \crampeddisplaystyle
@@ -1521,6 +1582,8 @@
\fi
}
+%%^^A%% um-code-mathmap.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\cs_set:Npn \use at mathgroup #1 #2
{
\mode_if_math:T % <- not sure if this is really necessary since we've just checked for mmode and raised an error if not!
@@ -1701,7 +1764,7 @@
\clist_map_break:
}
{
- \__um_glyph_if_exist:nT { \__um_to_usv:nn {\l__um_style_tl} {\l__um_alphabet_tl} }
+ \__um_glyph_if_exist:NnT \l__um_font { \__um_to_usv:nn {\l__um_style_tl} {\l__um_alphabet_tl} }
{
\__um_maybe_init_alphabet:n \l__um_style_tl
\clist_map_break:
@@ -1721,7 +1784,7 @@
\__um_alphabet_config:nnn {\l__um_style_tl} {\l__um_alphabet_tl} {\l__um_remap_style_tl}
}
{
- \__um_glyph_if_exist:nTF { \__um_to_usv:nn {\l__um_remap_style_tl} {\l__um_alphabet_tl} }
+ \__um_glyph_if_exist:NnTF \l__um_font { \__um_to_usv:nn {\l__um_remap_style_tl} {\l__um_alphabet_tl} }
{
\__um_log:nx {setup-alph} {sym \l__um_style_tl~(\l__um_alphabet_tl)}
\__um_alphabet_config:nnn {\l__um_style_tl} {\l__um_alphabet_tl} {\l__um_remap_style_tl}
@@ -1744,7 +1807,7 @@
}
}
\cs_new:Nn \__um_map_char_noparse:nn
- { \__um_set_mathcode:nnnn {#1}{\mathalpha}{\__um_symfont_tl}{#2} }
+ { \__um_set_mathcode:nnnn {#1}{\mathalpha}{\l__um_symfont_label_tl}{#2} }
\cs_new:Nn \__um_map_char_parse:nn
{
\__um_if_char_spec:nNNT {#1} {\@nil} {\mathalpha}
@@ -1833,7 +1896,7 @@
{
\tl_put_right:cx {__um_switchto_#1:}
{
- \__um_set_mathcode:nnnn {##1} {\mathalpha} {\__um_symfont_tl} {#3}
+ \__um_set_mathcode:nnnn {##1} {\mathalpha} {\l__um_symfont_label_tl} {#3}
}
}
}
@@ -1907,92 +1970,8 @@
}
}
-\keys_define:nn {__um_mathface}
- {
- version .code:n =
- { \tl_set:Nn \l__um_mversion_tl {#1} }
- }
-\DeclareDocumentCommand \setmathfontface { m O{} m O{} }
- {
- \tl_clear:N \l__um_mversion_tl
+%%^^A%% um-code-epilogue.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
- \keys_set_known:nnN {__um_mathface} {#2,#4} \l__um_keyval_clist
- \exp_args:Nnx \fontspec_set_family:Nxn \l__um_tmpa_tl
- { ItalicFont={}, BoldFont={}, \exp_not:V \l__um_keyval_clist } {#3}
-
- \tl_if_empty:NT \l__um_mversion_tl
- {
- \tl_set:Nn \l__um_mversion_tl {normal}
- \DeclareMathAlphabet #1 {\g_fontspec_encoding_tl} {\l__um_tmpa_tl} {\mddefault} {\updefault}
- }
- \SetMathAlphabet #1 {\l__um_mversion_tl} {\g_fontspec_encoding_tl} {\l__um_tmpa_tl} {\mddefault} {\updefault}
-
- % integrate with fontspec's \setmathrm etc:
- \tl_case:Nn #1
- {
- \mathrm { \cs_set_eq:NN \g__fontspec_mathrm_tl \l__um_tmpa_tl }
- \mathsf { \cs_set_eq:NN \g__fontspec_mathsf_tl \l__um_tmpa_tl }
- \mathtt { \cs_set_eq:NN \g__fontspec_mathtt_tl \l__um_tmpa_tl }
- }
- }
-\@onlypreamble \setmathfontface
-\DeclareDocumentCommand \setoperatorfont {m}
- { \tl_set:Nn \g__um_operator_mathfont_tl {#1} }
-\setoperatorfont{\mathrm}
-\cs_generate_variant:Nn \tl_if_eq:nnT {o}
-\cs_set:Nn \__fontspec_setmainfont_hook:nn
- {
- \tl_if_eq:onT {\g__fontspec_mathrm_tl} {\rmdefault}
- {
- \fontspec_set_family:Nnn \g__fontspec_mathrm_tl {#1} {#2}
- \SetMathAlphabet\mathrm{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\updefault
- \SetMathAlphabet\mathit{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\itdefault
- \SetMathAlphabet\mathbf{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\bfdefault\updefault
- }
- }
-
-\cs_set:Nn \__fontspec_setsansfont_hook:nn
- {
- \tl_if_eq:onT {\g__fontspec_mathsf_tl} {\sfdefault}
- {
- \fontspec_set_family:Nnn \g__fontspec_mathsf_tl {#1} {#2}
- \SetMathAlphabet\mathsf{normal}\g_fontspec_encoding_tl\g__fontspec_mathsf_tl\mddefault\updefault
- \SetMathAlphabet\mathsf{bold} \g_fontspec_encoding_tl\g__fontspec_mathsf_tl\bfdefault\updefault
- }
- }
-
-\cs_set:Nn \__fontspec_setmonofont_hook:nn
- {
- \tl_if_eq:onT {\g__fontspec_mathtt_tl} {\ttdefault}
- {
- \fontspec_set_family:Nnn \g__fontspec_mathtt_tl {#1} {#2}
- \SetMathAlphabet\mathtt{normal}\g_fontspec_encoding_tl\g__fontspec_mathtt_tl\mddefault\updefault
- \SetMathAlphabet\mathtt{bold} \g_fontspec_encoding_tl\g__fontspec_mathtt_tl\bfdefault\updefault
- }
- }
-\cs_set:Nn \__fontspec_setmathrm_hook:nn
- {
- \SetMathAlphabet\mathrm{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\updefault
- \SetMathAlphabet\mathit{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\itdefault
- \SetMathAlphabet\mathbf{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\bfdefault\updefault
- }
-\cs_set:Nn \__fontspec_setboldmathrm_hook:nn
- {
- \SetMathAlphabet\mathrm{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\mddefault\updefault
- \SetMathAlphabet\mathbf{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\bfdefault\updefault
- \SetMathAlphabet\mathit{bold}\g_fontspec_encoding_tl\g__fontspec_bfmathrm_tl\mddefault\itdefault
- }
-\cs_set:Nn \__fontspec_setmathsf_hook:nn
- {
- \SetMathAlphabet\mathsf{normal}\g_fontspec_encoding_tl\g__fontspec_mathsf_tl\mddefault\updefault
- \SetMathAlphabet\mathsf{bold} \g_fontspec_encoding_tl\g__fontspec_mathsf_tl\bfdefault\updefault
- }
-\cs_set:Nn \__fontspec_setmathtt_hook:nn
- {
- \SetMathAlphabet\mathtt{normal}\g_fontspec_encoding_tl\g__fontspec_mathtt_tl\mddefault\updefault
- \SetMathAlphabet\mathtt{bold} \g_fontspec_encoding_tl\g__fontspec_mathtt_tl\bfdefault\updefault
- }
-
\AtBeginDocument{\__um_resolve_greek:}
\cs_new:Npn \__um_resolve_greek:
{
@@ -2170,6 +2149,8 @@
\cs_gset:Npn \nforksnot { \forks }
}
+%%^^A%% um-code-primes.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\cs_new:Nn \__um_arg_i_before_egroup:n {#1\egroup}
\cs_new:Nn \__um_superscript:n
{
@@ -2190,17 +2171,17 @@
{
{1} { \__um_superscript:n {#1} }
{2} {
- \__um_glyph_if_exist:nTF {"2033}
+ \__um_glyph_if_exist:NnTF \l__um_font {"2033}
{ \__um_superscript:n {\__um_prime_double_mchar} }
{ \__um_nprimes:Nn #1 {#2} }
}
{3} {
- \__um_glyph_if_exist:nTF {"2034}
+ \__um_glyph_if_exist:NnTF \l__um_font {"2034}
{ \__um_superscript:n {\__um_prime_triple_mchar} }
{ \__um_nprimes:Nn #1 {#2} }
}
{4} {
- \__um_glyph_if_exist:nTF {"2057}
+ \__um_glyph_if_exist:NnTF \l__um_font {"2057}
{ \__um_superscript:n {\__um_prime_quad_mchar} }
{ \__um_nprimes:Nn #1 {#2} }
}
@@ -2215,12 +2196,12 @@
{
{1} { \__um_superscript:n {#1} }
{2} {
- \__um_glyph_if_exist:nTF {"2036}
+ \__um_glyph_if_exist:NnTF \l__um_font {"2036}
{ \__um_superscript:n {\__um_backprime_double_mchar} }
{ \__um_nprimes:Nn #1 {#2} }
}
{3} {
- \__um_glyph_if_exist:nTF {"2037}
+ \__um_glyph_if_exist:NnTF \l__um_font {"2037}
{ \__um_superscript:n {\__um_backprime_triple_mchar} }
{ \__um_nprimes:Nn #1 {#2} }
}
@@ -2451,6 +2432,8 @@
}
\group_end:
+%%^^A%% um-code-sscript.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\group_begin:
\cs_new:Nn \__um_setup_active_superscript:nn
{
@@ -2573,6 +2556,9 @@
}
{ \group_align_safe_end: #2 #3 }
}
+
+%%^^A%% um-code-compat.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\cs_new_protected_nopar:Nn \__um_check_and_fix:NNnnnn
{
\cs_if_exist:NT #1
@@ -2909,6 +2895,9 @@
\RenewDocumentCommand \equalscolon { } { \eqcolon }
\RenewDocumentCommand \coloncolonequals { } { \Coloneq }
}
+
+%%^^A%% um-code-alphabets.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\__um_new_alphabet_config:nnn {up} {num}
{
\__um_set_normal_numbers:nn {up} {#1}
@@ -3733,3 +3722,4 @@
}
}
}
+
Modified: trunk/Master/texmf-dist/tex/latex/unicode-math/unicode-math.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/unicode-math/unicode-math.sty 2017-11-18 01:22:09 UTC (rev 45844)
+++ trunk/Master/texmf-dist/tex/latex/unicode-math/unicode-math.sty 2017-11-18 21:45:46 UTC (rev 45845)
@@ -4,17 +4,27 @@
%%
%% The original source files were:
%%
-%% unicode-math.dtx (with options: `preamble,load')
-%%
-%% Copyright 2006-2017 Will Robertson <will.robertson at latex-project.org>
-%% Copyright 2010-2013 Philipp Stephani <st_philipp at yahoo.de>
-%% Copyright 2012-2015 Khaled Hosny <khaledhosny at eglug.org>
-%%
+%% unicode-math.dtx (with options: `base')
+%% um-code-base.dtx (with options: `base')
+%% ------------------------------------------------
+%% The UNICODE-MATH package <wspr.io/unicode-math>
+%% ------------------------------------------------
%% This package is free software and may be redistributed and/or modified under
%% the conditions of the LaTeX Project Public License, version 1.3c or higher
%% (your choice): <http://www.latex-project.org/lppl/>.
-%%
-%% This work is "maintained" by Will Robertson.
+%% ------------------------------------------------
+%% Copyright 2006-2017 Will Robertson, LPPL "maintainer"
+%% Copyright 2010-2017 Philipp Stephani
+%% Copyright 2011-2017 Joseph Wright
+%% Copyright 2012-2015 Khaled Hosny
+%% ------------------------------------------------
+%%^^A%% unicode-math.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
+\ProvidesPackage{unicode-math}
+ [2017/11/18 v0.8i Unicode maths in XeLaTeX and LuaLaTeX]
+
+%%^^A%% um-code-base.dtx -- part of UNICODE-MATH <wspr.io/unicode-math>
+
\ifdefined\XeTeXversion
\ifdim\number\XeTeXversion\XeTeXrevision in<0.9998in%
\PackageError{unicode-math}{%
@@ -44,3 +54,4 @@
\sys_if_engine_luatex:T { \RequirePackageWithOptions{unicode-math-luatex} }
\sys_if_engine_xetex:T { \RequirePackageWithOptions{unicode-math-xetex} }
\ExplSyntaxOff
+
Modified: trunk/Master/tlpkg/tlpsrc/ttfutils.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/ttfutils.tlpsrc 2017-11-18 01:22:09 UTC (rev 45844)
+++ trunk/Master/tlpkg/tlpsrc/ttfutils.tlpsrc 2017-11-18 21:45:46 UTC (rev 45845)
@@ -1,4 +1,8 @@
category TLCore
+shortdesc convert TrueType to TFM and PK fonts
+longdesc Utilities: ttf2afm ttf2pk ttf2tfm ttfdump. FreeType is the
+longdesc underlying library.
+
runpattern d texmf-dist/fonts/enc/ttf2pk/base
runpattern d texmf-dist/fonts/sfd/ttf2pk
runpattern d texmf-dist/ttf2pk
Modified: trunk/Master/tlpkg/tlpsrc/xetexconfig.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/xetexconfig.tlpsrc 2017-11-18 01:22:09 UTC (rev 45844)
+++ trunk/Master/tlpkg/tlpsrc/xetexconfig.tlpsrc 2017-11-18 21:45:46 UTC (rev 45845)
@@ -1,2 +1 @@
-shortdesc configuration files for XeTeX
-longdesc unicode-letters, and special crop.cfg and hyperref.cfg for XeTeX.
+shortdesc crop.cfg for XeLaTeX
Modified: trunk/Master/tlpkg/tlpsrc/xmltexconfig.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/xmltexconfig.tlpsrc 2017-11-18 01:22:09 UTC (rev 45844)
+++ trunk/Master/tlpkg/tlpsrc/xmltexconfig.tlpsrc 2017-11-18 21:45:46 UTC (rev 45845)
@@ -0,0 +1 @@
+shortdesc configuration files for xmltex and pdfxmltex
More information about the tex-live-commits
mailing list