texlive[55048] Master: optex (7may20)

commits+karl at tug.org commits+karl at tug.org
Thu May 7 00:01:50 CEST 2020


Revision: 55048
          http://tug.org/svn/texlive?view=revision&revision=55048
Author:   karl
Date:     2020-05-07 00:01:50 +0200 (Thu, 07 May 2020)
Log Message:
-----------
optex (7may20)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/luatex/optex/README
    trunk/Master/texmf-dist/doc/luatex/optex/optex-doc.pdf
    trunk/Master/texmf-dist/doc/luatex/optex/optex-doc.tex
    trunk/Master/texmf-dist/doc/luatex/optex/optex-techdoc.tex
    trunk/Master/texmf-dist/doc/luatex/optex/optex-userdoc.tex
    trunk/Master/tlpkg/libexec/ctan2tds

Added Paths:
-----------
    trunk/Master/texmf-dist/tex/latex/optex/
    trunk/Master/texmf-dist/tex/latex/optex/base/
    trunk/Master/texmf-dist/tex/latex/optex/base/alloc.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/basic-macros.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/bib-iso690.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/bib-simple.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/cite-bib.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/colors.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/doc.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/f-adventor.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/f-antt.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/f-baskerville.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/f-bonum.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/f-cursor.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/f-gfsbodoni.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/f-heros.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/f-libertine-s.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/f-libertine.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/f-lido.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/f-lmfonts.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/f-pagella.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/f-schola.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/f-technika.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/f-termes.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/f-xcharter.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/fams-ini.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/fnotes.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/fonts-catalog.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/fonts-opmac.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/fonts-preload.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/fonts-resize.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/fonts-select.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/graphics.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/hi-syntax.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/hisyntax-c.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/hisyntax-html.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/hisyntax-python.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/hisyntax-tex.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/hyperlinks.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/hyphen-lan.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/if-macros.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/languages.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/lists.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/logos.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/luatex-ini.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/makeindex.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/maketoc.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/margins.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/math-macros.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/math-preload.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/math-unicode.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/mathclass.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/more-macros.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/multicolumns.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/optex.ini
    trunk/Master/texmf-dist/tex/latex/optex/base/others.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/outlines.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/output.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/parameters.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/pdfuni-string.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/plain-macros.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/prefixed.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/ref-file.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/references.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/sections.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/slides.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/styles.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/table.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/uni-lcuc.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/unimath-codes.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/unimath-table.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/usebib.opm
    trunk/Master/texmf-dist/tex/latex/optex/base/verbatim.opm
    trunk/Master/texmf-dist/tex/latex/optex/demo/
    trunk/Master/texmf-dist/tex/latex/optex/demo/op-demo.tex
    trunk/Master/texmf-dist/tex/latex/optex/demo/op-letter.tex
    trunk/Master/texmf-dist/tex/latex/optex/demo/op-ring.png
    trunk/Master/texmf-dist/tex/latex/optex/demo/op-slides.tex
    trunk/Master/texmf-dist/tex/latex/optex/demo/slides-bg.png
    trunk/Master/texmf-dist/tex/latex/optex/pkg/
    trunk/Master/texmf-dist/tex/latex/optex/pkg/qrcode.opm

Removed Paths:
-------------
    trunk/Master/texmf-dist/doc/luatex/optex/op-demo.tex
    trunk/Master/texmf-dist/doc/luatex/optex/op-letter.tex
    trunk/Master/texmf-dist/doc/luatex/optex/op-ring.png
    trunk/Master/texmf-dist/doc/luatex/optex/op-slides.tex
    trunk/Master/texmf-dist/doc/luatex/optex/slides-bg.png
    trunk/Master/texmf-dist/tex/luatex/optex/

Modified: trunk/Master/texmf-dist/doc/luatex/optex/README
===================================================================
--- trunk/Master/texmf-dist/doc/luatex/optex/README	2020-05-06 21:08:34 UTC (rev 55047)
+++ trunk/Master/texmf-dist/doc/luatex/optex/README	2020-05-06 22:01:50 UTC (rev 55048)
@@ -6,8 +6,25 @@
 
 See http://petr.olsak.net/optex
 
+Files:
+
+base/  ... basic set of macro files used when optex.fmt is generated
+           and more basic macros loaded on demand during document processing.
+demo/  ... examples: short document: op-demo.tex, short letter: op-letter.tex,
+           presentation slides: op-slides.tex.
+pkg/   ... external macros. Maybe, they can be created by other authors if 
+           the macro file conforms to the rules given in the section 2.2.5 
+           in the OpTeX documentation.
+doc/   ... PDF version of the OpTeX documentation and sources.
+
 History:
 
+<0.12> The external macro qrcode.opm introduced
+       New directory structure: base/, demo/, pkg/, doc/ introduced.
+       \load macro introduced 
+       \newif: bug fixed, other bug fixed.
+<0.11> \phi, \varpi in Unicode: bug fixed 
+       \mathstyles introduced.
 <0.10> Technical documentation added 
        \_famdecl instedad \_fontdecl in font family files (incompatible change).
 <0.09> Syntax highlighting implemented.

Deleted: trunk/Master/texmf-dist/doc/luatex/optex/op-demo.tex
===================================================================
--- trunk/Master/texmf-dist/doc/luatex/optex/op-demo.tex	2020-05-06 21:08:34 UTC (rev 55047)
+++ trunk/Master/texmf-dist/doc/luatex/optex/op-demo.tex	2020-05-06 22:01:50 UTC (rev 55048)
@@ -1,127 +0,0 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
-
-\fontfam[LMfonts]              % Default font family: Latin Modern
-
-\margins/1 a5 (1,1,1,1.4)cm    % A5 paper + 1cm margins
-\typosize[9/10.5]              % 9pt font / 10.5pt baselineskip
-\parindent=10pt                % typesetting parameters
-\hyperlinks \Blue\Blue         % active hyperlinks
-\activettchar`                 % in-text verbatim by `...`
-\everyintt={\Red}              % in-text verbatim Red
-\enquotes                      % use \"text" for English quotation  
-
-\tit Demonstration
-
-\nonum\notoc\sec Contents
-
-\maketoc  % Table of Contents is auto-generated here
-
-\sec Lists
-
-The lists have to be surrounded by `\begitems`
-and `\enditems` sequences.
-
-\begitems
-* First item.
-* Second item.
-  \begitems \style i
-    * Nested item list,
-    * numbered by roman numerals.
-  \enditems
-* Last item.
-\enditems
-
-\secc Title of\nl Subsection
-
-The subsection text\dots
-
-\sec References
-
-There is a numbered equation. 
-The number is auto-generated by `\eqmark` sequence.
-$$\label[my-eq]
-  a^2 + b^2 = c^2  \eqmark
-$$
-We can refer to Equation~\ref[my-eq]
-on page~\pgref[my-eq].
-We can refer to Table~\ref[my-tab] in
-Section~\ref[tab-sec] too. And Figure~\ref[my-pic]
-is on page~\pgref[my-pic].
-
-\sec Hyperlinks
-
-You can refer to \url{http://petr.olsak.net} using `\url`.
-Or use `\ulink` if the raw URL needs to be hidden:
-\ulink[http://petr.olsak.net/optex]{\OpTeX/ page}.
-The parameter text is colorized and it becomes 
-an active link if the `\hyperlinks` sequence
-is used at the beginning of the document.
-Internal links are activated too.
-
-\sec[tab-sec] Tables 
-
-The `\table` sequence can be used 
-instead of \"low level" `\halign`.
-The following table is framed by `\frame` sequence 
-in order to get a double frame.
-
-\bigskip
-\caption/t [my-tab]  Testing table.
-\cskip
-\centerline{%
-   \frame{\table{|r|c|l|}{\crl
-           \bf Title A & \bf Title B & \bf Title C \crll
-           first & second & third \cr
-           next  & text  & last  \crl }}}
-
-\sec Images
-
-The images (PDF, JPG, PNG, TIFF) can be inserted 
-by `\inspic` sequence. The `\caption` 
-can be added if you need to refer to a figure.
-
-\label[my-pic]
-\centerline {\picwidth=2.7cm \inspic{op-ring.png}}
-\cskip
-\caption/f The nonempty ideal of a simple ring --
-           the ring itself.
-
-\sec Verbatim
-
-In-text verbatim is surrounded by the character declared
-by `\activettchar` sequence. The listing can be surrounded
-by `\begtt` and `\endtt` sequences
-\begtt
-This is verbatim.
-  All characters are printed $$, \, # etc.
-\endtt
-or it can be included by `\verbinput` from external file.
-
-\verbinput (98-100) op-demo.tex
-
-\sec Math
-
-The Math alphabets
-`\mit`, `\cal`, `\script`, `\frak`, `\bbchar`, `\bi`
-are provided. For example:
-$$
-  {\bi A} = \pmatrix {\cal C  & \script C \cr
-                      \frak M & \bbchar R }.  
-$$
-Hundreds of AMS symbols are available:
-$\sphericalangle, \boxplus, \Cup, \Cap, \ldots$
-
-\sec Others
-
-The `\fontfam` command selects a desired family of fonts.
-The `\typosize` or `\typoscale` sequences set the size
-and baselineskip of used fonts (including math fonts).
-The `\fnote` generates a footnote\fnote{Like this} and
-`\mnote` generates a margin note. 
-The `\margins` sets margins and paper dimensions.
-The `\cite` sequence can be used for bibliographic citations.
-The `\bib` sequence creates one bibliography record. Or 
-you can use `\usebib` for direct access to the {\tt.bib} files. 
-The list of features does not end here\dots
-
-\bye

Deleted: trunk/Master/texmf-dist/doc/luatex/optex/op-letter.tex
===================================================================
--- trunk/Master/texmf-dist/doc/luatex/optex/op-letter.tex	2020-05-06 21:08:34 UTC (rev 55047)
+++ trunk/Master/texmf-dist/doc/luatex/optex/op-letter.tex	2020-05-06 22:01:50 UTC (rev 55048)
@@ -1,41 +0,0 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
-
-\letter         % \letter OpTeX style activated
-\fontfam[bonum]
-\cslang
-
-\address
-  Vážený pan
-  Mgr. Bořek Byrokrat
-  ředitel Ústavu pro další možnosti
-  Úřední 789
-  123 45 Praha 1
-
-\hfill V Praze dne \today
-
-\subject Žádost o možnost další možnosti
-
-Vážený pane řediteli
-
-na základě Vašeho dopisu č.j.~123456/78-dat a elektronické výzvy si dovoluji 
-Vás požádat o prozkoumání mé možnosti další možnosti. 
-Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
-eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
-veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
-commodo consequat. 
-
-Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
-eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
-veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
-commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
-esse cillum dolore eu fugiat nulla pariatur. 
-
-S úctou
-
-\hfill \address
-  {\it Petr Olšák}
-  specialista na \TeX/
-  Ulice 12345
-  Praha 13
-
-\bye

Deleted: trunk/Master/texmf-dist/doc/luatex/optex/op-ring.png
===================================================================
(Binary files differ)

Deleted: trunk/Master/texmf-dist/doc/luatex/optex/op-slides.tex
===================================================================
--- trunk/Master/texmf-dist/doc/luatex/optex/op-slides.tex	2020-05-06 21:08:34 UTC (rev 55047)
+++ trunk/Master/texmf-dist/doc/luatex/optex/op-slides.tex	2020-05-06 22:01:50 UTC (rev 55048)
@@ -1,288 +0,0 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
-
-\slides   % OpTeX slides style activated
-
-\catcode`<=13                 % special printing of <text>
-\def<#1>{\hbox{$\langle$\it#1\/$\rangle$}}
-\everyintt={\catcode`\<=13}
-
-\hyperlinks\Blue\Blue         % hyperlinks are used in the title page
-\backgroundpic{slides-bg.png} % background picture
-
-\activettchar`                % inline verbatim
-\enquotes                     % English quotes \"..."
-
-\slideshow %------------------------------------------------------------
-
-
-\tit \OpTeX/ slides
-
-\subtit Petr Olšák\nl petr at olsak.net
-
-\subtit\rm \url{http://petr.olsak.net/optex}
-
-\pg; %------------------------------------------------------------------
-
-\sec Basics
-
-* The the simple document looks like:
-
-\begtt 
-\slides       % style initialized
-%\wideformat  % 16:9
-\slideshow    % partially uncovering ideas
-
-\sec First slide
-text
-\pg;
-
-\sec Second slide
-text
-\pg.
-\endtt
-
-* If `\slideshow` is missing or commented out then 
-  \"partially uncovering ideas" (see later) are deactivated. It is useful 
-  for printing.
-* The `\slideshow` must be the last command in the declaration part of the
-  document.
-* By default, the slides have A5 landscape format. 
-  You can declare `\wideformat`. Then the height is the same
-  but width is 263\,mm, i.\,e.~the ratio width:height is 16:9.
-
-\pg; %------------------------------------------------------------------
-
-\sec Title slide
-
-* Title of the document (used at the first slide) is created
-  by `\tit Title` (terminated by end of line).
-* The `\subtit Author name etc.`\ (terminated by end of line)
-  can be used after `\tit` at the first slide.
-* You can use `\nl` for new line in paragraphs or titles.
-
-\sec Default design
-
-* The paragraph texts are ragged right.
-* Titles, subtitles and section titles are centered.
-* The `\sec` and `\secc` are printed without numbers.
-* Paragraph indentation is zero. There is a little vertical space between
-  paragraphs.
-* The Heros font family (aka Helvetica) is initialized as default.\nl 
-  Sans-serif FiraMath font for math typesetting is used.
-* The items in lists are started by blue square (`\type X` and `\type x` ).
-
-\pg; %------------------------------------------------------------------
-
-\sec One slide (one page)
-
-* Top level item list is activated by default. The asterisk `*` opens 
-  new item at the top level list.
-* Nested items lists (second and more level) should be created in
-  the `\begitems`\dots`\enditems` environments.
-* Each slide (page) must be terminated by `\pg;` command.
-* Lats slide must be terminated by `\pg.` command or by `\bye`.
-
-\begtt 
-\sec My ideas
-
-* First idea
-* Second idea
-  \begitems
-  * First sub-idea
-  * Second sub-idea
-  \enditems
-* Final idea
-\endtt
-
-* Note: each page is processed in a group, so: put your own definitions 
-  (if~exist) before `\slideshow` or use `\global` assignment.
-
-\pg; %------------------------------------------------------------------
-
-\sec Partially uncovering ideas
-
-* The control sequence `\pg` must be followed by:\pg+
-\begitems
-* the character `;` -- normal next page,\pg+
-* the character `.` -- the end of the document,\pg+
-* the character `+` -- next page keeps the same text
-  and a next text is added (usable for partially uncovering of ideas).\pg+ 
-\enditems
-
-* Summary:
-\begtt
-\pg;    ... next page
-\pg.    ... the end of the document
-\pg+    ... uncover next text at the same page
-\endtt
-\pg+
-
-* When `\slideshow` is not declared then `\pg+` is deactivated.\pg+
-* The `\pg+` creates a new \"virtual page", so the current paragraph is
-  terminated.
-
-\pg; %------------------------------------------------------------------
-
-\sec Example with partially uncovering ideas
-
-The previous page was created by:
-
-\begtt
-\sec Partially uncovering ideas
-
-* The control sequence `\pg` must be followed by:\pg+
-
-\begitems
-* the character `.` -- normal next page,\pg+
-* the character `;` -- the end of the document,\pg+
-* the character `+` -- next ... \pg+
-\enditems
-
-* Summary
-...
-* When `\slideshow` is not declared 
-  then `\pg+` is deactivated.\pg+
-* The `\pg+` creates a new \"virtual page", 
-  so the current paragraph is terminated.
-\pg;
-\endtt
-
-\pg; %------------------------------------------------------------------
-
-\sec Notes
-
-* When `\slideshow` is active then you cannot reference sections by 
-  hyperlinked `\ref`. Only `\pgref` works (and goes to the last layer
-  of the referenced page).
-* If the text overfull the page (slide) then it follows to the next page without
-  saying explicitly `\pg;`. But `\slideshow` cannot work in such case.\pg+
-
-\sec More about design
-
-* You can use `\backgroundpic{<image-file>}` for putting an image to the backgroud.
-* You can re-declare `\footline` or re-define internal macros for design as 
-  you wish.
-* You can put the images or text wherever using `\putimege` or `\puttext`
-  macros...
-
-\pg; %------------------------------------------------------------------
-
-\sec Putting images and texts wherever
-
-* `\puttext <right> <up> {<text>}` puts a <text> to the desired place:
-  It moves the current point <right> and <up>, puts the <text> and returns
-  back, so the typesetting continues from previous position. The parameters
-  <right> and <up> are dimensions. For example
-
-\begtt
-\puttext 0mm 50mm {\Red HELLO}
-\endtt
-
-  \puttext 0mm 50mm {\Red HELLO}
-  prints red HELLO, as shown here.\pg+
-
-* `\putpic <right> <up> <width> <height> {<image-file>}`
-  puts the image with desired <width> and <height> at the position like 
-  `\puttext` puts the text.
-
-  \putpic .8\hsize 20mm 30mm \nospec {op-ring.png}
-* The ring above is the result of 
-
-\begtt
-\putpic .8\hsize 20mm 30mm \nospec {op-ring.png} 
-\endtt
-  %
-  used at beginning of this paragraph.\pg+
-* Use `\nospec` for <width> or <height> of the image if you don't want to specify both
-  dimensions (because you don't want to change the image aspect ratio).
-
-\pg; %------------------------------------------------------------------
-
-\sec Limits of the \code{\\pg+} sequence
-
-* The \code{\\pg+} sequence (partially uncovering ideas) cannot be used inside
-  a~group.
-* The exception is the nested environment `\begitems...\enditems`.
-* The `\pg+` always finalizes the current paragraph.
-  It is impossible to hide only a part of horizontal mode.\pg+
-
-\sec The \code{\\layers}\,...\code{\\endlayers} environment
-
-If you really need something unsupported by `\pg+` then you can use 
-
-\begtt \catcode`\<=13
-\layers <number>
-<layered text>
-\endlayers
-\endtt 
-
-* The <layered text> should include conditions like
-  `\ifnum\layernum...` or `\ifcase\layernum`. 
-  It is printed <number> times to more slide pages (layers) with the same
-  surrounding text. See next page... 
-
-\pg; %------------------------------------------------------------------
-
-\sec Example of \code{\\layers} environment
-
-The `\slides` style provides a shortcut `\use` and a macro `\pshow` (means
-partially show):
-
-\begtt
-\def\use#1#2{\ifnum\layernum#1\relax#2\fi}
-\def\pshow#1{\use{=#1}\Red \use{<#1}\Transparent \ignorespaces}
-\endtt
-
-The `{\pshow<num> <text>}` prints <text> in Red when current layer is equal
-to <num> or it prints <text> normally when current layers is greater than <num>.
-The transparent (invisible) font is used in other cases.
-
-The following dance:
-\layers 3
-{\pshow2 Second text.} {\pshow3 Third text.} {\pshow1 First text.} 
-\endlayers
-\pg+
-
-was generated by
-
-\begtt
-\layers 3
-{\pshow2 Second text.} {\pshow3 Third text.} {\pshow1 First text.} 
-\endlayers
-\endtt
-
-\pg+
-* The <layered text> is treated as macro parameter. So, you cannot use verbatim
-  nor `\sec` titles here. Maximal one `\layers` environment can be per one 
-  page (terminated by `\pg+` or `\pg;` or `\pg.`
-
-\pg; %------------------------------------------------------------------
-
-\sec Comparison \OpTeX/ slides with Beamer\fnote{\url{http://www.ctan.org/pkg/beamer}}
-
-The \LaTeX{} package {\bf\Blue Beamer} gives much more features and many themes
-are prepared for Beamer, {\bf\Red but}
-\pg+
-* the user of Beamer is forced to {\em program} his/her document using 
-  dozens of \code{\\begin{foo}} and \code{\\end{foo}} and many another
-  programming constructions,\pg+
-* plain \TeX{} gives you a possibility to simply 
-  {\em write} your document with minimal markup. The result is more compact.
-  You can concentrate to the contents of your document, not to the
-  programming syntax.\pg+
-* User needs to read 250 pages of doc for understanding Beamer,\pg+
-* on the other hand, you need to read only ten 
-  slides\fnote{this eleventh slide isn't counted}
-  and you are ready to use {\bf\Blue\OpTeX/ slides}.
-
-\pg; %------------------------------------------------------------------
-
-\null
-\vskip2cm
-\centerline{\typosize[35/40]\bf Thanks for your attention}\pg+
-
-\vskip2cm
-\centerline{\Blue\typosize[60/70]\bf Questions?}
-
-\pg. %----------------------------- THE END ----------------------------
-

Modified: trunk/Master/texmf-dist/doc/luatex/optex/optex-doc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/luatex/optex/optex-doc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/luatex/optex/optex-doc.tex	2020-05-06 21:08:34 UTC (rev 55047)
+++ trunk/Master/texmf-dist/doc/luatex/optex/optex-doc.tex	2020-05-06 22:01:50 UTC (rev 55048)
@@ -1,16 +1,17 @@
 %% This is part of OpTeX project, see http://petr.olsak.net/optex
 
-% Run  optex optex-doc (three times) to generate OpTeX documentation. 
+% Run  optex optex-doc 
+% (three times) to generate OpTeX documentation including references and the index. 
 
-\input doc.opm  \let\enddocument=\endinput
+\load [doc.opm]  \let\enddocument=\endinput
 
-\typosize[10/12]
+\typosize[10/12]  % Main size (used in techdoc)
 
-\let\new=\relax
+\begingroup \typosize [11/13.5] % Different size used in useroc.
 
-\begingroup \typosize [11/13.5]
+\insertoutline{OpTeX}  % PDF outlines generated from TOC
 
-\insertoutline{OpTeX}
+% Title:
 
 \vglue1cm
 \centerline{\setfontsize{at50pt}\rm\OpTeX}
@@ -17,9 +18,9 @@
 \vskip-8mm
 
 \tit Format Based on Plain \TeX/ and OPmac\fnotemark1
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-\hfill Version 0.10
+\hfill Version 0.12
 
 \centerline{\it Petr Olšák, 2020}
 
@@ -26,8 +27,8 @@
 \bigskip
 \centerline{\url{http://petr.olsak.net/optex}}
 
-\fnotetext {The OPmac package is a set of simple additional macros to Plain \TeX{}. It
-enables users to take advantage of \LaTeX/ functionality but keeps
+\fnotetext {The OPmac package is a set of simple additional macros to Plain \TeX{}. 
+It enables users to take advantage of \LaTeX/ functionality but keeps
 Plain \TeX/ simplicity. See
 \url{http://petr.olsak.net/opmac-e.html} for more information about it.}
 

Modified: trunk/Master/texmf-dist/doc/luatex/optex/optex-techdoc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/luatex/optex/optex-techdoc.tex	2020-05-06 21:08:34 UTC (rev 55047)
+++ trunk/Master/texmf-dist/doc/luatex/optex/optex-techdoc.tex	2020-05-06 22:01:50 UTC (rev 55048)
@@ -1,9 +1,10 @@
 %% This is part of OpTeX project, see http://petr.olsak.net/optex
 
 % This file is read from optex-doc.tex
-% Use: optex optex-doc  (three times) to create whole documentation.
+% Use: optex optex-doc  
+% (three times) to create whole documentation including all references and the index.
 
-\ifx\printdoc\undefined \input doc.opm \fi
+\load [doc.opm]
 
 \chap Technical documentation
 
@@ -81,9 +82,7 @@
 
 \printdoctail prefixed.opm
 \secc The implementation of the name spaces
-\edef\_Endcode{\_bslash _endcode\_pcent}
 \printdoc prefixed.opm
-\edef\_Endcode{\_bslash _endcode}
 
 \sec pdf\TeX/ initialization
 \printdoctail luatex-ini.opm
@@ -124,7 +123,7 @@
 \secc Implementation of the Font Selection System
 \printdoc     fonts-select.opm
 
-\sec Preloaded fonts for math mode
+\sec [math-preload] Preloaded fonts for math mode
 \printdoctail math-preload.opm
 \printdoc     math-preload.opm
 

Modified: trunk/Master/texmf-dist/doc/luatex/optex/optex-userdoc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/luatex/optex/optex-userdoc.tex	2020-05-06 21:08:34 UTC (rev 55047)
+++ trunk/Master/texmf-dist/doc/luatex/optex/optex-userdoc.tex	2020-05-06 22:01:50 UTC (rev 55048)
@@ -3,6 +3,8 @@
 % This file is read from optex-doc.tex
 % Use: optex optex-doc  (three times) to create whole documentation.
 
+\let\new=\relax
+
 \sec Starting with \OpTeX/
 %%%%%%%%%%%%%%%%%%%%%%%%%
 
@@ -389,7 +391,7 @@
 
 The last two selectors \^`\bf` and \^`\bi` select the sans serif fonts in math regardless
 the current text font family. This is common notation for vectors and
-matrices. You can re-declare it, see the file `unimath-codes.opm` where
+matrices. You can re-declare them, see the file `unimath-codes.opm` where
 Unicode math variants of \^`\bf` and \^`\bi` selectors are defined.
 
 The math fonts can be scaled by \^`\typosize` and \^`\typoscale` macros.
@@ -401,7 +403,9 @@
 You can use \^`\mathbox{<text>}` inside math mode. It behaves as `{\hbox{<text>}}`
 (i.e. the <text> is printed in horizontal non-math mode)
 but the size of the <text> is adapted to the context of math size (text or script or
-scriptscript). 
+scriptscript). Moreover, there is the macro \^`\mathstyles{<math list>}` which depends on
+the current math style. It is documented at the end of the
+section~\ref[math-macros].
 
 
 \sec Typical elements of document
@@ -1599,6 +1603,30 @@
 individual typographical care. You need to create specific macros for
 design. 
 
+\secc Loading other macro packages
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+You can load more macro packages by `\input{<file-name>}` or by
+\^`\load[<file-names>]`. The first case is \TeX/ primitive command, it can be
+used in the alternative old syntax `\input <filename><space>` too. The
+second case allows to specify a comma separated list of included files.
+Moreover, the \^`\load` macro loads each macro file only once, it sets
+temporarily standard category codes during loading and it tries to
+load `<filename>.opm` or `<filename>.tex` or `<filename>`, first occurence
+wins. Example: 
+\begtt
+\load [qrcode, tikz] 
+\endtt
+%
+does `\input qrcode.opm` \,and `\input tikz.tex` \,and it saves
+local information about the fact that these file names
+`qrcode` and `tikz` were already used, i.\,e. next \^`\load` will skip them.  
+
+It is strongly recommended to use the `\load` macro for loading external
+macros, if you need them. On the other hand, if your document is structured
+to more files, use simply the `\input` primitive.
+
+
 \secc Lorem ipsum dolor sit
 %%%%%%%%%%%%%%%%%%%%%%%%%%%
 
@@ -1658,7 +1686,7 @@
 \sec Summary
 %%%%%%%%%%%%
 
-\begtt     \typosize[10/12]\adef!{\string\endtt}\adef&{\kern.25em}
+\begtt     \typosize[9/11]\adef!{\string\endtt}\adef&{\kern.25em}
 \tit Title (terminated by end of line)
 \chap Chapter Title (terminated by end of line)
 \sec Section Title (terminated by end of line)
@@ -1692,6 +1720,7 @@
 \bib [labname]  % an item in the list of references
 \usebib/? (style) bib-base % direct using of .bib file, ? in {s,c}
 
+\load [<filenames>]   % loadaing macro files
 \fontfam [FamilyName] % selection of font family
 \typosize [font-size/baselineskip] % size setting of typesetting
 \typoscale [factor-font/factor-baselineskip] % size scaling
@@ -1738,11 +1767,17 @@
 format.
 
 \new
-The text accents macros like `\'`, `\v`, `\"` are undefined\fnote 
+Plain \TeX/ defines `\newcount`, `\bye` etc. as `\outer` macros. \OpTeX/
+doesn't set any macro as `\outer`. Macros like `\TeX`, `\rm` are defined as
+`\protected`.
+
+\new
+The text accents macros `\"`, `\'`, `\v`, `\u`, `\=`, `\^`, `\.`, `\H`,
+`\~`, \code{\\`}, `\t`   are undefined\fnote 
 {The math accents macros like `\acute`, `\bar`, `\dot`, `\hat` still work.}
 in \OpTeX/. Use real
-letters like á, ř, ž in your source document instead these old accents macros.
-If you really want to use them, you can initialize them by \^`\oldaccents`
+letters like á, ř, ž in your source document instead of these old accents macros.
+If you really want to use them, you can initialize them by the \^`\oldaccents`
 command. But we don't recommend it.
 
 \new
@@ -1756,6 +1791,9 @@
 but at top left paper corner exactly. For example, `\hoffset` includes directly left
 margin.
 
+The `\sec` macro is reserved to sections but original Plain \TeX/ declares this
+control sequence for math secans.
+
 \enddocument
 
 

Deleted: trunk/Master/texmf-dist/doc/luatex/optex/slides-bg.png
===================================================================
(Binary files differ)

Added: trunk/Master/texmf-dist/tex/latex/optex/base/alloc.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/alloc.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/alloc.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,165 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \newdimen {Allocators for registers <2020-01-23>} % loaded in format
+
+   \_doc -----------------------------
+   The limits are set first.
+   \_cod -----------------------------
+
+\_chardef\_maicount = 65535    % Max Allocation Index for counts registers in LuaTeX
+\_let\_maidimen  = \_maicount
+\_let\_maiskip   = \_maicount
+\_let\_maimuskip = \_maicount
+\_let\_maibox    = \_maicount
+\_let\_maitoks   = \_maicount
+\_chardef\_mairead  = 15
+\_chardef\_maiwrite = 15
+\_chardef\_maifam   = 255
+
+   \_doc -----------------------------
+   Each allocation macro needs its own counter.
+   \_cod -----------------------------
+
+\_countdef\_countalloc=10  \_countalloc=255
+\_countdef\_dimenalloc=11  \_dimenalloc=255
+\_countdef\_skipalloc=12   \_skipalloc=255
+\_countdef\_muskipalloc=13 \_muskipalloc=255
+\_countdef\_boxalloc=14    \_boxalloc=255
+\_countdef\_toksalloc=15   \_toksalloc=255
+\_countdef\_readalloc=16   \_readalloc=-1
+\_countdef\_writealloc=17  \_writealloc=-1
+\_countdef\_mathalloc=18   \_mathalloc=3
+
+   \_doc -----------------------------
+   The common allocation macro 
+   \`\_allocator` `\<sequence> {<type>} \<primitive declarator>`
+   is defined. This idea was used in classical plain \TeX/ by 
+   Donald Knuth too but the macro from plain \TeX/ seems to be 
+   more complicated:). 
+   \_cod -----------------------------
+
+\_def\_allocator #1#2#3{%
+   \_global\_advance\_cs{_#2alloc}by1
+   \_ifnum\_cs{_#2alloc}>\_cs{_mai#2}%
+      \_errmessage{No room for a new \_ea\_string\_csname #2\_endcsname}%
+   \_else
+      \_global#3#1=\_cs{_#2alloc}%
+      \_wlog{\_string#1=\_ea\_string\_csname #2\_endcsname\_the\_cs{_#2alloc}}%
+   \_fi
+}
+
+   \_doc -----------------------------
+   The allocation macros 
+   \`\newcount`, \`\newdimen`, \`\newskip`, \`\newmuskip`, \`\newbox`,
+   \`\newtoks`, \`\newread`, \`\newwrite` and \`\newmath`
+   are defined here.
+   \_cod -----------------------------
+
+\_def\_newcount #1{\_allocator #1{count}\_countdef}
+\_def\_newdimen #1{\_allocator #1{dimen}\_dimendef}
+\_def\_newskip #1{\_allocator #1{skip}\_skipdef}
+\_def\_newmuskip #1{\_allocator #1{muskip}\_muskipdef}
+\_def\_newbox #1{\_allocator #1{box}\_chardef}
+\_def\_newtoks #1{\_allocator #1{toks}\_toksdef}
+\_def\_newread #1{\_allocator #1{read}\_chardef}
+\_def\_newwrite #1{\_allocator #1{write}\_chardef}
+\_def\_newmath #1{\_allocator #1{fam}\_chardef}
+
+\_public \newcount \newdimen \newskip \newmuskip \newbox \newtoks \newread \newwrite \newmath ;
+
+   \_doc -----------------------------
+   The \`\newinsert` macro is defined differently than others.
+   \_cod -----------------------------
+
+\_newcount\_insertalloc   \_insertalloc=255
+\_chardef\_insertmin = 201 
+
+\_def\_newinsert #1{%
+   \_advance\_insertalloc by-1
+   \_ifnum\_insertalloc <\_insertmin
+      \_errmessage {No room for a new \_string\insert}%
+   \_else
+      \_global\_chardef#1=\_insertalloc
+      \_wlog {\_string#1=\_string\_insert\_the\_insertalloc}%
+   \_fi
+}
+\_public \newinsert ;
+
+   \_doc -----------------------------
+   Other allocation macros \`\newattribute` and \`\newcatodetable`
+   have their counter allocated by the `\newcount` macro.
+   \_cod -----------------------------
+
+\_newcount \_attributealloc  \_attributealloc=0 
+\_chardef\_maiattribute=\_maicount
+\_def\_newattribute #1{\_allocator #1{attribute}\_attributedef}
+
+\_newcount \_catcodetablealloc  \_catcodetablealloc=10
+\_chardef\_maicatcodetable=32767
+\_def\_newcatcodetable #1{\_allocator #1{catcodetable}\_chardef}
+
+\_public \newattribute \newcatcodetable ;
+
+   \_doc -----------------------------
+   We declare public and private versions of `\tmpnum` and `\tmpdim`
+   registers separately. They are independent registers.
+   \_cod -----------------------------
+
+\_newcount \tmpnum  \_newcount \_tmpnum
+\_newdimen \tmpdim  \_newdimen \_tmpdim
+
+   \_doc -----------------------------
+   A few registers are initialized like in plain\TeX/. Note that `\z@` and `\z at skip` from
+   plain\TeX/ is `\zo` and `\zoskip` because we absolutely 
+   don't support the `@` category dance.
+   Note that `\p@` is not defined because we can write 1pt which is more
+   legible.
+   \_cod -----------------------------
+
+\_newdimen\_maxdimen \_maxdimen=16383.99999pt % the largest legal <dimen>
+\_newskip\_hideskip \_hideskip=-1000pt plus 1fill % negative but can grow
+\_newskip\_centering \_centering=0pt plus 1000pt minus 1000pt
+\_newskip\_zoskip \_zoskip=0pt plus0pt minus0pt
+\_newbox\_voidbox % permanently void box register
+
+\_public \maxdimen \hideskip \centering \zoskip \voidbox ;
+
+\_endcode %---------------------------------------------------
+
+Like plain\TeX, the allocators `\newcount`, `\newwrite`, etc. are defined. 
+The registers are allocated from 256 to the `\_mai<type>` which is 65535 in
+\LuaTeX/.
+
+Unlike in Plain\TeX/, the mentioned allocators are not `\outer`.
+
+User can use `\dimen0` to `\dimen200` and similarly for `\skip`,
+`\muskip`, `\box` and `\toks` directly. User can use 
+`\count20` to `\count200` directly too. This is the same
+philosophy like in old plain\TeX/, but the range of directly used registers
+is wider.
+
+Inserts are allocated form 254 to 201 using `\newinsert`.
+
+You can define your own allocation concept (for example for allocation of
+arrays) from top of registers array. The example shows a definition of
+the array-like declarator of counters.
+
+\nobreak
+\begtt
+\newcount \_maicount    % redefine maximal allocation index as variable
+\_maicount = \maicount  % first value is top of the array
+
+\def\newcountarray #1[#2]{% \newcountarray \foo[100]
+    \advance\_maicount by -#2\relax
+    \ifnum \_countalloc > \_maicount
+        \errmessage{No room for a new array of \string\count}%
+    \else
+        \chardef#1=\_maicount
+    \fi
+}
+\def\usecount #1[#2]{%  \usecount \foo[2]
+    \count\numexpr#1+#2\relax
+}
+\endtt
+
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/alloc.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/basic-macros.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/basic-macros.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/basic-macros.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,97 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \sdef {Basic macros for OpTeX <2020-02-14>} % loaded in format
+
+   \_doc ------------------------------
+   \`\bgroup`, \`\egroup`, \`\empty`, \`\space`, \`\null` and \`\wlog` 
+   are classical macros from plain \TeX/. 
+   \_cod ------------------------------
+
+\_let\_bgroup={  \_let\_egroup=}
+\_def \_empty {}
+\_def \_space { }
+\_def \_null {\_hbox{}}
+\_def \_wlog {\_immediate\_write-1 } % write on log file (only)
+
+\_public \bgroup \egroup \empty \space \null \wlog ;
+
+   \_doc ------------------------------
+   \`\bslash` is \"normal backslash" with category code 12. 
+   \`\nbb` and \`\pcent` are double backslash and normal~`%`, 
+   they should be used in lua codes, for example.
+   \_cod ------------------------------
+
+\_edef \_bslash {\_csstring\\}
+\_edef \_nbb {\_bslash\_bslash}
+\_edef \_pcent{\_csstring\%}
+
+\_public \bslash \nbb \pcent ;
+
+   \_doc ------------------------------
+   \`\sdef` `{<text>}` is equivalent to `\def\<text>`, where `\<text>` is a control
+   sequence. You can use arbitrary parameter mask after `\sdef{<text>}`, don't
+   put the (unwanted) space immediately after closing brace \code{\}}.
+   \nl
+   \`\sxdef` `{<text>}` is equivalent to `\xdef\<text>`.
+   \nl
+   \`\slet` `{<textA>}{<textB>}` is equivalent to `\let \<textA> = \<textB>`.
+   \_cod ------------------------------
+
+\_def \_sdef #1{\_ea\_def \_csname#1\_endcsname}
+\_def \_sxdef #1{\_ea\_xdef \_csname#1\_endcsname}
+\_def \_slet #1#2{\_ea\_let \_csname#1\_ea\_endcsname \_csname#2\_endcsname}
+
+\_public \sdef \sxdef \slet ;
+
+   \_doc ------------------------------
+   \`\adef` `{<char>}{<body>}` puts the <char> as active character and defines it
+   as `{<body>}`. You can declare a macro with parameters too. For example 
+   `\adef @#1{...$1...}`.
+   \_cod ------------------------------
+
+\_def \_adef #1{\_catcode`#1=13 \_begingroup \_lccode`\~=`#1\_lowercase{\_endgroup\_def~}}
+\_public \adef ;
+
+   \_doc ------------------------------
+   \`\cs` `{<text>}` is only a shortcut to `\csname <text>\endcsname`, but you need
+   one more `\_ea` if you need to get the real control sequence `\<text>`.
+   \nl
+   \`\trycs` `{<csname>}{<text>}` expands to `\<csname>` 
+   if it is defined else to the `<text>`.
+   \_cod ------------------------------
+
+\_def \_cs #1{\_csname#1\_endcsname}
+\_def \_trycs#1#2{\_ifcsname #1\_endcsname \_csname #1\_endcsname \_else #2\_fi}
+\_public \cs \trycs ;
+
+   \_doc ------------------------------
+   \`\addto` `\macro{<text>}` adds `<text>` to your `\macro`, which must be defined.
+   \_cod ------------------------------
+
+\_long\_def \_addto #1#2{\_ea\_def\_ea#1\_ea{#1#2}}
+\_public \addto ;
+
+   \_doc ------------------------------
+   \`\opwarning` `{<text>}` prints warning on the terminal and to the log file.
+   \_cod ------------------------------
+
+\_def \_opwarning #1{\_wterm{WARNING: #1.}}
+\_public \opwarning ;
+
+   \_doc ------------------------------
+   \`\loggingall` and \`\tracingall` are defined similarly as in 
+   plain \TeX/, but they print
+   more logging information to the log file and to the terminal. 
+   \_cod ------------------------------
+
+\_def\_loggingall{\_tracingcommands=3 \_tracingstats=2 \_tracingpages=1 
+  \_tracingoutput=1 \_tracinglostchars=1 \_tracingmacros=2 
+  \_tracingparagraphs=1 \_tracingrestores=1 \_tracingscantokens=1 
+  \_tracingifs=1 \_tracinggroups=1 \_tracingassigns=1 }
+\_def\_tracingall{\_tracingonline=1 \_loggingall}
+
+\_public \loggingall \tracingall ; 
+
+\_endcode % -------------------------------------
+
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/basic-macros.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/bib-iso690.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/bib-iso690.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/bib-iso690.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,940 @@
+% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+% bibliography style (iso690), version <2020-03-10>, loaded on demand by \usebib
+
+\_ifx\_optexbibstyle\_undefined \_errmessage
+   {This file can be read by: \_string\usebib/? (iso690) bibfiles command only}
+   \_endinput \_fi
+
+   \_doc -----------------------------
+   \`\_maybetod` (alias `\.` in the style file group) does not put second dot.
+   \_cod -----------------------------
+
+\_def\_maybedot{\_ifnum\_spacefactor=\_sfcode`\.\_relax\_else.\_fi}
+\_tmpnum=\_sfcode`\. \_advance\_tmpnum by-2 \_sfcode`\.=\_tmpnum 
+\_sfcode`\?=\_tmpnum \_sfcode`\!=\_tmpnum
+\_let\.=\_maybedot  % prevents from double periods
+
+   \_doc -----------------------------
+   Option field.
+   \_cod -----------------------------
+
+\_CreateField {option}
+\_def\_isbiboption#1#2{\_edef\_tmp{\_noexpand\_isbiboptionA{#1}}\_tmp}
+\_def\_isbiboptionA#1{\_def\_tmp##1 #1 ##2\_relax{%
+      \_if^##2^\_csname iffalse\_ea\_endcsname \_else\_csname iftrue\_ea\_endcsname \_fi}% 
+   \_ea\_tmp\_biboptionsi #1 \_relax}
+\_def\_bibopt[#1]#2#3{\_isbiboption{#1}\_iftrue\_def\_tmp{#2}\_else\_def\_tmp{#3}\_fi\_tmp}
+\_def\_biboptionvalue#1#2{\_def\_tmp##1 #1:##2 ##3\_relax{\_def#2{##2}}%
+   \_ea\_tmp\_biboptionsi #1: \_relax}
+
+\_def\_readbiboptions{%
+   \_RetrieveFieldIn{option}\_biboptionsi
+   \_toks1=\_ea{\_biboptionsi}%
+   \_edef\_biboptionsi{\_space \_the\_toks1 \_space \_the\_biboptions \_space}%
+}
+\_newtoks\_biboptions
+\_public \biboptions ;
+
+   \_doc -----------------------------
+   Formating of Author/Editor lists.
+   \_cod -----------------------------
+
+\_def\_firstauthorformat{%
+   \_upper{\_Lastname}\_bprintc\_Firstname{, *}\_bprintc\_Von{ *}\_bprintc\_Junior{, *}%
+}
+\_def\_otherauthorformat{%
+   \_bprintc\_Firstname{* }\_bprintc\_Von{* }\_upper{\_Lastname}\_bprintc\_Junior{, *}%
+}
+\_def\_commonname{%
+  \_ifnum\_NameCount=1 
+     \_firstauthorformat
+     \_ifx\_dobibmark\_undefined \_edef\_dobibmark{\_Lastname}\_fi
+  \_else
+     \_ifnum0\_namecount=\_NameCount
+        \_ifx\_maybeetal\_empty \_bibconjunctionand\_else , \_fi
+     \_else , \_fi
+     \_otherauthorformat
+  \_fi  
+}
+\_def\_authorname{%
+   \_ifnum\_NameCount>0\_namecount\_relax\_else \_commonname \_fi
+   \_ifnum\_NameCount=0\_namecount\_relax \_maybeetal \_fi
+}
+\_let\_editorname=\_authorname
+
+\_def\_prepareauedoptions#1{%
+   \_def\_mabyetal{}\_csname lb at abbreviatefalse\_endcsname
+   \_biboptionvalue{#1max}\_authormax  
+   \_biboptionvalue{#1min}\_authormin  
+   \_biboptionvalue{#1pre}\_authorpre  
+   \_biboptionvalue{#1print}\_authorprint
+   \_isbiboption{#1etal}\_iftrue \_def\_maybeetal{\_Mtext{bib.etal}}\_fi
+   \_biboptionvalue{#1trim}\_autrim 
+   \_let\_namecountraw=\_namecount
+   \_ifx\_authormax\_empty \_else
+      \_ifnum 0\_authormax<0\_namecount
+         \_edef\_namecount{\_ifx\_authormin\_empty\_authormax\_else\_authormin\_fi}%
+         \_def\_maybeetal{\_Mtext{bib.etal}}%
+   \_fi\_fi
+   \_ifx\_autrim\_empty \_def\_autrim{10000}\_fi 
+   \_ifnum\_autrim=0 \_def\_autrim{10000}\_fi   
+   \_ifnum 0\_namecount<\_autrim\_relax \_else \_AbbreviateFirstname \_fi
+}
+\_def\_maybeetal{}
+
+\_ifx\upper\_undefined 
+   \_ifx\caps \_undefined \_def\upper{\_uppercase\_ea}\_else
+                          \_def\upper#1{{\caps\_rm #1}}\_fi
+\_fi
+\_let\_upper=\upper
+
+   \_doc -----------------------------
+   Preparing bib-mark (used when `\nonumcitations` is set).
+   \_cod -----------------------------
+
+\_def\_setbibmark{%  
+   \_ifx\_dobibmark\_undefined \_def\_dobibmark{}\_fi
+   \_RetrieveFieldIn{bibmark}\_tmp
+   \_ifx\_tmp\_empty \_RetrieveFieldIn{year}\_tmp \_edef\_tmp{\_dobibmark, \_tmp}\_fi
+   \_bibmark=\_ea{\_tmp}%
+}
+% Multilinguals:           English                Czech               Slovak
+
+\_mtdef{bib.and}           {, and }               { a }               {}
+\_mtdef{bib.etal}          { et al.}              { a~kol.}           {}
+\_mtdef{bib.edition}       { ed.}                 { vyd.}             {}
+\_mtdef{bib.bachthesis}    {Bachelor's Thesis}    {Bakalářská práce}  {Bakalárska práca}
+\_mtdef{bib.masthesis}     {Master's Thesis}      {Diplomová práce}   {Diplomová práca}
+\_mtdef{bib.phdthesis}     {Ph.D. Thesis}         {Disertační práce}  {Dizertačná práca}
+\_mtdef{bib.available}     {Available from }      {Dostupné na }      {}
+\_mtdef{bib.availablealso} {Available also from } {Dostupné též na }  {Dotupné tiež na }
+\_mtdef{bib.citedate}      {cit.~}                {vid.~}             {}
+\_mtdef{bib.volume}        {Vol.~}                {ročník~}           {}
+\_mtdef{bib.number}        {No.~}                 {č.~}               {}
+\_mtdef{bib.prepages}      {pp.~}                 {s.~}               {}
+\_mtdef{bib.postpages}     {~p.}                  {~s.}               {}
+\_mtdef{bib.editor}        {,~ed.}                {,~editor}          {}
+\_mtdef{bib.editors}       {,~eds.}               {,~editoři}         {,~editori}
+
+\_def\_bibconjunctionand{\_Mtext{bib.and}}
+\_def\_preurl{\_Mtext{bib.available}}
+\_let\_predoi=\_preurl
+\_def\_postedition{\_mtext{bib.edition}}
+\_def\_Inclause{In:~}
+\_def\_prevolume{\_mtext{bib.volume}}
+\_def\_prenumber{\_mtext{bib.number}}
+\_def\_prepages{\_mtext{bib.prepages}}
+\_def\_posteditor{\_ifnum0\_namecountraw>1 \_Mtext{bib.editors}\_else\_Mtext{bib.editor}\_fi}
+
+\_chardef\_documentlanguage=\_language
+\_def\_Mtext#1{\_csname _mt:#1:\_csname _lan:\_the\_documentlanguage\_endcsname\_endcsname}
+
+\_CreateField {lang}
+\_def\_setlang#1{\_ifx#1\_empty \_else 
+      \_ea \_ifx \_csname _#1Patt\_endcsname \_relax
+         \_opwarning{The language "#1" used in .bib file is unknown}
+      \_else \_language=\_csname _#1Patt\_endcsname
+   \_fi\_fi
+}
+
+   \_doc -----------------------------
+   Non-standard fieldnames.
+   \_cod -----------------------------
+
+\_CreateField {ednote}
+\_CreateField {citedate}
+\_CreateField {numbering}
+\_CreateField {isbn}
+\_CreateField {issn}
+\_CreateField {doi}
+\_CreateField {url}
+\_CreateField {bibmark}
+
+   \_doc -----------------------------
+   Sorting.
+   \_cod -----------------------------
+
+\_SortingOrder{name,year}{lfvj}
+\_SpecialSort {key}
+
+   \_doc -----------------------------
+   Supporting macros.
+   \_cod -----------------------------
+
+\_def\_bibwarninga{\_bibwarning}
+\_def\_bibwarningb{\_bibwarning}
+
+\_def\_docitedate #1/#2/#3/#4\_relax{[\_Mtext{bib.citedate}%
+   \_if^#2^#1\_else
+      \_if^#3^#1/#2\_else \_docitedateA{#1}{#2}{#3}%
+   \_fi\_fi ]%
+}
+\_def\_docitedateA#1#2#3{%
+   \_ifnum\_documentlanguage=\_csPatt \_docitedateCS{#1}{#2}{#3}%
+   \_else \_ifnum\_documentlanguage=\_skPatt \_docitedateSK{#1}{#2}{#3}%
+         \_else \_docitedateEN{#1}{#2}{#3}%
+   \_fi\_fi
+}
+\_def\_docitedateEN#1#2#3{#1-#2-#3}
+\_def\_docitedateCS#1#2#3{\_hbox{\_tmpnum=#3 \_the\_tmpnum. \_tmpnum=#2 \_the\_tmpnum. #1}} 
+\_let\_docitedateSK=\_docitedateCS
+
+\_def\_doyear#1{
+   \_biboptionvalue{yearprint}\_yearprint
+   \_ifx\_yearprint\_empty#1\_else\_def\YEAR{#1}\_yearprint\_fi
+}
+\_def\_preparenumbering{%
+   \_def\VOL{\_RetrieveField{volume}}%
+   \_def\NO{\_RetrieveField{number}}%
+   \_def\PP{\_RetrieveField{pages}}%
+}
+\_def\_prepareednote{%
+   \_def\EDN{\_RetrieveField{edition}}%
+   \_def\ADDR{\_RetrieveField{address}}%
+   \_def\PUBL{\_RetrieveField{publisher}}%
+   \_def\YEAR{\_RetrieveField{year}}%
+   \_def\AU{\_bprintb[!author]{\_doauthor0{####1}}{}}%
+   \_def\ED{\_bprintb[!editor]{\_doeditor0{####1}}{}}%
+   \_preparenumbering
+}
+\_def\_doedition#1{%
+   \_biboptionvalue{editionprint}\_editionprint
+   \_ifx\_editionprint\_empty#1\_postedition\_else\_def\ED{#1}\_editionprint\_fi
+}
+\_def\_doauthor#1#2{\_prepareauedoptions{au}\_let\_iseditorlist=\_undefined
+   \_if1#1\_def\AU{#2}\_else\_let\_authorprint=\_empty\_fi
+   \_ifx\_authorprint\_empty #2\_else \_authorprint\_fi
+}
+\_def\_doeditor#1#2{\_prepareauedoptions{ed}\_let\_firstauthorformat=\_otherauthorformat
+   \_if1#1\_def\ED{#2}\_else\_let\_authorprint=\_empty\_fi
+   \_ifx\_authorprint\_empty #2\_posteditor\_else \_authorprint\_fi
+}
+
+   \_doc -----------------------------
+   Entry types.
+   \_cod -----------------------------
+
+\_sdef{_print:BEGIN}{%
+   \_readbiboptions
+   \_biboptionvalue{titlepost}\_titlepost
+   \_isbiboption{unpublished}\_iftrue \_let\_bibwarninga=\_relax \_let\_bibwarningb=\_relax \_fi
+   \_isbiboption{nowarn}\_iftrue \_let\_bibwarning=\_relax \_fi
+   \_isbiboption{urlalso}\_iftrue \_def\_preurl{\_Mtext{bib.availablealso}}\_fi
+   \_RetrieveFieldIn{lang}\_langentry \_setlang\_langentry 
+}
+\_sdef{_print:END}{%
+   \_bprinta [note]       {*.}{}%
+   \_setbibmark
+}
+\_def\_bookgeneric#1{%
+   \_bprinta [howpublished]  {[*].\ }{}%
+   \_bprintb [edition]    {\_doedition{##1}\.\ }{}%
+   \_bprinta [ednote]     {*.\ }{}%
+   \_bprinta [address]    {*\_bprintv[publisher]{:}{\_bprintv[year]{,}{.}}\ }{\_bibwarninga}%
+   \_bprinta [publisher]  {*\_bprintv[year]{,}{.}\ }{\_bibwarninga}%
+   \_bprintb [year]       {\_doyear{##1}\_bprintv[citedate]{\_bprintv[numbering]{.}{}}{.}\ }%
+                                                                                     {\_bibwarning}%
+   \_bprinta [numbering]  {\_preparenumbering*\_bprintv[citedate]{}{\.}\ }{}%
+   \_bprinta [citedate]   {\_docitedate*///\_relax.\ }{}%
+   #1%
+   \_bprinta [series]     {*.\ }{}%
+   \_bprinta [isbn]       {ISBN~*.\ }{\_bibwarningb}%
+   \_bprinta [issn]       {ISSN~*.\ }{}%
+   \_bprintb [doi]        {\_predoi DOI \_ulink[http://dx.doi.org/##1]{##1}.\ }{}%
+   \_bprintb [url]        {\_preurl\_url{##1}. }{}%
+}
+\_sdef{_print:book}{%
+   \_bprintb [!author]    {\_doauthor1{##1}\.\ }{\_bibwarning}%
+   \_bprintb [title]      {{\_em##1}\_bprintc\_titlepost{\.\ *}\_bprintv[howpublished]{}{\.}\ }%
+                                                                                     {\_bibwarning}%
+   \_bookgeneric{}%
+}
+\_sdef{_print:article}{%
+   \_biboptionvalue{journalpost}\_journalpost
+   \_bprintb [!author]   {\_doauthor1{##1}\.\ }{\_bibwarning}%
+   \_bprinta [title]     {*.\ \_bprintc\_titlepost{*.\ }}{\_bibwarning}%
+   \_bprintb [journal]   {{\_em##1}\_bprintc\_journalpost{\.\ *}\_bprintv[howpublished]{}{\.}\ }%
+                                                                                     {\_bibwarninga}%   
+   \_bprinta [howpublished]  {[*].\ }{}%
+   \_bprinta [address]   {*\_bprintb[publisher]{:}{,}\ }{}%
+   \_bprinta [publisher] {*, }{}%
+   \_bprinta [month]     {*, }{}%
+   \_bprintb [year]      {\_doyear{##1}\_bprintv[volume,number,pages]{,}{\.}\ }{}%
+   \_bprinta [numbering] {\_preparenumbering*\_bprintv[citedate]{}{\.}\ }
+                        {\_bprinta [volume] {\_prevolume*\_bprintv[number,pages]{,}{\.}\ }{}%
+                         \_bprinta [number] {\_prenumber*\_bprintv[pages]{,}{\.}\ }{}%
+                         \_bprintb [pages]  {\_prepages\_hbox{##1}\_bprintv[citedate]{}{\.}\ }%
+                                                                                     {\_bibwarninga}}%
+   \_bprinta [citedate]  {\_docitedate*///\_relax.\ }{}%
+   \_bprinta [issn]      {ISSN~*.\ }{}%
+   \_bprintb [doi]       {\_predoi DOI \_ulink[http://dx.doi.org/##1]{##1}.\ }{}%
+   \_bprintb [url]       {\_preurl\_url{##1}. }{}%
+}
+\_sdef{_print:inbook}{%
+   \_let\_bibwarningb=\_relax
+   \_bprintb [!author]   {\_doauthor1{##1}\.\ }{\_bibwarning}%
+   \_bprinta [title]     {*.\ }{\_bibwarning}%
+                        \_Inclause
+   \_bprintb [!editor]   {\_doeditor1{##1}\.\ }{}%
+   \_bprintb [booktitle] {{\_em##1}\_bprintc\_titlepost{\.\ *}\_bprintv[howpublished]{}{\.}\ }%
+                                                                                     {\_bibwarning}%
+   \_bookgeneric{\_bprintb [pages]  {\_prepages\_hbox{##1}. }{}}%
+}
+\_slet{_print:inproceedings}{_print:inbook}
+\_slet{_print:conference}{_print:inbook}
+
+\_sdef{_print:thesis}{%
+   \_bprintb [!author]    {\_doauthor1{##1}\.\ }{\_bibwarning}%
+   \_bprintb [title]      {{\_em##1}\_bprintc\_titlepost{\.\ *}\_bprintv[howpublished]{}{\.}\ }%
+                                                                                     {\_bibwarning}%
+   \_bprinta [howpublished]  {[*].\ }{}%
+   \_bprinta [address]    {*\_bprintv[school]{:}{\_bprintv[year]{,}{.}}\ }{\_bibwarning}%
+   \_bprinta [school]     {*\_bprintv[year]{,}{.}\ }{\_bibwarning}%
+   \_bprinta [month]      {*, }{}%
+   \_bprintb [year]       {\_doyear{##1}\_bprintv[citedate]{}{.}\ }{\_bibwarninga}%
+   \_bprinta [citedate]   {\_docitedate*///\_relax.\ }{}%
+   \_bprinta [type]       {*\_bprintv[ednote]{,}{.}\ }%
+                         {\_ifx\_thesistype\_undefined\_bibwarning
+                          \_else\_thesistype\_bprintv[ednote]{,}{.}\ \_fi}%
+   \_bprinta [ednote]     {*.\ }{}%
+   \_bprintb [doi]        {\_predoi DOI \_ulink[http://dx.doi.org/##1]{##1}.\ }{}%
+   \_bprintb [url]        {\_preurl\_url{##1}. }{}%
+}
+\_sdef{_print:phdthesis}{\_def\_thesistype{\_Mtext{bib.phdthesis}}\_cs{_print:thesis}}
+\_sdef{_print:mastershesis}{\_def\_thesistype{\_Mtext{bib.masthesis}}\_cs{_print:thesis}}
+\_sdef{_print:bachelorsthesis}{\_def\_thesistype{\_Mtext{bib.bachthesis}}\_cs{_print:thesis}}
+
+\_sdef{_print:generic}{%
+   \_bprintb [!author]    {\_doauthor1{##1}\.\ }{\_bibwarning}%
+   \_bprintb [title]      {{\_em##1}\_bprintc\_titlepost{\.\ *}\_bprintv[howpublished]{}{\.}\ }%
+                                                                                     {\_bibwarning}%
+   \_bprinta [howpublished]  {[*].\ }{}%
+   \_bprinta [ednote]     {\_prepareednote*\_bprintv[citedate]{}{.}\ }{\_bibwarning}%
+   \_bprinta [year]       {}{\_bibwarning}%
+   \_bprinta [citedate]   {\_docitedate*///\_relax.\ }{}%
+   \_bprintb [doi]        {\_predoi DOI \_ulink[http://dx.doi.org/##1]{##1}.\ }{}%
+   \_bprintb [url]        {\_preurl\_url{##1}. }{}%
+}
+\_slet{_print:booklet}{_print:generic}
+\_slet{_print:incolleciton}{_print:generic}
+\_slet{_print:manual}{_print:generic}
+\_slet{_print:proceedings}{_print:generic}
+\_slet{_print:techreport}{_print:generic}
+\_slet{_print:unpublished}{_print:generic}
+
+\_sdef{_print:misc}{\_let\_bibwarning=\_relax \_cs{_print:generic}}
+
+\_endcode
+
+
+This is the iso690 bibliographic style used by \OpTeX/.
+
+See `op-example.bib` for an example of the `.bib` input. You can try it by:
+
+\begtt
+\fontfam[LMfonts]
+\nocite[*]
+\usebib/s (iso690) op-example
+\end
+\endtt
+
+\seccc Common rules in \code{.bib} files
+
+There are entries of type `@FOO{...}` in the `.bib` file. Each entry consists of
+fields in the form `name = "value"`, or `name = {value}`. No matter which form is
+used. If the value is pure numeric then you can say simply `name = value`.
+Warning: the comma after each field value is mandatory! If it is missing then the
+next field is ignored or bad interpreted.
+
+The entry names and field names are case insensitive. If there exist a data
+field no mentioned here then it is simply ignored. You can use it to store
+more information (abstract, for example).
+
+There are \"standard fields" used in ancient bib\TeX/ (author, title, editor, edition,
+etc., see \url{http://en.wikipedia.org/wiki/BibTeX}). The `iso690` style introduces
+several \"non-standard" fields: ednote, numbering, isbn, issn, doi, url, 
+citedate, key, bibmark. They are documented here.
+
+Moreover, there are two optional special fields:
+
+\begitems
+* lang     = language of the entry. The hyphenation plus autogenerated phrases and
+             abbreviations will be typeset by this language.
+* option   = options by which you can control special printing of vairous fields.
+\enditems 
+
+There can be only one option field per each entry with (may be) more options
+separated by spaces. You can declare the global option(s) in your document
+applied for each entry by `\biboptions={...}`.
+
+
+\seccc The author field
+
+All names in the author list have to be separated by \"\code{ and }". 
+Each author can be written by various formats (the `von` part is typically missing):
+
+\begtt
+Firstname(s) von Lastname
+or
+von Lastname, Firstname(s)
+or
+von Lastname, After, Firstname(s)
+\endtt
+Only the Lastname part is mandatory. Examples:
+\begtt
+Petr Olšák
+or
+Olšák, Petr
+
+Leonardo Piero da Vinci
+or
+da Vinci, Leonardo Piero
+or
+da Vinci, painter, Leonardo Piero
+\endtt
+The separator \"\code{ and }" between authors 
+will be converted to comma during
+printing, but between semifinal and final author the word \"and" (or something
+different depending on current language) is printed.
+
+The first author is printed in reverse order: \"LASTNAME, Firstname(s) von,
+After" and the others author are printed in normal order: \"Firstname(s)
+von LASTNAME, After". This feature follows the ISO 690 norm. The Lastname
+is capitalized using uppercase letters. But if the `\caps` font modifier is defined,
+then it is used and printed `{\caps\_rm Lastname}`.
+
+You can specify the option `aumax:<number>`. The `<number>` denotes the
+maximum authors to be printed. The rest of authors are ignored and the
+`et~al.` is appended to the list of printed authors. This text is
+printed only if the `aumax` value is less than the real number of authors. 
+If you have the same number of authors in the .bib file as you need to print
+but you want to append `et~al.` then you can use `auetal` option.
+
+There is an `aumin:<number>` option which denotes the definitive number of 
+printed authors if the author list is not fully printed due to `aumax`.
+If `aumin` is unused then `aumax` authors is printed in such case.
+
+All authors are printed if `aumax:<number>` option isn't given. 
+There is no internal limit. But you can set the global options in 
+your document by setting the `\biboptions` tokens list. For example:
+
+\begtt
+\biboptions={aumax:7 aumin:1}  
+% if there is 8 or more authors then only first author is printed.
+\entdd
+
+Examples:
+\begtt
+author = "John Green and Bob Brown and Alice Black",
+\endtt
+output:    GREEN, John, Bob BROWN, and Alice BLACK.
+
+\begtt
+author = "John Green and Bob Brown and Alice Black",
+option = "aumax:1",
+\endtt
+output:    GREEN, John~et~al.
+
+\begtt
+author = "John Green and Bob Brown and Alice Black",
+option = "aumax:2",
+\endtt
+output:    GREEN, John, Bob BROWN~et~al.
+
+\begtt
+author = "John Green and Bob Brown and Alice Black",
+option = "aumax:3",
+\endtt
+output:    GREEN, John, Bob BROWN, and Alice BLACK.
+
+\begtt
+author = "John Green and Bob Brown and Alice Black",
+option = "auetal",
+\endtt   
+output:    GREEN, John, Bob BROWN, Alice BLACK~et~al.
+
+If you need to add a text before or after authors list, you can use
+the `auprint:{<value>}` option. The <value> will be printed instead of the
+authors list. The <value> can include `\AU` macro which expands to the authors
+list. Example:
+
+\begtt
+author = "Robert Calbraith",
+option = "auprint:{\AU\space [pseudonym of J. K. Rowling]}",
+\endtt
+output:    CALBRAITH Robert [pseudonym of J. K. Rowling].
+
+You can use the `autrim:<number>` option. All Firstnames of all authors
+are trimmed (i. e. reduced to initials) iff the number of authors in the 
+author field is greater than or equal to `<number>`. There is an exception:
+`autrim:0` means that no Firstnames are trimmed. This is default behavior.
+Another example: `autrim:1` means that all Firstnames are trimmed.
+
+\begtt
+author = "John Green and Bob Brown and Alice Black",
+option = "auetal autrim:1",
+\endtt
+output:    GREEN, J., B. BROWN, A. BLACK~et~al.
+
+If you need to write a team name or institution instead authors, replace all
+spaces by `\ ` in this name. Such text is interpreted as Lastname. You
+can add the secondary name (interpreted as Firstname) after comma. Example:
+
+\begtt
+   author = "Czech\ Technical\ University\ in\ Prague, 
+             Faculty\ of\ Electrical\ Engeneering",
+\endtt
+output:  CZECH TECHNICAL UNIVERSITY IN PRAGUE, Faculty of Electrical Engeneering.
+
+
+\seccc The editor field
+
+The editor field is used for list of the authors of the collection. The
+analogous rules as in author field are used here. It means that the
+authors are separated by \"\code{ and }", the Firstnames, Lastnames etc. are
+interpreted and you can use the options `edmax:<number>`, `edmin:<number>`, 
+`edetal`, `edtrim:<number>` and `edprint:{<value>}` (with `\ED` macro).
+Example:
+\begtt
+editor = "Jan Tomek and Petr Karas",
+option = "edprint:{\ED, editors.} edtrim:1",
+\endtt
+Output:   J. TOMEK and P. KARAS, editors.
+
+If `edprint` option is not set then `{\ED, eds.}` or `{\ED, ed.}` is used
+depending on the entry language and on the singular or plural of 
+the editor(s).
+
+
+\seccc The ednote field
+
+The ednote field is used as the secondary authors and more editional info. The
+value is read as raw data without any interpretation of Lastname, Firstname
+etc.
+\begtt
+ednote = "Illustrations by Robert \upper{Agarwal}, edited by Tom \upper{Nowak}",
+\endtt
+output:   Illustrations by Robert AGARWAL, edited by Tom NOWAK.
+
+The `\upper` command have to be used for Lastnames in ednote field.
+
+
+\seccc The title field
+
+This is the title of the work. It will be printed (in common entry types) by
+italics. The ISO 690 norm declares, that the title plus optional subtitle
+are in italics and they are separated by colon. Next, the optional secondary
+title have to be printed in upright font. This can be added by
+`titlepost:{<value>}`. Example:
+
+\begtt
+title = "The Simple Title of The Work",
+or
+title = "Main Title: Subtitle",
+or
+title  = "Main Title: Subtitle",
+option = "titlepost:{Secondary title}",
+\endtt
+The output of the last example:
+{\it Main Title: Subtitle}. Secondary title.
+
+
+\seccc The edition field
+
+This field is used only for second or more edition of cited work. Write
+only the number without the word "edition". The shortcut "ed." (or something
+else depending on current language) is added automatically. Examples:
+
+\begtt
+edition = "Second",
+edition = "2nd",
+edition = "2$^{\rm nd}$",
+edition = "2.",
+\endtt
+Output of the last example:   2. ed.
+
+\begtt
+edition = "2."
+lang    = "cs",
+\endtt
+Output:   2. vyd.
+
+Note, that the example `edition = "Second"` may cause problems. If you are
+using language "cs" then the output is bad:   Second vyd.  
+But you can use `editionprint:{<value>}` option. The the <value> is printed
+instead of edition field and shortcut. The edition field must be set. Example:
+
+\begtt
+edition = "whatever",
+option  = "editionprint:{Second full revised edition}",
+\endtt
+Output:   Second full revised edition.
+
+You can use `\EDN` macro in `editionprint` value. This macro is expanded 
+to the edition value. Example:
+
+\begtt
+edition = "Second",
+option  = "editionprint:{\EDN\space full revised edition}",
+or
+edition = "Second full revised edition",
+option  = "editionprint:{\EDN}",
+\endtt
+
+
+\seccc The address, publisher, year fields
+
+This is an anachronism from ancient Bib\TeX/ (unfortunately no exclusive) that
+the address field includes only the city of the publisher residence. No more
+data are here. The publisher field includes the name of the publisher.
+
+\begtt
+address = "Berlin",
+publisher = "Springer Verlag",
+year = 2012,
+\endtt
+Output:   Berlin: Springer Verlag, 2012.
+
+Note, that the year needn't to be inserted into quotes because it is pure
+numeric. 
+
+The letter a, b etc. are appended to the year automatically, if two or more
+subsequent entries in the bibliography list are not distinct by the first
+author and year fields. If you needn't this feature, you can use the
+`noautoletters` option.
+
+You can use "yearprint:{<value>}" option. If it is set then the <value>
+is used for printing year instead the real field value. The reason: year is
+sort sensitive, may be you need to print something else than only sorting key.
+Example:
+
+\begtt
+year   = 2000,
+option = "yearpint:{© 2000}",
+\endtt
+Output:  © 2000,  sorted by:  2000.
+
+\begtt
+year   = "2012a",
+option = "yearprint:{2012}",
+\endtt
+Output:  2012,   sorted by:  2012a.
+
+The address, publisher and year are typically mandatory fields. If they are
+missing then the warning occurs. But you can set `unpublished`
+option. Then this warning is suppressed. There is no difference in the
+printed output.
+
+
+\seccc The url field
+
+Use it without `\url` macro, but with `http://` prefix. Example:
+
+\begtt
+url = "http://petr.olsak.net/opmac.html",
+\endtt
+
+The ISO 690 norm recommends to add the text \"Available from" (or
+something else if different current language is used) before URL. 
+It means, that the output of previous example is:
+
+Available from \url{http://petr.olsak.net/opmac.html}.
+
+If the `cs` language is the current one than the output is:
+
+Dostupné z: \url{http://petr.olsak.net/opmac.html}.
+
+If the `urlalso` option is used, then the added text has the form
+\"Available also from" or \"Dostupné také z:" (if `cs` language is
+current).
+
+
+\seccc The citedate field
+
+This is the citation date. The field must be in the form year/month/day. It
+means, that the two slashes must be written here. The output depends on the
+current language. Example:
+
+\begtt
+citedate = "2004/05/21",
+\endtt
+Output when `en` is current:    [cit. 2004-05-21].\nl
+Output when `cs` is current:    [vid. 21.~5.~2004].
+
+
+\seccc The howpublished field
+
+This declares the available medium for cited document if it is not in printed
+form. Alternatives: online, CD, DVD, etc. Example:
+
+\begtt
+howpublished = "online",
+\endtt
+Output:   [online].
+ 
+
+\seccc The volume, number, pages and numbering fields
+
+The volume is the \"big mark" of the journal issue and the number is the
+\"small mark" of the journal issue and pages includes the page range of 
+the cited article in the journal. The volume is prefixed by Vol.~,
+the number by No.~ and the pages by pp.~. But these prefixes depends on the
+language of the entry.
+
+Example:
+
+\begtt
+volume = 31,
+number = 3,
+pages  = "37--42",
+\endtt
+Output:   Vol.~31, No.~3, pp.~37--42.
+
+\begtt
+volume = 31,
+number = 3, 
+pages  = "37--42",
+lang   = "cs",
+\endtt
+Output:   ročník~31, č.~3, s.~37--42.
+
+If you disagree with the default prefixes, you can use the numbering field.
+When it is set then it is used instead of volume, number, pages fields 
+and instead of any mentioned prefixes. The numbering can include macros
+`\VOL`, `\NO`, `\PP`, which are expanded to the respective values of fields. Example:
+
+\begtt
+volume    = 31,
+number    = 3,
+pages     = "37--42"
+numbering = "Issue~\VOL/\NO, pages~\PP",
+\endtt
+Output:   Issue~31/3, pages~37--42
+
+Note: The volume, numbers and pages fields are printed without numbering
+filed only in the `@ARTICLE` entry. It means, that if you need to visible them
+in the `@INBOOK`, `@INPROCEEDINGS` etc. entries, then you must to use numbering field.
+
+
+\seccc Common notes about entries
+
+The order of the fields in the entry is irrelevant. We use the printed order
+in this manual. The exclamation mark (!) denotes the mandatory field. If
+such field is missing then the warning occurs during processing.
+
+If the `unpublished` option is set then the fields address, publisher, year,
+isbn and pages are not mandatory. If the `nowarn` option is set then no
+warnings about missing mandatory fields occurs.
+
+If the field is used but not mentioned in the entry documentation below then
+it is silently ignored.
+
+\secccc The `@BOOK` entry
+
+This is used for book-like entries. 
+
+Fields: author(!), title(!), howpublished, edition, ednote, address(!), 
+publisher(!), year(!), citedate, series, isbn(!), doi, url, note. 
+
+The ednote field here means the secondary authors (illustrator, cover design
+etc.).
+
+\secccc The `@ARTICLE` entry
+
+This is used for articles published in a journal. 
+
+Fields: author(!), title(!), journal(!), howpublished, address, publisher,
+month, year, [numbering or volume, number, pages(!)], citedate, issn,
+doi, url, note. 
+
+If the numbering is used then it is used instead volume, number, pages.
+
+
+\secccc The `@INBOOK` entry
+
+This is used for the part of a book. 
+
+Fields: author(!), title(!), booktitle(!), howpublished, edition, ednote,
+address(!), publisher(!), year(!), numbering, citedate, series, isbn or
+issn, doi, url, note.
+
+The author field is used for author(s) of the part, the editor field
+includes author(s) or editor(s) of whole document. The pages field specifies
+the page range of the part. The series field can include more information
+about the part (chapter numbers etc.).
+
+The `@INPROCEEDINGS` and `@CONFERENCE` entries are equivalent to `@INBOOK` entry.
+
+\secccc The `@THESIS` entry
+
+This is used for student's thesis. 
+
+Fields: author(!), title(!), howpublished, address(!), school(!), 
+month, year(!), citedate, type(!), ednote, doi, url, note. 
+
+The type field must include the text \"Master's Thesis" or something 
+similar (depending on the language of the outer document).
+
+There are nearly equivalent entries: `@BACHELORSTHESIS`, `@MASTERSTHESIS` and
+`@PHDTHESIS`. These entries set the type field to an appropriate value
+automatically. The type field is optional in such case. If it is used then
+it has a precedence before default setting.
+
+\secccc The @MISC entry
+
+It is intended for various usage. 
+
+Fields: author, title, howpublished, ednote, citedate, doi, url, note. 
+
+You can use `\AU`, `\ED`, `\EDN`, `\VOL`, `\NO`, `\PP`, `\ADDR`, `\PUBL`,
+`\YEAR` macros in ednote field. These macros print authors list, editors list,
+edition, volume, number, pages, address, publisher and year field values
+respectively.
+
+The reason of this entry is to give to you the possibility to set the format of
+entry by your own decision. The most of data are concentrated in ednote
+field.
+
+\secccc The `@BOOKLET`, `@INCOLLECION`, `@MANUAL`, `@PROCEEDINGS`, `@TECHREPORT`, `@UNPUBLISHED` entries
+
+These entries are equivalent to `@MICS` entry because we need to save the
+simplicity. They are implemented only for (almost) backward compatibility
+with the ancient Bib\TeX/. But the ednote is mandatory field here, so you
+cannot use these entries from the old databases without warnings and without 
+some additional work with the `.bib` file.
+
+\seccc The cite-marks (bibmark) used when \code{\\nonumcitations} is set
+
+When `\nonumcitations` is set then `\cite` prints text orientes 
+bib-marks instead numbers. This style file autogenerates these marks in the
+form \"Lastname of the first author, comma, space, the year" if bibmark field
+isn't declared. If you need to set an exception from this common format,
+then you can use bibmark field.
+
+The OPmac trick \url{http://petr.olsak.net/opmac-tricks-e.html\#bibmark}
+describes how to redefine the algorithm for bibmark auto-generating when you
+need the short form of the type [Au13].
+
+
+\seccc Sorting
+
+If `\usebib/c` is used then entries are sorted by citation order in the text.
+If `\usebib/s` is used then entries are sorted by \"Lastname, Firstname(s)" of
+the first author and if more entries have this value equal, then the year is
+used (from older to newer). This feature follows the recommendation of the
+ISO 690 norm.
+
+If you have the same authors and the same year, you can control the sorting
+by setting years as 2013, 2013a, 2013b, etc. You can print something
+different to the list using `yearprint{<value>}` option, see the section about
+address, publisher and year above. The real value of year field (ie. not
+yearprint value) is also used in the text oriented bib-marks when 
+`\nonumcitations` is set.
+
+If you have some problems with name sorting, you can use the hidden field
+`key`, which is used for sorting instead of the \"Lastname Firstname(s)"
+of authors. If the `key` field is unset then the \"Lastname Firstname(s)" 
+is used for sorting normally. Example:
+
+\begtt
+author    = "Světla Čmejrková",
+key       = "Czzmejrkova Svetla",
+\endtt
+
+This entry is now sorted between C and D. 
+
+The norm recommends to place the autocitations to the top of the list of
+references. You can do this by setting  `key = "@"`, to each entry with your
+name because the `@` character is sorted before `A`.
+
+
+\seccc Languages
+
+There is the language of the outer document and the languages of each entry.
+The ISO 690 norm recommends that the technical notes (the prefix before URL,
+the media type, the \"and" conjunction between semifinal and final author)
+may be printed in the language of the outer document. The data of the entry
+have to be printed in the entry language (edition ed./vyd., Vol./ročník,
+No./č. etc.). Finally there are the phrases independent on the language
+(for example In:). Unfortunately, the bib\TeX/ supposes that the entry data
+are not fully included in value parts of the fields (see edition, volume
+etc. fields) so the automaton have to add some text during processing.
+But what language have to be chosen?
+
+The current value of the `\language` register at the start of the `.bib`
+processing is decided as the language of the outer document. This language
+is used for technical notes regardless of the entry language. Each entry can
+have the lang field with the two-letter mark of the entry language. This
+language is used for ed./vyd., vol./ročník etc. and it is used for
+hyphenation too. If the entry language is not set then the outer document
+language is used.
+
+If the outer document language is known before creating of the `.bib` file, you
+can store some language-dependent phrases into it. On the other hand, if the
+main document language is unknown, you can use the `\Mtext` macro to
+create the text multilingual. Example:
+
+\begtt
+howpublished = "\Mtext{blue-ray}"
+\endtt
+
+Now, you can set the variants of blue-ray into your macros:
+
+\begtt
+\mtdef {blue-ray}  {Blue-ray disc}  {Blue-ray disk} {}
+\endtt
+
+
+\seccc Tips for using more languages
+
+This style prefers English, Czech and Slovak languages. However, you can add
+more languages. Use the shortcuts of language names (`de` and `pl` in the
+example below). You can define all phrases for your language:
+\begtt
+\def\mtdefx#1#2#3{\sdef{_mt:#1:de}{#2}\sdef{_mt:#1:pl}{#3}}
+
+                          % German              % Polish
+\mtdefx {bib.and}         { und }               { a }
+\mtdefx {bib.phdthesis}   {Ph.D. Dissertation}  {Praca doktorska}
+...
+\endtt
+See more about language phrases in the \ref[langphrases] section.
+
+
+\seccc Summary of non-standard fields
+
+This style uses the following fields unkown by bib\TeX/:
+
+\begtt
+option    ... options separated by spaces
+lang      ... the language two-letter code of one entry
+ednote    ... editional info (secondary authors etc.) or
+              global data in @MISC-like entries
+citedate  ... the date of the citation in year/month/day format
+numbering ... format for volume, number, pages
+isbn      ... ISBN
+issn      ... ISSN
+doi       ... DOI
+url       ... URL
+\endtt
+
+
+\seccc Summary of options
+
+\begtt
+aumax:<number>       ... maximum number of printed authors
+aumin:<number>       ... number of printed authors if aumax exceedes
+autrim:<number>      ... full Firstnames iff number of authors are less than this
+auprint:{<value>}    ... text instead authors list (\AU macro may be used)
+edmax, edmin, edtrim ... similar as above for editors list
+edprint:{<value>}    ... text instead editors list (\ED macro may be used)
+titlepost:{<value>}  ... text after title
+yearprint:{<value>}  ... text instead real year (\YEAR macro may be used)
+editionprint:{<value>} . text instead real edition (\EDN macro may be used)
+urlalso      ... the ``available also from'' is used instead ``available from''
+unpublished  ... the publisher etc. fields are not mandatory
+nowarn       ... no mandatory fields
+\endtt
+
+Another options in the option field are silently ignored.


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/bib-iso690.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/bib-simple.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/bib-simple.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/bib-simple.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,181 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+% bibliography style (simple), version <2020-03-10>, loaded on demand by \usebib
+
+\_ifx\_optexbibstyle\_undefined \_errmessage
+   {This file can be read by: \_string\usebib/? (simple) bibfiles command only}
+   \_endinput \_fi
+
+% misc:
+
+\_def\_maybedot{\_ifnum\_spacefactor=\_sfcode`\.\_relax\_else.\_fi}
+\_tmpnum=\_sfcode`\. \_advance\_tmpnum by-2 \_sfcode`\.=\_tmpnum 
+\_sfcode`\?=\_tmpnum \_sfcode`\!=\_tmpnum
+\_let\.=\_maybedot  % prevents from double periods
+
+% Formating of Author/Editor lists:
+
+\_def\_authorname{%
+  \_ifnum\_NameCount>1
+     \_ifnum0\_namecount=\_NameCount \_mtext{bib.and}\_else , \_fi
+  \_else
+     \_ifx\_dobibmark\_undefined \_edef\_dobibmark{\_Lastname}\_fi
+  \_fi
+  \_bprintc\_Firstname{* }\_bprintc\_Von{* }\_Lastname\_bprintc\_Junior{, *}%
+}
+\_let\_editorname=\_authorname
+
+% Preparing bib-mark (used when \nonumcitations is set):
+
+\_def\_setbibmark{%  
+   \_ifx\_dobibmark\_undefined \_def\_dobibmark{}\_fi
+   \_RetrieveFieldIn{bibmark}\_tmp      
+   \_ifx\_tmp\_empty \_RetrieveFieldIn{year}\_tmp \_edef\_tmp{\_dobibmark, \_tmp}\_fi                
+   \_bibmark=\_ea{\_tmp}%
+}
+
+% Multilinguals:      English     Czech     Slovak
+
+\_mtdef{bib.and}       {, and }    { a }     {}
+\_mtdef{bib.edition}   {edition}   {vydání}  {vydanie}
+\_mtdef{bib.masterthesis} {Master's Thesis}   {Diplomová práce}   {Diplomová práca}
+\_mtdef{bib.phdthesis} {Ph.D. Thesis}   {Disertační práce}  {Dizertačná práca}
+
+
+\_def\_preurl{\_hfil\_break} 
+
+% Non-standard fieldnames:
+
+\_CreateField {isbn}
+\_CreateField {doi}
+\_CreateField {url}
+\_CreateField {bibmark}
+
+% Sorting:
+
+\_SortingOrder{name,year}{lfvj}
+\_SpecialSort {key}
+
+% Entry types:
+
+\_sdef{_print:END}{%
+   \_bprinta [note]       {*.}{}%
+   \_setbibmark
+}  
+\_sdef{_print:book}{%
+   \_bprinta [!author]    {*\.\ }{\_bibwarning}%
+   \_bprintb [title]      {{\_em##1}.\ }{\_bibwarning}%
+   \_bprinta [edition]    {*~\_mtext{bib.edition}.\ }{}%
+   \_bprinta [address]    {*: }{\_bibwarning}%
+   \_bprinta [publisher]  {*, }{\_bibwarning}%
+   \_bprinta [year]       {*.\ }{\_bibwarning}%
+   \_bprinta [isbn]       {ISBN~*.\ }{\_bibwarning}%
+   \_bprintb [url]        {\_preurl\_url{##1}. }{}%
+}
+\_sdef{_print:article}{%
+   \_bprinta [!author]    {*\.\ }{\_bibwarning}%
+   \_bprinta [title]      {*.\ }{\_bibwarning}%
+   \_bprintb [journal]    {{\_em##1}.\ }{\_bibwarning}%
+   \_bprinta [year]       {*, }{}%
+   \_bprinta [volume]     {* }{}%
+   \_bprinta [number]     {(*), }{}%
+   \_bprinta [pages]      {*.\ }{}%
+   \_bprintb [doi]        {DOI~\_ulink[http://dx.doi.org/##1]{##1}.\ }{}%
+}
+\_sdef{_print:inbook}{%
+   \_bprinta [!author]    {*\.\ }{\_bibwarning}%
+   \_bprintb [title]      {{\_em##1.}\ }{\_bibwarning}%
+                         In:~%
+   \_bprinta [!editor]    {*,~eds.\ }{}%
+   \_bprintb [booktitle]  {{\_em##1}.\ }{\_bibwarning}% 
+   \_bprinta [address]    {*: }{\_bibwarning}%
+   \_bprinta [publisher]  {*, }{\_bibwarning}%
+   \_bprinta [year]       {*.\ }{\_bibwarning}%
+   \_bprinta [chapter]    {*.\ }{%
+                         \_bprinta [pages]      {*.\ }{}}%
+   \_bprinta [isbn]       {ISBN~*.\ }{\_bibwarning}%
+   \_bprintb [url]        {\_preurl\_url{##1}. }{}%
+}
+\_slet{_print:inproceedings}{_print:inbook}
+
+\_sdef{_print:incolection}{%
+   \_bprinta [!author]    {*\.\ }{\_bibwarning}%
+   \_bprintb [title]      {{\_em##1}.\ }{\_bibwarning}%
+   \_bprinta [crossreff]  {In~\_cite[*]. }{%
+                         \_bprinta [booktitle]  {*. }{\_bibwarning}%
+                         \_bprinta [!editor]    {*,~eds.\ }{\_bibwarning}%
+                         \_bprinta [edition]    {*~\_mtext{bib.edition}.\ }{\_bibwarning}%
+                         \_bprinta [address]    {*: }{\_bibwarning}%
+                         \_bprinta [publisher]  {*, }{\_bibwarning}%
+                         \_bprinta [year]       {*.\ }{\_bibwarning}%
+                         \_bprinta [pages]      {*.\ }{}%   
+                         \_bprintb [url]        {\_preurl\_url{####1}. }{}}%
+}
+\_sdef{_print:conference}{%
+   \_bprinta [!author]    {*\.\ }{\_bibwarning}%
+   \_bprintb [title]      {{\_em##1}\.\ }{\_bibwarning}%
+   \_bprinta [edition]    {*~\_mtext{bib.edition}.\ }{}%
+   \_bprinta [address]    {*: }{\_bibwarning}%
+   \_bprinta [publisher]  {*, }{\_bibwarning}%
+   \_bprinta [year]       {*.\ }{\_bibwarning}%
+   \_bprinta [isbn]       {ISBN~*.\ }{}%
+   \_bprintb [url]        {\_preurl\_url{##1}. }{}%
+}
+\_sdef{_print:phdthesis}{%
+   \_bprinta [!author]    {*\.\ }{\_bibwarning}%
+   \_bprintb [title]      {{\_em##1}\.\ }{\_bibwarning}%
+                         \_mtext{bib.phdthesis}, %
+   \_bprinta [school]     {*.\ }{}%
+   \_bprinta [address]    {*, }{}%
+   \_bprinta [year]       {*.\ }{}%
+   \_bprintb [url]        {\_preurl\_url{##1}. }{}%
+}
+\_sdef{_print:mastersthesis}{%
+   \_bprinta [!author]    {*\.\ }{\_bibwarning}%
+   \_bprintb [title]      {{\_em##1}\.\ }{\_bibwarning}%
+                         \_mtext{bib.masterthesis}, %
+   \_bprinta [school]     {*.\ }{}%
+   \_bprinta [address]    {*, }{}%
+   \_bprinta [year]       {*.\ }{}%
+   \_bprintb [url]        {\_preurl\_url{##1}. }{}%
+}
+\_sdef{_print:proceedings}{%
+   \_bprinta [!author]    {*\.\ }{\_bibwarning}%
+   \_bprintb [title]      {{\_em##1}\.\ }{\_bibwarning}%
+   \_bprinta [publisher]  {*.\ }{%
+                         \_bprinta [organization] {*.\ }{\_bibwarning}}%
+}   
+\_sdef{_print:techreport}{%
+   \_bprinta [!author]    {*\.\ }{\_bibwarning}%
+   \_bprintb [title]      {{\_em##1}\.\ }{\_bibwarning}%
+                         \_mtext{bib.techreport}.
+   \_bprinta [institution] {*.\ }{}%
+}
+\_sdef{_print:booklet}{%
+   \_bprinta [!author]    {*\.\ }{\_bibwarning}%
+   \_bprintb [title]      {{\_em##1}\.\ }{\_bibwarning}%
+   \_bprinta [howpublished] {*.\ }{\_bibwarning}%
+}
+\_sdef{_print:manual}{%
+   \_bprinta [!author]    {*\.\ }{}%
+   \_bprintb [title]      {{\_em##1}\.\ }{\_bibwarning}%
+   \_bprinta [year]       {*.\ }{}%
+   \_bprinta [institution] {*.\ }{}%
+   \_bprintb [url]        {\_preurl\_url{##1}. }{}%
+}
+\_sdef{_print:misc}{%
+   \_bprinta [!author]    {*\.\ }{}%
+   \_bprintb [title]      {{\_em##1}\.\ }{}%
+   \_bprinta [howpublished] {*.\ }{}%
+   \_bprinta [institution] {*.\ }{}%
+   \_bprinta [series]     {*.\ }{}%
+   \_bprinta [year]       {*.\ }{}%
+   \_bprintb [url]        {\_preurl\_url{##1}. }{}%
+}
+
+%%% end of the style file
+
+\_endcode
+
+You can copy this file to bib-yourname.opm and modify it by your
+needs...


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/bib-simple.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/cite-bib.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/cite-bib.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/cite-bib.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,258 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \cite {Cite, Biblioraphy <2020-03-09>} % loaded in format
+
+   \_doc -----------------------------
+   Registers used by `\cite`, `\bib` macros are declared here.
+   The \`\bibnum` counts the bibliography items from one.
+   The \`\bibmark` is used when `\nonumcitations` is set.
+   \_cod -----------------------------
+
+\_newcount\_bibnum                       % the bibitem counter
+\_newtoks\_bibmark                       % the bibmark used if \nonumcitations
+\_newcount\_lastcitenum \_lastcitenum=0  % for \shortcitations
+\_public \bibnum \bibmark ; 
+
+   \_doc -----------------------------
+   \`\cite` `[<label>,<label>,...,<label>]` manages <labes> using `\_citeA` 
+   and prints `[<bib-marks>]` using `\_printsavedcites`.
+   \nl
+   \`\nocite` `[<label>,<label>,...,<label>]` only manages <labels> but prints nothing.
+   \nl
+   \`\rcite` `[<label>,<label>,...,<label>]` behaves like `\cite` but prints
+    <bib-marks> without brackets. 
+   \nl
+   \`\ecite` `[<label>]{<text>}` behaves like `\rcite [<label>]` but prints
+   <text> instead <bib-mark>. The <text> is hyperlinked like <bib-marks>
+   when `\cite` or `\rcite` is used. 
+   The emptpty internal macro \`\_savedcites` will include the `<bib-marks>` list to
+   be printed. This list is set by `\_citeA` inside group and it is used by
+   `\_printsavedcites` in the same group. Each `\cite`/`\rcite`/`\ecite`  macro 
+   starts from empty list of <bib-marks> because new group is opened.
+   \_cod -----------------------------
+
+\_def\_cite[#1]{{\_citeA#1,,,[\_printsavedcites]}}
+\_def\_nocite[#1]{{\_citeA#1,,,}}
+\_def\_rcite[#1]{{\_citeA#1,,,\_printsavedcites}}
+\_def\_ecite[#1]{\_bgroup\_citeA#1,,,\_ea\_eciteB\_savedcites;}
+\_def\_eciteB#1,#2;#3{\_if?#1\_relax #3\_else \_ilink[cite:#1]{#3}\_fi\_egroup}
+\_def\_savedcites{}
+
+\_public \cite \nocite \rcite \ecite ;
+
+   \_doc -----------------------------
+   `<bib-marks>` may be numbers or a special text related to cited bib-entry.
+   It depends on \`\nonumcitations` and on used bib-style. The mapping from
+   <label> to <bib-mark> is done when `\bib` or `\usebib` is processed.
+   These macros store the information to
+   \`\_Xbib``{<label>}{<number>}{<nonumber>}` where <number> and <nonumber> are
+   two variants of <bib-mark> (numbered or text-like). This information is
+   read from `.ref` file and it is saved to macros
+   `\_bib:<label>` and `\_bibm:<number>`. First one includes number and second
+   one includes <nonumber>. The `\_lastbibnum` macro includes last number of
+   bib-entry used in the document. A designer can use it to set appropriate
+   indentation when printing the list of all bib-entries.
+   \_cod -----------------------------
+
+\_def\_Xbib#1#2#3{\_sdef{_bib:#1}{\_bibnn{#2}&}%
+   \_if^#3^\_else\_sdef{_bim:#2}{#3}\_fi\_def\_lastbibnum{#2}}
+
+   \_doc -----------------------------
+   \`\_citeA` `<label>,` processes one label from list of labels given in the
+   parameter of `\cite`, `\nocite`, `\rcite` or `\ecite` macros. It adds the
+   <label> to global list `\_citelist` which will be used by `\usebib` (it
+   must to know what <labels> are used in the document in order to pick-up
+   only relevant bib-entries from the database. Because we want to save
+   space and not to save the same <label> to `\_citelist` twice, we
+   distinguish four cases:
+   \begitems
+   * `<label>` was not declared by \^`\_Xbib` and it is first such <label> in the
+     document: Then `\_bib:<label>` is undefined and we save label using
+     `\_addcitlist`, write warning on the terminal and define
+     `\_bib:<label>` as empty.
+   * `<label>` was not declared by \^`\_Xbib` but it was used previously in the
+     document: Then `\_bib:<label>` is empty and we do nothing (only data to
+     `\_savedcites` are saved).
+   * `<label>` was declared by \^`\_Xbib` and it is first such <label> in the
+     document: Then `\_bin:<label>` includes `\_bibnn{<number>}&` and we
+     test this case by `\if &\_bibnn{<number>}&`. This is true when `\_bibnn{<number>}`
+     expands to empty. The <label> is saved by `\_addcitelist` and 
+     `\_bib:<label>` is re-defined directly as <number>.
+   * `<label>` was declared by \^`\_Xbib` and it was used previously in the
+     document. Then we do nothing (only data to `\_savedcites` are saved.
+   \enditems
+   The `\_citeA` macro runs repeatedly over whole list of <labels>.
+   \_cod -----------------------------
+
+\_def\_citeA #1#2,{\_if#1,\_else 
+   \_if *#1\_addcitelist{*}\_ea\_skiptorelax \_fi
+   \_ifcsname _bib:#1#2\_endcsname \_else
+      \_addcitelist{#1#2}%
+      \_opwarning{The cite [#1#2] unknown. Try to TeX me again}\_openref
+      \_addto\_savedcites{?,}\_def\_sortcitesA{}\_lastcitenum=0
+      \_ea\_gdef \_csname _bib:#1#2\_endcsname {}%
+      \_ea\_skiptorelax \_fi
+   \_ea\_ifx \_csname _bib:#1#2\_endcsname \_empty
+      \_addto\_savedcites{?,}\_def\_sortcitesA{}\_lastcitenum=0
+      \_ea\_skiptorelax \_fi
+   \_def\_bibnn##1{}%
+   \_if &\_csname _bib:#1#2\_endcsname 
+      \_def\_bibnn##1##2{##1}%
+      \_addcitelist{#1#2}%
+      \_sxdef{_bib:#1#2}{\_csname _bib:#1#2\_endcsname}%
+   \_fi
+   \_edef\_savedcites{\_savedcites \_csname _bib:#1#2\_endcsname,}%
+   \_relax
+   \_ea\_citeA\_fi
+}
+\_def\_addcitelist#1{\_global\_addto\_citelist{\_citeI[#1]}}
+\_def\_citelist{} 
+
+   \_doc -----------------------------
+   The `<bib-marks>` (in numeric or text form) are saved in \^`\_savedcites`
+   macro separated by commas.
+   The \`\_printsavedcites` prints them by normal order or sorted if
+   \`\sortcitations` is specified or condensed if \`\shordcitations` is
+   specified.\nl 
+   The `\sortcitations` appends the dummy number 300000 and we suppose that normal 
+   numbers of bib-entries are less than this constant. 
+   This constant is removed after sorting algorithm.
+   The \`\shortcitations` sets simply `\_lastcitenum=1`.
+   The macros for <bib-marks> printing follows (sorry, without detail
+   documentation). They are documented in `opmac-d.pdf` (but only in Czech).
+   \_cod -----------------------------
+
+\_def\_printsavedcites{\_sortcitesA 
+   \_chardef\_tmpb=0 \_ea\_citeB\_savedcites,%
+   \_ifnum\_tmpb>0 \_printdashcite{\_the\_tmpb}\_fi
+}
+\_def\_sortcitesA{}
+\_def\_sortcitations{%
+  \_def\_sortcitesA{\_edef\_savedcites{300000,\_ea}\_ea\_sortcitesB\_savedcites,%
+                    \_def\_tmpa####1300000,{\_def\_savedcites{####1}}\_ea\_tmpa\_savedcites}%
+}
+\_def\_sortcitesB #1,{\_if $#1$%
+  \_else
+     \_mathchardef\_tmpa=#1
+     \_edef\_savedcites{\_ea}\_ea\_sortcitesC \_savedcites\_end
+     \_ea\_sortcitesB 
+  \_fi
+}
+\_def\_sortcitesC#1,{\_ifnum\_tmpa<#1\_edef\_tmpa{\_the\_tmpa,#1}\_ea\_sortcitesD 
+                   \_else\_edef\_savedcites{\_savedcites#1,}\_ea\_sortcitesC\_fi}
+\_def\_sortcitesD#1\_end{\_edef\_savedcites{\_savedcites\_tmpa,#1}}
+
+\_def\_citeB#1,{\_if$#1$\_else
+   \_if?#1\_relax??%
+      \_else
+      \_ifnum\_lastcitenum=0   % only comma separated list
+         \_printcite{#1}%
+      \_else
+         \_ifx\_citesep\_empty  % first cite item
+            \_lastcitenum=#1\_relax
+            \_printcite{#1}%
+         \_else               % next cite item
+            \_advance\_lastcitenum by1
+            \_ifnum\_lastcitenum=#1\_relax % cosecutive cite item
+               \_mathchardef\_tmpb=\_lastcitenum
+            \_else  % there is a gap between cite items
+               \_lastcitenum=#1\_relax
+               \_ifnum\_tmpb=0 % previous items were printed
+                  \_printcite{#1}%
+               \_else
+                  \_printdashcite{\_the\_tmpb}\_printcite{#1}\_chardef\_tmpb=0
+   \_fi\_fi\_fi\_fi\_fi
+   \_ea\_citeB\_fi
+}
+\_def\_shortcitations{\_lastcitenum=1 }
+
+\_def\_printcite#1{\_citesep\_ilink[cite:#1]{\_citelinkA{#1}}\_def\_citesep{,\_hskip.2em\_relax}}
+\_def\_printdashcite#1{\_ifmmode-\_else\_hbox{--}\_fi\_ilink[cite:#1]{\_citelinkA{#1}}}
+\_def\_citesep{}
+
+\_def\_nonumcitations{\_lastcitenum=0\_def\_sortcitesA{}\_def\_etalchar##1{$^{##1}$}%
+   \_def\_citelinkA##1{\_isdefined{_bim:##1}\_iftrue \_csname _bim:##1\_endcsname
+      \_else ##1\_opwarning{\_noexpand\_nonumcitations + empty bibmark. Maybe bad BibTeX style}\_fi}
+}
+\_def\_citelinkA{}
+
+\_public \nonumcitations \sortcitations \shortcitations ;
+
+   \_doc -----------------------------
+   The \`\bib` `[<label>] {<optional bib-mark>}` prints one bib-entry
+   without reading any database. The bib-enty follows after this command.
+   This command counts the used `\bib`s from one by `\bibnum` counter and
+   saves \^`\_Xbib``{<label>}{\_the\_bibnum}{\_the\_bibmark}` into `.ref` file
+   immediately using `\_wbib`. This is the core of creation of mapping from 
+   `<labels>` to `<bib-marks>`.
+   \_cod -----------------------------
+
+\_def\_bib[#1]{\_def\_tmp{\_isnextchar={\_bibA[#1]}{\_bibmark={}\_bibB[#1]}}%
+   \_ea\_tmp\_romannumeral-`\.} % ignore optional space
+\_def\_bibA[#1]=#2{\_bibmark={#2}\_bibB[#1]}
+\_def\_bibB[#1]{\_par \_bibskip
+   \_advance\_bibnum by1
+   \_noindent \_def\_tmpb{#1}\_wbib{#1}{\_the\_bibnum}{\_the\_bibmark}%
+   \_printlabel{#1}%
+   \_printbib \_ignorespaces
+}
+\_def\_wbib#1#2#3{\_dest[cite:\_the\_bibnum]%
+   \_ifx\_wref\_wrefrelax\_else \_immediate\_wref\_Xbib{{#1}{#2}{#3}}\_fi}
+
+\_public \bib ;
+
+   \_doc -----------------------------
+   The \`\_printbib` prints the bib-entry itself. You can re-define it if you
+   want different design. The `\_pritbib` starts in horizontal mode after
+   `\noindent` and after the eventual hyperlink destination is inserted.
+   By default, the `\_printbib` sets the indentation
+   by `\hangindent` and prints numeric <bib-marks> by
+   `\llap{[\the\bibnum]}` If `\nonumcitations` then the `\_citelinkA` is not
+   empty and <bib-marks> (`\the\bibnum` nor `\the\bibmark`) are not printed. 
+   The text of bib-entry follows. User can create this text manually 
+   using `\bib` command or it is generated automatically from a `.bib` database 
+   by `\usebib` command.
+
+   The vertical space between bib-entries is controlled by \`\_bibskip` macro.
+   \_cod -----------------------------
+
+\_def \_printbib {\_hangindent=\_iindent
+   \_ifx\_citelinkA\_empty \_hskip\_iindent \_llap{[\_the\_bibnum] }\_fi
+}
+\_def \_bibskip {\_ifnum\_bibnum>0 \_smallskip \_fi}
+
+   \_doc -----------------------------
+   The \`\usebib` command is implemted in `usebib.opm` file which is loaded
+   when the `\usebib` command is firstly used. 
+   The `usebib.opm` file loads the `librarian.tex` for scaning the `.bib`
+   files. See the section~\ref[usebib], where the file `usebib.opm` is
+   documented.
+   \_cod -----------------------------
+
+\_def\_usebib{\_par \_opinput {usebib.opm} \_usebib}
+\_def\usebib{\_usebib}
+
+   \_doc -----------------------------
+   The macros above works if all `\cite` (or similar) commands are used
+   before the `\usebib` command is used because `\usebib` prints only such
+   bib-entries their <labels> are saved in the `\_citelist`. But if some
+   `\cite` is used after `\usebib`, then `\usebib` sets `\_addcitelist` to
+   \`\_writeXcite`, so such `\cite` saves the information to the
+   `.ref`file in the format \`\_Xcite``{<label>}`. Such information are copied
+   to `\_citelistB` during reading `.ref` file and `\usebib` concats two
+   lists of <labels> from `\_citelist` and `\_citelistB` and
+   uses this concatenated list.
+   \_cod -----------------------------
+
+\_def\_Xcite#1{\_addto\_citelistB{\_citeI[#1]}}
+\_def\_writeXcite#1{\_openref\_immediate\_wref\_Xcite{{#1}}}
+\_def\_citelistB{}
+
+\_endcode % -------------------------------------
+
+See end of the `usebib.opm` file for documentation about creating style
+files `bib-<style>.opm`.
+
+See end of the `bib-iso690.opm` file for large documentation about `.bib` files
+structure and about usage of `iso690` bib-style.
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/cite-bib.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/colors.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/colors.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/colors.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,393 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \colordef {Colors <2020-03-18>} % loaded in format
+
+   \_doc -----------------------------
+   We declare internal boolean value \`\_iflocalcolor` ad do
+   \`\localcolor` as default.
+   \_cod -----------------------------
+
+\_newifi \_iflocalcolor \_localcolortrue  
+\_protected\_def \_localcolor   {\_localcolortrue}  
+\_protected\_def \_nolocalcolor {\_localcolorfalse}
+\_public \localcolor \nolocalcolor ;
+
+   \_doc -----------------------------
+   The basic colors in CMYK 
+   \`\Blue` \`\Red` \`\Brown` \`\Green` \`\Yellow` \`\Cyan` \`\Magenta` 
+   \`\Grey` \`\LightGrey` \`\White` and \`\Black`
+   are declared here.
+   \_cod -----------------------------
+
+\_def\Blue      {\_setcmykcolor{1 1 0 0}}
+\_def\Red       {\_setcmykcolor{0 1 1 0}}
+\_def\Brown     {\_setcmykcolor{0 0.67 0.67 0.5}}
+\_def\Green     {\_setcmykcolor{1 0 1 0}}
+\_def\Yellow    {\_setcmykcolor{0 0 1 0}}
+\_def\Cyan      {\_setcmykcolor{1 0 0 0}}
+\_def\Magenta   {\_setcmykcolor{0 1 0 0}}
+\_def\Grey      {\_setcmykcolor{0 0 0 0.5}}
+\_def\LightGrey {\_setcmykcolor{0 0 0 0.2}}
+\_def\White     {\_setgreycolor{1}}
+\_def\Black     {\_setgreycolor{0}}
+
+   \_doc -----------------------------
+   By default, the \`\setcmykcolor` \`\setrgbcolor` and \`\setgreycolor`
+   macros with `{<componetns>}` parameter
+   expand to `\_setcolor{<pdf-primitive>}` using \`\_formatcmyk`
+   or \`\_formatrgb` or \`\_formatgrey` expandable macros.
+   For example `\setrgbcolor{1 0 0}` expands to `\_setcolor{1 0 0 rg 1 0 0 RG}`.\nl
+   We set both types of colors (for lines (`K` or `RG` or `G`) and for fills
+   (`r` or `rg` or `g`) together in the <pdf-primitive> command.
+   This is the reason why the \`\_fillstroke` uses both its parameters.   
+   If only fills are needed you can do `\def\_fillstroke#1#2{#1}`.
+   If only strokes are needed you can do `\def\_fillstroke#1#2{#2}`.
+   \_cod -----------------------------
+
+\_def\_setcmykcolor#1{\_setcolor{\_formatcmyk{#1}}}
+\_def\_setrgbcolor#1{\_setcolor{\_formatrgb{#1}}}
+\_def\_setgreycolor#1{\_setcolor{\_formatgrey{#1}}}
+\_def\_formatcmyk#1{\_fillstroke{#1 k}{#1 K}}
+\_def\_formatrgb#1{\_fillstroke{#1 rg}{#1 RG}}
+\_def\_formatgrey#1{\_fillstroke{#1 g}{#1 G}}
+\_def\_fillstroke#1#2{#1 #2}
+\_public \setcmykcolor \setrgbcolor \setgreycolor ;
+
+   \_doc -----------------------------
+   The \`\onlyrgb` declaration redefines \^`\_formatcmyk` in order it expands
+   to its conversion to RGB <pdf-primitive>. This conversion is done by
+   the \^`\_cmyktorgb` macro. Moreover, `\onlyrgb` re-defines three basic RGB
+   colors for RGB color space and re-declares \^`\colordef` as \^`\rgbcolordef`.
+   The \hbox{\`\onlycmyk`} macro does a similar work, it re-defines \^`\_formatrgb`
+   macro. The Grey color space is unchanged and works in both main
+   settings (RGB or CMYK) without collisions.
+   \_cod -----------------------------
+
+\_def\_onlyrgb{\_def\Red{\_setrgbcolor{1 0 0}}%
+   \_def\Green{\_setrgbcolor{0 1 0}}\_def\Blue{\_setrgbcolor{0 0 1}}%   
+   \_let\_colordef=\_rgbcolordef 
+   \_def\_formatrgb##1{\_fillstroke{##1 rg}{##1 RG}}%
+   \_def\_formatcmyk##1{\_fillstroke{\_cmyktorgb ##1 ; rg}{\_cmyktorgb ##1 ; RG}}}
+\_def\_onlycmyk{\_def\_formatcmyk##1{\_fillstroke{##1 k}{##1 K}}%
+   \_def\_formatrgb##1{\_fillstroke{\_rgbtocmyk ##1 ; k}{\_rgbtocmyk ##1 ; K}}}
+\_public \onlyrgb \onlycmyk ;
+
+   \_doc -----------------------------
+   The \`\_setcolor` macro redefines empty `\_ensureblack` macro (used in
+   output routine for headres and footers) to `\_ensureblackA` which sets
+   Black at the start of its parameter and retunrs to the current color at the
+   end of its parameter. The current color
+   is saved into `\_currentcolor` macro and colorstack is pushed.
+   Finally, the `\_colorstackpop` is initialized by `\aftergroup` if
+   `\localcolor` is declared.
+
+   You can save current color to your macro  by `\let\yourmacro=\_currentcolor` 
+   and you can return to this color by the command `\_setcmykcolor\yourmacro`.
+   \_cod -----------------------------
+
+\_protected\_def \_setcolor #1{\_global\_let\_ensureblack=\_ensureblackA
+   \_iflocalcolor \_edef\_currentcolor{#1}\_colorstackpush\_currentcolor 
+                  \_aftergroup\_colorstackpop
+   \_else         \_xdef\_currentcolor{#1}\_colorstackset\_currentcolor \_fi
+}
+\_def\_pdfblackcolor{0 g 0 G}
+\_edef\_currentcolor{\_pdfblackcolor}
+\_def\_ensureblackA#1{\_global\_let\_openfnotestack=\_openfnotestackA
+   \_colorstackpush\_pdfblackcolor #1\_colorstackpop}
+
+   \_doc -----------------------------
+   The colorstack is initialized here and the basic macros 
+   \`\_colorstackpush`, \`\_colorstackpop` and \`\_colorstackset`
+   are defined here.
+   \_cod -----------------------------
+
+\_mathchardef\_colorstackcnt=0 % Implicit stack usage
+\_def\_colorstackpush#1{\_pdfcolorstack\_colorstackcnt push{#1}}
+\_def\_colorstackpop{\_pdfcolorstack\_colorstackcnt pop}
+\_def\_colorstackset#1{\_pdfcolorstack\_colorstackcnt set{#1}}
+
+   \_doc -----------------------------
+   We need to open a special color stack for footnotes, because footnotes
+   can follow on next pages and their colors are independent on colors
+   used in the main page-body. The \`\_openfnotestack` is defined as
+   \`\_openfnotestackA` when the \^`\_setcolor` is used first.
+   The \`\_fnotestack` is initializedin in `\everyjob` because the
+   initialization is not saved to the format.
+   \_cod -----------------------------
+
+%\_mathchardef\_fnotestack=\_pdfcolorstackinit page {0 g 0 G} % must be in \everyjob
+\_def \_openfnotestackA {\_pdfcolorstack\_fnotestack current}
+
+   \_doc -----------------------------
+   We use lua codes for RGB to CMYK or CMYK to RGB conversions and for
+   addition color components in the \^`\colordef` macro.
+   The \`\_rgbtocmyk` `<R> <G> <B> ;` expands to `<C> <M> <Y> <K>` and
+   the \`\_cmyktorgb` `<C> <M> <Y> <K> ;` expands to `<R> <G> <B>`.
+   The \`\_colorcrop`, \`\_colordefFin` and \`\_douseK` are auxiliary macros
+   used in the \^`\colordef`. The `\_colorcrop` rescales color components in order
+   to they are in $[0,1]$ interval. The `\colordefFin` expands to the values
+   accumulated in Lua code `color_C`, `color_M`, `color_Y` and `color_K`.
+   The `\_douseK` applies \^`\useK` to CMYK components.
+   \_cod -----------------------------
+
+\_def\_rgbtocmyk #1 #2 #3 ;{%
+   \_ea \_stripzeros \_detokenize \_ea{\_directlua{
+      local kr = math.max(#1,#2,#3)
+      if (kr==0) then
+         tex.print('0. 0. 0. 1 ;')
+      else
+         tex.print(string.format('\_pcent.3f \_pcent.3f \_pcent.3f \_pcent.3f ;',
+            (kr-#1)/kr, (kr-#2)/kr, (kr-#3)/kr, 1-kr))
+      end
+}}}
+\_def\_cmyktorgb #1 #2 #3 #4 ;{%
+   \_ea \_stripzeros \_detokenize \_ea{\_directlua{
+      local kr = 1-#4
+      tex.print(string.format('\_pcent.3f \_pcent.3f \_pcent.3f ;',
+         (1-#1)*kr, (1-#2)*kr, (1-#3)*kr))
+}}}
+\_def\_colorcrop{\_directlua{
+   local m=math.max(color_C, color_M, color_Y, color_K)
+   if (m>1) then
+      color_C=color_C/m  color_M=color_M/m  color_Y=color_Y/m color_K=color_K/m
+   end
+}}
+\_def\_colordefFin{\_colorcrop \_ea \_stripzeros \_detokenize \_ea{\_directlua{
+   tex.print(string.format('\_pcent.3f \_pcent.3f \_pcent.3f \_pcent.3f ;',
+      color_C, color_M, color_Y, color_K))
+}}}
+\_def\_douseK{\_colorcrop \_directlua{
+   kr=math.min(color_C, color_M, color_Y)
+   if (kr>=1) then
+      color_C=0  color_M=0  color_Y=0  color_K=1
+   else
+      color_C=(color_C-kr)/(1-kr)  color_M=(color_M-kr)/(1-kr)
+      color_Y=(color_Y-kr)/(1-kr)  color_K=math.min(color_K+kr,1)
+   end
+}}
+
+   \_doc -----------------------------
+   We have a problem with the `%.3f` directive in Lua code. It prints trailed
+   zeros: (0.300 instead desired 0.3) but we want to save PDF file space. The macro
+   \`\_stripzeros` removes these trailing zeros at expand processor
+   level. So `\_stripzeros 0.300 0.400 0.560 ;` expands to `.3 .4 .56`.
+   \_cod -----------------------------
+
+\_def\_stripzeros #1.#2 #3{\_ifx0#1\_else#1\_fi.\_stripzeroA #2 0 :%
+    \_ifx;#3\_else \_space \_ea\_stripzeros\_ea#3\_fi}
+\_def\_stripzeroA #10 #2:{\_ifx^#2^\_stripzeroC#1:\_else \_stripzeroB#1 0 :\_fi} 
+\_def\_stripzeroB #10 #2:{\_ifx^#2^\_stripzeroC#1:\_else #1\_fi}
+\_def\_stripzeroC #1 #2:{#1}
+
+   \_doc -----------------------------
+   The \`\rgbcolordef` and \`\cmykcolordef` use common macro
+   \`\_commoncolordef` with different first four parameters.
+   The `\_commoncolordef <selector><K><R><G><what-define>{<data>}` does the
+   real work. It initializes the Lua variables for summation. 
+   It expands <data> in the group where color selectors have
+   special meaning, then it adjusts the resulting string by \^`\replstring`
+   and runs it. Example shows how the <data> are processed:
+   \begtt
+   input <data>: ".3\Blue + .6^\KhakiC \useK -\Black"
+   expanded to:  ".3 !=K 1 1 0 0 +.6^!=R .804 .776 .45 \_useK -!=G 0"
+   adjusted to:  "\_addcolor .3!=K 1 1 0 0 \_addcolor .6!^R .804 .776 .45
+                  \_useK \_addcolor -1!=G 0"  
+   and this is processed.
+   \endtt
+   \`\_addcolor` `<coef.>!<mod><type>` expands to `\_addcolor:<mod><type> <coef>`
+   for example it expands to `\_addcolor:=K <coef>` followed by one or three or four
+   numbers (depending on <type>). <mod> is `=` (use as is) or `^` (use
+   complementary color). <type> is `K` for CMYK, `R` for RGB and `G` for
+   GREY color space. Uppercase <type> informs that `\cmykcolordef` is
+   processed and lowercase <type> informs that `\rgbcolordef` is processed.
+   All variants of commands `\_addcolor:<mod><type>` are defined. All of
+   them expand to `\_addcolorA <v1> <v2> <v3> <v4>` which adds the values of Lua
+   variables. The `\rgbcolordef` uses `\_addcolorA <R> <G> <B> 0` and 
+   `\cmkykcolordef` uses `\_addcolorA <C> <M> <Y> <K>`. So the Lua variable
+   names are a little confusing when `\rgbcolordef` is processed. 
+
+   Next, `\_commoncolordef` saves resulting values from Lua to `\_tmpb`
+   using `\_colordefFin`. If `\rgbcolordef` is processed, then we must to
+   remove the last <K> component which is in the format `.0` in such case.
+   The `\_stripK` macro does it.
+   Finally, the `<what-define>` is defined as `<selector>{<expanded _tmpb>}`,
+   for example `\_setcmykclor{1 0 .5 .3}`.
+   \_cod -----------------------------
+
+\_def\_rgbcolordef  {\_commoncolordef \_setrgbcolor  krg}
+\_def\_cmykcolordef {\_commoncolordef \_setcmykcolor KRG}
+\_def\_commoncolordef#1#2#3#4#5#6{%
+  \_begingroup
+     \_directlua{color_C=0 color_M=0 color_Y=0 color_K=0}%
+     \_def\_setcmykcolor##1{!=#2 ##1 }%
+     \_def\_setrgbcolor ##1{!=#3 ##1 }%
+     \_def\_setgreycolor##1{!=#4 ##1 }%
+     \_let\_useK=\_relax
+     \_edef\_tmpb{+#6}%
+     \_replstring\_tmpb{+ }{+}\_replstring\_tmpb{- }{-}%
+     \_replstring\_tmpb{+}{\_addcolor}\_replstring\_tmpb{-}{\_addcolor-}% 
+     \_replstring\_tmpb{^!=}{!^}\_replstring\_tmpb{-!}{-1!}%
+     \_ifx K#2\_let\_useK=\_douseK \_fi
+     \_tmpb
+     \_edef\_tmpb{\_colordefFin}%
+     \_ifx k#2\_edef\_tmpb{\_ea\_stripK \_tmpb;}\_fi
+  \_ea\_endgroup
+  \_ea\_def\_ea#5\_ea{\_ea#1\_ea{\_tmpb}}%
+}
+\_def\_addcolor#1!#2#3{\_cs{addcolor:#2#3}#1}
+\_def\_addcolorA #1 #2 #3 #4 #5 {%
+   \_def\_tmpa{#1}\_ifx\_tmpa\_empty \_else \_edef\_tmpa{\_tmpa*}\_fi
+   \_directlua{color_C=math.max(color_C+\_tmpa#2,0) 
+               color_M=math.max(color_M+\_tmpa#3,0)
+               color_Y=math.max(color_Y+\_tmpa#4,0)
+               color_K=math.max(color_K+\_tmpa#5,0)
+}}
+\_sdef{addcolor:=K}#1 #2 #3 #4 #5 {\_addcolorA #1 #2 #3 #4 #5 }
+\_sdef{addcolor:^K}#1 #2 #3 #4 #5 {\_addcolorA #1 (1-#2) (1-#3) (1-#4) #5 }
+\_sdef{addcolor:^G}#1 #2 {\_addcolorA #1 0 0 0 #2 }
+\_sdef{addcolor:=G}#1 #2 {\_addcolorA #1 0 0 0 (1-#2) }
+\_sdef{addcolor:=R}#1 #2 #3 #4 {%
+   \_edef\_tmpa{\_noexpand\_addcolorA #1 \_rgbtocmyk #2 #3 #4 ; }\_tmpa
+}
+\_sdef{addcolor:^R}#1 #2 #3 #4 {\_cs{addcolor:=R}#1 (1-#2) (1-#3) (1-#4) }
+
+\_sdef{addcolor:=k}#1 #2 #3 #4 #5 {%
+   \_edef\_tmpa{\_noexpand\_addcolorA #1 \_cmyktorgb #2 #3 #4 #5 ; 0 }\_tmpa
+}
+\_sdef{addcolor:^k}#1 #2 #3 #4 #5 {\_cs{addcolor:=k}#1 (1-#2) (1-#3) (1-#4) #5 }
+\_sdef{addcolor:^g}#1 #2 {\_addcolorA #1 (1-#2) (1-#2) (1-#2) 0 }
+\_sdef{addcolor:=g}#1 #2 {\_addcolorA #1 #2 #2 #2 0 }
+\_sdef{addcolor:=r}#1 #2 #3 #4 {\_addcolorA #1 #2 #3 #4 0 }
+\_sdef{addcolor:^r}#1 #2 #3 #4 {\_addcolorA #1 (1-#2) (1-#3) (1-#4) 0 }
+\_def\_stripK#1 .0;{#1}
+\_let\_colordef=\_cmykcolordef  % default \_colordef is \_cmykcolordef
+
+   \_doc -----------------------------
+   Public versions of \`\colordef` and \`\useK` macros are declared using 
+   `\_def`, because the internal versions `\_colordef` and `\_useK` are
+   changed during processing.
+   \_cod -----------------------------
+
+\_def \useK{\_useK}
+\_def \colordef {\_colordef}
+\_public \cmykcolordef \rgbcolordef ;
+
+   \_doc -----------------------------
+   The \LaTeX/ file `x11nam.def` is read by \`\morecolors`. The numbers
+   0,1,2,3,4 are transformed to letters O, <none>, B, C, D in the name of the
+   color. Colors defined already are not re-defined. The empty \`\_showcolor`
+   macro should be re-defined for color catalog printing. For example:
+   \begtt
+   \def\vr{\vrule height10pt depth2pt width20pt}
+   \def\_showcolor{\hbox{\tt\_bslash\_tmpb: \csname\_tmpb\endcsname \vr}\space\space}
+   \begmulti 4 \typosize[11/14] 
+   \morecolors
+   \endmulti
+   \endtt 
+   \_cod -----------------------------
+
+\_def\_morecolors{%
+   \_long\_def\_tmp##1\preparecolorset##2##3##4##5{\_tmpa ##5;,,,;} 
+   \_def\_tmpa##1,##2,##3,##4;{\_ifx,##1,\_else 
+      \_def\_tmpb{##1}\_replstring\_tmpb{1}{}\_replstring\_tmpb{2}{B}% 
+      \_replstring\_tmpb{3}{C}\_replstring\_tmpb{4}{D}\_replstring\_tmpb{0}{O}%
+      \_ifcsname \_tmpb\_endcsname \_else 
+          \_sdef{\_tmpb}{\_setrgbcolor{##2 ##3 ##4}}\_showcolor\_fi 
+      \_ea\_tmpa\_fi
+   } 
+   \_ea\_tmp\_input x11nam.def
+}
+\_let\_showcolor=\_relax % re-define it if you want to print a color catalog
+\_public \morecolors ;
+
+\_endcode % -------------------------------------
+
+The colors have different behavior than fonts. A marks (whatsits) with color
+information are stored into PDF output and \TeX/ doesn't interpret them.  
+The PDF viewer (or PDF interpreter in a printer) reads these marks 
+and switches colors according to them. This
+is totally independent on \TeX/ group mechanism. You can declare
+`\nolocalcolor` at the beginning of the document, if you want this behavior.
+In this case, if you set a color then you must to return back to black color
+using `\Black` manually.
+
+By default, \OpTeX/ sets `\localcolor`. It means that the typesetting
+returns back to a previous color at the end of current group, so you cannot
+write `\Black` explicitly. This is implemented using `\aftergroup` feature.
+There is a limitation of this feature: when a color selector is used in a
+group of a box, which is saved by `\setbox`, then the activity or
+reconstruction of previous color are processed at `\setbox` time, no in the
+box itself. You must correct it by double group: 
+\begtt 
+\setbox0=\hbox{\Red text}   % bad:  \Black is done after \setbox 
+\setbox0=\hbox{{\Red text}} % good: \Black is done after group inside the box 
+\endtt
+  
+The implementation of colors is based on colorstack, so the current color
+can follow across more pages. It is not so obvious because PDF viewer (or PDF
+interpreter) manipulates with colors locally at each PDF page and it
+initializes each PDF page with black on white color.
+
+Macros \^`\setcmykcolor``{<C> <M> <Y> <K>}` or \^`\setrgbcolor``{<R> <G> <B>}`
+or\nl \^`\setgreycolor``{<Grey>}` should be used in color selectors or user can
+specify these macros explicitly.
+
+The color mixing processed by the \^`\colordef` is done in the substractive color
+model CMYK. If the result has a component greater than 1 then all
+components are multiplied by a coefficient in order to maximal component is
+equal to 1.
+
+You can move a shared amount of CMY components (i.e. their minimum) to the
+$K$ component. This saves the color tonners and the result is more true.
+This should be done by \^`\useK` command at the end of a linear combination
+used in `\colordef`. For example 
+\begtt
+\colordef \myColor {.3\Green + .4\Blue \useK}
+\endtt
+The `\useK` command exactly does:
+$$
+  \displaylines{
+  k' =\min(C,M,Y), \cr \ C=(C-k')/(1-k'), \ M=(M-k')/(1-k'), \ Y=(Y-k')/(1-k'), \cr
+  K = \min(1,K+k').
+}
+$$
+
+You can use minus instead plus in the linear combination in `\colordef`. The
+given color is substracted in such case and the negative components are
+rounded to zero immediately. For example
+\begtt
+\colordef \Color {\Brown-\Black} 
+\endtt
+can be used for removing black component from the color. You can use
+the `-\Black` trick after `\useK` command in order to remove grey components
+occured during color mixing.
+
+Finally, you can use `^` immediately preceeded before macro name of the
+color. Then the complementary color is used here.
+\begtt
+\colordef\mycolor{\Grey+.6^\Blue} % the same as \colordef\mycolor{\Grey+.6\Yellow} 
+\endtt
+
+The \^`\rgbcolordef` can be used to mix colors in additive color model RGB.
+If \^`\onlyrgb` is declared, then \^`\colordef` works as \^`\rgbcolordef`.
+
+If a CMYK to RGB or RGB to CMYK conversion is needed then 
+the following simple formulae are used
+(ICC profiles are not supported):
+$$
+\displaylines{
+   \hbox{CMYK to RGB:}\cr
+   R = (1-C)(1-K), \ G = (1-M)(1-K), \ B = (1-Y)(1-K). \cr
+   \hbox{RGB to CMYK:}\cr
+   K'=\max(R,G,B), \ C=(K'-R)/K', \ M=(K'-G)/K', \ Y=(K'-B)/K', \ K=1-K'. 
+}
+$$
+The RGB to CMYK conversion is invoked when a color is declared using `\setrgbcolor`
+and it is used in \^`\colordef` or if it is printed when \^`\onlycmyk` is declared. 
+The CMYK to RGB conversion is invoked when a color is declared using \^`\setcmykcolor`
+and it is used in \^`\rgbcolordef` or if it is printed when \^`\onlyrgb` is declared.
+
+\_endinput
+
+2020-04-22 \replstring\tmpb{+ }{+}, {- }{-} added in \colordef, bug fixed
+2020-03-18 introduced 


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/colors.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/doc.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/doc.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/doc.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,266 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \printdoc {Macros for documentation printing <2020-04-28>}
+
+   \_doc -----------------------------
+   General decalarations.
+   \_cod -----------------------------
+
+\_fontfam[lmfonts]
+\_hyperlinks \Green \Green
+\_enlang
+\_enquotes
+
+   \_doc -----------------------------
+   Maybe, somebody needs `\seccc` or `\secccc`?
+   \_cod -----------------------------
+
+\_eoldef\seccc#1{\_medskip \_noindent{\_bf#1}\_par\_nobreak\_firstnoindent}
+\_def\secccc{\_medskip\_noindent $\_bullet$ }
+
+   \_doc -----------------------------
+   `\enddocument` can be redefined.
+   \_cod -----------------------------
+
+\_let\enddocument=\_bye
+
+   \_doc -----------------------------
+   Full page of listing causes underfill `\vbox` in output routine.
+   We need to add a small tolerance.
+   \_cod -----------------------------
+
+\_pgbottomskip=0pt plus10pt minus2pt
+
+   \_doc -----------------------------
+   The listing mode is implemented here.
+   \_cod -----------------------------
+
+\_newcount \_maxlines   \_maxlines=100000
+\_public \maxlines ;
+
+\_eoldef\_cod#1{\_par \_wipeepar 
+   \_vskip\_parskip \_medskip \_ttskip
+   \_begingroup
+   \_typosize[8/10] 
+   \_let\_printverbline=\_printcodeline
+   \_ttline=\_inputlineno
+   \_setverb 
+   \_ifnum\_ttline<0 \_let\_printverblinenum=\_relax \_else \_initverblinenum \_fi
+   \_adef{ }{\ }\_adef\^^I{\t}\_parindent=\_ttindent \_parskip=0pt
+   \_relax \_ttfont
+   \_endlinechar=`^^J
+   \_def\_tmpb{\_start}%
+   \_readverbline
+}
+\_def\_readverbline #1^^J{%
+   \_def\_tmpa{\_empty#1}%
+   \_let\_next=\_readverbline
+   \_ea\_isinlist\_ea\_tmpa\_ea{\_Doc}\_iftrue \_let\_next=\_processinput \_fi
+   \_ea\_isinlist\_ea\_tmpa\_ea{\_Endcode}\_iftrue \_endinput \_let\_next=\_processinput \_fi
+   \_ifx\_next\_readverbline \_addto\_tmpb{#1^^J}\_fi
+   \_next
+}
+{\_catcode`\ =13 \_gdef\_aspace{ }}\_def\_asp{\_ea\_noexpand\_aspace}
+\_edef\_Doc{\_asp\_asp\_bslash _doc}
+\_edef\_Endcode{\_noexpand\_empty\_bslash _endcode}
+
+   \_doc -----------------------------
+   The scanner of the control sequences in the listing mode.
+   \_cod -----------------------------
+
+\_def\_makecs{\_def\_tmp{}\_futurelet\_next\_makecsA}
+\_def\_makecsA{\_ifcat a\_noexpand\_next \_ea\_makecsB \_else \_ea\_makecsF \_fi}
+\_def\_makecsB#1{\_addto\_tmp{#1}\_futurelet\_next\_makecsA}
+\_def\_makecsF{\_ifx\_tmp\_empty \_csstring\\%
+       \_else \_ifcsname ,\_tmp\_endcsname \_link[cs:\_tmp]{\Blue}{\_csstring\\\_tmp}%
+       \_else \_let\_next=\_tmp \_remfirstunderscore\_next
+              \_ifx\_next\_empty \_let\_next=\_tmp \_fi
+              \_ifcsname ,\_next\_endcsname \_link[cs:\_next]{\Blue}{\_csstring\\\_tmp}%
+       \_else \_csstring\\\_tmp \_fi\_fi\_fi
+}
+\_def\_processinput{%
+   \_let\_start=\_relax
+   \_ea\_replstring\_ea\_tmpb\_ea{\_aspace^^J}{^^J}
+   \_addto\_tmpb{\_end}%
+   \_isinlist\_tmpb{\_start^^J}\_iftrue \_advance\_ttline by1\_fi
+   \_replstring\_tmpb{\_start^^J}{\_start}%
+   \_replstring\_tmpb{\_start}{}%
+   \_replstring\_tmpb{^^J\_end}{\_end}%
+   \_replstring\_tmpb{^^J\_end}{}%
+   \_replstring\_tmpb{\_end}{}%
+   \_ea\_prepareverbdata\_ea\_tmpb\_ea{\_tmpb^^J}%
+   \_replthis{\_csstring\\}{\_noexpand\_makecs}%
+   \_ea\_printverb \_tmpb\_end
+   \_par
+   \_endgroup \_ttskip
+   \_isnextchar\_par{}{\_noindent}%
+}
+
+   \_doc -----------------------------
+   The lines in the listing mode have Yellow background.
+   \_cod -----------------------------   
+
+\_def\Yellow{\_setcmykcolor{0.0 0.0 0.3 0.03}}
+
+\_def\_printcodeline#1{\_advance \_maxlines by-1
+   \_ifnum \_maxlines<0 \_ea \_endverbprinting \_fi
+   \_penalty \_ttpenalty \_kern-4pt
+   \_noindent\_rlap{\Yellow \_vrule height8pt depth5pt width\_hsize}%
+   \_printfilename
+   \_indent \_printverblinenum #1\par}
+
+\_def\_printfilename{\_hbox to0pt{%
+   \_hskip\_hsize\vbox to0pt{\_vss\_llap{\Brown\docfile}\_kern7.5pt}\_hss}%
+   \_let\_printfilename=\_relax
+}
+\_everytt={\_let\_printverblinenum=\_relax}
+
+\_long\_def\_endverbprinting#1\_end{\_fi \_global\_maxlines=100000
+   \_noindent\_typosize[8/]\_dots etc. (see {\_tt\Brown\docfile})}
+
+   \_doc -----------------------------
+   `\docfile` is currently documented file.\nl
+   \`\printdoc` and \`\printdoctail` macros are defined here.
+   \_cod -----------------------------   
+
+\_def\docfile{}
+\_def\_printdoc #1 {\_par \_def\docfile{#1}%
+   \_everytt={\_ttshift=-15pt \_let\_printverblinenum=\_relax}%
+   \_ea\_cod \input #1 
+   \_everytt={\_let\_printverblinenum=\_relax}%
+   \_def\docfile{}%
+}
+\_def\_printdoctail #1 {\_bgroup 
+   \_everytt={}\_ttline=-1 \_ea\_printdoctailA \_input #1 \_egroup}
+{\_long\_gdef\_printdoctailA#1\_endcode{}}
+
+\_public \printdoc \printdoctail ;
+
+   \_doc -----------------------------
+   You can do `\verbinuput \vitt{<filename>} (<from>-<to>) <filename>`
+   if you need analogical design like in listing mode.
+   \_cod -----------------------------   
+
+\_def\_vitt#1{\_def\docfile{#1}\_ttline=-1 
+   \_everytt={\_typosize[8/10]\_let\_printverbline=\_printcodeline \_medskip}}
+
+\_public \vitt ;
+
+   \_doc -----------------------------
+   The Index entries are without the trailing backslash. We must to add it
+   when printing Index.
+   \_cod -----------------------------   
+
+\_addto \_ignoredcharsen {_}  % \foo, \_foo is the same in the fist pass of sorting
+\_def\_printii #1#2&{%
+   \_ismacro\_lastii{#1}\_iffalse \_newiiletter{#1}{#2}\_def\_lastii{#1}\_fi
+   \_gdef\_currii{#1#2}\_the\_everyii\_noindent
+   \_hskip-\_iindent \_ignorespaces\_printiiA\bslash#1#2//}
+
+\_def\_printiipages#1&{\_let\_pgtype=\_undefined \_tmpnum=0 
+   {\_rm\_printpages #1,:,\_par}}
+
+\_sdef{_tocl:1}#1#2#3{\_nofirst\_bigskip 
+   \_bf\_llaptoclink{#1}{#2}\_hfill \_pgn{#3}\_tocpar\_medskip}
+
+   \_doc -----------------------------
+   The \code{<something>} will be print as <something>.
+   \_cod -----------------------------   
+
+\_let\lt=<
+\_catcode`\<=13
+
+\_def<#1>{$\langle\hbox{\it#1\/}\rangle$}
+\_everyintt{\_catcode`\<=13 }
+
+   \_doc -----------------------------
+   If this macro is loaded by \^`\load` then we need to initialize
+   catcodes using the `\_afteroad` macro.
+   \_cod -----------------------------
+
+\_def\_afterload{\_catcode`\<=13 \_catcode`\`=13 }
+
+   \_doc -----------------------------
+   Main documentation point and hyperlinks to/from it.
+   \_cod -----------------------------   
+
+\_activettchar`
+
+\_def\`#1`{\_leavevmode\_edef\_tmp{\_csstring#1}\_iindex{\_tmp}%
+   \_ifcsname cs:\_tmp\_endcsname\_else \_dest[cs:\_tmp]\_fi
+   \_sxdef{cs:\_tmp}{}%
+   \_hbox{\_ifcsname cs:^\_tmp\_endcsname 
+            \_link[cs:^\_tmp]{\Red}{\_tt\_csstring\\\_tmp}\_else
+            {\_tt\Red\_csstring\\\_tmp}\_fi}%
+}
+
+\_def\^`#1{\_leavevmode\_edef\_tmp{\_csstring#1}\_iindex{\_tmp}%
+   \_hbox{\_ifcsname cs:^\_tmp\_endcsname \_else \_dest[cs:^\_tmp]\_sxdef{cs:^\_tmp}{}\_fi
+         \_link[cs:\_tmp]{\Blue}{\_tt\_string#1}}%
+   \_futurelet\_next\_cslinkA
+}
+\_def\_cslinkA{\_ifx\_next`\_ea\_ignoreit \_else \_ea\_ea\_ea`\_ea\_string\_fi}
+
+\_def\~`#1{\_leavevmode\_edef\_tmp{\_csstring#1}\_iindex{\_tmp}%
+   \_hbox{\_link[cs:^\_tmp]{\Blue}{\_tt\_string#1}}%
+   \_futurelet\_next\_cslinkA
+}
+
+\_endcode %-------------------------------------------
+
+\noindent
+The \^`\printdoc` `<filename><space>` and \^`\printdoctail` `<filename><space>` 
+commands are defined after the file `doc.opm` is load by \^`\load`~`[doc]`. 
+
+The `\printcoc` starts reading of given `<filename>` from the second line.
+The file is read in {\em the listing mode}. 
+The `\prindoctail` starts reading given `<filename>` from the
+first occurrence of the `\_encode`. The file is read 
+in normal mode (like `\input <filename>`).
+
+The {\em listing mode} prints the lines as listing of a code. This mode is
+finished when first {\visiblesp`  \_doc`} occurs or first `\_endcode`
+occurs. At least two spaces must precede before such `\_doc`. On the other
+hand, the `\_encode` must be at the left edge of the line without spaces. 
+If this rule is not met then the listing mode continues.
+
+If the first line or the last line of the listing mode is empty then such
+lines are not printed. The maximal number of printed lines in the listing
+mode is \^`\maxlines`. Is is set to almost infinity (100000). You can set it
+to a more sensible value. Such setting is valid only for the first following
+listing mode.
+
+When the listing mode is finished by `\_doc` then next lines are read in the
+normal way, but the material between `\begtt` ... `\endtt` pair 
+is shifted by three letters left. The reason is that the three spaces of 
+indentation is recommended in the `\_doc` ... `\_cod` pair and this shifting
+is a compensation of this indentation.
+
+The `\_cod` macro ignores the rest of current line and starts the listing
+mode again.
+
+When the listing mode is finished by the `\_endcode` then the `\endinput` is
+applied, the reading of the file opened by `\printdoc` is finished.
+
+You cannot reach the end of the file (without `\_endcode`) in the listing
+mode.
+
+The listing mode creates all control sequences which are listed in the
+index as active link to the main documentation point of such control sequence
+and prints them in blue. Other text is printed in black.
+
+The main documentation point is denoted by \code{\\`\\}`<sequence>`\code{`}
+in red, for example \code{\\`\\foo`}.
+The user documentation point is the first occurrence of 
+\code{\\^`\\}`<sequence>`\code{`}, for example \code{\\^`\\foo`}.
+There can be more such markups, all of them are hyperlinks to the main
+documentation point. 
+And main documentation point is hyperlink to the user documentation point,
+if such point exists. Finally, the 
+\code{\\~`\\}`<sequence>`\code{`} (for example \code{\\~`\\foo`}) are
+hyperlinks to the user documentation point.
+
+\endinput
+
+2020-04-28 \levevmode in \^ macros added (bug fixed)
+2020-04-22 released
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/doc.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/f-adventor.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/f-adventor.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/f-adventor.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,22 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_famdecl [Adventor] \Adventor {TeX Gyre Adventor based on Avantgarde Book}
+        {\caps} {\rm \bf \it \bi} {}
+        {[texgyreadventor-regular]}
+        {\_def\_fontnamegen {[texgyreadventor-\_currV]:\_capsV\_fontfeatures}}
+
+\_wlog{\_detokenize{%
+Modifier:^^J
+ \caps ...... caps & small caps^^J
+}}
+
+\_moddef \resetmod {\_fsetV caps={} \_fvars regular bold italic bolditalic }
+\_moddef \caps     {\_fsetV caps=+smcp;+onum; }
+
+\_initfontfamily % new font family must be initialized
+
+\_endcode
+
+See the file `f-heros.opm` for information about principles of such
+font-macro-files.
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/f-adventor.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/f-antt.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/f-antt.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/f-antt.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,32 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_famdecl [Antykwa Torunska] \Antt {Traditional Polish font family}
+      {\cond \medium \light \caps} {\rm \bf \it \bi} {Pagella}
+      {[AntykwaTorunska-Regular]}
+      {\_def\_fontnamegen {[AntykwaTorunska\_sfamxV\_sfamyV-\_currV]:\_capsV\_fontfeatures}}
+
+\_wlog{\_detokenize{%
+Modifiers:^^J
+ \caps ...... caps & small caps^^J
+ \cond ...... condensed^^J
+ \medium .... medium weight^^J
+ \light ..... light weight^^J
+ \cond ...... condensed^^J
+}}
+
+\_moddef \resetmod {\_fsetV sfamx={},sfamy={},caps={} \_fvars Regular Bold Italic BoldItalic }
+\_moddef \cond     {\_fsetV sfamx=Cond \_fvars Regular . Italic . 
+                    \_onlyif sfamy={}: {\_fvars Regular Bold Italic BoldItalic }} 
+\_moddef \medium   {\_fsetV sfamy=Med   \_fvars Regular . Italic . }
+\_moddef \light    {\_fsetV sfamy=Light \_fvars Regular . Italic . }
+\_moddef \caps     {\_fsetV caps=+smcp;+onum; }
+
+\_initfontfamily % new font family must be initialized
+
+\_loadmath{[texgyrepagella-math]}
+
+\_endcode
+
+See the file `f-heros.opm` for information about principles of such
+font-macro-files.
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/f-antt.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/f-baskerville.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/f-baskerville.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/f-baskerville.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,22 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_famdecl [Baskerville] \Baskerville {Free vaiants of classical Baskerville}
+        {\caps} {\rm \bf \it \bi} {}
+        {[BaskervilleF-Regular]}
+        {\_def \_fontnamegen {[BaskervilleF-\_currV]:\_capsV\_fontfeatures}}
+
+\_wlog{\_detokenize{%
+Modifier:^^J
+ \caps ...... caps & small caps^^J
+}}
+
+\_moddef \resetmod {\_fsetV caps={} \_fvars Regular Bold Italic BoldItalic }
+\_moddef \caps     {\_fsetV caps=+smcp;+onum; }
+
+\_initfontfamily % new font family must be initialized
+
+\_endcode
+
+See the file `f-heros.opm` for information about principles of such
+font-macro-files.
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/f-baskerville.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/f-bonum.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/f-bonum.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/f-bonum.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,24 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_famdecl [Bonum] \Bonum {TeX Gyre Bonum fonts based on Bookman}
+        {\caps} {\rm \bf \it \bi} {Bonum}
+        {[texgyrebonum-regular]}
+        {\_def\_fontnamegen {[texgyrebonum-\_currV]:\_capsV\_fontfeatures}}
+
+\_wlog{\_detokenize{%
+Modifier:^^J
+ \caps ...... caps & small caps^^J
+}}
+
+\_moddef \resetmod {\_fsetV caps={} \_fvars regular bold italic bolditalic }
+\_moddef \caps     {\_fsetV caps=+smcp;+onum; }
+
+\_initfontfamily % new font family must be initialized
+
+\_loadmath {[texgyrebonum-math]}
+
+\_endcode
+
+See the file `f-heros.opm` for information about principles of such
+font-macro-files.
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/f-bonum.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/f-cursor.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/f-cursor.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/f-cursor.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,22 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_famdecl [Cursor] \Cursor {TeX Gyre Cursor fonts based on Courier}
+        {\caps} {\rm \bf \it \bi} {}
+        {[texgyrecursor-regular]}
+        {\_def \_fontnamegen {[texgyrecursor-\_currV]:\_capsV\_fontfeatures}}
+
+\_wlog{\_detokenize{%
+Modifier:^^J
+ \caps ...... caps & small caps^^J
+}}
+
+\_moddef \resetmod {\_fsetV caps={} \_fvars regular bold italic bolditalic }
+\_moddef \caps     {\_fsetV caps=+smcp;+onum; }
+
+\_initfontfamily % new font family must be initialized
+
+\_endcode
+
+See the file `f-heros.opm` for information about principles of such
+font-macro-files.
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/f-cursor.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/f-gfsbodoni.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/f-gfsbodoni.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/f-gfsbodoni.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,21 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_famdecl [GFS Bodoni] \GFSBodoni {Based on Bodoni with greek letters}
+        {} {\rm \bf \it \bi} {}
+        {[GFSBodoni]}
+        {\_def\_fontnamegen {[GFSBodoni\_currV]:\_fontfeatures}}
+
+\_wlog{\_detokenize{%
+Modifier:^^J
+ \caps ...... doesn't work even though otfinfo -f lists smcp^^J
+}}
+
+\_moddef \resetmod {\_fvars {} Bold It BoldIt }
+
+\_initfontfamily % new font family must be initialized
+
+\_endcode
+
+See the file `f-heros.opm` for information about principles of such
+font-macro-files.
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/f-gfsbodoni.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/f-heros.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/f-heros.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/f-heros.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,203 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_famdecl [Heros] \Heros {TeX Gyre Heros fonts based on Helvetica}
+     {\caps \cond} {\rm \bf \it \bi} {FiraMath}
+     {[texgyreheros-regular]}
+     {\_def\_fontnamegen{[texgyreheros\_condV-\_currV]:\_capsV\_fontfeatures}}
+
+\_wlog{\_detokenize{%
+Modifiers:^^J
+ \caps ...... caps & small caps^^J
+ \cond ...... condensed variants^^J
+}}
+
+\_moddef \resetmod {\_fsetV caps={},cond={} \_fvars regular bold italic bolditalic }
+\_moddef \caps     {\_fsetV caps=+smcp;+onum; }
+\_moddef \nocaps   {\_fsetV caps={} }
+\_moddef \cond     {\_fsetV cond=cn }
+\_moddef \nocond   {\_fsetV cond={} }
+
+\_initfontfamily % new font family must be initialized
+
+\_loadmath {[FiraMath-Regular]}
+
+\_endcode
+
+The font family file declares the font family for selecting fonts from such
+family at arbitrary size and with various shapes. Unicode fonts (OTF)
+are preferred. The following example declares the Heros family:
+
+\printdoc f-heros.opm
+
+If you want to write such font file, you need to keep following rules.
+
+\begitems
+* Use the \^`\_famdecl` command first. It has the following syntax:
+\begtt \catcode`\<=13
+\_famdecl [<Name of family>] \<Familyselector> {<comments>}
+     {<modifiers>} {<variant selectors>} {<comments about math fonts>}
+     {<font-for-testing>}
+     {\_def\_fontnamegen{<font name or font file name generated>}}
+\endtt
+  This writes information about font family at the
+  terminal and prevents loading such file twice. Moreover, it probes
+  existence of `<font-for-testing>` in your system. If it doesn't exist, the
+  file loading is skipped with a warning on the terminal.
+  The \^`\_ifexistfam` macro returns false in such case.
+  The `\_fontnamegen` macro must be defined in the last parameter of the
+  `\_famdecl`. More about it is documented below.
+* You can use `\_wlog{\_detokenize{...` to write aditional information into
+  log file.
+* You can declare optical sizes using `\_regoptsizes` if there are more font files
+  with different optical sizes (like in Latin Modern). See `f-lmfonts.ofm`
+  file for more information about this special feature.
+* Declare font modifiers using `\_moddef` if they are present. The \`\resetmod` 
+  must be declared in each font family.
+* Check if all your declared modifiers does not produce any space in
+  horizontal mode. For example check: `X\caps Y`, the letters `XY` must 
+  be printed without any space. 
+* Optionally, declare new variants by the \^`\famvardef` macro.
+* Run `\_initfontfamily` in order to start the family.
+* If math font should be loaded, use `\_loadmath{<math font>}`.
+\enditems
+
+{\noindent \bf The \`\_fontnamegen` macro} 
+(declared in the last parameter of the `\_famdecl`) 
+must expand (at expand processor level only) to a file name of loaded font (or to its font
+name) and to optional font features appended. The Font Selection 
+System uses this macro at primitive level in the following sense:
+
+\begtt
+\font \<selector> {\_fontnamegen} \_sizespec
+\endtt
+%
+Note that the extended `\font` syntax 
+`\font\<selector> {<font name>:<font features>} <size spec.>` or
+`\font\<selector> {[<font file name>]:<font features>} <size spec.>`
+is expected here.
+
+\bigskip
+{\noindent\bf Example.} 
+Assume an abstract font family with fonts `xx-Regular.otf`,
+`xx-Bold.otf`, `xx-Italic.otf` and `xx-BoldItalic.otf`. Then you can declare
+the `\resetmod` (for initializing the family) by:
+\begtt
+\_moddef\resetmod{\_fvars Regular Bold Italic BoldItalic }
+\endtt
+and define the `\_fontnamegen` in the last parameter of the `\_famdecl` by:
+\begtt
+\_famdecl ...
+    {\def\_fontnamegen{[xx-\_currV]}}
+\endtt
+The following auxiliary macros are used here:
+\begitems
+* \^`\moddef` declares the family dependent modifier. The `\resetmod` saves
+  initial values for the family.
+* \^`\_fvars` saves four names to the memory, they are used by the \^`\_currV` macro.
+* \^`\_currV` expands to one of the four names dependent on `\rm` or `\bf` or
+  `\it` or `\bi` variant is required.
+\enditems
+Assume that the user needs `\it` variant in this family. Then the
+`\_fontnamegen` macro expands to `[xx-\_currV]` and it expands to
+`[xx-Italic]`. The Font Selection System uses `\font {[xx-Italic]}`.
+This command loads the `xx-Italic.otf` font file.
+
+See more advanced examples in `f-<family>.opm` files. The `f-heros.opm` is listed
+here. When Heros family is selected and `\bf` is asked then
+\begtt
+\font {[texgyreheros-bold]:+tlig;} at10pt
+\endtt
+%
+is processed.
+
+You can use any expandable macros or expandable primitives in the `\_fontnamegen`
+macro. The simple macros in our example with names `\_<word>V` are preferred. They
+expand typically to their content. The macro `\_fsetV <word>=<content>`
+(terminated by a space) is equivalent to `\def\_<word>V{<content>}` and you
+can use it in font modifiers. You can use the `\_fsetV` macro in more
+general form:
+
+\begtt \catcode`\<=13
+   \_fsetV <word-a>=<value-a>,<word-b>=<value-b>  ...etc. terminated by a space 
+\endtt
+%
+with obvious result `\def \_<word-a>V {<value-a>}\def \_<word-b>V {<value-b>}` etc.
+
+Example: if both font modifiers `\caps` and `\cond` were applied from the Heros
+family, then `\def\_capsV{+smcp;+onum}` and `\def\_condV{cn}` were processed
+by these font modifiers. If user needs the `\bf` variant at 11\,pt now then
+the
+
+\begtt
+  \font {[texgyreheroscn-bold]:+smcp;+onum;+tlig;} at11pt
+\endtt
+%
+is processed. We assume that a font file `texgyreheroscn-bold.otf` is present
+in your TeX system.
+
+Recommendation: the \^`\_fontfeatures` macro at the end of the `\_fontnamegen`
+macro in order to the \^`\setff`, \^`\setfontcolor`, \^`\setletterspace`
+macros can work. 
+
+\bigskip
+{\noindent\bf The \^`\moddef` macro} 
+does more things than simple `\_def`:
+
+\begitems
+* The modifier macros are defined as `\_protected`.
+* The modifier macros are defined as family-dependent. 
+\enditems
+\noindent
+The \^`\famvardef` macro has the same features.
+
+\bigskip
+{\noindent\bf The `\<Familyselector>`}
+is defined by the \^`\_famdecl` macro as:
+\begtt \catcode`<=13
+\protected\def\<Familyselector> {%
+   \_def\_currfamily {<Familyselector>}%
+   \_def\_fontnamegen {<font name or font file name generated>}%
+   \resetmod 
+\endtt
+
+{\noindent\bf  The font context} consists from
+   \begitems
+   * Family context, i.\,e.\ \^`\_currfamily` and \^`\_fontnamegen` values
+     saved by the `\<Familyselector>`,
+   * \^`\_sizespec` value saved by the \^`\setfontsize` macro,
+   * whatever what influences the expansion of the `\_fontnamegen` macro,
+     they are typically macros `\_<key>V` saved by the font modifiers.
+   \enditems
+
+{\noindent\bf The \^`\_initfontfamily` must be run} after modifers decaration. 
+It sets `\_let\_resetmod=\resetmod` and runs the `\<Familyselector>`. 
+Finally, it runs `\_rm`, so first font from new family is loaded and it 
+is ready to use it.
+
+\bigskip
+{\noindent\bf Name conventions.}
+Create font modifiers, new variants and the `\<Familyselector>` only as public, i.e.
+without `_` prefix. We assume that if user re-defines them then he/she needs
+not them, so we have no problems.
+
+The name of `\<Familyselector>` should begin with uppercase letter.
+
+If you need to declare your private modifier (because it is used in another
+modifiers or macros, for example), use the name `\_wordM`. You can be
+sure that such name does not influence the private name space used by \OpTeX/.
+
+\bigskip
+{\noindent\bf Additional notes.}
+See the font family file `f-libertine-s.opm` which is another example where no
+font files but font names are used.
+
+See the font family file `f-lmfonts.opm` where you can find the 
+the example of the optical sizes declaration including a documentation about
+it.
+
+If you need to create font family file with non-Unicode font, you can do it.
+The `\_fontnamegen` must expand to the name of TFM file in such case. But we
+don't prefer such font family files, because they are usable only with
+languages with alphabet subset to ISO-8859-1 (Unicodes are equal to letter
+codes of such alphabets), but middle or east Europe use languages where
+such condition is not true.


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/f-heros.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/f-libertine-s.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/f-libertine-s.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/f-libertine-s.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,50 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_famdecl [Linux Libertine] \Libertine {Free Linux Libertine fonts}
+        {\sans \mono \caps} {\rm \bf \it \bi \initials \displ \keybr} {}
+        {Linux Libertine O}
+        {\_def\_fontnamegen {Linux \_mainfamV\_V\_subfamV O/\_currV:\_capsV\_fontfeatures}}
+
+\_wlog{\_detokenize{%
+Modifiers^^J
+ \sans ...... smaller serifs^^J
+ \caps ...... caps & small caps^^J
+Special variants:^^J
+ \initials .. special initials (only uppercase letters)^^J
+ \displ ..... display variant, suitable at big sizes^^J
+ \mono ...... non-proportional^^J
+ \keybr ..... keyboard, emulates keyboard buttons^^J
+}}
+
+\_moddef \resetmod {\_fsetV mainfam=Libertine,subfam={},caps={} \_fvars {} B I BI }
+\_moddef \sans     {\_fsetV mainfam=Biolinum,subfam={} }
+\_moddef \mono     {\_fsetV mainfam=Libertine,subfam={Mono } \_fvars {} . . . }
+\_moddef \caps     {\_fsetV caps=+smcp; }
+\_moddef \nocaps   {\_fsetV caps={} }
+
+\_famvardef \initials {\_fsetV mainfam=Libertine,subfam={Initials } \_fvars {} . . . \rm}
+\_famvardef \displ    {\_fsetV mainfam=Libertine,subfam={Display } \_fvars {} . . . \rm}
+\_famvardef \keybr    {\_fsetV mainfam=Biolinum,subfam={Keyboard } \_fvars {} . . . \rm}
+
+\_initfontfamily % new font family must be initialized
+
+\_endcode
+
+This is another example where the font names (no font files) are declared.
+Linux Libertine font is typically installed on Linux systems.
+The \_V macro generates a space. We provide following fonts:
+
+normal:  "Linux Libertine O:\_fontfeatures"   
+         "Linux Libertine O/B:\_fontfeatures" 
+         "Linux Libertine O/I:\_fontfeatures" 
+         "Linux Libertine O/BI:\_fontfeatures"
+mono  :  "Linux Libertine Mono O:\_fontfeatures"   
+sans:    "Linux Biolinum O:\_fontfeatures"    
+         "Linux Biolinum O/B:\_fontfeatures"
+         "Linux Biolinum O/I:\_fontfeatures"
+         "Linux Biolinum O/BI:\_fontfeatures"
+special: "Linux Libertine Initials O:\_fontfeatures"
+         "Linux Libertine Display O:\_fontfeatures"
+         "Linux Biolinum Keyboard O:\_fontfeatures"
+ 
+Another file f-libertine.opm declares Linux Libertine family from font files.
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/f-libertine-s.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/f-libertine.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/f-libertine.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/f-libertine.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,60 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_famdecl [Linux Libertine] \Libertine {Free Linux Libertine fonts}
+        {\sans \mono \caps \semi} {\rm \bf \it \bi \initials \displ \keybr} {Libertinus}
+        {[LinLibertine_R]}
+        {\_def\_fontnamegen {[Lin\_subfamV _\_currV]:\_capsV\_fontfeatures}}
+
+\_wlog{\_detokenize{%
+Modifiers:^^J
+ \sans ...... smaller serifs^^J
+ \mono ...... non-proportional^^J
+ \semi ...... semi-bold variants (\rm, \it)^^J
+ \caps ...... caps & small caps^^J
+Special variants:^^J
+ \initials .. special initials (only uppercase letters)^^J
+ \displ ..... display variant, suitable at big sizes^^J
+ \keybr ..... keyboard, emulates keyboard buttons^^J
+}}
+
+\_moddef \resetmod {\_fsetV subfam=Libertine,caps={} \_fvars R RB RI RBI }
+\_moddef \sans     {\_fsetV subfam=Biolinum \_fvars R RB RI RBO }
+\_moddef \mono     {\_fsetV subfam=Libertine \_fvars M MB MO MBO }
+\_moddef \semi     {\_fsetV subfam=Libertine \_fvars RZ . RZI . }
+\_moddef \caps     {\_fsetV caps=+smcp;+onum; }
+\_moddef \nocaps   {\_fsetV caps={} }
+
+\_famvardef \initials {\_fsetV subfam=Libertine \_fvars I . . . \rm}
+\_famvardef \displ    {\_fsetV subfam=Libertine \_fvars DR . . . \rm}
+\_famvardef \keybr    {\_fsetV subfam=Biolinum  \_fvars K . . . \rm}
+
+\_initfontfamily % new font family must be initialized
+
+\_loadmath {[LibertinusMath-Regular]}
+
+\_endcode
+
+This file declares Linux Libertine font family from font files. The
+following fonts are provided:
+
+normal:  "[LinLibertine_R]:\_fontfeatures"
+         "[LinLibertine_RB]:\_fontfeatures"
+         "[LinLibertine_RI]:\_fontfeatures"
+         "[LinLibertine_RBI  ]:\_fontfeatures"
+         "[LinLibertine_RZI]:\_fontfeatures"
+         "[LinLibertine_RZ]:\_fontfeatures"
+mono:    "[LinLibertine_M]:\_fontfeatures"  
+         "[LinLibertine_MB]:\_fontfeatures"  
+         "[LinLibertine_MO]:\_fontfeatures"  
+         "[LinLibertine_MBO]:\_fontfeatures" 
+sans:    "[LinBiolinum_RB]:\_fontfeatures" 
+         "[LinBiolinum_RBO]:\_fontfeatures" 
+         "[LinBiolinum_R]:\_fontfeatures" 
+         "[LinBiolinum_RI]:\_fontfeatures"  
+special: "[LinLibertine_I]:\_fontfeatures"   
+         "[LinLibertine_DR]:\_fontfeatures"   
+         "[LinBiolinum_K]:\_fontfeatures"
+
+See an alternative `f-libertine-s.opm` where the same font family is
+declared using font names used in operating system. 
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/f-libertine.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/f-lido.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/f-lido.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/f-lido.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,48 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_famdecl [Lido] \Lido {by StormType Foundry designed for "lidove noviny"}
+        {\caps \cond} {\rm \bf \mr \mi \it \bi} {Termes}
+        {[LidoSTF]}
+        {\_def\_fontnamegen {[LidoSTF\_condV\_currV]:\_capsV\_fontfeatures}}
+
+\_wlog{\_detokenize{%
+Variants:^^J
+ \rm \bf \it \bi ... classical variants^^J
+ \mr \mi .... medium regular and medium italics (between normal and bold)^^J
+Modifiers:^^J
+ \cond ...... condensed (italic is not avalable for \cond variants)^^J
+ \medium .... sets \mr \bf \mi \bi family
+}}
+
+\_moddef \resetmod {\_fsetV caps={},cond={},ital=Italic \_fvars {} Bold {\_italV} {Bold\_italV} }
+\_moddef \medium   {\_fvars Medium Bold {Medium\_italV} {Bold\_italV} }
+\_moddef \cond     {\_fsetV cond=Condensed,ital={} }
+
+\_famvardef \mr    {\_fvars Medium . . . \_rm} 
+\_famvardef \mi    {\_fvars . . {Medium\_italV} . \_it}
+
+
+\_initfontfamily % new font family must be initialized
+
+\_loadmath {[texgyretermes-math]}
+
+\_endcode
+
+This font family Lido by Storm Type Foundry was designed for Lidove noviny
+newspaper. It is similar to Times but it is not Times.
+
+The Lido font family supports 6 standard selectors
+
+\rm Regular          \it Italics
+\mr Medium-Regular   \mi Medium-Italics
+\bf Bold-Regular     \bi Bold-Italics
+
+and three Condensed variants:
+
+\cond \rm Condensed
+      \mr Condensed-Medium
+      \bf Condensed-Bold
+
+The italic variants are missing when \cond is selected. This means that
+\cond\it does the same as \cond\rm etc.
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/f-lido.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/f-lmfonts.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/f-lmfonts.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/f-lmfonts.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,181 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_famdecl [Latin Modern] \LMfonts {TeX Gyre fonts based on Coputer Modern}
+        {\roman \sans \quotset \ttset \ttprop \ttlight \ttcond \upital 
+         \dunhill submods:\caps \slant \nbold \bolder} {\rm \bf \it \bi \tt} {LM}
+        {[lmroman10-regular]}
+        {\_def\_fontnamegen {[\_optname{lm\_subfamV.\_currV}]:\_fontfeatures}}
+
+\_wlog{\_detokenize{%
+Modifiers (selects subfamily):^^J
+ \modreset .. implicit values (serif, bold extended, nocaps)^^J
+ \sans ...... sans serif subfamily^^J
+ \quotset ... quotation subfamily^^J
+ \ttset ..... typewriter subfamily^^J
+ \ttprop .... proportional typewriter-like subfamily^^J
+ \ttlight ... light typewriter subfamily^^J
+ \ttcond .... condensed typewriter subfamily^^J
+ \upital .... upright italic (only \rm)^^J
+ \dunhill ... dunhill roman subfamily (only \rm, \it)^^J%
+Sub-modifiers (selects special variants of given subfamily):^^J
+ \caps ...... caps & small caps (available only at limited shapes)^^J
+ \slant ..... slanted (default in some subfamilies)^^J
+ \nbold ..... normal bold (extended bold is default)^^J
+ \bolder .... extended bold^^J
+}}
+
+\_def\_LMregfont #1 #2 #3{%
+   \_edef\_tmp {\_noexpand\_regoptsizes #1 #2 \_ea\_detokenize\_ea{#3}}%
+   \_lowercase\_ea{\_tmp}% OTF file names are lowercase
+}
+\_def \_regoptFS {5 <5.5 6 <6.5 7 <7.5 8 <8.5 9 <9.5 10 <11.1 12 <15 17 <*}
+\_def \_regoptFT {5 <5.5 6 <6.5 7 <7.5 8 <8.5 9 <9.5 10 <11.1 12 <*}
+\_def \_regoptST {7 <7.5 8 <8.5 9 <9.5 10 <11.1 12 <*}
+\_def \_regoptES {8 <8.5 9 <9.5 10 <11.1 12 <15 17 <*}
+\_def \_regoptET {8 <8.5 9 <9.5 10 <11.1 12 <*}
+\_def \_regoptT  {10 <*}
+\_def \_regoptE  {8 <*}
+
+\_LMregfont lmrm.r     LMRoman?-Regular        \_regoptFS  % 5-17
+\_LMregfont lmrm.bx    LMRoman?-Bold           \_regoptFT  % 5-12
+\_LMregfont lmrm.i     LMRoman?-Italic         \_regoptST  % 7-12
+\_LMregfont lmrm.bxi   LMRoman?-BoldItalic     \_regoptT   % 10
+\_LMregfont lmrm.isl   LMRomanSlant?-Regular   \_regoptES  % 8-17
+\_LMregfont lmrm.bxisl LMRomanSlant?-Bold      \_regoptT   % 10
+\_LMregfont lmrm.b     LMRomanDemi?-Regular    \_regoptT   % 10
+\_LMregfont lmrm.bi    LMRomanDemi?-Oblique    \_regoptT   % 10
+
+\_LMregfont lmss.r     LMSans?-Regular          \_regoptES  % 8-17
+\_LMregfont lmss.bx    LMSans?-Bold             \_regoptT   % 10
+\_LMregfont lmss.i     LMSans?-Oblique          \_regoptES  % 8-17
+\_LMregfont lmss.bxi   LMSans?-BoldOblique      \_regoptT   % 10
+\_LMregfont lmss.b     LMSansDemiCond?-Regular  \_regoptT   % 10
+\_LMregfont lmss.bi    LMSansDemiCond?-Oblique  \_regoptT   % 10
+
+\_LMregfont lmsq.r     LMSansQuot?-Regular      \_regoptE  % 8
+\_LMregfont lmsq.b     LMSansQuot?-Bold         \_regoptE  % 8
+\_LMregfont lmsq.i     LMSansQuot?-Oblique      \_regoptE  % 8
+\_LMregfont lmsq.bi    LMSansQuot?-BoldOblique  \_regoptE  % 8
+
+\_LMregfont lmtt.r     LMMono?-Regular        \_regoptET  % 8-12
+\_LMregfont lmtt.b     LMMonoLt?-Bold         \_regoptT   % 10
+\_LMregfont lmtt.i     LMMono?-Italic         \_regoptT   % 10
+\_LMregfont lmtt.bi    LMMonoLt?-BoldOblique  \_regoptT   % 10
+\_LMregfont lmtt.isl   LMMonoSlant?-Regular   \_regoptT   % 10
+\_optfontalias {lmtt.bisl} {lmtt.bi} 
+
+\_LMregfont lmtp.r     LMMonoPropLt?-Regular      \_regoptT  % 10
+\_LMregfont lmtp.bx    LMMonoPropLt?-Bold         \_regoptT  % 10
+\_LMregfont lmtp.i     LMMonoPropLt?-Oblique      \_regoptT  % 10
+\_LMregfont lmtp.bxi   LMMonoPropLt?-BoldOblique  \_regoptT  % 10
+\_LMregfont lmtp.b     LMMonoProp?-Regular        \_regoptT  % 10
+\_LMregfont lmtp.bi    LMMonoProp?-Oblique        \_regoptT  % 10
+
+\_LMregfont lmtl.r     LMMonoLt?-Regular  \_regoptT  % 10
+\_LMregfont lmtl.i     LMMonoLt?-Oblique  \_regoptT  % 10
+
+\_LMregfont lmtc.r     LMMonoLtCond?-Regular  \_regoptT  % 10
+\_LMregfont lmtc.i     LMMonoLtCond?-Oblique  \_regoptT  % 10
+
+\_LMregfont lmrm.rc    LMRomanCaps?-Regular \_regoptT  % 10
+\_LMregfont lmrm.ic    LMRomanCaps?-Oblique \_regoptT  % 10
+\_LMregfont lmtt.rc    LMMonoCaps?-Regular  \_regoptT  % 10
+\_LMregfont lmtt.ic    LMMonoCaps?-Oblique  \_regoptT  % 10
+
+\_LMregfont lmmu.r     LMRomanUnsl?-Regular    \_regoptT  % 10
+\_LMregfont lmdu.r     LMRomanDunh?-Regular    \_regoptT  % 10
+\_LMregfont lmdu.sl    LMRomanDunh?-Oblique    \_regoptT  % 10
+
+% main modifiers (they select a subfamily)
+\_moddef \resetmod {\_fsetV subfam=rm \_fvars r bx i bxi }
+\_moddef \sans     {\_fsetV subfam=ss \_fvars r bx i bxi }
+\_moddef \quotset  {\_fsetV subfam=sq \_fvars r b i bi }
+\_moddef \ttset    {\_fsetV subfam=tt \_fvars r b i bi }
+\_moddef \ttprop   {\_fsetV subfam=tp \_fvars r b i bi }
+\_moddef \ttlight  {\_fsetV subfam=tl \_fvars r . i . }
+\_moddef \ttcond   {\_fsetV subfam=tc \_fvars r . i . }
+\_moddef \upital   {\_fsetV subfam=mu \_fvars r . . . }
+\_moddef \dunhill  {\_fsetV subfam=du \_fvars r . sl . }
+
+% submodifiers (they select special vaiants in a subfamily)
+\_moddef \nbold    {\_onlyif subfam=rm,ss,tp: {\_fvars r b i bi }}
+\_moddef \bolder   {\_onlyif subfam=rm,ss,tp: {\_fvars r bx i bxi }} 
+\_moddef \slant    {\_onlyif subfam=rm:       {\_fvars r bx isl bxisl }%
+                    \_onlyif subfam=tt:       {\_fvars r b isl bisl }}
+\_moddef \caps     {\_onlyif subfam=rm,tt:    {\_fvars rc . ic . }}
+
+\_def \_tryloadtt {\_fontdef\_tentt{\_LMfonts \_addto\_fontfeatures{-tlig;}\_ttset \_rm}} 
+\_private \LMfonts \ttset ; % \tt variant selector re-defined
+
+\_initfontfamily % new font family must be initialized
+
+\_loadmath {[latinmodern-math]}
+
+\_endcode
+
+\secc How to write the font family file with optical sizes
+
+You can use \^`\_optname` macro when `\_fontnamegen` in expanded. This macro is fully
+expandable and its input is `<internal-template>` and its output is a
+part of the font file name `<size-dependent-template>` with respect to given 
+optical size.
+
+You can declare a collection of `<size-dependent-template>`s for one
+given `<internal-template>` by the \^`\_regoptsizes` macro. 
+The syntax is shown for one real case:
+
+\begtt 
+\_regoptsizes lmr.r lmroman?-regular
+    5 <5.5 6 <6.5 7 <7.5 8 <8.5 9 <9.5 10 <11.1 12 <15 17 <* 
+\endtt
+
+In general: 
+
+\begtt \catcode`\<=13
+\_regoptsizes <internal-template> <general-ouput-template> <resizing-data>
+\endtt
+
+Suppose our example above. Then `\_optname{lmr.r}` expands to
+lmroman?-regular where the question mark is substituted by a number
+depending on current `\_optsize`. If the `\_optsize` lies between two boundary
+values (they are prefixed by \code{<} character) then the number written between
+them is used. For example if $11.1 \lt `\_optsize` \le 15$ then 12 is
+substituted instead question mark. The <resizing-data> virtually begins
+with zero \code{<0}, but it is not explicitly written. The right part of
+<resizing-data> must be terminated by \code{<*} which means "less than infinity".
+
+If `\_optname` gets an argument which is not registered <internal-template>
+then it expands to `\_failedoptname` which typically ends to error message
+about missing font. You can redefine `\_failedoptname` macro to some
+existing font if you find it useful.
+
+We are using a special macro `\_LMregfont` in `f-lmfonts.opm`. 
+It sets the file names to
+lowercase and enables to use a shortcasts isntead real <resizing-data>.
+There are shortcats `\_regoptFS`, `\_regoptT`, etc. here. The collection of
+`<internal-templates>` are declared, each of them covers a collection of real
+file names.
+
+The \^`\_optfontalias` `{<new-template>} {<internal-template>}` declares
+`<new-template>` with the same meaning as previously declared
+`<internal-template>`.
+
+The `\_optname` macro can be used even if no otical sizes are provided by
+a font family. Suppose that font file names are much more chaotic (because
+artists are very creative people), so you need to declare more systematic
+`<internal-templates>` and do an alias from each `<internal-template>` to
+`<real-font-name>`. For example, you can do it as follows:
+
+\begtt
+\def\fontalias #1 #2 {\_regoptsizes #1 ?#2 {} <*}
+%          alias name           real font name
+\fontalias crea-a-regular       {Creative Font}
+\fontalias crea-a-bold          {Creative FontBold}
+\fontalias crea-a-italic        {Creative olique}
+\fontalias crea-a-bolditalic    {Creative Bold plus italic}
+\fontalias crea-b-regular       {Creative Regular subfam}
+\fontalias crea-b-bold          {Creative subfam bold}
+\fontalias crea-b-italic        {Creative-subfam Oblique}
+\fontalias crea-b-bolditalic    {Creative Bold subfam Oblique}
+\endtt
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/f-lmfonts.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/f-pagella.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/f-pagella.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/f-pagella.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,24 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_famdecl [Pagella] \Pagella {TeX Gyre Pagella fonts based on Palatino}
+        {\caps} {\rm \bf \it \bi} {Pagella}
+        {[texgyrepagella-regular]}
+        {\_def\_fontnamegen {[texgyrepagella-\_currV]:\_capsV\_fontfeatures}}
+
+\_wlog{\_detokenize{%
+Modifier:^^J
+ \caps ...... caps & small caps^^J
+}}
+
+\_moddef \resetmod {\_fsetV caps={} \_fvars regular bold italic bolditalic }
+\_moddef \caps     {\_fsetV caps=+smcp;+onum; }
+
+\_initfontfamily % new font family must be initialized
+
+\_loadmath {[texgyrepagella-math]}
+
+\_endcode
+
+See the file `f-heros.opm` for information about principles of such
+font-macro-files.
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/f-pagella.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/f-schola.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/f-schola.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/f-schola.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,24 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_famdecl [Schola] \Schola {TeX Gyre Schola fonts based on New Century}
+        {\caps} {\rm \bf \it \bi} {Schola}
+        {[texgyreschola-regular]}
+        {\_def\_fontnamegen {[texgyreschola-\_currV]:\_capsV\_fontfeatures}}
+
+\_wlog{\_detokenize{%
+Modifier:^^J
+ \caps ...... caps & small caps^^J
+}}
+
+\_moddef \resetmod {\_fsetV caps={} \_fvars regular bold italic bolditalic }
+\_moddef \caps     {\_fsetV caps=+smcp;+onum; }
+
+\_initfontfamily % new font family must be initialized
+
+\_loadmath {[texgyreschola-math]}
+
+\_endcode
+
+See the file `f-heros.opm` for information about principles of such
+font-macro-files.
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/f-schola.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/f-technika.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/f-technika.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/f-technika.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,31 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_famdecl [Technika] \Technika {Fonts from visual style of CTU in Prague}
+        {\caps \light} {\rm \bf \it \bi \stencil} {}
+        {[Technika-Regular]}
+        {\_def\_fontnamegen {[Technika\_stencilV-\_currV]:\_capsV\_fontfeatures}}
+
+\_wlog{\_detokenize{%
+Modifiers:^^J
+ \light ..... ligher variants: \rm\bf=light \bf\bi=normal^^J
+ \book ...... semi-ligher variants: \rm\bf=book \bf\bi=bold^^J
+ \caps ...... caps & small caps^^J
+Special variant:^^J
+ \stencil ... dashed leters (only uppercase)^^J
+}}
+
+\_moddef \resetmod {\_fsetV stencil={},caps={} \_fvars Regular Bold Italic BoldItalic }
+\_moddef \light    {\_fsetV stencil={} \_fvars Light Regular LightItalic Italic }
+\_moddef \book     {\_fsetV stencil={} \_fvars Book Bold BookItalic BoldItalic }
+\_moddef \caps     {\_fsetV caps=+smcp;+onum; }
+
+\_famvardef \stencil {\_fsetV stencil=Stencil \_fvars Bold . Bold . \rm}
+
+
+\_initfontfamily % new font family must be initialized
+
+\_endcode
+
+See the file `f-heros.opm` for information about principles of such
+font-macro-files.
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/f-technika.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/f-termes.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/f-termes.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/f-termes.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,24 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_famdecl [Termes] \Termes {TeX Gyre Termes fonts based on Times}
+        {\caps} {\rm \bf \it \bi} {Termes}
+        {[texgyretermes-regular]}
+        {\_def\_fontnamegen {[texgyretermes-\_currV]:\_capsV\_fontfeatures}}
+
+\_wlog{\_detokenize{%
+Modifier:^^J
+ \caps ...... caps & small caps^^J
+}}
+
+\_moddef \resetmod {\_fsetV caps={} \_fvars regular bold italic bolditalic }
+\_moddef \caps     {\_fsetV caps=+smcp;+onum; }
+
+\_initfontfamily % new font family must be initialized
+
+\_loadmath {[texgyretermes-math]}
+
+\_endcode
+
+See the file `f-heros.opm` for information about principles of such
+font-macro-files.
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/f-termes.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/f-xcharter.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/f-xcharter.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/f-xcharter.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,24 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_famdecl [XCharter] \XCharter {An extension of Bitstream Charter}
+        {\caps \slant} {\rm \bf \it \bi} {}
+        {[XCharter-Roman]}
+        {\_def\_fontnamegen {[XCharter-\_currV]:\_capsV\_fontfeatures}}
+
+\_wlog{\_detokenize{%
+Modifiers:^^J
+ \caps ...... caps & small caps^^J
+ \slant ..... slanted variants used in \it, \bi^^J
+}}
+
+\_moddef \resetmod {\_fsetV caps={} \_fvars Roman Bold Italic BoldItalic }
+\_moddef \slant    {\_fvars Roman Bold Slanted BoldSlanted }
+\_moddef \caps     {\_fsetV caps=+smcp;+onum; }
+
+\_initfontfamily % new font family must be initialized
+
+\_endcode
+
+See the file `f-heros.opm` for information about principles of such
+font-macro-files.
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/f-xcharter.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/fams-ini.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/fams-ini.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/fams-ini.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,130 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+% Version <2020-02-28>. Loaded in format and secondly on demand by \fontfam[catalog]
+
+\_famtext {Special name for printing a catalogue:}
+
+\_faminfo [Catalogue] {Catalogue of all registered font families} {fonts-catalog} {}
+\_famalias [Catalog]
+
+\_famtext {Computer Modern like family:}
+
+\_faminfo [Latin Modern] {TeX Gyre fonts based on Coputer Modern} {f-lmfonts}
+   { -,\nbold,\sans,\sans\nbold,\slant,\ttset,\ttset\slant,\ttset\caps,%
+       \ttprop,\ttprop\bolder,\quotset: {\rm\bf\it\bi}
+       \caps: {\rm\it}
+       \ttlight,\ttcond,\dunhill: {\rm\it} \upital: {\rm} }
+\_famalias [LMfonts] \_famalias [Latin Modern Fonts]
+
+\_famtext {TeX Gyre fonts based o Adobe 35:}
+
+\_faminfo [Termes] {TeX Gyre Termes fonts based on Times} {f-termes}
+   { -,\caps: {\rm\bf\it\bi} }
+\_famalias [Times]
+
+\_faminfo [Heros] {TeX Gyre Heros fonts based on Helvetica} {f-heros}
+   { -,\caps,\cond,\caps\cond: {\rm\bf\it\bi} }
+\_famalias [Helvetica]
+
+\_faminfo [Adventor] {TeX Gyre Adventor based on Avantgarde Book} {f-adventor}
+   { -,\caps: {\rm\bf\it\bi} }
+\_famalias [Avantgarde Book]
+
+\_faminfo [Bonum] {TeX Gyre Bonum fonts based on Bookman} {f-bonum}
+   { -,\caps: {\rm\bf\it\bi} }
+\_famalias [Bookman]
+
+\_faminfo [Pagella] {TeX Gyre Pagella fonts based on Palatino} {f-pagella}
+   { -,\caps: {\rm\bf\it\bi} }
+\_famalias [Palation]
+
+\_faminfo [Schola] {TeX Gyre Schola fonts based on New Century} {f-schola}
+   { -,\caps: {\rm\bf\it\bi} }
+\_famalias [New Century]
+
+\_faminfo [Cursor] {TeX Gyre Cursor fonts based on Courier} {f-cursor}
+   { -,\caps: {\rm\bf\it\bi} }
+\_famalias [Courier]
+
+\_famtext {Other fonts:}
+
+\_faminfo [Linux Libertine] {Free fonts typicaly installed in systems} {f-libertine}
+   { -: {\rm\bf\it\bi} \semi: {\rm\it} 
+     \caps,\sans,\mono,\caps\sans: {\rm\bf\it\bi} -: {\initials\displ\keybr} }
+\_famalias [Libertine] \_famalias [LinLibertine]
+
+\_faminfo [Antykwa Torunska] {Traditional Polish font family} {f-antt}
+   { -,\cond,\caps, \caps\cond: {\rm\bf\it\bi} 
+    \medium,\cond\medium, \light, \cond\light:{\rm\it} }
+\_famalias [Antt]
+
+\_faminfo [Baskerville] {Free vaiants of classical Baskerville} {f-baskerville}
+   { -,\caps: {\rm\bf\it\bi} }
+\_famalias [BaskevilleF]
+
+\_faminfo [Technika] {Fonts from visual style of CTU in Prague} {f-technika} 
+   { -,\light,\book, \caps, \caps\book: {\rm\bf\it\bi} -:{\stencil} }
+\_famalias [CTU Technika]
+
+\_faminfo [XCharter] {An extension of Bitstream Charter} {f-xcharter}
+   { -,\slant,\caps,\caps\slant: {\rm\bf\it\bi} }
+
+\_faminfo [GFSBodoni] {Based on Bodoni with greek letters} {f-gfsbodoni}
+   { -: {\rm\bf\it\bi} }
+
+\_endcode
+
+Once you have prepared a font family file with the name `f-<famname>.opm` and \TeX/ is
+able to see it in your filesystem then you can type \^`\fontfam``[<famname>]` and
+the file is read, so the information about font family is loaded. The name
+`<famname>` must be lowercase and without spaces in the file name
+`f-<famname>.opm`. On the other hand the `\fontfam` command gives more tolerance: 
+you can write uppercase letters and spaces here. The spaces are ignored and 
+letters are converted to lowercase.
+For example `\fontfam [LM Fonts]` is equivalent to \fontfam [LMfonts] and both
+commands load the file `f-lmfonts.opm`.
+
+You can use your font file in sense of previous paragraph without
+registering it. But problem is that such families are not listed when
+`\fontfam[?]` is used and it is not included in font catalogue when
+`\fontfam[catalog]` is printed. The list of families taken in the catalogue and
+listed on the terminal is declared in two files: `fams-ini.opm` and
+`fams-local.opm`. The second file is optional. User can create it and write to
+it the information about user-defined families using the same syntax as in
+existed file `fams-ini.opm`. 
+
+The information from the user's `fams-local.opm` file has precedence.
+For example `fams-ini.opm` declares aliases Times$\to$Termes etc. If you
+have original Times purchased from Adobe then you can register your
+declaration about Times family in `fams-local.opm`. When an user write
+`\fontfam[Times]` then orginal Times (no Termes) is used in such case.
+
+The `fams-ini.opm` and `fams-local.opm` files use the macros
+`\_famifo`, `\_famalias` and `\_famtext`. See the example from
+`fams-ini.tex`:
+
+{\everytt={\typosize[8/10]\_let\_printverbline=\_printcodeline \medskip}
+ \def\docfile{fams-ini.opm}
+\verbinput (3-27) fams-ini.opm
+... etc.
+}
+\medskip
+
+The \^`\_faminfo` commad has the syntax:
+\begtt \catcode`\<=13
+\_faminfo [<Family Name>] {<comments>} {<file-name>}
+     { <mod-plus-vars> }
+\endtt
+%
+The `<mod-plus-vars>` data is used only when printing catalogue. It consists with
+one or more pairs `<mods>: {<vars>} <mods>: {<vars>}` etc.
+For each pair: each modifiers (separated by comma) are applied to each <vars>
+and prepared sample is printed. The `-` character means no modifiers 
+should be applied.
+
+The \^`\_famalias` declares an alias to the last
+declared family. 
+
+The \^`\_famtext` writes a line to the terminal and to the log file when all
+families are listed.
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/fams-ini.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/fnotes.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/fnotes.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/fnotes.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,175 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \fnote {Footnotes, marginal notes OpTeX <2020-03-20>} % loaded in format
+
+   \_doc -----------------------------
+   \`\_gfnotenum` is conter which counts footnotes globally in the document.
+                  whole document, chapters, pages.\nl
+   \`\_lfnotenum` is counter which counts footnotes at each chapter from one.
+                  It is used for local page footnote counters too.\nl   
+   \`\_ifpgfnote` says that footnote numbers are counted on each page from
+                   one. We need to run `\openref` in such case.\nl
+   \`\fnotenum` is a macro which expands to footnote number counted in declared part.\nl
+   \`\fnotenumchapters` declares footnotes numbered in each chapter from one
+   (default), \`\fnotenumglobal` declares footnotes numbered in whole
+   document from one and \`\fnotenumpages` declares footnotes numbered 
+   at each page from one. 
+   \_cod -----------------------------
+
+\_newcount\_gfnotenum \_gfnotenum=0
+\_newcount\_lfnotenum
+
+\_newifi \_ifpgfnote  
+\_def \_fnotenumglobal   {\_def\_fnotenum{\_the\_gfnotenum}\_pgfnotefalse}
+\_def \_fnotenumchapters {\_def\_fnotenum{\_the\_lfnotenum}\_pgfnotefalse}
+\_def \_fnotenumpages    {\_def\_fnotenum{\_trycs{_fn:\_the\_gfnotenum}{?}}\_pgfnotetrue}
+\_fnotenumchapters  % default are footnotes counted from one in each chapter
+\_def \fnotenum{\_fnotenum}
+\_public \fnotenumglobal \fnotenumchapters \fnotenumpages ;
+\_let \runningfnotes = \fnotenumglobal % for backward compatibility
+
+   \_doc -----------------------------
+   The \`\_printfnotemark` prints the footnote mark. You can re-define this
+   macro if you want another design of footnotes. For example
+   \begtt
+   \fnotenumpages 
+   \def \_printfnotemark {\ifcase 0\fnotenum\or 
+      *\or**\or***\or$^\mathbox{†}$\or$^\mathbox{‡}$\or$^\mathbox{††}$\fi}
+   \endtt
+   This code gives footnotes* and ** and*** and$^\mathbox{†}$ etc.\ 
+   and it supposes that there are no more than 6 footnotes at one page.
+
+   If you want to distinguish between footnote marks in the text and in the front of
+   footnote itself, then you can define `\_printfnotemarkA` and `\_printfnotemarkB`.
+
+   The \`\fnotelinks``<colorA><colorB>` implements the hyperlinked footnotes
+   (from text to footnote and backward).
+   \_cod -----------------------------
+
+\_def \_printfnotemark  {$^{\_fnotenum}$}   % default footnote mark
+\_def \_printfnotemarkA {\_printfnotemark}  % footnote marks used in text
+\_def \_printfnotemarkB {\_printfnotemark}  % footnote marks used in front of footnotes
+
+\_def \_fnotelinks#1#2{% <inText color> <inFootnote color> 
+   \_def\_printfnotemarkA{\_link[fnt:\_the\_gfnotenum]{\_localcolor#1}{\_printfnotemark}%
+                          \_dest[fnf:\_the\_gfnotenum]}%
+   \_def\_printfnotemarkB{\_link[fnf:\_the\_gfnotenum]{\_localcolor#2}{\_printfnotemark}%
+                          \_dest[fnt:\_the\_gfnotenum]}%
+}
+\public \fnotelinks ;
+
+   \_doc ----------------------------
+   Each footnote saves the \`\_Xfnote` (without parameter) to the `.ref` 
+   file (if `\openref`). We can create the mapping from `<gfnotenum>` to`<pgfnotenum>`
+   in the macro `\_fn:<fnotenum>`. Each \^`\_Xpage` macro sets the
+   `\_lfnotenum` to zero.
+   \_cod ----------------------------
+
+\_def \_Xfnote {\_incr\_lfnotenum \_incr\_gfnotenum
+   \_sxdef{_fn:\_the\_gfnotenum}{\_the\_lfnotenum}}
+
+   \_doc ----------------------------
+   The \`\fnote` `{<text>}` macro is simple, \`\fnotemark` and \^`\fnotetext`
+   does the real work.  
+   \_cod ----------------------------
+
+\_def\_fnote{\_fnotemark1\_fnotetext}
+\_def\_fnotemark#1{{\_advance\_gfnotenum by#1\_advance\_lfnotenum by#1\_relax \_printfnotemarkA}}
+
+   \_doc ----------------------------
+   The \`\fnotetext` calls \^`\_opfootnote` which is equivalent to plain \TeX/
+   \^`\vfootnote`. It creates new data to Insert \^`\footins`. The only
+   difference is that we are able to propagate a macro parameter into Insert group
+   before the text is printed (see section \ref[output]). 
+   This propagated macro is \`\_fnset` which sets smaller fonts.
+
+   Note that \^`\vfootnote` and \^`\_opfootnote` does't read the text as a
+   parameter but during normal horizontal mode. This is reason why catcode
+   changes (for example in-line verbatim) can be used here. 
+   \_cod ----------------------------
+
+\_def\_fnotetext{\_incr\_gfnotenum \_incr\_lfnotenum % global increment
+   \_ifpgfnote \_openref \_fi
+   \_wref \_Xfnote{}%
+   \_ifpgfnote \_ifcsname _fn:\_the\_gfnotenum \_endcsname \_else
+       \_opwarning{unknown \_noexpand\fnote mark. TeX me again}
+   \_fi\_fi
+   \_opfootnote\_fnset\_printfnotemarkB
+}
+\_def\_fnset{\_everypar={}\_scalemain \_typoscale[800/800]}
+
+\_public \fnote \fnotemark \fnotetext ;
+
+   \_doc -----------------------------
+   By default \`\mnote``{<text>}` are in right margin at odd pages and they are in left
+   margin at even pages. The `\mnote` macro saves its position to `.ref`
+   file as \`\_Xmnote` without parameter. We define `\_mn:<mnotenum>` as
+   `\right` or `\left` when the `.ref` file is read.
+   The `\ifnum 0`$\le$`0#2` trick returns true if `<pageno>` has numeric type and false 
+   if it is non-numeric type (Roman numeral, for example). We prefer to use
+   `<pageno>`, but only if it has numeric type. We use `<gpageno>` in other cases.
+   \_cod -----------------------------
+
+\_newcount\_mnotenum    \_mnotenum=0       % global counter of mnotes
+\_def \_Xmnote {\_incr\_mnotenum \_ea \_XmnoteA \_currpage}
+\_def \_XmnoteA #1#2{% #1=<gpageno> #2=<pageno>
+   \_sxdef{_mn:\_the\_mnotenum}{\_ifodd\_numtype{#2}{#1} \_right \_else \_left \_fi}}
+\_def \_numtype #1#2{\_ifnum 0<0#1 #1\_else #2\_fi}
+
+   \_doc -----------------------------
+   User can declare \`\fixmnotes``\left` or \^`\fixmnotes``\right`. It defines
+   \`\_mnotesfixed` as `\_left` or `\_right` which declares the placement 
+   of all marginal notes and such declaration has a precedence. 
+   \_cod -----------------------------
+
+\_def \_fixmnotes #1{\_edef\_mnotesfixed{\_cs{_\_csstring #1}}}
+\_public \fixmnotes ;
+
+   \_doc -----------------------------
+   The outer box of marginal note has zero width and zero depth and it is appended 
+   after current line using `\vadjust` primitive or it is inverted to vertical mode 
+   as a box with `\vskip-\baselineskip` followed.  
+   \_cod -----------------------------
+
+\_long\_def\_mnote#1{\_ifvmode {\_mnoteA{#1}}\_nobreak\_vskip-\_baselineskip \_else 
+   \_lower\_dp\_strutbox\_hbox{}\_vadjust{\_kern-\_dp\_strutbox \_mnoteA{#1}\_kern\_dp\_strutbox}%
+   \_fi
+}
+\_public \mnote ;
+
+   \_doc -----------------------------
+   The \`\_mnoteA` macro does the real work. The \`\_lrmnote``{<left>}{<right>}`
+   uses only first or only second parameter depending on the left or right
+   marginal note.
+   \_cod -----------------------------
+
+\_long\_def\_mnoteA #1{\_incr\_mnotenum
+   \_ifx\_mnotesfixed\_undefined
+      \_ifcsname _mn:\_the\_mnotenum \_endcsname 
+          \_edef\_mnotesfixed{\_cs{_mn:\_the\_mnotenum}}%
+      \_else
+          \_opwarning{unknown \_noexpand\mnote side. TeX me again}\_openref
+          \_def\_mnotesfixed{\_right}%
+   \_fi\_fi
+   \_hbox to0pt{\_wref\_Xmnote{}\_everypar={}%
+      \_lrmnote{\_kern-\_mnotesize \_kern-\_mnoteindent}{\_kern\_hsize \_kern\_mnoteindent}%
+      \_vbox to0pt{\_vss \_setbox0=\_vtop{\_hsize=\_mnotesize
+             \_lrmnote{\_leftskip=0pt plus 1fill \_rightskip=0pt}
+                      {\_rightskip=0pt plus 1fil \_leftskip=0pt}%
+             {\_the\_everymnote\_noindent#1\_endgraf}}%
+          \_dp0=0pt \_box0 \_kern\_mnoteskip \_global\_mnoteskip=0pt}\_hss}%
+}
+\_def \_lrmnote#1#2{\_ea\_ifx\_mnotesfixed\_left #1\_else #2\_fi} 
+
+   \_doc -----------------------------
+   We don't want to process `\fnote`, `\fnotemark`, `\mnote` in TOC, headlines
+   nor outlines.
+   \_cod -----------------------------
+
+\_regmacro {\_def\fnote#1{}} {\_def\fnote#1{}} {\_def\fnote#1{}}
+\_regmacro {\_def\fnotemark#1{}} {\_def\fnotemark#1{}} {\_def\fnotemark#1{}}
+\_regmacro {\_def\mnote#1{}} {\_def\mnote#1{}} {\_def\mnote#1{}}
+
+\_endcode % -------------------------------------
+
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/fnotes.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/fonts-catalog.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/fonts-catalog.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/fonts-catalog.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,135 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \_undefined {Font catalogue <2020-02-26>} % loaded on demand by \fontfam[catalog]
+
+\_initunifonts  
+\_begingroup
+
+\_istoksempty\_catalogmathsample \_iftrue \_noloadmath \_fi
+\_let\_ttfixed=\_tentt
+\_fontlet\_smalltt=\_tentt at7pt
+\_suppressfontnotfounderror=1
+
+\_lowercase\_ea{\_ea\_def\_ea\_cataloglist\_ea{\_the\_catalogonly}}
+\_lowercase\_ea{\_ea\_def\_ea\_catalognolist\_ea{\_the\_catalogexclude}}
+
+\_ifx\_cataloglist\_empty \_else
+   \_addto\_cataloglist{ }
+   \_edef\_cataloglist{\_ea\_removespaces\_cataloglist{} }
+\_fi
+\_ifx\_catalognolist\_empty \_else
+   \_addto\_catalognolist{ }
+   \_edef\_catalognolist{\_ea\_removespaces\_catalognolist{} }
+\_fi
+
+\_def\_faminfo [#1]#2#3#4{%
+   \_bgroup   
+       \_lowercase{\_edef\_famname{\_ea\_removespaces #1 {} }}%
+       \_edef\_act{\_noexpand\_isinlist{,\_cataloglist,}{,\_famname,}}\_act
+       \_iftrue \def\_cataloglist{}\_fi
+       \_edef\_act{\_noexpand\_isinlist{,\_catalognolist,}{,\_famname,}}\_act
+       \_iftrue \def\_cataloglist{.}\_fi
+       \_ifx\_cataloglist\_empty
+       \_ifx^#4^\_else
+          \_bigskip {\_ttfixed\_string\fontfam [#1] -- (#2)\_par}          
+          \_input #3.opm
+          \_ifexistfam \_nobreak\_medskip \_dosamples #4:{}
+              \_ifx\_mathfaminfo\_empty 
+              \_else \_istoksempty\_catalogmathsample 
+                  \_iftrue {\_ttfixed \$Default math font\$: \_mathfaminfo \_par}
+                  \_else Default math font (\_mathfaminfo): \_the\_catalogmathsample \_par
+              \_fi\_fi
+          \_else {\_qquad\_ttfixed ... family skipped, fonts not found in your system.}
+       \_fi\_fi\_fi
+   \_egroup
+}
+\_def\_dosamples #1:#2{\_ifx^#2^\_else
+   \_def\_printvars{#2}%
+   \_ea\_dosamplesA\_romannumeral-`\.#1,,%
+   \_ea\_dosamples\_fi
+}
+\_def\_dosamplesA#1,{%
+   \_ifx^#1^\_else 
+      \_ifx-#1\_def\_usemodifiers{}\_else \_def\_usemodifiers{#1}\_fi
+      \_ea \_dosamplesB \_printvars \_relax
+      \_ea \_dosamplesA \_fi
+}
+\_def\_dosamplesB#1{%
+   \_ifx\_relax#1 \_else
+      {\_ttfixed \_detokenize\_ea{\_usemodifiers}\_detokenize{#1}\_unskip:}
+      {\_usemodifiers #1\_ea\_ifx\_the\_font \_nullfont 
+          \_ttfixed ... This font isn't available in your system.% 
+      \_else \_the\_catalogsample \_fi }\_par
+      \_ea \_dosamplesB \_fi
+}
+
+\_def\_wlog#1{\_nobreak\_smallskip
+   \_hbox to\_hsize{\_hskip25pt
+      \_edef\_tmp{#1}\_replstring\_tmp{^^J}{\_par}%
+      \_smalltt \_noindent \_ea \string \_mainfamcommand 
+      \_vtop{\leftskip=1em \_baselineskip=9pt \_tmp \_par}\_hss
+   }
+}
+
+\_def\0#1{\_ifnum#1<10 0\_fi\_the#1}
+\_footline={\_hfil\_ttfixed\_the\_pageno\_hfil}
+\_headline={\_ttfixed Font Catalogue generated by \_OpTeX/ \_hfill \_the\_year-\0\_month-\0\_day}
+\_parindent=0pt
+\_ttfixed
+
+\_input fams-ini.opm
+
+\_isfile {fams-local.opm}\_iftrue \_input fams-local.opm \_fi
+
+\_endgroup
+
+\parindent=0pt
+
+\nonum\sec Customization of the catalogue
+
+
+You can redeclare the printed sample of each font by:
+
+\begtt
+\catalogsample={Hello world!}
+\endtt
+
+before \code{\\fontfam[catalog]} command is used. You can specify
+\code{\\catalogmathsample} if you want to show default math fonts too, for example
+
+\begtt
+\catalogmathsample={Gamma function is defined as
+   $$
+   \Gamma(z) = \int_0^\infty x^{z-1} e^{-x}{\rm d}x, \quad \Re(z)>0.
+   $$}
+\endtt
+%
+The \code{\\catalogmathsample} is empty by default, so math fonts are not loaded,
+only the family of default math font is listed.
+
+\bigskip
+You can restrict the families to be printed in catalogue by:
+
+\begtt
+\catalogonly={Termes, Latin Modern, Heros}
+\endtt
+
+If the \code{\\catalogonly} is empty (this is default value) then all families are
+printed but families listed in the \code{\\catalogexclude} are excluded. For example
+
+\begtt
+\catalogexclude={Latin Modern, XCharter}
+\endtt
+
+The \code{\\cataogexclude} is empty by default.
+
+\bigskip The font families printed in the catalogue must be declared by the
+\code{\\_faminfo} command in the file \code{fams-ini.opm} (declarations used
+as default for \OpTeX/) or in the file \code{fams-local.opm}. The second file
+does not exist by default but user can create it. The syntax rules are
+described in the \code{fams-ini.opm} file.
+
+
+\_endcode % -------------------------------------
+
+ 
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/fonts-catalog.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/fonts-opmac.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/fonts-opmac.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/fonts-opmac.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,175 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \typosize {Font managing macros from OPmac <2020-04-28>} % loaded in format
+
+   \_doc -----------------------------
+   \`\typosize` `[<font-size>/<baselineskip>]` sets given parameters.
+   It sets text font size by the \^`\setfontsize` macro and math font sizes
+   by setting internal macros \^`\_sizemtext`, \^`\_sizemscript` and
+   \^`\_sizemsscript`. It uses common concept font thes sizes: 100\,\%,
+   70\,\% and 50\,\%.
+   The \^`\_setmainvalues` sets the parameters as main values when
+   the `\_typosize` is called first. 
+   \_cod -----------------------------
+
+\_protected\_def \_typosize [#1/#2]{%
+   \_textfontsize{#1}\_mathfontsize{#1}\_setbaselineskip{#2}%
+   \_setmainvalues \_ignorespaces
+}
+\_protected\_def \_textfontsize #1{\_if$#1$\_else \_setfontsize{at#1\_ptunit}\_fi}
+
+\_def \_mathfontsize #1{\_if$#1$\_else
+    \_tmpdim=#1\_ptunit
+    \_edef\_sizemtext{\_ea\_ignorept \_the\_tmpdim \_ptmunit}%
+    \_tmpdim=0.7\_tmpdim
+    \_edef\_sizemscript{\_ea\_ignorept \_the\_tmpdim \_ptmunit}%
+   \_tmpdim=#1\_ptunit \_tmpdim=0.5\_tmpdim
+    \_edef\_sizemsscript{\_ea\_ignorept \_the\_tmpdim \_ptmunit}%
+    \_fi
+}
+\_public \typosize ;
+
+   \_doc -----------------------------
+   \`\typoscale` `[<font-factor>/<baseline-factor>]` scales 
+   font size and baselineskip by given factors in respect to current values.
+   It calculates the \^`\typosize` parameters and runs the \^`\typosize`.
+   \_cod -----------------------------
+
+\_protected\_def \_typoscale [#1/#2]{%
+   \_ifx$#1$\_def\_tmp{[/}\_else
+      \_settmpdim{#1}\_optsize
+      \_edef\_tmp{[\_ea\_ignorept\_the\_tmpdim/}\_fi
+   \_ifx$#2$\_edef\_tmp{\_tmp]}\_else
+      \_settmpdim{#2}\_baselineskip
+      \_edef\_tmp{\_tmp \_ea\_ignorept\_the\_tmpdim]}\_fi
+   \_ea\_typosize\_tmp 
+}
+\_def\_settmpdim#1#2{%
+   \_tmpdim=#1pt \_divide\_tmpdim by1000
+   \_tmpdim=\_ea\_ignorept \_the#2\_tmpdim
+}
+\_public \typoscale ;
+
+   \_doc -----------------------------
+   \`\_setbaselineskip` `{<baselineskip>}` sets new `\baselineskip` and 
+   more values of registers which are dependent on the `<baselineskip>`
+   including the \^`\strutbox`.
+   \_cod -----------------------------
+
+\_def \_setbaselineskip #1{\_if$#1$\_else
+   \_tmpdim=#1\_ptunit
+   \_baselineskip=\_tmpdim \_relax 
+   \_bigskipamount=\_tmpdim plus.33333\_tmpdim minus.33333\_tmpdim
+   \_medskipamount=.5\_tmpdim plus.16666\_tmpdim minus.16666\_tmpdim
+   \_smallskipamount=.25\_tmpdim plus.08333\_tmpdim minus.08333\_tmpdim
+   \_normalbaselineskip=\_tmpdim
+   \_jot=.25\_tmpdim
+   \_maxdepth=.33333\_tmpdim
+   \_setbox\_strutbox=\_hbox{\_vrule height.709\_tmpdim depth.291\_tmpdim width0pt}%
+   \_fi
+}
+
+   \_doc -----------------------------
+   \`\_setmainvalues` sets the current font size and `\baselineskip` 
+   values to the \`\mainfosize` and \hbox{\`\mainbaselineskip`} registers.
+   It redefines itself in order to set the main values only first.
+   \nl
+   \`\scalemain` returns to these values if they were set. Else they are set
+   to 10/12\,pt. 
+   \_cod -----------------------------
+
+\_newskip   \_mainbaselineskip   \_mainbaselineskip=0pt \_relax
+\_newdimen  \_mainfosize         \_mainfosize=0pt
+
+\_def\_setmainvalues {%
+   \_mainbaselineskip=\_baselineskip
+   \_mainfosize=\_optsize
+   \_topskip=\_mainfosize \_splittopskip=\_topskip
+   \_ifmmode \_else \_bf \_it \_bi \_rm \_fi % load all basic variants of the family
+   \_normalmath  % load fonts if \typosize is running first
+   \_let \_setmainvalues =\_setmainvaluesL
+}
+\_def\_setmainvaluesL {\_ifmmode \_normalmath \_else
+   \_rm \_everymath={\_normalmath}\_everydisplay={\_normalmath}\_fi}
+\_def\_scalemain {%
+   \_ifdim \_mainfosize=0pt
+       \_mainfosize=10pt  \_mainbaselineskip=12pt
+       \_let \_setmainvalues=\_setmainvaluesL       
+    \_fi
+   \_optsize=\_mainfosize  \_baselineskip=\_mainbaselineskip
+}
+\_public \scalemain \mainfosize \mainbaselineskip ;
+
+   \_doc -----------------------------
+   \`\thefontsize` `[<size>]` and \`\thefontscale` `[<factor>]` 
+    do modification of the size of the current font. They are implemented by the
+   \^`\newcurrfontsize` macro.
+   \_cod -----------------------------
+
+\_protected\_def\_thefontsize[#1]{\_if$#1$\_else 
+     \_tmpdim=#1\_ptunit
+     \_newcurrfontsize{at\_tmpdim}%
+  \_fi
+  \_ignorespaces
+}
+\_protected\_def\_thefontscale[#1]{\_ifx$#1$\_else
+     \_tmpdim=#1pt \_divide\_tmpdim by1000
+     \_tmpdim=\_ea\_ea\_ea\_ignorept \_pdffontsize\_font \_tmpdim
+     \_newcurrfontsize{at\_tmpdim}%
+  \_fi
+  \_ignorespaces
+}
+\_public \thefontsize \thefontscale ;
+
+   \_doc -----------------------------
+   \`\em` keeps the weight of the current vaiant and switches 
+   roman $\leftrightarrow$ italic. It adds the italic correction by
+   the \`\_additcorr` and \`\_afteritcorr` macros. The second does not
+   add italic correction if the next character is dot or comma. 
+   \_cod -----------------------------
+
+\_protected\_def\_em {%
+   \_ea\_ifx \_the\_font \_tenit \_additcorr \_rm  \_else
+   \_ea\_ifx \_the\_font \_tenbf \_bi\_aftergroup\_afteritcorr\_else
+   \_ea\_ifx \_the\_font \_tenbi \_additcorr \_bf  \_else
+   \_it \_aftergroup\_afteritcorr\_fi\_fi\_fi
+}
+\_def\_additcorr{\_ifdim\_lastskip>0pt 
+   \_skip0=\_lastskip \_unskip\_italcorr \_hskip\_skip0 \_else\_italcorr \_fi}
+\_def\_afteritcorr{\_futurelet\_next\_afteritcorrA}
+\_def\_afteritcorrA{\_ifx\_next.\_else\_ifx\_next,\_else \_italcorr \_fi\_fi}
+\_let\_italcorr=\/
+
+   \_doc -----------------------------
+   The \`\boldify` macro does `\let\it\bi` and `\let\normalmath=\boldmath`.
+   \_cod -----------------------------
+
+\_protected\_def \_boldify {%
+   \_let \_setmainvalues=\_setmainvaluesL   
+   \_let\it =\_bi \_let\rm =\_bf \_let\_normalmath=\_boldmath \_bf
+}
+\_public \em \boldify ;
+
+   \_doc -----------------------------
+   We need to use a font selector for default pagination. Because we don't
+   know what default font size will be selected by the user, we use this
+   \`\_rmfixed` macro. It sets the `\rm` font from default font size
+   (declared by first \^`\typosize` command and redefines itself be only
+   the font switch for next pages.   
+   \_cod -----------------------------
+
+\_def \_rmfixed {% used in default \footline
+   {\_ifdim\_mainfosize=0pt \_mainfosize=10pt \_fi
+    \_fontdef\_rmfixed{\_setfontsize{at\mainfosize}\_resetmod\_rm}%
+    \_global\_let\_rmfixed=\_rmfixed} % next use will be font switch only
+   \_rmfixed 
+}
+\_let \rmfixed = \_tenrm % user can redefine it
+
+
+\_endcode % -------------------------------------
+
+History:
+2020-04-28 \boldify: removed \let\_rm=\_bf
+2020-04-14 \_setmainvaluesL: \_ifmmode test added
+2020-03-27 \_setmainvalues: \_splittopskip=\_topskip added


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/fonts-opmac.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/fonts-preload.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/fonts-preload.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/fonts-preload.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,35 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \tenrm {Latin Modern fonts (EC) preloaded <2020-01-23>} % loaded in format
+
+% Only few text fonts are preloaded:
+
+\_font\_tenrm=ec-lmr10   % roman text
+\_font\_tenbf=ec-lmbx10  % boldface extended
+\_font\_tenit=ec-lmri10  % text italic
+\_font\_tenbi=ec-lmbxi10 % bold italic
+\_font\_tentt=ec-lmtt10  % typewriter
+\_tenrm
+
+\_public \tenrm \tenbf \tenit \tenbi \tentt ; 
+
+\_endcode %---------------------------------------------------
+
+Format in lua\TeX/ can download only non-Unicode fonts. Latin Modern EC is
+loaded here. These fonts are totally unusable in LuaTeX when languages with out
+of ASCII or ISO-8859-1 alphabets are used (for example Czech). We load only
+few 8bit fonts here especially for simple testing the format. 
+But, if the user needs to do a more serious work, he/she can 
+use `\fontfam` macro in order to load a selected font family of Unicode fonts.
+
+We have a dilemma: when the Unicode fonts cannot be preloaded in format then basic
+font set can be loaded by `\everyjob`. But why to load a set of fonts ta the
+beginning of every job when there is highly likely that the user will
+load something completely different. Our decision is: there is a basic 8bit
+font set and user will load the font at beginning of the document.
+
+The fonts selectors \`\tenrm`, \`\tenbf`, \`\tenit`, \`\tenbi`, \`\tentt`
+are declared as `\public` here but only for backward compatibility. We don't
+use them in the Font Selection System. But the protected versions of these
+control sequences are used in the Font Selection System.
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/fonts-preload.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/fonts-resize.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/fonts-resize.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/fonts-resize.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,349 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \setfontsize {Font resizing macros <2020-04-17>} % preloaded in format 
+
+   \_doc -----------------------------
+   The \`\setfontsize` `{<sizespec>}` saves the `<sizespec>` to the \`\_sizespec` macro.
+   The \`\_optsize` value is calculated from the `<sizespec>`. 
+   If the `<sizepec>` is in the `mag<number>` format then the contents of
+   the `\_sizespec` macro is re-calculated to the `at<dimen>` format using 
+   previous `\_optsize` value. 
+   \par \goodbreak
+   \_cod -----------------------------
+
+\_newdimen \_optsize         \_optsize=10pt
+\_newdimen \_defaultoptsize  \_defaultoptsize=10pt
+\_newdimen\_lastmagsize
+
+\_def\_setfontsize #1{%
+   \_edef\_sizespec{#1}%
+   \_ea \_setoptsize \_sizespec\_relax
+   \_reloading
+}
+\_def\_setoptsize {\_isnextchar a{\_setoptsizeA}
+                                 {\_isnextchar m{\_setoptsizeC}{\_setoptsizeB}}}
+\_def\_setoptsizeA at#1\_relax{\_optsize=#1\_relax\_lastmagsize=\_optsize}   % at<dimen>
+\_def\_setoptsizeB scaled#1\_relax{\_optsize=\_defaultoptsize\_relax} % scaled<scalenum>
+\_def\_setoptsizeC mag#1\_relax{%
+   \_ifdim\_lastmagsize>0pt \_optsize=\_lastmagsize \_else \_optsize=\_pdffontsize\_font \_fi
+   \_optsize=#1\_optsize 
+   \_lastmagsize=\_optsize
+   \_edef\_sizespec{at\_the\_optsize}%
+}
+\_public \setfontsize \defaultoptsize ;
+
+   \_doc -----------------------------
+   \`\_resizefont` `{<variant-name>}\<font switch>`, 
+   for example `\resizefont{bf}\_tenbf` resizes the font given by the
+   variant. The variant `XX` have its font switch `\_tenXX`.
+   The \`\_doresizefont``\fontswitch` is used. It works in 
+   TFM mode (\`\_doresizetfmfont`) or OTF mode (\^`\_doresizeunifont`).
+   In both modes, it does
+   \begtt \catcode`\<=13
+   \_font \_tenXX = <fontname> \_sizespec
+   \endtt
+   The `<fontname>` is generated by the `\fontname` \TeX/ primitive where
+   \`\_rfontskipat` removes the `at<dimen>` part of the `\_fontname` output.
+   The `<fontname>` is generated differently in OTF mode, see 
+   \^`\_doresizeunifont` macro.\nl
+   The \`\_whatresize` is defined as `<variant-name>`.    
+   \_cod -----------------------------
+
+\_def\_resizefont#1#2{%
+    \_edef\_whatresize{#1}%
+    \_ifx \_fontselector \_undefined \_doresizefont#2%
+    \_else \_ea \_doresizefont \_fontselector \_fi
+    \_lastmagsize=0pt
+    \_slet{_tryload#1}{_relax}%
+}
+\_def\_doresizetfmfont#1{\_logfont{#1}%
+   \_ea\_font\_ea#1\_ea\_rfontskipat 
+      \_fontname \_cs{_ten\_whatresize} \_relax\_space \_sizespec \_relax
+}
+\_let\_doresizefont=\_doresizetfmfont
+\_def\_logfont#1{} % default is no logging of used fonts 
+
+\_def\_rfontskipat#1{\_ifx#1"\_ea\_rfskipatX \_else\_ea\_rfskipatN\_ea#1\_fi}
+\_def\_rfskipatX #1" #2\_relax{"\_whichtfm{#1}"} 
+\_def\_rfskipatN #1 #2\_relax{\_whichtfm{#1}}
+
+   \_doc -----------------------------
+   \`\fontdef` `<font switch>{<modifiers><variant selector>}`
+   opens group, runs `<modifiers><variant selector>` (i.e.\ it runs `#2` parameter).
+   The font switch `#1` saved in the \`\_fontselector` macro is re-declared
+   because the variant selector runs the \^`\_resizefont`. Now, we need to
+   keep the current meaning of the font switch `#1` but we must leave the
+   opened group. This is done by the \`\_keepmeaning` macro. 
+   \nl
+   \`\fontlet` `<font switch A> <font switch B> <size spec>` does
+   \begtt \catcode`\<=13
+   \font <font switch A> = <fontname> <sizespec> 
+   \endtt
+   The `<fontname>` is extracted using the primitive command `\_fontname <font switch B>`.  
+   \_cod -----------------------------
+
+\_def \_fontdef #1#2{\_begingroup
+   \_ifx\_fontselector\_undefined \_def\_fontselector{#1}\_fi
+   \_reloading #2%
+   \_ea \_keepmeaning \_fontselector \_endgroup
+}
+\_def\_fontlet#1#2{\_ifx #2=\_ea\_fontlet \_ea#1\_else
+  \_ea\_font\_ea#1\_ea\_rfontskipat\_fontname#2 \_relax\_space \_fi
+}
+\_def \_keepmeaning #1#2{\_global\_let\_keepmeaningdata=#1%
+   #2\_let#1=\_keepmeaningdata \_global\_let\_keepmeaningdata=\_undefined
+}
+\_public \fontdef \fontlet ;
+
+   \_doc -----------------------------
+   \`\newcurrfontsize` `<size spec>` sets current font size to the `<size spec>`
+   It is implemented by \^`\fontlet`.
+   The font switch of the current font is extracted by `\_the\_font`.
+   We must re-create the control sequence `\_the\_font` because
+   its original meaning is set to \"inaccessible" by \TeX/ when `\font`
+   primitive is started.
+   \nl
+   \`\resizethefont` is implemented by `\newcurrfontsize` using data from
+   the \^`\_sizespec` macro.
+   \_cod -----------------------------
+
+\_def \_newcurrfontsize #1{% \newcurrfontsize{at25pt}
+   \_edef\_tmp{\_ea\_csstring \_the\_font}%
+   \_ea \_fontlet \_csname \_tmp\_ea\_endcsname \_the\_font \_space #1\_relax
+   \_csname \_tmp\_endcsname
+}
+\_protected\_def \_resizethefont{\_newcurrfontsize\_sizespec}
+
+ \_public \newcurrfontsize \resizethefont ; 
+
+   \_doc -----------------------------
+   The variant selector is defined by `\protected\def\XX{\_tryloadXX \_tenXX}`
+   The `\_tryloadXX` can be in `\_relax` state if no font modifiers were
+   declared. But normally it does \^`\_resizefont``{XX}\tenXX`. This meaning
+   is activated by the \`\_reloading` macro.
+   \_cod -----------------------------
+
+\_def\_reloading{\_loadf{rm}\_tenrm \_loadf{bf}\_tenbf
+   \_loadf{it}\_tenit \_loadf{bi}\_tenbi
+}
+\_def\_loadf#1#2{\_sdef{_tryload#1}{\_ifmmode \_else \_resizefont{#1}#2\_fi}}
+\_def\_tryloadtt{\_resizefont{tt}\_tentt}
+
+\_let\_tryloadrm=\_relax
+\_let\_tryloadbf=\_relax
+\_let\_tryloadit=\_relax
+\_let\_tryloadbi=\_relax
+
+    \_doc ----------------------------
+    The font selection system allows to use \`\currvar`
+    instead explicitly specified variant selector. The current variant
+    is extracted from `\the\font` output which could be `\_tenXX` control
+    sequence. Then `\currvar` expands to `\_rm` or `\_it` etc.  
+    \_cod ----------------------------   
+
+\_protected \_def \_currvar{\_cs{_currvar:\_ea \_csstring \_the\_font}}
+\_sdef{_currvar:_tenrm}{\_rm}
+\_sdef{_currvar:_tenbf}{\_bf}
+\_sdef{_currvar:_tenit}{\_it}
+\_sdef{_currvar:_tenbi}{\_bi}
+\_sdef{_currvar:_tentt}{\_tt}
+\_public \currvar ;
+
+   \_doc -----------------------------
+   The \`\_regtfm` `<font id> <optical size data>` 
+   saves the <optical size data> concerned to `<font id>`.
+   The `<optical size data>` is in the form as show below in the code where
+   `\regtfm` is used. 
+   \nl
+   The \`\_wichtfm` `<fontname>` expands to the `<fontname>` or to the corrected
+   `<fontname>` read from the `<optical size data>`. It is used in the
+   \^`\_rfontskipat` macro and it is used in \^`\fontlet` macro. 
+   It means that each `<fontname>` generated by the `\fontname` primitive in the 
+   `\fontlet` macro is processed by the `\_whichtfm`. The real `<fontname>` or
+   corrected `<fontname>` (depending on the optical data does not exist or exist) 
+   is the output of the expansion before `\font` primitive takes this output
+   as its parameter.
+
+   The implementation detail: The `\_<font id>:reg` is defined as the
+   `<optical size data>` and all control sequences `\_<fontname>:reg`
+   from this data line has the same meaning because of the 
+   \`\_reversetfm` macro. The `\_whichtfm` expands this data line and apply
+   \`\_dowhichtfm`. This macro select the right result from the data line
+   by testing with the current `\_optsize` value.
+   \_cod -----------------------------
+
+\_def\_regtfm #1 0 #2 *{\_ea\_def \_csname _#1:reg\_endcsname{#2 16380 \_relax}%
+  \_def\_tmpa{#1}\_reversetfm #2 * %
+}
+\_def\_reversetfm #1 #2 {% we need this data for \_setmathfamily 
+   \_ea\_let\_csname _#1:reg\_ea\_endcsname
+   \_csname _\_tmpa:reg\_endcsname
+   \_if*#2\_else \_ea\_reversetfm \_fi
+}
+\_def\_whichtfm #1{%
+   \_ifcsname _#1:reg\_endcsname
+      \_ea\_ea\_ea \_dowhichtfm
+      \_csname _#1:reg\_ea\_endcsname
+   \_else
+      #1%
+   \_fi
+}
+\_def\_dowhichtfm #1 #2 {%
+   \_ifdim\_optsize<#2pt #1\_ea\_ignoretfm\_else \_ea\_dowhichtfm
+\_fi
+}
+\_def\_ignoretfm #1\_relax{}
+
+   \_doc -----------------------------
+   Optical sizes data for preloaded 8bit Latin Modern fonts:
+   \_cod -----------------------------
+
+\_regtfm lmr  0 ec-lmr5 5.5 ec-lmr6 6.5 ec-lmr7 7.5 ec-lmr8 8.5 ec-lmr9 9.5
+                ec-lmr10 11.1 ec-lmr12 15 ec-lmr17 *
+\_regtfm lmbx 0 ec-lmbx5 5.5 ec-lmbx6 6.5 ec-lmbx7 7.5 ec-lmbx8 8.5 ec-lmbx9 9.5 
+                ec-lmbx10 11.1 ec-lmbx12 *
+\_regtfm lmri 0 ec-lmri7 7.5 ec-lmri8 8.5 ec-lmri9 9.5 ec-lmri10 11.1 ec-lmri12 *
+\_regtfm lmtt 0 ec-lmtt10 11.1 ec-lmtt12 *
+
+\_setfontsize {at10pt} % default font size
+
+\_endcode %---------------------------------------------------
+
+
+\sec[setfontsize] Scaling fonts in text mode (low-level macros)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+The \^`\setfontsize` `{<size spec>}` 
+saves the information about `<size spec>`. This information is taken into
+account when a variant selector (for example `\rm`, `\bf`, `\it`, `\bi`)
+or `\resizethefont` is used. The `<size spec>` can be:
+\begitems
+* `at<dimen>`, for example `\setfontsize{at12pt}`. It gives the desired font size directly.
+* `scaled<scale factor>`, for example `\setfontsize{scaled1200}`. The font is
+  scaled in respect to its native size (which is typically 10\,pt). It
+  behaves like `\font\... scaled<number>`.
+* `mag<decimal number>`, for example `\setfontsize{mag1.2}`. The font is
+  scaled in respect to the current size of the fonts given by the previous
+  \^`\setfontsize` command. 
+\enditems
+The initialization value in \OpTeX/ is given by `\setfontsize{at10pt}`.
+
+The \^`\resizethefont` resizes the current font to the size given by previous
+\^`\setfontsize`. For example
+
+\begtt
+                     Here is 10 pt text, 
+\setfontsize{at12pt} 10 pt text here unchanged...
+\resizethefont       and 12 pt text is here.
+\endtt
+%
+The \^`\setfontsize` command acts like {\em font modifier}. It means that it
+saves information about fonts but does not change the font actually until
+variant selector or \^`\resizethefont` is used.
+
+The following example demonstrates the `mag` format of \^`\setfontsize`
+parameter. It is only a curious example probably not used in practical
+typography.
+
+\begtt
+\def\smaller{\setfontsize{mag.9}\resizethefont}
+Text \smaller text \smaller text \smaller text.
+\endtt
+
+If you load a font directly by `\font` primitive and you want to
+create a size-dependent selector for such font then you can use
+\^`\resizethefont`:
+
+\begtt
+\font\tencomfortaa=Comfortaa-Regular-T1 at10pt
+\def\comfortaa{\tencomfortaa\resizethefont}
+
+\comfortaa Here is 10 pt text
+\setfontsize{at12pt}
+\comfortaa Here is 12 pt text
+\endtt
+%
+The example above uses the 8\,bit `tfm` font. You can use Unicode font too, of
+course. The \^`\fontfam` macro initializes the extended `\font` primitive
+features for \LuaTeX/. If you didn't use this command, you must to initialize
+these features by `\initunifonts` command, for example:
+
+\begtt
+\initunifonts
+\font\tencyklop=[cyklop-regular] at10pt % the font cyklop-regular.otf is loaded
+\def\cyklop{\tencyklop\resizethefont}
+
+\cyklop Here is 10 pt text
+\setfontsize{at12pt}
+\cyklop Here is 12 pt text
+\endtt
+
+\secc[fontdef] The \code{\\fontdef} declarator
+
+You can declare `\<newfont>` by the \^`\fontdef` command. 
+
+\begtt \catcode`\<=13
+  \fontdef \<newfont> {<font modifiers> \<variant-selector>}
+  example:
+  \fontdef \bigfont {\setfontsize{at15pt}\bf}
+\endtt
+%
+This command runs `<font modifiers> \<variant-selector>` in a group and sets the
+resulting current font as `\<newfont>`. 
+
+The resulting `\<newfont>` declared by \^`\fontdef` is \"fixed font switch"
+independent of \^`\setfontsize` and other font modifiers. More exactly, it is 
+fixed font switch when it is used but it can depend on the current font
+modifiers and font family and given font modifiers when it is declared.
+
+The parameter of the \^`\fontdef` macro must be exactly finished by the
+variant selector. More information about font modifiers
+and variant selectors are in the section~\ref[fontsystem].
+
+\secc[fontlet] The \code{\\fontlet} declarator
+
+We have another command for scaling: \^`\fontlet` which is able to resize
+arbitrary font given by its font switch.
+This font switch was declared it by the
+`\font` primitive or the `\fontdef` macro.
+
+\begtt \catcode`\<=13
+  \fontlet \<newfont> = \<fontswitch> <sizespec>
+  example:
+  \fontlet \bigfont = \_tenbf at15pt
+\endtt
+
+The resulted `\bigfont` is the same as in previous example where `\fontdef`
+was used. The advantage of `\fontdef` macro will be more clear when you load
+font families by `\fontfam` and you are using more font modifiers declared
+in such families.
+
+Summary: you can declare font switches:
+\begitems
+* by the `\font` primitive if you know the font file,
+* by the \^`\fontlet` command if you know the font switch and the size, or
+* by the \^`\fontdef` command if you know the variant and modifiers.
+\enditems
+
+\secc Optical sizes
+
+There are font families with more font files where almost the same font is
+implemented in various design sizes: `cmr5`, `cmr6`, `cmr7`, `cmr8`, `cmr9`,
+`cmr10`, `cmr12`, `cmr17` for example. This feature is called \"optical
+sizes". \OpTeX/ chooses a font with an optical size closest to desired size
+specified by the \^`\setfontsize`, when `at<dimen>` or `mag<coefficient>` is used.
+When `scaled<scale factor>` is used then optical size is chosen using the value
+of the `\defaultoptsize` register and such font is scaled by the specified
+`<scale factor>`. There is `\defaultoptsize=10pt` by default.
+
+Font collections with optical sizes must be registered by the
+\^`\_regtfm` for `tfm` files or \^`\_regoptsizes` for Unicode fonts.
+\OpTeX/ registers 8bit Latin Moder fonts in the format (`fonts-resize.opm` file) 
+and OTF Latin Modern fonts in the `f-lmfonts.opm` file.
+
+\secc Implementation notes
+
+\_endinput
+
+2020-04-17 \resizethefont introduced
+2020-03-17 released


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/fonts-resize.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/fonts-select.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/fonts-select.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/fonts-select.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,670 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \fontfam {Fonts selection system <2020-03-18>} % preloaded in format
+
+   \_doc -----------------------------
+   The \`\initunifonts` initializes extended `\font` primitive 
+   (to be able to load Unicode fonts). Unfortunately, this part of
+   \OpTeX/ depends on \LaTeX/ lua codes `ltluatex.lua` and
+   `luaotfload-main.lua`. And this code need to be declared a
+   control sequence `\e at alloc@attribute at count` by `\countdef` primitive.
+   Moreover, the `\initunifont` switches with 
+   the \^`\_doresizefont` macro to OTF mode which is represented by the
+   macro \`\_doresizeunifont`. This mode includes
+   a fallback to TFM mode if \^`\_fontnamegen` is not defined.
+   Finally, the `\initunifnt` sets itself to relax because we need not to do
+   this work twice.
+   \_cod -----------------------------
+
+\_def\_initunifonts {%
+   \_ea\_newcount \_csname e at alloc@attribute at count\_endcsname
+   \_global \_csname e at alloc@attribute at count\_endcsname=-1   
+   \_directlua{%
+      require("ltluatex")
+      require('luaotfload-main') local _void = luaotfload.main ()
+   }%
+   \_gdef\_rfskipatX ##1" ##2\_relax{"##1"}% 
+   \_global\_let \_doresizefont=\_doresizeunifont
+   \_gdef\_tryloadtt {\_fontdef\_tentt{\_def\_fontnamegen{[lmmono10-regular]}\_rm}}% 
+   \_global\_let \_initunifonts=\_relax % we need not to do this work twice
+   \_global\_let \initunifonts=\_relax
+}
+\_gdef\_doresizeunifont #1{\_logfont{#1}%
+   \_ifx\_fontnamegen\_undefined \_doresizetfmfont#1\_else
+       \_font#1={\_fontnamegen} \_sizespec \_relax \_setwsp#1\_relax
+   \_fi
+}
+\_public \initunifonts ; 
+
+   \_doc -----------------------------
+   The \`\_famdecl` `[<Family Name>] \<Famselector> {<comment>} {<modifiers>} {<variants>} {<math>}`\nl
+   `{<font for testing>} {\def`\^`\_fontnamegen``{<data>}}` runs \^`\initunifonts`, then
+   checks if `\<Famselector>` is defined. If it is true, then closes the file by 
+   `\endinput`. Else it defines `\<Famselector>` and saves it to the \`\_mainfamcommand` 
+   macro because the \`\_initfontfamily` needs it. The \`\_currfamily` is set
+   to the `<Famselector>` because the following \^`\moddef` commands need to
+   be in the right font family context. The `\_currfamily` is set to the
+   `<Famselector>` by the `\<Famselector>` too, because `\<Famselector>`
+   must set the right faily context. The font family context is given by the current
+   `\_currfamily` value and by the actual meaning of the \^`\_fontnamegen` macro. 
+   \_cod -----------------------------
+
+\_def\_famdecl [#1]#2#3#4#5#6#7#8{%
+   \_initunifonts \_uniaccents
+   \_ifx #2\_undefined 
+      \_isfont{#7}\_iffalse
+         \_opwarning{Family [#1] skipped, font "#7" not found}\_ea\_ea\_ea\_endinput \_else
+         \_edef\_currfamily {\_csstring #2}%
+         \_def\_mainfamcommand{#2}\_def\_mathfaminfo{#6}%
+         \_protected\_edef#2{\_def\_noexpand\_currfamily{\_csstring #2}\_unexpanded{#8\_resetmod}}%
+         \_wterm {FONT: [#1] -- \_string#2 \_detokenize{(#3)^^J mods:{#4} vars:{#5} math:{#6}}}%
+      \_fi 
+   \_else \_ea #2\_ea\_endinput \_fi
+}
+\_def\_initfontfamily{%
+   \_mainfamcommand \_reloading \_rm   
+}
+
+   \_doc -----------------------------
+   \`\_regoptsizes` `<internal-template> <left-output>?<right-output> <resizing-data>`
+   prepares data for using by the \`\_optname` `<internal-template>` macro.
+   The data are saved to the `\_oz:<internal-template>` macro.
+   When the `\_optname` is expanded then the data are scanned by the macro 
+   \`\_optnameA` `<left-output>?<right-output> <mid-output> `\code{<}`<size>` 
+   in the loop.\nl
+   \`\_optfontalias` `{<template A>}{<template B>}` is defined as 
+   `\let\_oz:<templateA>=\_oz:<templateB>`. 
+   \_cod -----------------------------
+
+\_def\_regoptsizes #1 #2?#3 #4*{\_sdef{_oz:#1}{#2?#3 #4* }}
+\_def\_optname #1{\_ifcsname _oz:#1\_endcsname
+   \_ea\_ea\_ea \_optnameA \_csname _oz:#1\_ea\_endcsname
+   \_else \_failedoptname{#1}\_fi
+}
+\_def\_failedoptname #1{optname-fails:(#1)}
+\_def\_optnameA #1?#2 #3 <#4 {\_ifx*#4#1#3#2\_else
+   \_ifdim\_optsize<#4pt #1#3#2\_optnameC
+   \_else \_afterfifi \_optnameA #1?#2 \_fi\_fi
+}
+\_def\_optnameC #1* {\_fi\_fi}
+\_def\_afterfifi #1\_fi\_fi{\_fi\_fi #1}
+\_def\_optfontalias #1#2{\_slet{_oz:#1}{_oz:#2}}
+
+   \_doc -----------------------------
+   \`\_fvars` `<rm-template> <bf-template> <it-template> <bi-template>`
+   saves data for usage by the `\_currV` macro. If a template is only dot
+   then previous template is used (it can be used if the font family doesn't
+   dispose with all standard variants).
+   \nl
+   \`\_currV` expands to a template declared by `\_fvars` depending on the
+   `<variant name>`. Usable only of standard four variants. Next variants
+   can be declared by the \^`\famvardef` macro.
+   \nl
+   \`\_fset` `<key>=<value>,...,<key>=<value>` expands to
+   `\def\_<key>V{<value>}` in the loop.
+   \nl
+   \`\_onlyif` `<key>=<value-a>,<value-b>...,<value-z>: {<what>}` 
+   runs <what> only if the `\_<key>V` is defined as `<value-a>` or
+   `<value-b>` or ... or `<value-z>`.
+   \_cod -----------------------------
+
+\_def\_fvars #1 #2 #3 #4 {%
+   \_sdef{_fvar:rm}{#1}%
+   \_sdef{_fvar:bf}{#2}%
+   \_ifx.#2\_slet{_fvar:bf}{_fvar:rm}\_fi
+   \_sdef{_fvar:it}{#3}%
+   \_ifx.#3\_slet{_fvar:it}{_fvar:rm}\_fi
+   \_sdef{_fvar:bi}{#4}%
+   \_ifx.#4\_slet{_fvar:bi}{_fvar:it}\_fi
+}
+\_def\_currV{\_cs{_fvar:\_whatresize}}
+\_def\_V{ }
+\_def \_fsetV #1 {\_fsetVa #1,=,}
+\_def \_fsetVa #1=#2,{\_isempty{#1}\_iffalse
+   \_ifx,#1\_else\_sdef{_#1V}{#2}\_ea\_ea\_ea\_fsetVa\_fi\_fi
+}
+\_def \_onlyif #1=#2:#3{%
+    \_edef\_act{\_noexpand\_isinlist{,#2,}{,\_cs{_#1V},}}\_act
+    \_iftrue #3\_fi
+}
+
+   \_doc -----------------------------
+   The \`\moddef` `\<modifier> {<data>}` simply speaking does
+   `\def\<modifier>{<data>}`, but we need to respect
+   the family context. In fact, `\protected\def\_f:<current family>:<modifier>{<data>}` is
+   performed and the `\<modifier>` is defined as
+   \`\_famdepend``\<modifier>{_f:\_currfamily:<modifier>}`. It expands to
+   `\_f:\_currfamily:<modifier>` value if it is defined or it prints
+   warning. When the `\_currfamily` value is
+   changed then we can declare the same `\<modifier>` with different meaning.
+
+   When user declare a prefixed variant of the `\<modifier>` then unprefixed
+   modifier name is used in internal macros, this is reason why we are using
+   the \`\_remifirstunderscore``\_tmp` (where `\_tmp` expands to
+   `_<something>` or to `<something>`. The `\_remifirstunderscore` 
+   redefines `\_tmp` in the way that it
+   expands only to `<something>` without the first `_`.
+   \_cod -----------------------------
+
+\_def \_moddef #1#2{\_edef\_tmp{\_csstring#1}\_remfirstunderscore\_tmp
+   \_sdef{_f:\_currfamily:\_tmp}{#2\_reloading}%
+   \_protected \_edef #1{\noexpand\_famdepend\noexpand#1{_f:\noexpand\_currfamily:\_tmp}}%
+   \_ea \_ifx \_csname\_tmp\_endcsname #1\_else
+      \_ea \_public \_csname\_tmp\_endcsname ;\_fi
+}
+\_def\_remfirstunderscore#1{\_ea\_remfirstunderscoreA#1\_relax#1}
+\_def\_remfirstunderscoreA#1#2\_relax#3{\_if _#1\_def#3{#2}\_fi}
+
+\_protected \_def\_resetmod {\_cs{_f:\_currfamily:resetmod}} % private variant of \resetmod
+\_def\_currfamily{} % default current family is empty
+
+\_def\_famdepend#1#2{\_ifcsname#2\_endcsname \_csname#2\_ea\_endcsname \_else
+   \_opwarning{\_string#1 is undeclared in current family "\_currfamily", ignored}\_fi
+}
+\_public \moddef ;
+
+   \_doc -----------------------------
+   The \`\famvardef` `\<XX> {<data>}` 
+   uses analogical trick like \^`\moddef` with
+   the \^`\_famdepend` macro. The auxiliary 
+   \`\_famvardefA` `\<XX> \_ten<XX> \_tryload<XX> {<data>}` is used.
+   It does:
+   \begitems
+   * `\protected\def \<XX> {\_famdepend \<XX> {_f:\_currfamily:<XX>}}`,
+   * `\def \_f:<current family>:<XX> {\_tryload<XX>\_ten<XX>}` keeps family dependent definition,
+   * `\def \_tryload<XX> {`\^`\fontdef`` \_ten<XX> {<data>}}` loads actually the font `\_ten<XX>`,
+   * `\def \_currvar:_ten<XX> {\<XX>}` in ordef to the \^`\currvar` macro
+   work correctly.
+   \enditems
+   \_cod -----------------------------
+
+\_def\_famvardef#1{\_edef\_tmp{\_csstring#1}\_remfirstunderscore\_tmp
+   \_ea\_famvardefA \_ea#1\_csname _ten\_tmp\_ea\_endcsname
+      \_csname _tryload:\_tmp\_endcsname
+}
+\_def\_famvardefA #1#2#3#4{% #1=\_XX #2=\_tenXX #3=\_tryloadXX #4=data
+   \_isinlist{.\_rm\_bf\_it\_bi\currvar\_currvar}#1\_iftrue
+      \_opwarning{\_string\famvardef: 
+          You cannot re-declare private standard variant selector \_string#1}%
+   \_else
+      \_protected\_edef #1{\_noexpand\_famdepend\_noexpand#1{_f:\_noexpand\_currfamily:\_tmp}}%
+      \_sdef{_f:\_currfamily:\_tmp}{#3#2}%
+      \_def#3{\_fontdef#2{#4}}%
+      \_ifx#1\tt \_addto#1{\_fam\_ttfam}\_fi
+      \_sdef{_currvar:\_csstring#2}{#1}%
+   \_fi
+}
+\_public \famvardef ;
+
+   \_doc -----------------------------
+   The \`\fontfam` `[<Font Family>]` does:
+   \begitems
+   * Convert its parameter to lower case and without spaces, e.g.\ `<fontfamily>`.
+   * If the file `f-<fontfamily>.opm` exists read it and finish.
+   * Try to load user defined `fams-local.opm`.
+   * If the `<fontfamily>` is declared in `fams-local.opm` or `fams-ini.opm`
+     read relevant file and finish.
+   * Print the list of declared families.
+   \enditems
+   The `fams-local.opm` is read by the \`\_tryloadfamslocal` macro. It sets
+   itself to `\_relax` because we need not to load this file twice.
+   The \`\_listfamnames` macro prints registered font families to the
+   terminal and to the log file.
+   \_cod -----------------------------
+
+\_def\_fontfam[#1]{%
+   \_lowercase{\_edef\_famname{\_ea\_removespaces #1 {} }}%
+   \_isfile {f-\_famname.opm}\_iftrue \_opinput {f-\_famname.opm}%
+   \_else
+       \_tryloadfamslocal
+       \_edef\_famfile{\_trycs{_famf:\_famname}{}}%
+       \_ifx\_famfile\_empty \_listfamnames
+       \_else \_opinput {\_famfile.opm}%
+   \_fi\_fi
+}
+\_def\_tryloadfamslocal{%
+   \_isfile {fams-local.opm}\_iftrue
+      \_opinput {fams-local.opm}
+   \_fi
+   \_let \_tryloadfamslocal=\_relax  % need not to load fams-local.opm twice
+}
+\_def\_listfamnames {%
+   \_wterm{===== List of font families ======}
+   \_begingroup
+       \_let\_famtext=\_wterm
+       \_def\_faminfo [##1]##2##3##4{%
+           \_wterm{ \_space\_noexpand\fontfam [##1] -- ##2}%
+       \_let\_famalias=\_famaliasA}%
+       \_opinput {fams-ini.opm}
+       \_isfile {fams-local.opm}\_iftrue \_opinput {fams-local.opm}\_fi
+       \_message{^^J}%
+   \_endgroup
+}
+\_def\_famaliasA{\_message{ \_space\_space\_space\_space -- alias:}
+   \_def\_famalias[##1]{\_message{[##1]}}\_famalias
+}
+\_public \fontfam ;
+
+   \_doc -----------------------------
+   When the `fams-ini.opm` or `fams-loca.opm` files are read then we need
+   to save ony a mapping from family names or alias names to the font family file
+   names. All other information is ignored in this case. But if these files
+   are read by the `\_listfamnames` macro or when printing a catalog then
+   more infrormation is used and printed.\nl
+   \`\_famtext` does nothing or prints the text on the terminal.
+   \nl
+   \`\_faminfo` `[<Family Name>] {<comments>} {<file-name>} {<mod-plus-vars>}`
+   does\nl `\_def \_famf:<familyname> {<file-name>}` or prints information on
+   the terminal.
+   \nl
+   \`\_famalias` `[<Family Alias>]` does `\def \_famf:<familyalias> {<file-name>}`
+   where `<file-name>` is stored from the previous `\_faminfo` command. Or
+   prints information on the terminal. 
+   \_cod -----------------------------
+
+\_def\_famtext #1{}
+\_def\_faminfo [#1]#2#3#4{%
+   \_lowercase{\_edef\_tmp{\_ea\_removespaces #1 {} }}%
+   \_sdef{_famf:\_tmp}{#3}%
+   \_def\_famfile{#3}%
+}
+\_def\_famalias [#1]{%
+   \_lowercase{\_edef\_famname{\_ea\_removespaces #1 {} }}%
+   \_sdef{_famf:\_famname\_ea}\_ea{\_famfile}%
+}   
+\_input fams-ini.opm
+\_let\_famfile=\_undefined
+
+   \_doc -----------------------------
+   When the \^`\fontfam``[catalog]` is used then the file
+   `fonts-tatalog.opm` is read. The macro \^`\_faminfo` is redefined here
+   in order to print catalog samples of all declared modifiers/variant
+   pairs. The user can declare different samples and different behavior of
+   the catalog, see the end of catalog listing for more information.
+   The default parameters 
+   \`\catalogsample`, \`\catalogmathsample`, \`\catalogonly` and
+   \`\catalogexclude` of the catalog are declared here.
+   \_cod -----------------------------
+
+\_newtoks \_catalogsample
+\_newtoks \_catalogmathsample 
+\_newtoks \_catalogonly 
+\_newtoks \_catalogexclude
+\_catalogsample={ABCDabcd Qsty fi fl áéíóúüů řžč ÁÉÍÓÚ ŘŽČ 0123456789}
+
+\_public \catalogonly \catalogexclude \catalogsample \catalogmathsample ;
+
+   \_doc -----------------------------
+   The font features are managed in the \`\_fontfeatures` macro. 
+   They have their implicit values saved in the \`\_defaultfontfeatures`
+   and the \`\setff` `{<features>}` 
+   can add next font features. If there is the same font feature as the newly
+   added one then the old value is removed from the `\_fontfeatures` list.
+   \_cod -----------------------------
+
+\_def \_defaultfontfeatures {+tlig;}
+\_def \_setff #1{%
+   \_ifx^#1^\_let \_fontfeatures=\_defaultfontfeatures
+   \_else \_edef\_fontfeatures{\_fontfeatures #1;}\_fi
+   \_reloading
+}
+\_setff {} % default font features: +tlig;
+\_def\_removefeature #1{%
+    \_isinlist\_fontfeatures{#1}\_iftrue
+        \_def\_tmp ##1#1##2;##3\_relax{\_def\_fontfeatures{##1##3}}%
+        \_ea \_tmp \_fontfeatures \_relax 
+    \_fi
+}
+\_public \setff ;
+
+   \_doc -----------------------------
+   The \`\setfontcolor` and \`\setletterspace` are macros based on the
+   special font features provided by \LuaTeX/ (and by \XeTeX/ too but it is not
+   our business). The \`\setwordspace` recalulates the `\fontdimen2,3,4`
+   of the font using the \`\setwsp` macro which is used by the
+   \^`\_doresizeunifont` macro. It activates a dummy font feature `+Ws` too in
+   order the font is reloded by the `\font` primitive (with independent
+   `\fontdimen` registers). 
+   \_cod -----------------------------
+
+\_def\_savedfontcolor{}
+\_def\_savedletterspace{}
+\_def\_savedwsp{}
+
+\_def \_setfontcolor #1{\_removefeature{color=}%
+    \_edef\_tmp{\_calculatefontcolor{#1}}%
+    \_ifx\_tmp\_empty \_else \_edef\_fontfeatures{\_fontfeatures color=\_tmp;}\_fi
+    \_reloading
+}
+\_def \_setletterspace #1{\_removefeature{letterspace=}%
+    \_if^#1^\_else \_edef\_fontfeatures{\_fontfeatures letterspace=#1;}\_fi
+    \_reloading
+}
+\_def \_setwordspace #1{%
+   \_if^#1^\_def\_setwsp##1{}\_removefeature{+Ws}% 
+   \_else \_def\_setwsp{\_setwspA{#1}}\_setff{+Ws}\_fi
+   \_reloading
+}
+\_def\_setwsp #1{}
+\_def\_setwspA #1#2{\_fontdimen2#2=#1\_fontdimen2#2%
+   \_fontdimen3#2=#1\_fontdimen3#2\_fontdimen4#2=#1\_fontdimen4#2}
+
+\_def\_calculatefontcolor#1{\_trycs{_fc:#1}{#1}} % you can define more smart macro ...
+\_sdef{_fc:red}{FF0000FF}    \_sdef{_fc:green}{00FF00FF} \_sdef{_fc:blue}{0000FFFF}
+\_sdef{_fc:yellow}{FFFF00FF} \_sdef{_fc:cyan}{00FFFFFF}  \_sdef{_fc:magenta}{FF00FFFF}
+\_sdef{_fc:white}{FFFFFFFF}  \_sdef{_fc:grey}{00000080}  \_sdef{_fc:lgrey}{00000025}
+\_sdef{_fc:black}{} % ... you can declare more colors...
+
+\_public \setfontcolor \setletterspace \setwordspace ;
+
+\_endcode %---------------------------------------------------
+
+
+\sec[fontsystem] The Font Selection System
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+The basic principles of the Font Selection System used in \OpTeX/ 
+was documented in the section~\ref[fontfam].
+
+\secc Terminology
+
+We distinguish between
+\begitems
+* {\em font switchers}, they are declared by the `\font` primitive or by 
+  \^`\fontlet` or \^`\fontdef` macros,
+* {\em variant selectors}, there are four basic variant selectors
+  `\rm`, `\bf`, `\it`, `\bi`, there is a special selector `\currvar`
+  and more variant selectors can be declared by the \^`\famvardef` macro.
+* {\em font modifiers} (for example `\cond`, `\caps`, \^`\setfontsize``{<size spec>}`), 
+  they are in two types: bulid in (like \^`\setfontsize`) or
+  declared modifiers (by by the \^`\moddef` macro).
+* {\em family selectors} (for example `\Termes`, `\LMfonts`), 
+  they are declared typically in the {\em font family files}. 
+\enditems
+
+These selectors / switchers sets its values locally. When the \TeX/ group is
+leaved then selected font and the {\em font context} are returned back to the values
+used when the group was opened. They have the following features:
+
+\begitems
+* The {\em font switchers} select fonts independent on the font context.
+* The {\em variant selectors} select the font depending on the font context and on
+  the specified variant.
+* The {\em font modifiers} create a change in the font context but they 
+  don't select the font itself.
+* The {\em family selectors} set a family in the font context and resets all
+  font modifiers. They dont't select the font itself.
+\enditems
+
+The variant selectors and declared font modifiers are 
+defined in the family context.  They can behave differently in different 
+families. 
+
+The fonts registered in \OpTeX/ have their macros in the {\em font family files}, 
+each family is declared in one font family file with the name `f-famname.opm`. 
+All families are collected in `fams-ini.opm` and user can give more
+declarations in the file `fams-local.opm`.
+
+\secc Font families, selecting fonts
+
+The \^`\fontfam` `[<Font Family>]` opens the relevant font family file where 
+the `<Font Family>` is declared. The family selector is defined here by rules
+described in the section~\ref[fontfamfiles]. Font modifiers and variant
+selectors may be declared here. Their definitions depends on given family.
+The family is set as active in the font context and `\rm` variant selector is run.
+
+The available declared font modifiers and declared variant selectors are
+listed in the log file when font family is load. Or you can print
+`\fontfam[catalog]` to show available font modifiers and variant selectors.
+
+The font modifiers can be independent, like `\cond` and `\light`. They can
+be arbitrary combined (in arbitrary order) and if the font family disposes
+with all such sub-variants then the desired font is selected (after variant
+selector is used). On the other hand there are font modifiers which negates
+the previous font modifier, for example `\cond`, `\extend`. You can reset
+all modifiers to their initial value by the \^`\resetmod` command.
+
+You can open more font families by more \^`\fontfam` commands. Then the
+general method to selecting the individual font is:
+
+\begtt \catcode`\<=13
+<family selector> <font modifiers> <variant selector>
+\endtt
+For example:
+\begtt
+\fontfam [Heros]  % Heros family is active here, default \rm variant.
+\fontfam [Termes] % Termes family is active here, default \rm variant.
+{\Heros \caps \cond \it The caps+condensed italics in Heros family is here.}
+The Termes roman is here.
+\endtt
+
+There is one special command \^`\currvar` which acts as variant selector. 
+It keeps the current variant and the font of such variant is 
+reloaded with respect to the current font context by previously given family
+selector and font modifiers. 
+
+You can use the \^`\setfontsize` `{<sizespec>}` command in the same sense as
+other font modifiers. It saves only information about font size to the font
+context. See section~\ref[setfontsize]. Example:
+
+\begtt
+\rm default size \setfontsize{at14pt}\rm here is 14pt size \it italic is 
+in 14pt size too \bf bold too.
+\endtt
+
+Much more comfortable way to resize fonts is using OPmac-like command
+`\typosize`, `\typoscale`. 
+These commands prepare the right sizes for math
+fonts too and re-calculates many internal parameters like `\baselineskip`.
+See section~\ref[opmac-fonts] for more information. 
+
+
+\secc Math Fonts
+%---------------
+
+Most font families are connected with a preferred Unicode-math font. This
+Unicode-math is activated when the font family is loaded. If you don't prefer
+this and you are satisfied with 8bit math CM+AMS fonts preloaded in the
+\OpTeX/ format then you can use command \^`\noloadmath` before you load a first
+font family. 
+
+If you want to use your specially selected Unicode-math font then use
+\^`\loadmath` `{[<font_file>]}` or \^`\loadmath` `{<font_name>}` before first
+`\fontfam` is used.
+
+
+\secc Declaring font commands
+%----------------------------
+
+The font switches can be declared by `\font` primitive or by \^`\fontdef` or
+\^`\fontlet` macros. See the sections~\ref[fontdef] and~\ref[fontlet] 
+for more details. The general format for \^`\fontdef` is
+\begtt \catcode`\<=13
+\fontdef\<font switch> {\<family selector> <font modifiers> \<variant selector>}
+\endtt
+
+Such font switches should be used in `\output` routine (headers, footers) for
+example. We need fixed sizes here. But they are less usable in common
+text. For example the document includes notices in smaller font. 
+When the notice is started then we want
+to do all variants smaller: `\rm`, `\it`, `\bf`, etc.
+It means that the smaller font for notices should be initialized by
+`\setfontsize{at9pt}\rm` for example. If you want a \"notices font selector"
+then you can do `\def\noticefont{\setfontsize{at9pt}\rm}`. This font
+selector does not change the `\baselineskip`. If you want to do this then
+put different `\baselineskip` setting to your definition. But you must not
+forget that the end of group before `\par` is a typical mistake of \TeX/
+users: the last paragraph is in smaller font but in normal baselineskip,
+because `\baselineskip` setting is taken into account when `\par` 
+command is processed.
+
+Somewhat more complicated task is the \"title font selector", because titles are
+not only bigger but they are typically in bold variant. When the user puts 
+`{\it...}` into the title then he/she expects bold italic here, no normal
+italic. You can remember the great song by John Lennon \"Let It Be" and
+define:
+
+\begtt
+\def\titlefont{\setfontsize{at14pt}\bf \let\it\bi}
+...
+{\titlefont here we have bold 14pt font and {\it here} was bold 14pt italics}
+\endtt
+
+You can declare a new variant slector by the \^`\famvardef` macro. This
+macro has similar syntax as \^`\fontdef`:
+\begtt \catcode`\<=13
+\famvardef\<new variant selector> {<font modifiers> \<variant selector>}
+\endtt
+%
+The `\<new variant selector>` should be used in the same sense as `\rm`,
+`\bf` etc. It can be used as the final command in the 
+`\fontdef` or `\famvardef` declarators
+too. When the `\<new variant selector>` is used in normal text then it does
+following steps: pushes current font context to a stack, modifies font
+context by declared `<font modifiers>`, runs following `\<variant selector>`.
+It selects a font. Then pops the stack. The font context have its original
+values but new font is selected.
+
+The \^`\famvardef` creates the `\<new variant selector>` family dependent.
+When the selector is used in another family than it is defined then warning is
+printed on the terminal \"<var selector> is undeclared in current family"
+and nothing happens. But you can declare the same variant selector by
+\^`\famvardef` macro in the context of new family. Then the same command
+will be do different work depending on the current font family.
+
+Suppose that the selected font family provides the font modifier `\medium` for
+mediate weight of fonts but supports only basic variant selectors `\rm`, `\bf`, `\it`,
+and `\bi`. Then you can declare:
+\begtt
+\famvardef \mr {\medium\rm}
+\famvardef \mi {\medium\it}
+\endtt
+Now, you can use six independent variant selectors `\rm`, `\bf`, `\it`,
+`\bi`, `\mr` and  `\mi` in the selected font family.
+
+A `\<family selector>` can be written before `<font modifiers>` in the
+`\famvardef` parameter. Then the `\<new variant selector>` is declared in
+the current family but it can use fonts from another family represented by
+the `\<family selector>`.
+
+When you are mixing fonts from more families then you probably run
+into problem with incompatible ex-heights. This problem can be solved using
+\^`\setfontsize` and \^`\famvardef` macros: 
+\begtt
+\fontfam[Heros]  \fontfam[Termes]
+
+\def\exhcorr{\setfontsize{mag.88}}
+\famvardef\rmsans{\Heros\exhcorr\rm}
+\famvardef\itsans{\Heros\exhcorr\it}
+
+Compare ex-height of Termes \rmsans with Heros \rm and Termes.
+\endtt
+
+There exists analogical declarator `\moddef` for declaration family dependent 
+font modifiers. It is described in detail the section~\ref[fontfamfiles].
+
+
+\secc Modifying font features
+%----------------------------
+
+Each OTF font provides \"font features". You can list these font features
+by `otfinfo -f font.otf`. For example LinLibertine fonts provide `frac` font
+feature. If it is active then fractions like 1/2 are printed in a special
+form.
+
+The font features are part of the font context data.
+The macro \^`\setff` `{<feature>}` acts like family independent font modifier and
+prepares a new <feature>. You must use a variant selector in order to
+reinitialize the font with the new font feature. For example
+\^`\setff``{+frac}\rm` or \^`\setff``{+frac}`\^`\currvar`. You can declare a new variant
+selector too:
+
+\begtt
+   \fontfam[LinLibertine]
+   \famvardef \fraclig {\setff{+frac}\currvar}
+   Compare 1/2 or 1/10 \fraclig to 1/2 or 1/10.
+\endtt
+
+If the used font does not supports given font feature then font is realoaded
+without warning nor error, silently. The font feature is not activated.
+
+The `onum` font feature (old style digits) is connected to `\caps` macro for
+Caps+SmallCaps variant in \OpTeX/ font family files. So you need not to
+create a new modifier, just use `{\caps`\^`\currvar`` 012345}`.
+
+
+\secc Special font modifiers
+%---------------------------
+
+Despite the font modifiers declared in the font family file (and dependent on 
+the font family), we have following font modifiers (independent of font
+family):
+
+\begtt \catcode`\<=13
+\setfontsize{<sizespec>}    % sets the font size
+\setff{<font feature>}       % adds the font feature
+\setfontcolor{<color>}     % sets font color
+\setletterspace{<number>} % sets letter spacing
+\setwordspace{<scaling>}    % modifies word spacing
+\endtt
+
+The \^`\setfontsize` command is described in the section \ref[setfontsize].
+The \^`\setff` command was described in previous subsection.
+
+\^`\setfontcolor` `{<color>}` specifies the color and the opacity of the text.
+The <color> parameter should be in hexadecimal format of four bytes
+`<red><green><blue><opacity>`, for example `FF0080FF` means full red, zero
+green, half blue and full opacity. You can use names `red`, `green`, `blue`,
+`yellow`, `cyan`, `magenta`, `white`, `grey`, `lgrey` (without backslash) 
+instead of the hexadecimal specification. 
+The empty parameter `<color>` means default black color.
+
+That colors of fonts are implemented using \LuaTeX/ internal font feature. This
+is different approach than using colors in section \ref[colors].
+
+\^`\setletterspace` `{<number>}` specifies letter spacing of the font. The
+`<number>` is decimal number without unit. The unit is supposed as 1/100 of
+the font size. I.e. `2.5` means 0.25 pt when the font is at 10 pt size. The
+empty parameter `<number>` means no letter spacing which is default.
+
+\^`\setwordspace` `{<scaling>}` scales the default inter word space (defined in the
+font) and its stretching and shrinking parameters by given `<scaling>`
+factor. For example `\setwordspace{2.5}` multiplies inter word space by 2.5.
+
+If you need another font transformations, you can use `\setff` 
+with following font features provided by Lua\TeX/:
+
+\begtt
+\setff{embolden=1.5}\rm % font is bolder because outline has nonzero width
+\setff{slant=0.2}\rm    % font is slanted by a linear transformation
+\setff{extend=1.2}\rm   % font is extended by a linear transformation.
+\setff{colr=yes}\rm     % if the font includes colored characters, use colors
+\endtt
+
+Use font transformations mentioned above and \^`\setletterspace`,
+\^`\setwordspace` with care. The best setting of these values is default
+setting in every font, of course. If you really needs to set a different
+letter spacing then it is strongly recommended to add `\setff{-liga}` in
+order to disable ligatures. And setting a positive letter spacing probably
+needs to scale inter word spacing too.
+
+All mentioned font modifiers (with the exception of `\setfontsize`) work only
+with Unicode fonts loaded by \^`\fontfam`.
+
+\secc[fontfamfiles] How to create the font family file
+%------------------------------------------------------
+
+\printdoctail f-heros.opm
+
+\printdoctail f-lmfonts.opm
+
+\secc How to register the font family in the Font Selection System
+%---------------------------------------------------------------
+
+\printdoctail fams-ini.opm
+
+\endinput
+
+2020-04-18  \_tryloadfamslocal introduced
+            \_fontdecl -> \_famdecl with different concept
+2020-03-18  released


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/fonts-select.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/graphics.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/graphics.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/graphics.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,425 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \inspic {Graphics <2020-04-12>} % preloaded in format
+
+   \_doc -----------------------------
+   \`\inspic` accepts old syntax `\inspic <filename><space>`
+   or new syntax `\inspic{<filename>}`. So, we need to define
+   two auxiliary macros \`\_inspicA` and \`\_inspicB`.
+
+   You can include more `\pdfximage` parameters (like `page<number>`)
+   in the \`\_picparams` macro.
+
+   All `\inspic` macros are surrounded in `\hbox` in order user can
+   write `\moveright\inspic ...` or something similar.
+   \_cod -----------------------------
+
+\_def\_inspic{\_hbox\_bgroup\_isnextchar\_bgroup\_inspicB\_inspicA}
+\_def\_inspicA #1 {\_inspicB {#1}}
+\_def\_inspicB #1{%
+   \_pdfximage \_ifdim\_picwidth=0pt  \_else width\_picwidth\_fi 
+               \_ifdim\_picheight=0pt \_else height\_picheight\_fi 
+               \_picparams {\_the\_picdir#1}%
+   \_pdfrefximage\_pdflastximage\_egroup}
+
+\_def\_picparams{}
+
+\_public \inspic ;
+
+   \_doc -----------------------------
+   Inkscape is able to save a picture to `*.pdf` file and labels for the picture
+   to `*.pdf_tex` file. The second file is in \LaTeX/ format (unfortunately) 
+   and it is intended to read immediately it after `*.pdf` in included 
+   in order to place labels of this ficture in the same font as document is printed. 
+   We need to read this \LaTeX/ file by plain \TeX/ macros when \`\inkinspic` is used. 
+   These macros are stored in the \`\_inkdefs` toknes list and it is used
+   locally in the group. The solution is borrowed from OPmac trick 0032. 
+   \_cod -----------------------------
+
+\_def\_inkinspic{\_hbox\_bgroup\_isnextchar\_bgroup\_inkinspicB\_inkinspicA}
+\_def\_inkinspicA #1 {\_inkinspicB {#1}}
+\_def\_inkinspicB #1{%
+  \_ifdim\_picwidth=0pt \_setbox0=\_hbox{\_inspic{#1}}\_picwidth=\_wd0 \_fi
+  \_the\_inkdefs
+  \_opinput {\_the\_picdir #1_tex}% file with labels
+  \_egroup}
+
+\_newtoks\_inkdefs  \_inkdefs={% 
+  \_def\makeatletter#1\makeatother{}% 
+  \_def\includegraphics[#1]#2{\_inkscanpage#1,page=,\_end \_inspic{#2}\_hss}% 
+  \_def\_inkscanpage#1page=#2,#3\_end{\_ifx,#2,\_else\_def\_picparams{page#2}\_fi}% 
+  \_def\put(#1,#2)#3{\_nointerlineskip\_vbox to0pt{\_vss\_hbox to0pt{\_kern#1\_picwidth 
+      \_pdfsave\_hbox to0pt{#3}\_pdfrestore\_hss}\_kern#2\_picwidth}}% 
+  \_def\begin#1{\_csname _begin#1\_endcsname}%
+  \_def\_beginpicture(#1,#2){\_vbox\_bgroup
+      \_hbox to\_picwidth{}\_kern#2\_picwidth \_def\end##1{\_egroup}}%
+  \_def\_begintabular[#1]#2#3\end#4{%
+      \_vtop{\_def\\{\_cr}\_tabiteml{}\_tabitemr{}\_table{#2}{#3}}}%
+  \_def\color[#1]#2{\_scancolor #2,}% 
+  \_def\_scancolor#1,#2,#3,{\_pdfliteral{#1 #2 #3 rg}}% 
+  \_def\makebox(#1)[#2]#3{\_hbox to0pt{\_csname _mbx:#2\_endcsname{#3}}}% 
+  \_sdef{_mbx:lb}#1{#1\_hss}\_sdef{_mbx:rb}#1{\_hss#1}\_sdef{_mbx:b}#1{\_hss#1\_hss}% 
+  \_sdef{_mbx:lt}#1{#1\_hss}\_sdef{_mbx:rt}#1{\_hss#1}\_sdef{_mbx:t}#1{\_hss#1\_hss}% 
+  \_def\rotatebox#1#2{\_pdfrotate{#1}#2}%
+  \_def\lineheight#1{}%
+  \_def\setlength#1#2{}%
+}
+\_public \inkinspic ;
+
+   \_doc ----------------------------
+   \`\pdfscale``{<x-scale>}{<y-scale>}` and \`\pdfrotate``{<degrees>}` 
+   macros are implemented by `\pdfsetmatrix`
+   primitive. We need to know values of sin, cos function in
+   the `\pdfrotate`. We use Lua code for this.
+   \_cod ----------------------------
+
+\_def\_pdfscale#1#2{\_pdfsetmatrix{#1 0 0 #2}}
+
+\_def\_gonfunc#1#2{%
+   \_directlua{tex.print(string.format('\_pcent.4f',math.#1(3.14159265*(#2)/180)))}%
+}
+\_def\_sin{\_gonfunc{sin}}
+\_def\_cos{\_gonfunc{cos}}
+
+\_def\_pdfrotate#1{\_pdfsetmatrix{\_cos{#1} \_sin{#1} \_sin{(#1)-180} \_cos{#1}}}
+
+\_public \pdfscale \pdfrotate ;
+
+   \_doc -----------------------------
+   The \`\transformbox``{<transformation>}{<text>}` 
+   is copied from OPmac trick 0046.\nl
+   The \`\rotbox``{<degrees>}{<text>}` is a combination of 
+   `\rotsimple` from OPmac trick 0101 and the `\transformbox`.
+   Note, that `\rotbox{-90}` puts the rotated text to the height of the outer 
+   box (depth is zero) because code from `\rotsimple` is processed. 
+   But `\rotbox{-90.0}` puts the rotated text to
+   the depth of the outer box (height is zero) because `\transformbox` is
+   processed. 
+   \_cod -----------------------------
+
+\_def\_multiplyMxV #1 #2 #3 #4 {% matrix * (vvalX, vvalY) 
+   \_tmpdim = #1\_vvalX \_advance\_tmpdim by #3\_vvalY 
+   \_vvalY  = #4\_vvalY \_advance\_vvalY  by #2\_vvalX 
+   \_vvalX = \_tmpdim 
+} 
+\_def\_multiplyMxM #1 #2 #3 #4 {% currmatrix := currmatrix * matrix 
+   \_vvalX=#1pt \_vvalY=#2pt \_ea\_multiplyMxV \_currmatrix 
+   \_edef\_tmpb{\_ea\_ignorept\_the\_vvalX\_space \_ea\_ignorept\_the\_vvalY}% 
+   \_vvalX=#3pt \_vvalY=#4pt \_ea\_multiplyMxV \_currmatrix 
+   \_edef\_currmatrix{\_tmpb\_space 
+      \_ea\_ignorept\_the\_vvalX\_space \_ea\_ignorept\_the\_vvalY\_space}% 
+} 
+\_def\_transformbox#1#2{\_hbox{\_setbox0=\_hbox{{#2}}%
+   \_dimendef\_vvalX 11 \_dimendef\_vvalY 12 % we use these variables
+   \_dimendef\_newHt 13 \_dimendef\_newDp 14 % only in this group
+   \_dimendef\_newLt 15 \_dimendef\_newRt 16 
+   \_preptransform{#1}% 
+   \_kern-\_newLt \_vrule height\_newHt depth\_newDp width0pt 
+   \_setbox0=\_hbox{\_box0}\_ht0=0pt \_dp0=0pt 
+   \_pdfsave#1\_rlap{\_box0}\_pdfrestore \_kern\_newRt}% 
+} 
+\_def\_preptransform #1{\_def\_currmatrix{1 0 0 1 }% 
+   \_def\_pdfsetmatrix##1{\_edef\_tmpb{##1 }\_ea\_multiplyMxM \_tmpb\_unskip}%
+   \_let\pdfsetmatrix=\_pdfsetmatrix #1% 
+   \_setnewHtDp 0pt  \_ht0  \_setnewHtDp 0pt  -\_dp0 
+   \_setnewHtDp \_wd0 \_ht0  \_setnewHtDp \_wd0 -\_dp0 
+   \_protected\_def \_pdfsetmatrix {\_pdfextension setmatrix}%
+   \_let\pdfsetmatrix=\_pdfsetmatrix
+} 
+\_def\_setnewHtDp #1 #2 {% 
+   \_vvalX=#1\_relax \_vvalY=#2\_relax \_ea\_multiplyMxV \_currmatrix 
+   \_ifdim\_vvalX<\_newLt \_newLt=\_vvalX \_fi \_ifdim\_vvalX>\_newRt \_newRt=\_vvalX \_fi 
+   \_ifdim\_vvalY>\_newHt \_newHt=\_vvalY \_fi \_ifdim-\_vvalY>\_newDp \_newDp=-\_vvalY \_fi 
+} 
+
+\_def\_rotbox#1#2{%
+   \_isequal{90}{#1}\_iftrue \_rotboxA{#1}{\_kern\_ht0 \_tmpdim=\_dp0}{\_vfill}{#2}%
+   \_else \_isequal{-90}{#1}\_iftrue \_rotboxA{#1}{\_kern\_dp0 \_tmpdim=\_ht0}{}{#2}%
+   \_else \_transformbox{\_pdfrotate{#1}}{#2}%
+   \_fi \_fi
+}
+\_def\_rotboxA #1#2#3#4{\_hbox{\_setbox0=\_hbox{{#4}}#2%
+   \_vbox to\_wd0{#3\_wd0=0pt \_dp0=0pt \_ht0=0pt
+                  \_pdfsave\_pdfrotate{#1}\_box0\_pdfrestore\vfil}%
+   \_kern\_tmpdim
+}}
+\_public \transformbox \rotbox ;
+
+   \_doc ---------------------------
+   \`\_scantwodimens` scans two objects with the syntactic rule `<dimen>`
+   and returns `{<number>}{<number>}` in `sp` unit.
+   \nl
+   \`\puttext` `<right> <up>{<text>}` puts the `<text>` to desired place:
+   From current point moves <down> and <right>, puts the <text> and returns
+   back. The current point is unchanged after this macro ends.
+   \nl
+   \`\putpic` `<right> <up> <width> <height> {<image-file>}`
+   does `\puttext` with the image scaled to desired <width> and <height>.
+   If <with> or <height> is zero, natural dimension is used.
+   The \`\nospec` is a shortcut to such natural dimension.
+   \nl
+   \`\backgroundpic``{<image-file>}` puts the image to 
+   the background of each page. It it used in the slides style, for example.
+   \_cod ---------------------------
+
+\_def\_scantwodimens{%
+   \_directlua{tex.print(string.format('{\_pcent d}{\_pcent d}',
+               token.scan_dimen(),token.scan_dimen()))}%
+}
+
+\_def\_puttext{\_ea\_ea\_ea\_puttextA\_scantwodimens}
+\_def\_puttextA#1#2#3{\_setbox0=\_hbox{{#3}}\_dimen1=#1sp \_dimen2=#2sp \_puttextB}
+\_def\_puttextB{%
+   \_ifvmode
+      \_ifdim\_prevdepth>0pt \_vskip-\_prevdepth \_relax \_fi 
+      \_nointerlineskip 
+   \_fi
+   \_wd0=0pt \_ht0=0pt \_dp0=0pt
+   \_vbox to0pt{\_kern-\_dimen2 \_hbox to0pt{\_kern\_dimen1 \_box0\_hss}\_vss}}
+
+\_def\_putpic{\_ea\_ea\_ea\_putpicA\_scantwodimens}
+\_def\_putpicA#1#2{\_dimen1=#1sp \_dimen2=#2sp \_ea\_ea\_ea\_putpicB\_scantwodimens}
+\_def\_putpicB#1#2#3{\_setbox0=\_hbox{\_picwidth=#1sp \_picheight=#2sp \_inspic{#3}}\_puttextB}
+
+\_newbox\_bgbox
+\_def\_backgroundpic#1{%
+   \_setbox\_bgbox=\_hbox{\_picwidth=\_pdfpagewidth \_picheight=\_pdfpageheight \_inspic{#1}}%
+   \_pgbackground={\_copy\_bgbox}
+}
+\_def\nospec{0pt}
+\_public \puttext \putpic \backgroundpic ;
+
+   \_doc -----------------------------
+   \`\_circle``{<x>}{<y>}` creates an ellipse with `<x>` axis and `<y>` axix.
+   The origin is in the center.
+   \nl
+   \`\_oval``{<x>}{<y>}{<roudness>}` creates an oval with `<x>`, `<y>` size and with 
+   given `<roundness>`. The real size is bigger by 2`<roundness>`. The
+   origin is at the left bottom corner.
+   \nl
+   \`\_mv``{<x>}{<y>}{<curve>}` moves current point to `<x>`, `<y>`, crates the
+   `<curve>` and retuns back the current point.
+   All these macros are fully expandable and they can be used in the
+   `\pdfliteral` argument.
+   \_cod -----------------------------
+
+\def\_circle#1#2{\_expr{.5*(#1)} 0 m 
+   \_expr{.5*(#1)} \_expr{.276*(#2)} \_expr{.276*(#1)} \_expr{.5*(#2)} 0 \_expr{.5*(#2)} c
+   \_expr{-.276*(#1)} \_expr{.5*(#2)} \_expr{-.5*(#1)} \_expr{.276*(#2)} \_expr{-.5*(#1)} 0 c
+   \_expr{-.5*(#1)} \_expr{-.276*(#2)} \_expr{-.276*(#1)} \_expr{-.5*(#2)} 0 \_expr{-.5*(#2)} c
+   \_expr{.276*(#1)} \_expr{-.5*(#2)} \_expr{.5*(#1)} \_expr{-.276*(#2)} \_expr{.5*(#1)} 0 c h}
+
+\def\_oval#1#2#3{0 \_expr{-(#3)} m \_expr{#1} \_expr{-(#3)} l 
+    \_expr{(#1)+.552*(#3)} \_expr{-(#3)} \_expr{(#1)+(#3)} \_expr{-.552*(#3)} 
+                                                           \_expr{(#1)+(#3)} 0 c 
+    \_expr{(#1)+(#3)} \_expr{#2} l
+    \_expr{(#1)+(#3)} \_expr{(#2)+.552*(#3)} \_expr{(#1)+.552*(#3)} \_expr{(#2)+(#3)}
+                                             \_expr{#1} \_expr{(#2)+(#3)} c
+    0 \_expr{(#2)+(#3)} l
+    \_expr{-.552*(#3)} \_expr{(#2)+(#3)} \_expr{-(#3)} \_expr{(#2)+.552*(#3)} 
+                                         \_expr{-(#3)} \_expr{#2} c
+    \_expr{-(#3)} 0 l
+    \_expr{-(#3)} \_expr{-.552*(#3)} \_expr{-.552*(#3)} \_expr{-(#3)}  0 \_expr{-(#3)} c h}
+
+\def\_mv#1#2#3{1 0 0 1 \_expr{#1} \_expr{#2} cm #3 1 0 0 1 \_expr{-(#1)} \_expr{-(#2)} cm}
+
+   \_doc -----------------------------
+   The \`\inoval``{<text>}` is an example of \^`\_oval` usage.\nl
+   The \`\incircle``{<text>}` is an example of \^`\_circle` usage.\nl
+   The \`\ratio`, \`\lwidth`, \`\fcolor`, \`\lcolor`, \`\shadow` and \`\overlapmargins`
+   are parameters, they can be set by user in optional brackets `[...]`.
+   For example `\fcolor=\Red` does `\_let\_fcolorvalue=\Red` and it means
+   filling color.\nl
+   The \`\_setflcolor` uses the \^`\_fillstroke` macro to separate filling
+   color and drawing color.
+   \_cod -----------------------------
+
+\_newdimen \_lwidth 
+\_def\_fcolor{\_let\_fcolorvalue}
+\_def\_lcolor{\_let\_lcolorvalue}
+\_def\_shadow{\_let\_shadowvalue}
+\_def\_overlapmargins{\_let\_overlapmarginsvalue}
+\_def\_ratio{\_isnextchar ={\_ratioA}{\_ratioA=}}
+\_def\_ratioA =#1 {\_def\_ratiovalue{#1}}
+\_def\_touppervalue#1{\_ifx#1n\_let#1=N\_fi}
+
+\_def\_setflcolors#1{% use only in a group
+   \_def\_setcolor##1{##1}%
+   \_def\_fillstroke##1##2{##1}%
+   \_edef#1{\_fcolorvalue}%
+   \_def\_fillstroke##1##2{##2}%
+   \_edef#1{#1\_space\_lcolorvalue\_space}%
+}
+\_optdef\_inoval[]{\_vbox\_bgroup
+   \_roundness=2pt \_fcolor=\Yellow \_lcolor=\Red \_lwidth=.5bp 
+   \_shadow=N \_overlapmargins=N \_hhkern=0pt \_vvkern=0pt
+   \_the\_ovalparams \_relax \_the\_opt \_relax
+   \_touppervalue\_overlapmarginsvalue \_touppervalue\_shadowvalue
+   \_ifx\_overlapmarginsvalue N%
+      \_advance\_hsize by-2\_hhkern \_advance\_hsize by-2\_roundness \_fi
+   \_setbox0=\_hbox\_bgroup\_bgroup \_aftergroup\_inovalA \_kern\_hhkern \_let\_next=%
+}
+\_def\_inovalA{\_isnextchar\_colorstackpop\_inovalB\_inovalC}
+\_def\_inovalB#1{#1\_isnextchar\_colorstackpop\_inovalB\_inovalC}
+\_def\_inovalC{\_egroup % of \setbox0=\hbox\bgroup
+   \_ifdim\_vvkern=0pt \_else \_ht0=\_dimexpr\_ht0+\_vvkern \_relax
+                              \_dp0=\_dimexpr\_dp0+\_vvkern \_relax \_fi
+   \_ifdim\_hhkern=0pt \_else \_wd0=\_dimexpr\_wd0+\_hhkern \_relax \_fi
+   \_ifx\_overlapmarginsvalue N\_dimen0=\_roundness \_dimen1=\_roundness
+   \_else                      \_dimen0=-\_hhkern   \_dimen1=-\_vvkern \_fi 
+   \_setflcolors\_tmp
+   \_hbox{\_kern\_dimen0 
+      \_vbox to0pt{\_kern\_dp0 
+         \_ifx\_shadowvalue N\_else 
+            \_edef\_tmpb{{\_bp{\_wd0+\_lwidth}}{\_bp{\_ht0+\_dp0+\_lwidth}}{\_bp{\_roundness}}}%
+            \_doshadow\_oval 
+         \_fi
+         \_pdfliteral{q \_bp{\_lwidth} w \_tmp 
+            \_oval{\_bp{\_wd0}}{\_bp{\_ht0+\_dp0}}{\_bp{\_roundness}} B Q}\_vss}%
+      \_ht0=\_dimexpr\_ht0+\_dimen1 \_relax \_dp0=\_dimexpr\_dp0+\_dimen1 \_relax
+      \_box0 
+      \_kern\_dimen0}%
+   \_egroup % of \vbox\bgroup
+}
+\_optdef\_incircle[]{\_vbox\_bgroup
+   \_ratio=1 \_fcolor=\Yellow \_lcolor=\Red \_lwidth=.5bp 
+   \_shadow=N \_overlapmargins=N \_hhkern=3pt \_vvkern=3pt
+   \_ea\_the \_ea\_circleparams \_space \_relax
+   \_ea\_the \_ea\_opt \_space \_relax
+   \_touppervalue\_overlapmarginsvalue \_touppervalue\_shadowvalue
+   \_setbox0=\_hbox\_bgroup\_bgroup \_aftergroup\_incircleA \_kern\_hhkern \_let\_next=%
+}
+\_def\_incircleA {\_isnextchar\_colorstackpop\_incircleB\_incircleC}
+\_def\_incircleB #1{#1\_isnextchar\_colorstackpop\_incircleB\_incircleC}
+\_def\_incircleC {\_egroup % of \setbox0=\hbox\bgroup
+   \_wd0=\_dimexpr \_wd0+\_hhkern \_relax
+   \_ht0=\_dimexpr \_ht0+\_vvkern \_relax \_dp0=\_dimexpr \_dp0+\_vvkern \_relax
+   \_ifdim \_ratiovalue\_dimexpr \_ht0+\_dp0 > \_wd0
+          \_dimen3=\_dimexpr \_ht0+\_dp0 \_relax  \_dimen2=\_ratiovalue\_dimen3
+   \_else \_dimen2=\_wd0 \_dimen3=\_expr{1/\_ratiovalue}\_dimen2 \_fi
+   \_setflcolors\_tmp
+   \_ifx\_overlapmarginsvalue N\_dimen0=0pt \_dimen1=0pt 
+   \_else \_dimen0=-\_hhkern \_dimen1=-\_vvkern \_fi
+   \_hbox{\_kern\_dimen0 
+      \_ifx\_shadowvalue N\_else 
+         \_edef\_tmpb{{\_bp{\_dimen2+\_lwidth}}{\_bp{\_dimen3+\_lwidth}}{}}%
+         \_doshadow\_circlet
+      \_fi      
+      \_pdfliteral{q \_bp{\_lwidth} w \_tmp \_mv{\_bp{.5\_wd0}}{\_bp{(\_ht0-\_dp0)/2}}
+                                      {\_circle{\_bp{\_dimen2}}{\_bp{\_dimen3}} B} Q}%
+      \_ifdim\_dimen1=0pt \_else 
+           \_ht0=\_dimexpr \_ht0+\_dimen1 \_relax \_dp0=\_dimexpr \_dp0+\_dimen1 \_relax \_fi
+      \_box0
+      \_kern\_dimen0}
+   \_egroup % of \vbox\bgroup
+}
+\_def\_circlet#1#2#3{\_circle{#1}{#2}}
+
+\_public \inoval \incircle \ratio \lwidth \fcolor \lcolor \shadow \overlapmargins ;
+
+   \_doc -----------------------------
+   A shadow effect is implemented here. The shadow is equal to the
+   silhouette of the given path in gray-transparent color shifted by
+   \`\_shadowmoveto` vector and with blurred boundary.
+   A waistline with the width 2*\`\_shadowb` around the boundary is blurred.
+   The \`\shadowlevels` levels of transparent shapes is used for creating
+   this effect. The `\shadowlevels+1/2` level is equal to the shifted given path.
+   \_cod -----------------------------
+
+\_def\_shadowlevels{9}         % number of layers for blurr effect
+\_def\_shadowdarknessA{0.025}  % transparency of first shadowlevels/2 layers
+\_def\_shadowdarknessB{0.07}   % transparency of second half of layers
+\_def\_shadowmoveto{1.8 -2.5}  % vector defines shifting layer (in bp)
+\_def\_shadowb{1}              % 2*shadowb = blurring area thickness
+
+   \_doc -----------------------------
+   The `\_pdfpageresources` primitive is used to define transparency.
+   It does not work when used in a box. So, we use it at the begining of
+   the output routine. The modification of the output routine is done 
+   using \`\_insertshadowresources` only once when the shadow effect is used first.
+   \_cod -----------------------------
+
+\_def\_insertshadowresources{%
+   \_global\_addto\_begoutput{\_setshadowresources}%
+   \_xdef\_setshadowresources{%
+      \_pdfpageresources{/ExtGState 
+      <<
+      /op1  <</Type /ExtGState /ca \_shadowdarknessA>>
+      /op2  <</Type /ExtGState /ca \_shadowdarknessB>>
+      \_morepgresources
+      >>
+      }%
+   }%
+   \_global\_let\_insertshadowresources=\_relax
+}
+\_def\_morepgresources{}
+
+   \_doc -----------------------------
+   The \`\_doshadow``{<curve>}` does the shadow effect.
+   \_cod -----------------------------
+
+\_def\_doshadow#1{\_vbox{%
+    \_insertshadowresources
+    \_tmpnum=\_numexpr (\_shadowlevels-1)/2 \_relax
+    \_edef\_tmpfin{\_the\_tmpnum}%
+    \_ifnum\_tmpfin=0 \_def\_shadowb{0}\_def\_shadowstep{0}%
+    \_else \_edef\_shadowstep{\_expr{\_shadowb/\_tmpfin}}\_fi
+    \_def\_tmpa##1##2##3{\_def\_tmpb
+        {#1{##1+2*\_the\_tmpnum*\_shadowstep}{##2+2*\_the\_tmpnum*\_shadowstep}{##3}}}%
+    \_ea \_tmpa \_tmpb
+    \_def\_shadowlayer{%
+        \_ifnum\_tmpnum=0 /op2 gs \_fi
+        \_tmpb\_space f
+        \_immediateassignment\_advance\_tmpnum by-1
+        \_ifnum-\_tmpfin<\_tmpnum 
+           \_ifx#1\_oval 1 0 0 1 \_shadowstep\_space \_shadowstep\_space cm \_fi 
+           \_ea \_shadowlayer \_fi
+    }%
+    \_pdfliteral{q /op1 gs 0 g 1 0 0 1 \_shadowmoveto\_space cm  
+       \_ifx#1\_circlet 1 0 0 1 \_expr{\_bp{.5\_wd0}} \_expr{\_bp{(\_ht0-\_dp0)/2}} cm 
+       \_else  1 0 0 1 -\_shadowb\_space -\_shadowb\_space cm \_fi
+       \_shadowlayer Q}
+}}
+
+   \_doc -----------------------------
+   A generic macro \`\_clipinpath``<x> <y> <curve> <text>` declares
+   a clipping path by the `<curve>` shifted by the `<x>`, `<y>`. The `<text>` is typeset
+   when such clipping path is active. Dimensions are given by bp without the unit here.
+   The macros \`\clipinoval` `<x> <y> <width> <height> {<text>}` and
+   \`\clipincircle` `<x> <y> <width> <height> {<text>}` are defined here.
+   These macros read normal \TeX/ dimensions in their parameters.
+   \_cod -----------------------------
+
+\_def\_clipinpath#1#2#3#4{% #1=x-pos[bp], #2=y-pos[bp], #3=curve, #4=text
+   \_hbox{\_setbox0=\_hbox{{#4}}%
+          \_tmpdim=\_wd0 \_wd0=0pt
+          \_pdfliteral{q \_mv{#1}{#2}{#3 W n}}%
+          \_box0\_pdfliteral{Q}\_kern\_tmpdim
+   }%
+}
+
+\_def\_clipinoval {\_ea\_ea\_ea\_clipinovalA\_scantwodimens}
+\_def\_clipinovalA #1#2{%
+   \_def\_tmp{{#1/65781.76}{#2/65781.76}}%
+   \_ea\_ea\_ea\_clipinovalB\_scantwodimens
+}
+\_def\_clipinovalB{\_ea\_clipinovalC\_tmp}
+\_def\_clipinovalC#1#2#3#4{%
+   \_ea\_clipinpath{#1-(#3/131563.52)+(\_bp{\_roundness})}{#2-(#4/131563.52)+(\_bp{\_roundness})}%
+   {\_oval{#3/65781.76-(\_bp{2\_roundness})}{#4/65781.76-(\_bp{2\_roundness})}{\_bp{\_roundness}}}%
+}
+\_def\_clipincircle {\_ea\_ea\_ea\_clipincircleA\_scantwodimens}
+\_def\_clipincircleA #1#2{%
+   \_def\_tmp{{#1/65781.76}{#2/65781.76}}%
+   \_ea\_ea\_ea\_clipincircleB\_scantwodimens
+}
+\_def\_clipincircleB#1#2{%
+   \_ea\_clipinpath\_tmp{\_circle{#1/65781.76}{#2/65781.76}}%
+}
+\_public \clipinoval \clipincircle ;
+
+
+\_endcode % -------------------------------------
+
+2020-04-12: \_public \clipinoval \clipincircle ; added, bug fixed
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/graphics.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/hi-syntax.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/hi-syntax.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/hi-syntax.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,223 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \hisyntax {Syntax highlithing of verbatim listings <2020-04-04>} % preloaded in format
+
+   \_doc -----------------------------
+   The following macros `\replfromto` and `\replthis` manipulate with the 
+   verbatim text which has been read already and stored in the `\_tmpb` macro.
+ 
+   The \`\replfromto` `{<from>}{<to>}{<what>}` finds first `<from>` then the
+   first `<to>` following by `<from>` pattern and the 
+   `<text>` between them is packed to `#1`.
+   Then `<from><text><to>` is replaced by `<what>`. The `<what>` parameter
+   can use `#1` which is replaced by the `<text>`.
+
+   The `\replfromto` continues by finding next `<from>`, then, next `<to>`
+   repeatedly over the whole verbatim text. If the verbatim text is ended by 
+   opened `<from>` but not closing by `<to>` then `<to>` is appended to the 
+   verbatim text automatically and the last part of verbatim text is replaced too.
+
+   First two parameters are expanded before usage of `\replfromto`. You can
+   use `\csstring\%` or something else here. 
+   \_cod -----------------------------
+
+\_def\_replfromto #1#2{\_edef\_tmpa{{#1}{#2}}\_ea\_replfromtoE\_tmpa}
+\_def\_replfromtoE#1#2#3{% #1=from #2=to #3=what to replace
+   \_def\_replfrom##1#1##2{\_addto\_tmpb{##1}%
+      \_ifx\_end##2\_ea\_replstop \_else \_afterfi{\_replto##2}\_fi}%
+   \_def\_replto##1#2##2{%
+      \_ifx\_end##2\_afterfi{\_replfin##1}\_else 
+        \_addto\_tmpb{#3}%
+        \_afterfi{\_replfrom##2}\_fi}%
+   \_def\_replfin##1#1\_end{\_addto\_tmpb{#3}\_replstop}%   
+   \_edef\_tmpb{\_ea}\_ea\_replfrom\_tmpb#1\_end#2\_end\_end\_relax
+}
+\_def\_replstop#1\_end\_relax{}
+\_def\_finrepl{}
+
+   \_doc -----------------------------
+   The \`\replthis` `{<pattern>}{<what>}` replaces each `<pattern>` by `<what>`.
+   Both parameters of `\replthis` are expanded first.
+   \_cod -----------------------------
+
+\_def\_replthis#1#2{\_edef\_tmpa{{#1}{#2}}\_ea\_replstring\_ea\_tmpb \_tmpa}
+
+\_public \replfromto \replthis ;
+
+   \_doc -----------------------------
+   The patterns `<from>`, `<to>` and `<pattern>` are not found when they are
+   hidden in braces `{...}`. Example:
+   \begtt
+   \replfromto{/*}{*/}{\x C{/*#1/*}}
+   \endtt
+   replaces all C comments by `\x C{...}`. The patterns inside `{...}` are
+   not used by next usage of `\replfromto` or `\replthis` macros.
+
+   The \`\_xscan` macro does replacing `\x` by `\z` in the post-processing
+   phase. The `\x <letter>{<text>}` expands to  `\_xscan {<letter>}<text>^^J^`.
+   If `#3` is `\_end` then it signals that something wrong happens, the 
+   `<from>` was not terminated by legal `<to>` when `\replfromto` did work.
+   We must to fix it by the \`\_xscanR` macro.
+   \_cod -----------------------------
+
+\_def\_xscan#1#2^^J#3{\_ifx\_end#3 \_ea\_xscanR\_fi
+   \z{#1}{#2}%
+   \_ifx^#3\_else ^^J\_afterfi{\_xscan{#1}#3}\_fi}
+\_def\_xscanR#1\_fi#2^{^^J}
+
+   \_doc -----------------------------
+   The \`\hicolor` `<letter> <color>` defines `\_z<letter>{<text>}`
+   as `{<color><text>}`. It should be used in the context of 
+   `\x <letter>{<text>}` macros.
+   \_cod -----------------------------
+
+\_def\_hicolor #1#2{\_sdef{_z:#1}##1{{#2##1}}}
+
+   \_doc -----------------------------
+   The \`\hisyntax``{<name>}` re-defines default \^`\_prepareverbdata``<macro><verbtext>`
+   in order to it does more things:
+   It saves `<verbtext>` to `\_tmpb`, appends `\n` around spaces and 
+   `^^J` characters in pre-processing phase, it opens `hisyntax-<name>.opm` 
+   file if `\_hisyntax<name>` is not defined. Then `\_the\_isyntax<name>` 
+   is processed. Finally, the post-processing phase is realized by setting
+   appropriate values to `\x` and `\y` macros and doing
+   `\_edef\_tmpb{\_tmpb}`.
+   \_cod -----------------------------
+
+\_def\_hisyntax#1{\_def\_prepareverbdata##1##2{%
+   \_let\n=\_relax \_def\t{\n\_noexpand\t\n}\_let\_start=\_relax
+   \_adef{ }{\n\ \n}\_edef\_tmpb{\_start^^J##2\_end}%
+   \_replthis{^^J}{\n^^J\n}\_replthis{\n\_end}{\_end}%
+   \_let\x=\_relax  \_let\y=\_relax \_let\z=\_relax \_let\t=\_relax
+   \_endlinechar=`\^^M
+   \_lowercase{\_def\_tmpa{#1}}%
+   \_ifcsname _hialias:\_tmpa\_endcsname \_edef\_tmpa{\_cs{_hialias:\_tmpa}}\_fi
+   \_ifx\_tmpa\_empty \_else
+      \_unless \_ifcsname _hisyntax\_tmpa\_endcsname
+          \_isfile{hisyntax-\_tmpa.opm}\_iftrue \_opinput {hisyntax-\_tmpa.opm} \_fi\_fi
+      \_ifcsname _hisyntax\_tmpa\_endcsname
+          \_ifcsname hicolors\_tmpa\_endcsname
+              \_cs{_hicolors\_tmpa}=\_cs{hicolors\_tmpa}%
+          \_else
+              \_if^\_the\_hicolors^\_else
+                  \_ifcsname _hicolors\_tmpa\_endcsname
+                      \_global\_cs{_hicolors\_tmpa}=\_hicolors \_global\_hicolors={}%
+          \_fi\_fi\_fi
+          \_ea\_the \_csname _hisyntax\_tmpa\_endcsname % \_the\_hisyntax<name>
+      \_else\_opwarning{Syntax highlighting "\_tmpa" undeclared (no file hisyntax-\_tmpa.opm)}
+   \_fi\_fi
+   \_replthis{\_start\n^^J}{}\_replthis{^^J\_end}{^^J}%
+   \_def\n{}%
+   \_def\x####1####2{\_xscan{####1}####2^^J^}%
+   \_def\y####1{\_ea \_noexpand \_csname ####1\_endcsname}%
+   \_edef\_tmpb{\_tmpb}%
+   \_def\z####1{\_cs{_z:####1}}%
+   \_def\t{\_hskip \_dimexpr\_tabspaces em/2\_relax}%
+   \_localcolor
+}}
+\_public \hisyntax \hicolor ;
+
+   \_doc -----------------------------
+   Aliases for languages can be declared like this.
+   When `\hisyntax{xml}` is used then this is the same as `\hisyntax{html}`.
+   \_cod -----------------------------
+
+\_sdef{_hialias:xml}{html}
+\_sdef{_hialias:json}{c}
+
+\_endcode % -------------------------------------------
+
+The user can write
+
+\begtt \adef/{\_csstring\\}
+\begtt \hisytnax{C}
+...
+/endtt
+\endtt
+and the code is colorized by C syntax.
+The user can write `\everytt={\hisyntax{C}}` and all verbatim listings are
+colorized. 
+
+The \^`\hisyntax``{<name>}` reads the file `hisyntax-<name>.opm` where the
+colorization is declared. The parameter `<name>` is case insensitive and the
+file name must include it in lowercase letters. For example the file
+`hisyntax-c.opm` looks like:
+
+\printdoc hisyntax-c.opm
+
+\OpTeX/ provides `hisyntax-{c,python,tex,html}.opm` files.
+You can take inspiration from these files and declare more languages.
+
+User can re-declare colors by `\hicolors={...}` This value has precedence
+before `\_hicolors<name>` values declared in the `hicolors-<name>.opm` file.
+What exactly to do: copy `\_hicolors<name>={...}`
+from `hicolors-<name>.opm` to your document, 
+rename it as `\hicolors={...}` and do you own colors modifications. 
+
+Another way to set non-default colors is to declare
+`\newtoks\hicolors<name>` (without the `_` prefix) and set the colors palette here.
+It has precedence before `\_hicolors<name>` (with the `_` prefix) declared in
+the `hicolors-<name>.opm` file.
+This is useful when there are more hi-syntax languages used in one document.
+
+\medskip
+\noindent{\bf Notes for hi-syntax macro writers}
+
+The file `hisyntax-<name>.opm` is read only once in the \TeX/ group. 
+If there are definitions then they must be declared as global. 
+
+The `hisyntax-<name>.opm` file must (globally) declare `\_hisyntax<name>` tokens string
+where the action over verbatim text is declared typically by `\replfromto` or
+`\replthis` macros. 
+
+The verbatim text is preparared by {\em pre-processing phase}, then the 
+`\_hisyntax<name>` is applied and then {\em post-processing phase} does final
+corrections. Finally, the verbatim text is printed line by line.
+
+The pre-processing phase does:
+
+\begitems
+* Each space is replaced by {\visiblesp`\n\ \n`}, so `\n<word>\n` should be a pattern to
+  finding whole words (no subwords). The `\n` control sequence is removed in
+  the post-processing phase.
+* Each end of line is repersented by `\n^^J\n`.
+* The `\_start` control sequence is added before the verbatim text and `\_end` control
+  sequence is appended to the end of the verbatim text. These control
+  sequences are removed in post-processing phase.
+\enditems 
+
+There are special macros working only in a group when processing the verbatim
+text.
+
+
+\begitems
+* `\n` means noting but it should be used as a boundary of words as mentioned above.
+* `\t` means a tabelator. It is prepared as `\n\t\n` because it can be at
+  the boundary of a word.
+* `\x <letter>{<text>}` can be used as replacing text. Suppose the example
+  \begtt
+  \replfromto{/*}{*/}{\x C{/*#1*/}}
+  \endtt
+  This replaces all C comments `/*...*/` by `\x C{/*...*/}`. But the
+  C comments may span more lines, i.e. the `^^J` should be inside it.
+
+  The macro `\x <letter>{<text>}` is replaced by one or more
+  `\z <letter>{<text>}` in post-processing phase where each parameter `<text>` of
+  `\z` keeps inside one line. Inside-line parameters are represented
+  by `\x C{<text>}` and they are replaced to `\z C{<text>}` without any change.
+  But:
+  \begtt \catcode`\<=13
+  \x C{<text1>^^J<text3>^^J<text3>} 
+  is replaced by
+  \z C{<text1>}^^J\z C{<text2>}^^J\z C{<text3>}
+  \endtt
+  The `\z <letter>{<text>}` is expanded to `\_z:<letter>{<text>}` and if
+  `\hicolor <letter> <color>` is declared then 
+  `\_z:<letter>{<text>}` expands to `{<color><text>}`. So, required color is
+  activated at all lines (separatelly) where C comment spans.
+* `\y {<text>}` is replaced by `\<text>` in the post processing phase. It should
+  be used for macros without a parameter. You cannot use unprotected macros
+  as replacement text before the post-processing phase, because the post-processing
+  phase is based on expansion whole verbatim text.
+\enditems
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/hi-syntax.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/hisyntax-c.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/hisyntax-c.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/hisyntax-c.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,66 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \_hisyntaxc {Syntax highlighting for C sources <2020-04-03>} 
+
+\_newtoks \_hisyntaxc  \_newtoks \_hicolorsc
+
+\_global\_hicolorsc={%     colors for C language
+   \_hicolor K \Red      % Keywords 
+   \_hicolor S \Magenta  % Strings
+   \_hicolor C \Green    % Comments
+   \_hicolor N \Cyan     % Numbers
+   \_hicolor P \Blue     % Preprocessor
+   \_hicolor O \Blue     % Non-letters
+}
+\_global\_hisyntaxc={%
+   \_the\_hicolorsc
+   \_let\c=\_relax \_let\e=\_relax \_let\o=\_relax
+   \_replfromto {/*}{*/}         {\x C{/*#1*/}}%   /*...*/
+   \_replfromto {//}{^^J}        {\z C{//#1}^^J}%  //...
+   \_replfromto {\_string#}{^^J} {\z P{\##1}^^J}%  #include ...
+   \_replthis   {\_string\"}     {{\_string\"}}%   \" protected inside strings
+   \_replfromto {"}{"}           {\x S{"#1"}}%     "..."
+   %
+   \_edef\_tmpa {()\_string{\_string}+-*/=[]<>,:;\_pcent\_string&\_string^|!?}% non-letters
+   \_ea \_foreach \_tmpa
+      \_do {\_replthis{#1}{\n\o#1\n}}
+   \_foreach                                                              % keywords
+      {auto}{break}{case}{char}{continue}{default}{do}{double}% 
+      {else}{entry}{enum}{extern}{float}{for}{goto}{if}{int}{long}{register}% 
+      {return}{short}{sizeof}{static}{struct}{switch}{typedef}{union}% 
+      {unsigned}{void}{while}
+      \_do {\_replthis{\n#1\n}{\z K{#1}}}
+   \_replthis{.}{\n.\n}                                                   % numbers
+   \_foreach 0123456789 
+      \_do {\_replfromto{\n#1}{\n}{\c#1##1\e}}
+   \_replthis{\e.\c}{.}
+   \_replthis{\e.\n}{.\e}
+   \_replthis{\n.\c}{\c.}
+   \_replthis{e\e\o+\c}{e+}\_replthis{e\e\o-\c}{e-}   
+   \_replthis{E\e\o+\c}{E+}\_replthis{E\e\o-\c}{E-}   
+   \_def\o#1{\z O{#1}}
+   \_def\c#1\e{\z N{#1}}
+}
+
+\_endcode %------------------------------------------------
+
+
+Each `hisyntax-<name>.opm` file must declare the token list
+`\_hisyntax<name>` using `\newtoks` and must ceclare the syntax declaration
+in it. The second cotken list `\_hicolors<name>` is optional but recommended.
+User can re-declare his/her own colors by `\hicolors` which has precedence
+before `\_hicolors<name>`.
+
+The public variants can be deacred if you want to give these token lists to
+the user name space. But it is not explicitly needed.
+
+All settings must be global here, because the file is typically read inside
+a group and we need not to read it repeatedly in before each code chunk
+again and again.
+
+Note that `\foreach` is used to each non-letters (expanded via \string
+because we needn't to treate with active or special TeX characters). The
+keyword are applied in the `\foreach` loop too.
+
+See `hi-sytax.opm` for more information about `\hicolor`, `\replfromto` and
+`\replthis` macros.


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/hisyntax-c.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/hisyntax-html.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/hisyntax-html.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/hisyntax-html.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,31 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl\_hisyntaxhtml {Syntax highlighting for html or xml sources <2020-04-03>} 
+
+\_newtoks\_hisyntaxhtml  \_newtoks\_hicolorshtml
+
+\_global\_hicolorshtml={%  colors in html codes 
+   \_hicolor A \Cyan    % <, > and parameters 
+   \_hicolor T \Red     % tag names
+   \_hicolor C \Green   % comments
+   \_hicolor E \Blue    % HTML entities
+   \_hicolor S \Magenta % strings in parameters
+}
+\_global\_hisyntaxhtml={
+   \_the\_hicolorshtml
+   \_replfromto{<!--}{-->}{\x C{<!--#1-->}}
+   \_replthis{<}{\y{_hitaghtml}}
+   \_replthis{\_string&}{\y{_hientityhtml}}
+}
+\_gdef\_hitaghtml#1>{\_hitaghtmlA#1\ >}
+\_gdef\_hitaghtmlA#1\ #2>{\z A{<}\z T{#1}\_def\_tmpb{#2^}%
+  \_if^\_tmpb 
+  \_else \_space 
+      \_replthis{\ ^}{}\_replfromto{"}{"}{\_histringhtml{"##1"}}\z A{\_tmpb}\_fi
+  \z A{>}%
+}
+\_gdef\_histringhtml#1{\_visiblesp \z S{#1}}
+\_gdef\_hientityhtml#1;{\z E{\}}
+
+\_endcode %------------------------------------------------
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/hisyntax-html.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/hisyntax-python.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/hisyntax-python.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/hisyntax-python.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,82 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \_hisyntaxpython {Syntax highlighting for Python sources <2020-04-04>} 
+
+\_newtoks \_hisyntaxpython  \_newtoks \_hicolorspython
+
+\_global\_hicolorspython={% colors for Python language
+   \_hicolor M \Orange    % Multi line strings
+   \_hicolor S {\_visiblesp \Grey} % Single line strings
+   \_hicolor C \Green     % Comments
+   \_hicolor K \LightBlue % Keywords
+   \_hicolor O \Blue      % Operators
+   \_hicolor N \Red       % Numbers
+   \_hicolor D \Magenta   % def names
+   \_hicolor L \Black     % class names
+   \_hicolor R \Magenta   % Decorators
+}
+\_global\_hisyntaxpython={%
+   \_the\_hicolorspython
+   \_let\s=\_relax  \_let\c=\_relax \_let\e=\_relax \_let\o=\_relax
+   \_replthis{\_string\"}{{\_string\"}}     % protect \", \'
+   \_replthis{\_string\'}{{\_string\'}}
+   %
+   \_replfromto{\_string#}{^^J}{\z C{\##1}^^J} % comments
+   %
+   \_replthis{'''}{\_noexpand\_hipystr0{'''}M} % search string marks
+   \_replthis{"""}{\_noexpand\_hipystr1{"""}M}
+   \_replthis{"}{\_noexpand\_hipystr2{"}S}
+   \_replthis{'}{\_noexpand\_hipystr3{'}S}
+   \_edef\_tmpb{\_tmpb}                       % realize string marks
+   %
+   \_foreach {br}{Br}{bR}{BR}{rb}{rB}{Rb}{RB}uUrRbB  % string prefixes
+       \_do {\_replthis{#1\s}{\_noexpand\_hipystrpre#1}}
+   \_def\s{}
+   \_edef\_tmpb{\_tmpb}
+   %
+   \_edef \_tmpa {+-*./=<>()[]:,;!|\_pcent   % operators
+        \_string{\_string}@\_string&\_string~\_string^}
+   \_ea\_foreach \_tmpa 
+       \_do {\_replthis{#1}{\n\o#1\n}}
+   %
+   \_foreach                                 % keywords
+      {and}{as}{assert}{async}{await}{break}{continue}{del}{elif}{else}{except}%
+      {exec}{False}{finally}{for}{from}{global}{if}{import}{in}{is}{lambda}{None}% 	
+      {nonlocal}{not}{or}{pass}{print}{raise}{return}{True}{try}{while}{with}{yield}%
+      \_do {\_replthis{\n#1\n}{\z K{#1}}}
+   \_replfromto{\n def\n}{\n\o(\n}{\z K{def}\x D{#1}\n\o(\n}
+   \_replfromto{\n class\n}{\n\o(\n}{\z K{class}\x L{#1}\n\o(\n}
+   %
+   \_foreach 0123456789                       % numbers            
+       \_do {\_replfromto{\n#1}{\n}{\c#1##1\e}}
+   %
+   \_replthis{\e\o.\c}{.}
+   \_replthis{\e\o.\n}{.\e}
+   \_replthis{\n\o.\c}{\c.}
+   \_replthis{e\e\o+\c}{e+}\_replthis{e\e\o-\c}{e-}   
+   \_replthis{E\e\o+\c}{E+}\_replthis{E\e\o-\c}{E-}   
+   \_replthis{\e j}{j\e}
+   %
+   \_replfromto{\n\o@\n}{^^J}{\z R{#1}^^J}    % decorators
+   %
+   \_def\o#1{\z O{#1}}
+   \_def\c#1\e{\z N{#1}}
+}
+
+\_gdef\_hipystr#1#2#3#4\_hipystr#5#6#7{%
+   \_ifx#1#5\s\x#3{#2#4#2}%
+   \_else \_afterfi{\_hipystr#1{#2}#3#4#6}\_fi
+}
+\_gdef\_hipystrpre#1\x#2{\x#2{#1}\x#2}
+
+\_ifx\LightBlue\_undefined \_gdef\LightBlue {\_setcmykcolor{1 0.43 0 0}}\_fi 
+\_ifx\Orange\_undefined    \_gdef\Orange    {\_setcmykcolor{0 0.64 1 0}}\_fi 
+
+\_endcode %------------------------------------------------
+
+This code was greatly inspired by the OPMac hisyntax macros for Python:
+
+   https://gitlab.fit.cvut.cz/krajnpet/PySyntax
+
+created by Petr Krajnik.
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/hisyntax-python.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/hisyntax-tex.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/hisyntax-tex.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/hisyntax-tex.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,38 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl\_hisyntaxtex {Syntax highlighting for TeX sources <2020-04-03>} 
+
+\_newtoks\_hisyntaxtex  \_newtoks\_hicolorstex
+
+\_global\_hicolorstex={%  colors in TeX codes 
+   \_hicolor S \Blue    % control sequences
+   \_hicolor B \Magenta % {, }, $
+   \_hicolor C \Green   % comments
+}
+\_global\_hisyntaxtex={
+   \_the\_hicolorstex
+   \_replthis{\_string\%}{\y{_createcs}{\_csstring\%}}
+   \_replfromto{\_csstring\%}{^^J}{\x C{\_csstring\%#1}^^J}
+   \_replthis{\_string\\}{\y{_createcs}{\_csstring\\}}
+   \_replthis{\_string\{}{\y{_createcs}{\_csstring\{}}
+   \_replthis{\_string\}}{\y{_createcs}{\_csstring\}}}
+   \_replthis{\_string\$}{\y{_createcs}{\_csstring\$}}
+   \_replthis{\_csstring\\}{\y{_createcs}}
+   \_replthis{\_csstring\{}{\x B{\_csstring\{}}
+   \_replthis{\_csstring\}}{\x B{\_csstring\}}}
+   \_replthis{\_csstring\$}{\x B{\_csstring\$}}
+}
+\_gdef\_createcs#1{\_def\_csletters{#1}%
+   \_ifcat a\_noexpand#1\_afterfi{\_futurelet\_next\_createcsA}%
+   \_else \_ea\_createcsF \_fi
+}
+\_gdef\_createcsA{\_ifcat a\_noexpand\_next \_ea\_createcsB \_else \_ea\_createcsF \_fi}
+\_gdef\_createcsB#1{\_addto\_csletters{#1}\_futurelet\_next\_createcsA}
+\_gdef\_createcsF{\z S{\_csstring\\\_csletters}}
+\_gdef\_createbb{\_ea\_createcs\_csstring\\}
+
+\_endcode %------------------------------------------------
+
+The `\_createcs` reads next tokens as the tokenizer does it until the name
+of a control sequence is read. It is saved to the `\_csletters` macro and
+the macro \_createcsF prints it.


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/hisyntax-tex.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/hyperlinks.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/hyperlinks.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/hyperlinks.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,156 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \ulink {Hyperlinks <2020-04-22>} % preloaded in format 
+
+   \_doc ----------------------------
+   \`\dest``[<type>:<spec>]` creates a destination of internal links. The
+   destination is declared in the format `<type>:<spec>`. If the \^`\hyperlinks`
+   command in not used, then `\dest` does nothing else it is set to `\_destactive`.
+   The \`\_destactive` is implemented by `\_pdfdest` primitive. It creates a box
+   in which the destination is shifted by \`\_destheight`. The reason is that
+   the destination is exactly at top border of the PDF viewer but we want to see
+   the line where destination is. The destination box is positioned by
+   different way dependent on current vertical or horizontal mode.
+   \_cod ----------------------------
+
+\_def\_destheight{1.4em}
+\_def\_destactive[#1:#2]{\_if$#2$\_else\_ifvmode
+      \_tmpdim=\_prevdepth \_prevdepth=-1000pt
+      \_destbox[#1:#2]\_prevdepth=\_tmpdim
+   \_else \_destbox[#1:#2]%
+   \_fi\_fi
+}
+\_def\_destbox[#1]{\_vbox to0pt{\_kern-\_destheight \_pdfdest name{#1} xyz\_vss}}
+\_def\_dest[#1]{}
+\_public \dest ;
+
+   \_doc ----------------------------
+   \`\link``[<type>:<spec>]{<color>}{<text>}` creates an internal link to \^`\dest`
+   with the same `<type>:<spec>`. You can have more links with the same
+   `<type>:<spec>` but only one `\dest` in the document. If \^`\hyperlinks`
+   command is not used, then `\link` only prints `<text>` else it is set to 
+   `\_linkactive`.
+   The \`\_linkactive` is implemented by `\_pdfstartlink...\_pdfendlink`
+   primitives.
+   \nl
+   \`\ilink``[<type>:<spec>]{<text>}` is equivalent to `\_link` but
+   the `<color>` is used from \^`\hyperlinks` declaration.
+   \_cod ----------------------------
+
+\_protected\_def\_linkactive[#1:#2]#3#4{\_leavevmode\_pdfstartlink height.9em depth.3em
+      \_pdfborder{#1} goto name{#1:#2}\_relax {#3#4}\_pdfendlink
+}
+\_protected\_def\_link[#1]#2#3{\_leavevmode{#3}}
+\_protected\_def\_ilink[#1]#2{\_leavevmode{#2}}
+\_public \ilink \link ;
+
+   \_doc ----------------------------
+   \`\ulink``[<url>]{<text>}` creates external link. It prints only te `<text>` by default but
+   the \^`\hyperlinks` declaration defines it as \`\_urlactive``[url:<url>]{<text>}`.
+   The external link is created by the `\_pdfstartlink...\pdfendlink` primitives.
+   The `<url>` is detokenized with `\escapechar=-1` before it is used, so 
+   `\%`, `\#` etc. can be used in the `<url>`.
+   \_cod ----------------------------
+
+\_protected\_def\_urlactive[#1:#2]#3#4{\_leavevmode{\_escapechar=-1
+   \_pdfstartlink height.9em depth.3em \_pdfborder{#1}%
+      user{/Subtype/Link/A <</Type/Action/S/URI/URI(\_detokenize{#2})>>}\_relax
+      {#3#4}\_pdfendlink}%
+}
+\_def\_ulink[#1]#2{\_leavevmode{#2}}
+\_def\_urlcolor{}
+\_public \ulink ;
+
+   \_doc ----------------------------
+   The `\_pdfstartlink` primitive uses `\_pdfborder{<type>}` in its parameter
+   (see \^`\_linkactive` or \^`\_urlactive` macros). The \`\_pdfborder``{<type>}` 
+   expands to `attr{/C[? ? ?] /Border[0 0 .6]}` if the 
+   `\<type>border` (i.e.\ \`\refborder`, \`\citeborder`, \`\tocborder`, \`\pgborder`,
+   \`\urlborder`, \`\fntborder` or \`\fnfborder`)
+   is defined. User can define it in
+   order to create colored frames around active links. For example
+   `\def\tocborder{1 0 0}` causes red frames in TOC (not printed, only visible
+   in PDF viewers).
+   \_cod ----------------------------
+
+\_def\_pdfborder#1{\_ifcsname #1border\_endcsname
+       attr{/C[\_csname #1border\_endcsname] /Border[0 0 .6]}%
+   \_else attr{/Border[0 0 0]}\_fi
+}
+
+   \_doc ----------------------------
+   \`\hyperlinks``{<ilink_color>}{<ulink_color>}` activates `\dest`, `\link`,
+   `\ilink`, `\ulink` in order they create links. These macros are redefined
+   here to their \"active" version.
+   \_cod ----------------------------
+
+\_def\_hyperlinks#1#2{%
+   \_let\_dest=\_destactive \_let\_link=\_linkactive
+   \_def\_ilink[##1]##2{\_link[##1]{\_localcolor#1}{##2}}%
+   \_def\_ulink[##1]##2{\_urlactive[url:##1]{\_localcolor#2}{##2}}%
+   \_public \dest \ilink \ulink ;%
+}
+\_public \hyperlinks ;
+
+   \_doc ----------------------------
+   \`\url``{<url>}` does approximately the same as \^`\ulink``[<url>]{<url>}`, but
+   more work is done before the `\ulink` is processed. The link-version of <url>
+   is saved to `\_tmpa` and the printed version in `\_tmpb`. The printed
+   version is modified in order to set a breakpoints to special places of the
+   `<url>`. For example `//` is replaced by `\_urlskip/\_urlskip/\_urlbskip` 
+   where `\urlskip` adds a small nobreakable glue between these two slashes and
+   before them and `\_urlbskip` adds a breakable glue after them.
+   \nl
+   The text version of the `<url>` is printed in \`\_urlfont`.
+   \_cod ----------------------------
+
+\_def\_url#1{{%
+   \_def\_tmpa{#1}\_replstring\_tmpa {\|}{}%
+   {\_escapechar=-1 \_ea}\_ea\_edef\_ea\_tmpa\_ea{\_detokenize\_ea{\_tmpa}}%
+   \_def\_tmpb{#1}\_replstring\_tmpb {\|}{\_urlbskip}%
+   \_replstring\_tmpb {//} {{\_urlskip\_urlslashslash\_urlbskip}}%
+   \_replstring\_tmpb {/}  {{\_urlskip/\_urlbskip}}%
+   \_replstring\_tmpb {.}  {{\_urlskip.\_urlbskip}}%
+   \_replstring\_tmpb {?}  {{\_urlskip?\_urlbskip}}%
+   \_replstring\_tmpb {=}  {{\_urlskip=\_urlbskip}}%
+   \_ea\_replstring\_ea\_tmpb \_ea{\_string &} {{\_urlbskip\_char`\& \_urlskip}}%
+   \_ea\_replstring\_ea\_tmpb \_ea{\_bslash|}  {{\_penalty0}}%
+   \_ea\_ulink \_ea[\_tmpa] {\_urlfont\_tmpb\_null}%
+}}
+\_def\_urlfont{\_tt}
+\_def\_urlskip{\_null\_nobreak\_hskip0pt plus0.05em\_relax}
+\_def\_urlbskip{\_penalty100 \_hskip0pt plus0.05em\_relax}
+\_def\_urlslashslash{/\_urlskip/}
+
+\_public \url ;
+
+\_endcode % ----------------------------------------
+
+
+There are four types of the internal links and one type of external link:
+
+\begitems
+* `ref:<label>`     -- the destination is created when `\label[<label>]` is used, 
+                       see also the section \ref[references].
+* `toc:<tocrefnum>` -- the destination is created at chap/sec/secc titles, 
+                       see also the section \ref[maketoc].
+* `pg:<gpageno>`    -- the destination is created at beginning of each page,
+                       see also the section \ref[output].
+* `cite:<bibnum>`   -- the destination is created in bibliography reference, 
+                       see also the section \ref[bib].
+* `url:<url>`       -- used by `\url` or `\ulink`,
+                       see also the end of this section.
+\enditems
+
+The `<tocrefnum>`, `<gpageno>` and `<bibnum>` are numbers starting from one and
+globally incremented by one in whole document. The registers \^`\tocrefnum`,
+\^`\gpageno` and \^`\bibnum` are used for these numbers.
+
+When a chap/sec/secc title is prefixed by `\label[<label>]`, then both types
+of internal links are created at the same destination place: 
+`toc:<tocrefnum>` and `ref:<label>`.
+
+\_endinput
+
+2020-04-22 \| in \url: bug fixed
+2020-03-15 introduced
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/hyperlinks.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/hyphen-lan.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/hyphen-lan.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/hyphen-lan.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,203 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \langlist {Initialization of hypenation patterns <2020-03-10>} % preloaded in format  
+
+   \_doc -----------------------------
+   The <iso-code> means a shortcut of language name (mostly by ISO 639-1).
+   The following control sequences are used for language switching:
+   \begitems
+   * `\_lan:<number>` expands to `<iso-code>` of the language.
+     The number is internal number of languages used as a value of
+     `\language` register.
+   * `\_ulan:<long-lang>` expands to `<iso-code>` too. This is transformation
+     from long name of language (lowercase letters) to <iso-code>.
+   * `\_<iso-code>Patt` (for example `\_csPatt`) is the language `<number>` declared by `\chardef`.
+   * `\<iso-code>lang` 
+     (for example \`\enlang`, \`\cslang`, \`\sklang`, \`\delang`, \`\pllang`) 
+     is language selector.  It exists in two states
+     \begitems
+     * Initialization state: when `\<iso-code>lang` is used first then it
+       must load the patterns into memory using Lua code. If it is done then 
+       the `\<iso-code>lang` re-defines itself to processing state.
+     * Processing state: it only sets `\language=\_<iso-code>Patt`, i.e it
+       selects the hyphenation patterns. It does a little more
+       language-dependent work, as mentioned below.
+     \enditems
+   * `\_langspecific:<isocode>` is processed by `\<iso-code>lang` and it
+     should include language-specific macros declared by user or macro designer.
+   \enditems
+   The USenglish patters are preloaded first: 
+   \_cod -----------------------------
+
+\_chardef\_enPatt=0
+\_def\_pattlist{\_enPatt=0}
+\_def\_langlist{en(USenglish)}
+\_sdef{_lan:0}{en}
+\_sdef{_ulan:usenglish}{en}
+\_def\_enlang{\_uselang{en}\_enPatt23} % \lefthyph=2 \righthyph=3
+\_def\enlang{\_enlang}
+\_sdef{_langspecific:en}{\_nonfrenchspacing}
+
+\_lefthyphenmin=2 \_righthyphenmin=3 % disallow x- or -xx breaks
+\_input hyphen  % en(USenglish) patterns from TeX82
+
+   \_doc -----------------------------
+   \`\preplang` `<iso-code> <long-lang> <number-cs> <number> <pre-hyph><post-hyph>`
+   prepares the\nl `\<iso-code>lang` to its initialization state. Roughly
+   speaking, it does:
+   \begtt \catcode`\<=13
+   \chardef\_<iso-code>Patt = <number>
+   \def\_lan:<number> {<iso-code>}
+   \def\_ulan:<long-lang> {<iso-code>}
+   \def\_<iso-code>lang {%
+      \_loadpattrs <long-lang> <number> % loads patterns using Lua code
+      \gdef\_<iso-code>lang {\_uselang{<iso-code>}\_<iso-code>Patt <pre-hyph><post-hyph>}
+      \_<iso-code>lang                  % runs itself in processing state
+   }
+   \def\<iso-code>lang {\_<iso-code>lang} % public version \<iso-code>lang
+   \endtt
+   You can see that `\<iso-code>lang` runs \`\_loadpattrs` `<long-lang> <iso-code>`
+   in initialization state and \^`\_uselang` in processing state.
+   \_cod -----------------------------
+
+\_def\_preplang #1 #2 #3#4 #5 {%
+   \_chardef#3=#4
+   \_sdef{_lan:#4}{#1}\_lowercase{\_sdef{_ulan:#2}}{#1}%  
+   \_def\_next{\_ea\_noexpand\_csname _#1lang\_endcsname}
+   \_ea\_edef \_csname _#1lang\_endcsname {%
+      \_lowercase{\_noexpand\_loadpattrs #2} #4 % loads patterns
+      \_gdef\_next{\_noexpand\_uselang{#1}#3#5}%  re-defines itself
+      \_next                                   %  runs itself in processing state
+   }
+   \_addto\_langlist{ #1(#2)}%
+   \_sdef{#1lang}{\_csname _#1lang\_endcsname}% unprefixed \<isocode>lang
+}
+\_def\_loadpattrs#1 #2 {%
+   \_directlua{
+      require("luatex-hyphen")
+      luatexhyphen.loadlanguage("#1",#2)
+   }%
+}
+
+   \_doc -----------------------------
+   \`\_uselang``{<iso-code>}\_<iso-code>Patt <pre-hyph><post-hyph>`\nl 
+   sets `\language`, `\lefthyphenmin`, `\righthyphenmin` and runs
+   `\frenchspacing`. This default language-dependent settings
+   should be re-declared by `\_langspecific:<iso-code>` which is run
+   finally (it is `\relax` by default, only `\_langspecific:en` runs
+   \^`\nonfrenchspacing`).
+   \_cod -----------------------------
+
+\_def\_uselang#1#2#3#4{\_language=#2\_lefthyphenmin=#3\_righthyphenmin=#4\_relax
+   \_frenchspacing  % \nonfrenchspacing can be set in \cs{_langspecific:lan}
+   \_cs{_langspecific:#1}%
+}
+   \_doc -----------------------------
+   The \`\uselanguage` `{<long-lang>}` is defined here 
+   (for compatibility with e-plain users).
+   \_cod -----------------------------
+
+\_def\_uselanguage#1{\_lowercase{\_cs{_\_cs{_ulan:#1}lang}}}
+\_public \uselanguage ; 
+
+   \_doc -----------------------------
+   The numbers for languages are declared as fixed constants (no
+   auto-generated). This concept is inspired from CSplain. 
+   There are typical numbers of languages in CSplain: 5=Czech in IL2,
+   15=Czech in T1 and 115=Czech in Unicode. We keep these constants
+   but we load only Unicode patterns (greater than 100), of course.
+   \_cod -----------------------------
+
+\_preplang enus USenglishmax \_enusPatt 100 23
+\_preplang engb UKenglish    \_engbPatt 101 23
+\_preplang it   Italian      \_itPatt 102 22
+\_preplang ia   Interlingua  \_iaPatt 103 22
+\_preplang id   Indonesian   \_idPatt 104 22
+
+\_preplang cs   Czech      \_csPatt 115 23
+\_preplang sk   Slovak     \_skPatt 116 23
+\_preplang de   nGerman    \_dePatt 121 22
+\_preplang fr   French     \_frPatt 122 22
+\_preplang pl   Polish     \_plPatt 123 22 
+\_preplang cy   Welsh      \_cyPatt 124 23
+\_preplang da   Danish     \_daPatt 125 22
+\_preplang es   Spanish    \_esPatt 126 22
+\_preplang sl   Slovenian  \_slPatt 128 22
+\_preplang fi   Finnish    \_fiPatt 129 22
+\_preplang hy   Hungarian  \_huPatt 130 22
+\_preplang tr   Turkish    \_trPatt 131 22
+\_preplang et   Estoniak   \_etPatt 132 23
+\_preplang eu   Basque     \_euPatt 133 22
+\_preplang ga   Irish      \_gaPatt 134 23
+\_preplang nb   Bokmal     \_nbPatt 135 22
+\_preplang nn   Nynorsk    \_nnPatt 136 22
+\_preplang nl   Dutch      \_nlPatt 137 22
+\_preplang pt   Portuguese \_ptPatt 138 23
+\_preplang ro   Romanian   \_roPatt 139 22
+\_preplang hr   Croatian   \_hrPatt 140 22
+\_preplang zh   Pinyin     \_zhPatt 141 11
+\_preplang is   Icelandic  \_isPatt 142 22
+\_preplang hsb  Uppersorbian \_hsbPatt 143 22
+\_preplang af   Afrikaans  \_afPatt 144 12
+\_preplang gl   Galician   \_glPatt 145 22
+\_preplang kmr  Kurmanji   \_kmrPatt 146 22
+\_preplang tk   Turkmen    \_tkPatt 147 22
+\_preplang la   Latin      \_laPatt 148 22
+\_preplang lac  classicLatin \_lacPatt 149 22
+\_preplang lal  liturgicalLatin \_lalPatt 150 22
+\_preplang elm  monoGreek  \_elmPatt 201 11
+\_preplang elp  Greek      \_elpPatt 202 11
+\_preplang grc  ancientGreek \_grcPatt 203 11
+\_preplang ca   Catalan    \_caPatt 204 22
+\_preplang cop  Coptic     \_copPatt 205 11
+\_preplang mn   Mongolian  \_mnPatt 206 22
+\_preplang sa   Sanskrit   \_saPatt 207 13
+\_preplang ru   Russian    \_ruPatt 208 22
+\_preplang uk   Ukrainian  \_ukPatt 209 22
+\_preplang hy   Armenian   \_hyPatt 210 12
+\_preplang as   Assamese   \_asPatt 211 11
+\_preplang hi   Hindi      \_hiPatt 212 11
+\_preplang kn   Kannada    \_knPatt 213 11
+\_preplang lv   Latvian    \_lvPatt 215 22
+\_preplang lt   Lithuanian \_ltPatt 216 22
+\_preplang ml   Malayalam  \_mlPatt 217 11
+\_preplang mr   Marathi    \_mrPatt 218 11
+\_preplang or   Oriya      \_orPatt 219 11
+\_preplang pa   Panjabi    \_paPatt 220 11
+\_preplang ta   Tamil      \_taPatt 221 11
+\_preplang te   Telugu     \_tePatt 222 11
+
+   \_doc -----------------------------
+   The \`\langlist` includes names of all languages which are ready to load
+   and use their hyphenation patterns. This list is printed to terminal and
+   to log at ini\TeX/ state here. It can be used when processing document too.
+   \_cod -----------------------------
+
+\_message{Language hyph.patterns ready to load: \_langlist.
+   Use \_string\<shortname>lang to initialize language,
+   \_string\cslang\_space for example}
+
+\_public \langlist ;
+
+\_endcode % ---------------------------------------------
+
+
+Maybe, you need to do more language specific actions than only to swich
+hyphenation patterns. For example you need to load a specific font with a
+specific script used in selected language, you can define a macros for
+quotation marks depending on the language etc.
+
+The example shows how to declare such language specific things.
+
+\begtt
+\def\langset #1 #2{\sdef{_langspecific:#1}{#2}}
+
+\langset fr {... declare French quotation marks}
+\langset de {... declare German quotation marks}
+\langset gr {... switch to Greek fonts family}
+... etc. 
+\endtt
+
+Note that you need not to set language specific phrases (like `\today`) 
+by this code. Another concept is used for such tasks. See the 
+section~\ref[langphrases] for more details.


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/hyphen-lan.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/if-macros.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/if-macros.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/if-macros.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,258 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \newif {Special if-macros, is-macros and loops <2020-05-02>} % preloaded in format
+
+   \_doc ----------------------------
+   \secc Classical \code{\\newif}
+   The \`\newif` macro implements boolean value. 
+   It works as in plain \TeX. It means that
+   after `\newif\ifxxx` you can use `\xxxtrue` or
+   `\xxxfalse` to set the boolean value and use `\ifxxx true\else false\fi`
+   to test this value. The default value is false.
+
+   The macro \`\_newifi` enables to declare `\_ifxxx` and to use `\_xxxtrue` and
+   `\_xxxfalse`. This means that it is usable for internal name space 
+   (`_`prefixed macros).
+   \_cod ----------------------------
+
+\_def\_newif #1{\_ea\_newifA \_string #1\_relax#1}
+\_ea\_def \_ea\_newifA \_string\if #1\_relax#2{%
+   \_sdef{#1true}{\_let#2=\_iftrue}%
+   \_sdef{#1false}{\_let#2=\_iffalse}%
+   \_let#2=\_iffalse
+}
+\_def\_newifi #1{\_ea\_newifiA \string#1\_relax#1}
+\_ea\_def \_ea\_newifiA \_string\_if #1\_relax#2{%
+   \_sdef{_#1true}{\_let#2=\_iftrue}%
+   \_sdef{_#1false}{\_let#2=\_iffalse}%
+   \_let#2=\_iffalse
+}
+\_public \newif ;
+
+   \_doc ----------------------------
+   \secc Loops
+   The \`\loop` `<codeA> \ifsomething <codeB>` \`\repeat` loops `<codeA><codeB>`
+   until `\ifsomething` is false. Then `<codeB>` is not executed and loop is
+   finished. This works like in plain \TeX, but implementation is somewhat
+   better (you can use `\else` clause after the `\ifsomething`).
+
+   There are public version `\loop...\repeat` and private version
+   \`\_loop` ...\`\_repeat`. You cannot mix both versions in one loop. 
+
+   The `\loop` macro keeps its original plain TeX meaning. It is not
+   expandable and nested `\loop`s are possible only in a \TeX/ group.
+   \_cod ----------------------------
+
+\_long\_def \_loop #1\_repeat{\_def\_body{#1}\_iterate}
+\_def \loop #1\repeat{\_def\_body{#1}\_iterate}
+\_let \_repeat=\_fi % this makes \loop...\if...\repeat skippable
+\_let \repeat=\_fi
+\_def \_iterate {\_body \_ea \_iterate \_fi}
+
+   \_doc -----------------------------
+   \`\foreach` `<list>` \`\do` `{<what>}` 
+   repeats `<what>` for each element of the
+   `<list>`. The `<what>` can include `#1` which is substituted by each
+   element of the `<list>`. The macro is expandable.
+
+   \`\fornum` `<from>..<to>` \`\do` `{<what>}` or 
+   \`\fornumstep` `<num>: <from>..<to>` \`\do` `{<what>}`
+   repeats `<what>` for each number from `<from>` to `<to>` (with step `<num>`
+   or with step one). The `<what>` can include `#1` which is substituted by
+   current number. The sequence `<from>..<to>` can be decreasing too.
+   The macro is expandable.
+
+   Recommendation: it is better to 
+   use private variants of \`\_foreach` and \`\_fornum`. 
+   When the user writes `\input tikz` then `\foreach` macro is redefined! The
+   private variants use \`\_do` separator instead `\do` separator.
+   \_cod -----------------------------
+
+\_newcount\_frnum        % the numeric variable used in \fornum 
+\_def\_do{\_doundefined} % we need to ask \_ifx#1\_do ...
+
+\_long\_def\_foreach #1\_do#2{\_putforstack
+   \_immediateassignment\_def\_fbody##1{#2}%
+   \_foreachA #1\_do}
+\_long\_def\_foreachA #1{\_ifx\_do#1\_getforstack\_else\_fbody{#1}\_ea\_foreachA\_fi}
+
+\_def\_fornum#1..#2\_do{\_fornumstep 1:#1..#2\_do}
+\_long\_def\_fornumstep#1:#2..#3\_do#4{\_putforstack
+   \_immediateassigned{%
+      \_def\_fbody##1{#4}%
+      \_def\_fornumsgn{}%
+      \_def\_fornumrel{<}%
+      \_frnum=\_numexpr#2\_relax
+      \_ifnum\_numexpr#3<\_frnum \_def\_fornumrel{>}\_fi %decreasing sequence
+      \_ifnum\_numexpr#1\_fornumrel0 \_def\_fornumsgn{-}\_fi % correction      
+   }%
+   \_fornumB{#3}{#1}%
+}
+\_def\_fornumB #1#2{\_ifnum\_numexpr#1\_fornumrel\_frnum \_getforstack \_else 
+   \_ea\_fbody\_ea{\_the\_frnum}%
+   \_immediateassignment\_advance\_frnum by\_numexpr\_fornumsgn#2\_relax 
+   \_afterfi{\_fornumB{#1}{#2}}\_fi
+}
+\_def\_afterfi#1#2\_fi{\_fi#1}
+
+\_def\foreach #1\do{\_foreach #1\_do}
+\_def\fornum#1..#2\do{\_fornumstep 1:#1..#2\_do}
+\_def\fornumstep#1:#2..#3\do{\_fornumstep #1:#2..#3\_do}
+
+   \_doc ----------------------------
+   The `\foreach` and `\fornum` macros can be nested and arbitrary combined.
+   When they are nested then use `##1` for the variable of nested level,
+   `####1` for the variable of second nested level etc. Example:
+   \begtt
+   \foreach ABC \do {\fornum 1..5 \do {letter:#1, number: ##1. }}
+   \endtt
+   Implementation note: 
+   we cannot use \TeX/-groups for nesting levels because we want to do the
+   macros expandable. We must implement a special for-stack which saves the
+   data needed by `\foreach` and `\fornum`. The \`\_putforstack` is used
+   when `\for*` is initialized and \`\_getforstack` is used when the 
+   `\for*` macro ends. The \`\_forlevel` variable keeps the current nesting
+   level. If it is zero, then we need not save nor restore any data.
+   \_cod ----------------------------
+
+\_newcount\_forlevel
+\_def\_putforstack{\_immediateassigned{%
+   \_ifnum\_forlevel>0
+      \_sdef{_frnum:\_the\_forlevel\_ea}\_ea{\_the\_frnum}%
+      \_slet{_fbody:\_the\_forlevel}{_fbody}%
+   \_fi 
+   \_advance\_forlevel by1
+}}
+\_def\_getforstack{\_immediateassigned{%
+   \_advance\_forlevel by-1 
+   \_ifnum\_forlevel>0
+      \_slet{_fbody}{_fbody:\_the\_forlevel}%
+      \_frnum=\_cs{_frnum:\_the\_forlevel}\_space
+   \_fi
+}}
+
+   \_doc ----------------------------
+   \secc Is-macros
+   There are a collection of macros 
+   `\isempty`, `\istoksempty`, `\isequal`, `\ismacro`, `\isdefined`, `\isinlist` and `\isfile` 
+   with common syntax:
+   \begtt \catcode`\<=13
+   \issomething <params> \iftrue <codeA> \else <codeB> \fi 
+   or 
+   \issomething <params> \iffalse <codeB> \else <codeA> \fi
+   \endtt
+   The `\else` part is optional. The `<codeA>` is processed if
+   `\issomething<params>` generates true condition. The `<codeB>`
+   is processed if `\issomething<params>` generates false condition.
+
+   The `\iftrue` or `\iffalse` is an integral part of this syntax 
+   because we need to keep skippable nested `\if` conditions.
+
+   Implementation note: 
+   we read this `\iftrue` or `\iffalse` into unseparated parameter and repeat
+   it because we need to remove an optional space before this command.
+
+   \medskip\noindent
+   \`\isempty` `{<text>}\iftrue`
+   is true if the `<text>` is empty. This macro is expandable.\nl
+   \`\istoksempty` `<tokens variable>\iftrue` 
+   is true if the `<tokens variable>` is empty. It is expandable.
+   \_cod ----------------------------
+
+\_def \_isempty #1#2{\_if\_relax\_detokenize{#1}\_relax \_else \_ea\_unless \_fi#2}
+\_def \_istoksempty #1#2{\_ea\_isempty\_ea{\_the#1}#2}
+\_public \isempty \istoksempty ;
+
+   \_doc ----------------------------
+   \`\isequal` `{<textA>}{<textB>}\iftrue` 
+   is true if the <textA> and <textB> are
+   equal, only from strings point of view, category codes are ignored.
+   The macro is expandable.
+   \_cod ----------------------------
+
+\_def\_isequal#1#2#3{\_directlua{%
+   if "\_luaescapestring{\_detokenize{#1}}"=="\_luaescapestring{\_detokenize{#2}}" 
+   then else tex.print("\_nbb unless") end}#3}
+\_public \isequal ;
+
+   \_doc ----------------------------
+   \`\ismacro` `\macro{text}\iftrue` is true if macro is defined as {<text>}.
+   Category codes are ignored in this testing. The macro is expandable.
+   \_cod ----------------------------
+
+\_def\_ismacro#1{\_ea\_isequal\_ea{#1}}
+\_public \ismacro ;
+
+   \_doc ----------------------------
+   \`\isdefined` `{<csname>}\iftrue` is true if `\<csname>` is defined.
+   The macro is expandable.
+   \_cod ----------------------------
+
+\_def\_isdefined #1#2{\_ifcsname #1\_endcsname \_else \_ea\_unless \_fi #2}
+\_public \isdefined ;
+
+   \_doc ----------------------------
+   \`\isinlist` `\list{<text>}\iftrue` is true if the
+   `<text>` is included the macro body of the `\list`. 
+   The category code are relevant here. The macro is not expandable.
+   \_cod ----------------------------
+
+\_long\_def\_isinlist#1#2{\_begingroup 
+   \_long\_def\_tmp##1#2##2\_end/_%
+        {\_endgroup\_if\_relax\_detokenize{##2}\_relax \_ea\_unless\_fi}%
+   \_ea\_tmp#1\_endlistsep#2\_end/_%
+}
+\_public \isinlist ;
+
+   \_doc -----------------------------
+   \`\isfile` `{<filename>}\iftrue` is true if the file <filename> exists and are
+   readable by \TeX.
+   \_cod -----------------------------
+
+\_newread \_testin
+\_def\_isfile #1{%
+   \_openin\_testin ={#1}\_relax
+   \_ifeof\_testin \_ea\_unless
+   \_else \_closein\_testin
+   \_fi
+}
+\_public \isfile ;
+
+   \_doc -----------------------------
+   \`\isfont` `{<fontname or [fontfile]>}\iftrue`
+   is true if given font exists. The result of this testing 
+   is saved to the \`\_ifexistfam`. 
+   \_cod -----------------------------
+
+\_newifi \_ifexistfam
+\_def\_isfont#1#2{%
+   \_begingroup
+       \_suppressfontnotfounderror=1
+       \_font\_testfont={#1}\_relax
+       \_ifx\_testfont\_nullfont \_def\_tmp{\_existfamfalse \_unless}
+       \_else \_def\_tmp{\_existfamtrue}\_fi
+   \_ea \_endgroup \_tmp #2%
+}
+\_public \isfont ;
+
+   \_doc ----------------------------
+   The last macro \`\isnextchar` `<char>{<codeA>}{<codeB>}` 
+   has different syntax than all others is-macros.
+   It executes `<codeA>` if next character is equal to <char>. 
+   Else the `<codeB>` is executed. The macro is not expandable.
+   \_cod ----------------------------
+
+\_long\_def\_isnextchar#1#2#3{\_begingroup\_toks0={\_endgroup#2}\_toks1={\_endgroup#3}%
+   \_let\_tmp=#1\_futurelet\_next\_isnextcharA
+}
+\_def\_isnextcharA{\_the\_toks\_ifx\_tmp\_next0\_else1\_fi\_space}
+
+\_public \isnextchar ;
+
+
+\_endcode 
+
+2020-05-02 \newif bug fix
+2020-04-15 \fornumstep 3: 1..12 instead \fornum 1..12\step 3
+2020-04-15 \fornum, \foreach can be nested without groups
+2020-04-01 implemented


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/if-macros.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/languages.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/languages.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/languages.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,121 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \_mtext {Languages <2020-04-29>} % preloaded in format 
+
+   \_doc -----------------------------
+   Only four words are generated by \OpTeX/ macros: \"Chapter",
+   \"Table", \"Figure" and \"Subject". These phrases can be generated depending 
+   on the current value of `\language` register, if you use \`\_mtext``{<phrase-id>}`, 
+   specially `\_mtext{chap}`, `\_mtext{t}`, `\_mtext{f}` or `\_mtext{subj}`. 
+   If your macros generate more words then 
+   you can define such words by `\sdef{_mt:<phrase-id>:<lang>}` where
+   `<phrase-id>` is a label for declared word and `<lang>` is language shortcut
+   (iso code). 
+   \_cod -----------------------------
+
+\_def\_mtext#1{\_trycs{_mt:#1:\_trycs{_lan:\_the\_language}{en}}
+   {\_csname _mt:#1:en\_endcsname}}
+
+\_sdef{_mt:chap:en}{Chapter} \_sdef{_mt:chap:cs}{Kapitola} \_sdef{_mt:chap:sk}{Kapitola}
+\_sdef{_mt:t:en}{Table}      \_sdef{_mt:t:cs}{Tabulka}     \_sdef{_mt:t:sk}{Tabuľka}
+\_sdef{_mt:f:en}{Figure}     \_sdef{_mt:f:cs}{Obrázek}     \_sdef{_mt:f:sk}{Obrázok}
+\_sdef{_mt:subj:en}{Subject} \_sdef{_mt:subj:cs}{Věc}      \_sdef{_mt:subj:sk}{Vec}
+
+   \_doc -----------------------------
+   Using \`\_langw` `<lang> <chapter> <table> <figure> <subject>` you can
+   declare these words more effectively: 
+   \maxlines=13
+   \_cod -----------------------------
+
+\_def \_langw #1 #2 #3 #4 #5 {%
+   \_sdef{_mt:chap:#1}{#2}\_sdef{_mt:t:#1}{#3}\_sdef{_mt:f:#1}{#4}%
+   \_sdef{_mt:subj:#1}{#5}%
+}
+
+\_langw en  Chapter      Table       Figure       Subject
+%--------------------------------------------------------------
+\_langw cs  Kapitola     Tabulka     Obrázek      Věc
+\_langw de  Kapitel      Tabelle     Abbildung    Subjekt
+\_langw es  Capítulo     Tabla       Figura       Sujeto
+\_langw fr  Chaptire     Tableau     Figure       Matière
+\_langw it  Capitolo     Tabella     Fig.         Soggetto
+\_langw pl  Rozdział     Tabela      Ilustracja   Temat
+\_langw gr  Κεφάλαιο     Πίνακας     Σχήμα        θέμα
+\_langw ru  Глава        Таблица     Рисунок      Предмет
+\_langw sk  Kapitola     Tabuľka     Obrázok      Vec
+
+   \_doc -----------------------------
+   You can add more words as you wish. For example \`\today` macro:
+   \_cod -----------------------------
+
+\_def \_monthw #1 #2 #3 #4 #5 #6 #7 {%
+   \_sdef{_mt:m1:#1}{#2}\_sdef{_mt:m2:#1}{#3}\_sdef{_mt:m3:#1}{#4}%
+   \_sdef{_mt:m4:#1}{#5}\_sdef{_mt:m5:#1}{#5}\_sdef{_mt:m6:#1}{#5}%
+   \_monthwB #1
+}
+\_def \_monthwB #1 #2 #3 #4 #5 #6 #7 {%
+   \_sdef{_mt:m7:#1}{#2}\_sdef{_mt:m8:#1}{#3}\_sdef{_mt:m9:#1}{#4}%
+   \_sdef{_mt:m10:#1}{#5}\_sdef{_mt:m11:#1}{#5}\_sdef{_mt:m12:#1}{#5}%
+}
+
+\_monthw en  January February March April May June
+             July August September October November December
+\_monthw cs  ledna února března dubna května června
+             července srpna září října listopadu prosince
+\_monthw sk  januára februára marca apríla mája júna
+             júla augusta septembra októbra novembra decembra
+
+\_sdef{_mt:today:en}{\_mtext{m\_the\_month} \_the\_day, \_the\_year}
+\_sdef{_mt:today:cs}{\_the\_day.~\_mtext{m\_the\_month} \_the\_year}
+\_slet{_mt:today:sk}{_mt:today:cs}
+
+\_def\_today{\_mtext{today}}
+\_public \today ;
+
+   \_doc -----------------------------
+   Quotes should be tagged by `\"<text>"` and `\'<text>'` if `\<iso-code>quotes` 
+   is declared at beginning of the document (for example `\enquotes`). 
+   If not, then the control
+   sequences `\"` and `\'` are undefined. Remember, that they are used in
+   another meaning when `\oldaccents` command is used.
+   The macros `\"` and `\'` are not defined as `\protected` because we need
+   their expansion when `\outlines` are created.
+   User can declare quotes by \`\quoteschars``<clqq><crqq><clq><crq>`, where
+   `<clqq>...<crqq>` are normal quotes and `<clq>...<crq>` are alternative quotes.
+   or use \`\altquotes` to swap between meaning of these two types of quotes.
+   \nl
+   \`\enquotes`, \`\csquotes`, \`\dequotes`, \`\frquotes` etc. are defined here.
+   \_cod -----------------------------
+
+\_def \_enquotes {\_quoteschars “”‘’}
+\_def \_csquotes {\_quoteschars „“‚‘}
+\_def \_frquotes {\_quoteschars “”«»}
+\_let \_plquotes = \_frquotes
+\_let \_esquotes = \_frquotes
+\_let \_grquotes = \_frquotes
+\_let \_ruquotes = \_frquotes
+\_let \_itquotes = \_frquotes
+\_let \_skquotes = \_csquotes
+\_let \_dequotes = \_csquotes
+
+\_def \_quoteschars #1#2#3#4{\_def\_altquotes{\_quoteschars#3#4#1#2}\_public\altquotes;%
+   \_def \"##1"{#1##1#2}\_def \'##1'{#3##1#4}}
+
+   \_doc -----------------------------
+   Sometimes should be usable to leave the markup `"such"` or `'such'` i.e.~without
+   the first backslash. Then you can make the characters `"` and `'` active
+   by the \`\activequotes` macro and leave quotes without first backslash. 
+   First, declare `\<iso-code>quotes`, then \^`\altquotes` (if needed) and finally 
+   \^`\activequotes`.
+   \_cod -----------------------------
+
+\_def\_activequotes{\_ea\_activequotesA\"""\_ea\_activequotesA\'''}
+\_def\_activequotesA#1#2#3{\_bgroup\_lccode`\~=`#3\_lowercase{\_egroup\_adef#3##1~{#1##1#2}}}
+
+\_public \quoteschars \activequotes \enquotes \csquotes \skquotes \frquotes \plquotes 
+   \esquotes \grquotes \ruquotes \itquotes \dequotes ;
+
+\_endcode % -------------------------------------
+
+2020-04-29 Obrazek -> Abbildung: bug fixed
+2020-03-15 introduced
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/languages.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/lists.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/lists.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/lists.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,110 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \begitems {Lists: begitems, enditems <2020-04-21>} % preloaded in format
+
+   \_doc -----------------------------
+   \`\_aboveliskip` is used above the list of items,\nl 
+   \`\_belowliskip` is used below the list of items and\nl 
+   \`\_interliskip` is used between items.\nl
+   \`\_listskipA` is used as `\listskipamount` at level 1 of items.\nl
+   \`\_listskipB` is used as `\listskipamount` at other levels.\nl
+   \`\_setlistskip` sets the skip dependent on the current level of items 
+   \_cod -----------------------------
+
+\_def\_aboveliskip {\_removelastskip \_penalty-100 \_vskip\_listskipamount}
+\_def\_belowliskip {\_penalty-200 \_vskip\_listskipamount}
+\_def\_interliskip {}
+\_def\_listskipA {\_medskipamount}
+\_def\_listskipB {0pt plus.5\_smallskipamount}
+
+\_def\_setlistskip {%
+   \_ifnum \_ilevel = 1 \_listskipamount = \_listskipA \_relax
+   \_else  \_listskipamount = \_listskipB \_relax 
+   \_fi}
+
+   \_doc -----------------------------
+   The \`\itemnum` is locally reset to zero in each group declared by
+   `\begitems`. So nested lists are numbered independently. User can set
+   initial value of `\itemnum` to another value after `\beitems` if he/she want.
+   \nl
+   Each level of nested lists is indented by new `\iindent` from left.
+   Default item mark is `\_printitem`.
+   \nl
+   The \`\begitems` runs `\_aboveliskip` only if we are not near below a title, 
+   where a vertical skip is placed already and where the `\penalty` 11333 is.
+   It activates `*` and defines it as \`\_startitem`.
+   \nl
+   The \`\enditems` runs `\_isnextchar\_par{}{\_noindent}` thus the next
+   paragraph is without indentation if there is no empty line between
+   the list and this paragraph (it is similar behavior as after display math).
+   \_cod -----------------------------
+
+\_newcount\_itemnum  \_itemnum=0
+\_newtoks\_printitem
+
+\_def\_begitems{\_par 
+  \_bgroup
+  \_advance \_ilevel by1
+  \_setlistskip
+  \_ifnum\_lastpenalty<10000 \_aboveliskip \_fi
+  \_itemnum=0 \_adef*{\_startitem}
+  \_advance\_leftskip by\_iindent
+  \_printitem=\_defaultitem
+  \_the\_everylist \_relax
+}
+\_def\_enditems{\_par\_belowliskip\_egroup \_isnextchar\_par{}{\_noindent}}
+
+\_def\_startitem{\_par \_ifnum\_itemnum>0 \_interliskip \_fi
+   \_advance\_itemnum by1
+   \_the\_everyitem \_noindent\_llap{\_the\_printitem}\_ignorespaces
+}
+\_public \begitems \enditems \itemnum ;
+
+   \_doc ----------------------------
+   \`\novspaces` sets \`\listskipamount` to 0pt.
+   \_cod ----------------------------
+
+\_def\_novspaces {\_removelastskip \_listskipamount=0pt \_relax}
+\_public \novspaces ;
+
+   \_doc -----------------------------
+   Various item marks are saved in `\_item:<letter>` macros.
+   You can re-define then or define more such macros.
+   The \`\style` `<letter>` does \`\_printitem``={\_item:<letter>}`.
+   More exactly: \^`\begitems` does `\_printitem=`\^`\defaultitem` first,
+   then \`\style` `<letter>` does \`\_printitem``={\_item:<letter>}`
+   when it is used and finally, `\_startitem` alias `*` uses `\_printitem`.
+   \_cod -----------------------------
+
+\_def\_style#1{%
+   \_ifcsname _item:#1\_endcsname \_printitem=\ea{\_csname _item:#1\_endcsname}%
+   \_else \_printitem=\_defaultitem \_fi
+}
+\_sdef{_item:o}{\_raise.4ex\_hbox{$\_scriptscriptstyle\_bullet$} }
+\_sdef{_item:-}{- }
+\_sdef{_item:n}{\_the\_itemnum. }
+\_sdef{_item:N}{\_the\_itemnum) }
+\_sdef{_item:i}{(\_romannumeral\_itemnum) }
+\_sdef{_item:I}{\_uppercase\_ea{\_romannumeral\_itemnum}\_kern.5em}
+\_sdef{_item:a}{\_athe\_itemnum) }
+\_sdef{_item:A}{\_uppercase\_ea{\_athe\_itemnum}) }
+\_sdef{_item:x}{\_raise.3ex\_fullrectangle{.6ex}\_kern.4em}
+\_sdef{_item:X}{\_raise.2ex\_fullrectangle{1ex}\_kern.5em}
+
+   \_doc -----------------------------
+   \`\_athe``{<num>}` returns the `<num>`s lowercase letter from the alphabet.\nl
+   \`\_fullrectangle``{<dimen>}` prints full rectangle with given `<dimen>`.  
+   \_cod ----------------------------- 
+
+\_def\_fullrectangle#1{\_hbox{\_vrule height#1 width#1}}
+
+\_def\_athe#1{\_ifcase#1?\_or a\_or b\_or c\_or d\_or e\_or f\_or g\_or h\_or 
+   i\_or j\_or k\_or l\_or m\_or n\_or o\_or p\_or q\_or r\_or s\_or t\_or 
+   u\_or v\_or w\_or x\_or y\_or z\_else ?\_fi
+}
+\_public \style ;
+
+\_endcode % -------------------------------------
+
+2020-04-21 \isnextchar\par added to \enditems
+2020-03-18 introduced


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/lists.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/logos.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/logos.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/logos.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,62 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \TeX {Logos TeX, LuaTeX, etc. <2020-02-28>} % preloaded in format
+
+   \_doc ----------------------------
+   Despite plain \TeX/ each macro for logos ends by \`\ignoreslash`. 
+   This macro ignores next slash if it is present. 
+   You can `use \TeX/ like this` for protecting the space following the logo. 
+   This is visually more comfortable.
+   The macros \`\TeX`, \`\OpTeX`, \`\LuaTeX`, \`\XeTeX` are defined.
+   \_cod ----------------------------
+
+\_protected\_def \_TeX {T\_kern-.1667em\_lower.5ex\_hbox{E}\_kern-.125emX\_ignoreslash}
+\_protected\_def \_OpTeX {Op\_kern-.1em\_TeX}
+\_protected\_def \_LuaTeX {Lua\_TeX}
+\_protected\_def \_XeTeX {X\_kern-.125em\_phantom E%
+   \_pdfsave\_rlap{\_pdfscale{-1}{1}\_lower.5ex\_hbox{E}}\_pdfrestore \_kern-.1667em \_TeX}
+
+\_def\_ignoreslash {\_futurelet\_next \_ignoreslashA}
+\_def\_ignoreslashA {\_ifx\_next/\_ea\_ignoreit\_fi}
+
+\_public \TeX \OpTeX \LuaTeX \XeTeX \ignoreslash ;
+
+   \_doc -----------------------------
+   The \`\_slantcorr` macro expands to slant-correction of current font. It is
+   used to shifting A if the \`\LaTeX` logo is in italic. 
+   \_cod -----------------------------
+
+\_protected\_def \_LaTeX{\_tmpdim=.42ex L\_kern-.36em \_kern \_slantcorr % slant correction
+  \_raise \_tmpdim \_hbox{\_thefontscale[710]A}%
+  \_kern-.15em \_kern-\_slantcorr \_TeX}
+\_def\_slantcorr{\_ea\_ignorept \_the\_fontdimen1\_font\_tmpdim}
+
+\_public \LaTeX ;
+
+   \_doc -----------------------------
+   \`\OPmac`, \`\CS` and \`\csplain` logos.
+   \_cod -----------------------------
+
+\_def\_OPmac{\_leavevmode
+   \_lower.2ex\_hbox{\_thefontscale[1400]O}\_kern-.86em P{\_em mac}\_ignoreslash}
+\_def\_CS{$\_cal C$\_kern-.1667em\_lower.5ex\_hbox{$\_cal S$}\_ignoreslash}
+\_def\_csplain{\_CS plain\_ignoreslash}
+
+\_public \OPmac \CS \csplain ;
+
+   \_doc ----------------------------
+   The expandable versions of logos used in Outlines needs the expandable
+   \`\ingnslash` (instead of the \^`\ignoreslash`).
+   \_cod \_fin ----------------------
+
+\_def\_ignslash#1{\_ifx/#1\_else #1\_fi}
+\_regmacro {}{}{% conversion for PDF outlines
+   \_def\TeX{TeX\_ignslash}\_def\OpTeX{OpTeX\_ignslash}%
+   \_def\LuaTeX{LuaTeX\_ignslash}\_def\XeTeX{XeTeX\_ignslash}%
+   \_def\LaTeX{LaTeX\_ignslash}\_def\OPmac{OPmac\_ignslash}%
+   \_def\CS{CS}\_def\csplain{csplain\_ignslash}%
+}
+\_public \ignslash ;
+
+\_endcode
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/logos.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/luatex-ini.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/luatex-ini.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/luatex-ini.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,136 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \pdfprimitive {LuaTeX initialization code <2020-02-21>} % preloaded in format
+
+\_let\_pdfpagewidth        \pagewidth
+\_let\_pdfpageheight       \pageheight
+\_let\_pdfadjustspacing    \adjustspacing
+\_let\_pdfprotrudechars    \protrudechars
+\_let\_pdfnoligatures      \ignoreligaturesinfont
+\_let\_pdffontexpand       \expandglyphsinfont
+\_let\_pdfcopyfont         \copyfont
+\_let\_pdfxform            \saveboxresource
+\_let\_pdflastxform        \lastsavedboxresourceindex
+\_let\_pdfrefxform         \useboxresource
+\_let\_pdfximage           \saveimageresource
+\_let\_pdflastximage       \lastsavedimageresourceindex
+\_let\_pdflastximagepages  \lastsavedimageresourcepages
+\_let\_pdfrefximage        \useimageresource
+\_let\_pdfsavepos          \savepos
+\_let\_pdflastxpos         \lastxpos
+\_let\_pdflastypos         \lastypos
+\_let\_pdfoutput           \outputmode
+\_let\_pdfdraftmode        \draftmode
+\_let\_pdfpxdimen          \pxdimen
+\_let\_pdfinsertht         \insertht
+\_let\_pdfnormaldeviate    \normaldeviate
+\_let\_pdfuniformdeviate   \uniformdeviate
+\_let\_pdfsetrandomseed    \setrandomseed
+\_let\_pdfrandomseed       \randomseed
+\_let\_pdfprimitive        \primitive
+\_let\_ifpdfprimitive      \ifprimitive
+\_let\_ifpdfabsnum         \ifabsnum
+\_let\_ifpdfabsdim         \ifabsdim
+
+\_public
+   \pdfpagewidth \pdfpageheight \pdfadjustspacing \pdfprotrudechars
+   \pdfnoligatures \pdffontexpand \pdfcopyfont \pdfxform \pdflastxform
+   \pdfrefxform \pdfximage \pdflastximage \pdflastximagepages \pdfrefximage
+   \pdfsavepos \pdflastxpos \pdflastypos \pdfoutput \pdfdraftmode \pdfpxdimen
+   \pdfinsertht \pdfnormaldeviate \pdfuniformdeviate \pdfsetrandomseed
+   \pdfrandomseed \pdfprimitive \ifpdfprimitive \ifpdfabsnum \ifpdfabsdim ;
+
+\_directlua {tex.enableprimitives('pdf',{'tracingfonts'})}
+
+\_protected\_def \_pdftexversion     {\_numexpr 140\_relax}
+           \_def \_pdftexrevision    {7}
+\_protected\_def \_pdflastlink       {\_numexpr\_pdffeedback lastlink\_relax}
+\_protected\_def \_pdfretval         {\_numexpr\_pdffeedback retval\_relax}
+\_protected\_def \_pdflastobj        {\_numexpr\_pdffeedback lastobj\_relax}
+\_protected\_def \_pdflastannot      {\_numexpr\_pdffeedback lastannot\_relax}
+           \_def \_pdfxformname      {\_pdffeedback xformname}
+{\_outputmode=1
+           \_xdef\_pdfcreationdate   {\_pdffeedback creationdate}
+}
+           \_def \_pdffontname       {\_pdffeedback fontname}
+           \_def \_pdffontobjnum     {\_pdffeedback fontobjnum}
+           \_def \_pdffontsize       {\_pdffeedback fontsize}
+           \_def \_pdfpageref        {\_pdffeedback pageref}
+           \_def \_pdfcolorstackinit {\_pdffeedback colorstackinit}
+\_protected\_def \_pdfliteral        {\_pdfextension literal}
+\_protected\_def \_pdfcolorstack     {\_pdfextension colorstack}
+\_protected\_def \_pdfsetmatrix      {\_pdfextension setmatrix}
+\_protected\_def \_pdfsave           {\_pdfextension save\_relax}
+\_protected\_def \_pdfrestore        {\_pdfextension restore\_relax}
+\_protected\_def \_pdfobj            {\_pdfextension obj }
+\_protected\_def \_pdfrefobj         {\_pdfextension refobj }
+\_protected\_def \_pdfannot          {\_pdfextension annot }
+\_protected\_def \_pdfstartlink      {\_pdfextension startlink }
+\_protected\_def \_pdfendlink        {\_pdfextension endlink\_relax}
+\_protected\_def \_pdfoutline        {\_pdfextension outline }
+\_protected\_def \_pdfdest           {\_pdfextension dest }
+\_protected\_def \_pdfthread         {\_pdfextension thread }
+\_protected\_def \_pdfstartthread    {\_pdfextension startthread }
+\_protected\_def \_pdfendthread      {\_pdfextension endthread\_relax}
+\_protected\_def \_pdfinfo           {\_pdfextension info }
+\_protected\_def \_pdfcatalog        {\_pdfextension catalog }
+\_protected\_def \_pdfnames          {\_pdfextension names }
+\_protected\_def \_pdfincludechars   {\_pdfextension includechars }
+\_protected\_def \_pdffontattr       {\_pdfextension fontattr }
+\_protected\_def \_pdfmapfile        {\_pdfextension mapfile }
+\_protected\_def \_pdfmapline        {\_pdfextension mapline }
+\_protected\_def \_pdftrailer        {\_pdfextension trailer }
+\_protected\_def \_pdfglyphtounicode {\_pdfextension glyphtounicode }
+
+\_protected\_edef\_pdfcompresslevel       {\_pdfvariable compresslevel}
+\_protected\_edef\_pdfobjcompresslevel    {\_pdfvariable objcompresslevel}
+\_protected\_edef\_pdfdecimaldigits       {\_pdfvariable decimaldigits}
+\_protected\_edef\_pdfgamma               {\_pdfvariable gamma}
+\_protected\_edef\_pdfimageresolution     {\_pdfvariable imageresolution}
+\_protected\_edef\_pdfimageapplygamma     {\_pdfvariable imageapplygamma}
+\_protected\_edef\_pdfimagegamma          {\_pdfvariable imagegamma}
+\_protected\_edef\_pdfimagehicolor        {\_pdfvariable imagehicolor}
+\_protected\_edef\_pdfimageaddfilename    {\_pdfvariable imageaddfilename}
+\_protected\_edef\_pdfpkresolution        {\_pdfvariable pkresolution}
+\_protected\_edef\_pdfinclusioncopyfonts  {\_pdfvariable inclusioncopyfonts}
+\_protected\_edef\_pdfinclusionerrorlevel {\_pdfvariable inclusionerrorlevel}
+\_protected\_edef\_pdfgentounicode        {\_pdfvariable gentounicode}
+\_protected\_edef\_pdfpagebox             {\_pdfvariable pagebox}
+\_protected\_edef\_pdfminorversion        {\_pdfvariable minorversion}
+\_protected\_edef\_pdfuniqueresname       {\_pdfvariable uniqueresname}
+\_protected\_edef\_pdfhorigin             {\_pdfvariable horigin}
+\_protected\_edef\_pdfvorigin             {\_pdfvariable vorigin}
+\_protected\_edef\_pdflinkmargin          {\_pdfvariable linkmargin}
+\_protected\_edef\_pdfdestmargin          {\_pdfvariable destmargin}
+\_protected\_edef\_pdfthreadmargin        {\_pdfvariable threadmargin}
+\_protected\_edef\_pdfpagesattr           {\_pdfvariable pagesattr}
+\_protected\_edef\_pdfpageattr            {\_pdfvariable pageattr}
+\_protected\_edef\_pdfpageresources       {\_pdfvariable pageresources}
+\_protected\_edef\_pdfxformattr           {\_pdfvariable xformattr}
+\_protected\_edef\_pdfxformresources      {\_pdfvariable xformresources}
+\_protected\_edef\_pdfpkmode              {\_pdfvariable pkmode}
+
+\_public
+   \pdftexversion \pdftexrevision \pdflastlink \pdfretval \pdflastobj
+   \pdflastannot \pdfxformname \pdfcreationdate \pdffontname \pdffontobjnum
+   \pdffontsize \pdfpageref \pdfcolorstackinit \pdfliteral \pdfcolorstack
+   \pdfsetmatrix \pdfsave \pdfrestore \pdfobj \pdfrefobj \pdfannot
+   \pdfstartlink \pdfendlink \pdfoutline \pdfdest \pdfthread \pdfstartthread
+   \pdfendthread \pdfinfo \pdfcatalog \pdfnames \pdfincludechars \pdffontattr
+   \pdfmapfile \pdfmapline \pdftrailer \pdfglyphtounicode \pdfcompresslevel
+   \pdfobjcompresslevel \pdfdecimaldigits \pdfgamma \pdfimageresolution
+   \pdfimageapplygamma \pdfimagegamma \pdfimagehicolor \pdfimageaddfilename
+   \pdfpkresolution \pdfinclusioncopyfonts \pdfinclusionerrorlevel
+   \pdfgentounicode \pdfpagebox \pdfminorversion \pdfuniqueresname \pdfhorigin
+   \pdfvorigin \pdflinkmargin \pdfdestmargin \pdfthreadmargin \pdfpagesattr
+   \pdfpageattr \pdfpageresources \pdfxformattr \pdfxformresources \pdfpkmode ;
+
+\_pdfminorversion     = 5
+\_pdfobjcompresslevel = 2
+\_pdfcompresslevel    = 9
+\_pdfdecimaldigits    = 3
+\_pdfpkresolution     = 600
+
+\_endcode
+
+Common pdf\TeX/ primitives equivalents are declared here. Initial values are set.


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/luatex-ini.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/makeindex.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/makeindex.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/makeindex.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,460 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \makeindex {Makeindex and sorting <2020-04-26>} % loaded in format
+
+   \_doc -----------------------------
+   \^`\makeindex` implements sorting algorithm at \TeX/ macro-language level.
+   You need not any external program.
+
+   There are two passes in sorting algorithm. Primary pass does not
+   distinguish between a group o letters (typically non-accented and
+   accented). If the result of comparing two string is equal in primary pass
+   then secondary pass is started. It distinguish between variously accented
+   letters. Czech rules, for example says: not accented before dieresis
+   before acute before circumflex before ring. At less priority: lowercase
+   letters must be before uppercase letters. 
+
+   The \`\_sortingdata``<iso-code>` implements these rules for the language
+   <iso-code>. The groups between commas are not distinguished in the first
+   pass. The second pass distinguishes all characters mentioned in the
+   `\_sortingdata<iso-code>` (commas are ignored). The order of letters 
+   in the `\_sortingdata<iso-code>` macro is significant for sorting algorithm. 
+   The Czech rules (`cs`) are implemented here:
+   \_cod -----------------------------
+
+\_def \_sortingdatacs {%
+  /,{ },-,&,@,%
+  aAäÄáÁ,%
+  bB,%
+  cC,%
+  čČ,%
+  dDďĎ,%
+  eEéÉěĚ,%
+  fF,%
+  gG,%
+  hH,%
+  ^^T^^U^^V,% ch Ch CH
+  iIíÍ,%
+  jJ,%
+  kK,%
+  lLĺĹľĽ,%
+  mM,%
+  nNňŇ,%
+  oOöÖóÓôÔ,%
+  pP,%
+  qQ,%
+  rRŕŔ,%
+  řŘ,%
+  sS,%
+  šŠ,%
+  tTťŤ,%
+  uUüÜúÚůŮ,%
+  vV,%
+  wW,%
+  xX,%
+  yYýÝ,%
+  zZ,%
+  žŽ,%
+  0,1,2,3,4,5,6,7,8,9,'%
+}
+
+   \_doc -----------------------------
+   Characters ignored by sorting algorithm are declared in \`\_ignoredchars``<iso-code>`.
+   The compound characters (two or more characters interpreted as one
+   character in sorting algorithm) is mapped to single invisible characters
+   in \`\_compoundchars``<iso-code>`. Czech rules declares ch or Ch or CH as
+   a single letter sorted between H and I. See \`\_sortingdatacs` above where
+   these declared characters are used.
+
+   The characters declared in `\_ignoredchars` are ignored in first pass
+   without additional condition. All characters are taken into account in
+   second pass: ASCII characters with code $\lq65$ are sorted first if they
+   are not mentioned in the `\_sortingdata<iso-code>` macro. 
+   Others not mentioned characters have undefined behavior during sorting.
+   \_cod -----------------------------   
+
+\_def \_ignoredcharscs  {.,;?!:'"|()[]<>=+}
+\_def \_compoundcharscs {ch:^^T Ch:^^U CH:^^V} % DZ etc. are sorted normally
+
+   \_doc -----------------------------
+   Slovak sorting rules are the same as Czech. The macro `\_sortingdatacs`
+   includes Slovak letters too. Compound characters are the same.
+   English sorting rules can be defined by `\_sortingdatacs` too because
+   English alphabet is subset of Czech and Slovak alphabets. Only
+   difference: \`\_compoundcharsen` is empty in English rules. 
+
+   You can declare these macros for more languages, if you wish to use
+   `\makeindex` with sorting rules in respect to your language.
+   Note: if you need to map compound characters to a character, don't use 
+   `^^I` or `^^M` because these characters have very specific category code.
+   And use space to separate more mappings, like in \`\_compoundcharscs` above.
+   \_cod -----------------------------
+
+\_let \_sortingdatask = \_sortingdatacs
+\_let \_compoundcharssk = \_compoundcharscs
+\_let \_ignoredcharssk = \_ignoredcharscs
+\_let \_sortingdataen = \_sortingdatacs
+\_def \_compoundcharsen {}
+\_let \_ignoredcharsen = \_ignoredcharscs
+
+   \_doc -----------------------------
+   Preparing to primary pass is implemented by the \`\_setprimarysorting` macro. 
+   It is called from `\makeindex` macro and all processing of sorting is in a group.
+   \_cod -----------------------------
+
+\_def\_setprimarysorting {%
+   \_ea\_let \_ea\_sortingdata \_csname _sortingdata\_sortinglang\_endcsname
+   \_ea\_let \_ea\_compoundchars \_csname _compoundchars\_sortinglang\_endcsname
+   \_ea\_let \_ea\_ignoredchars \_csname _ignoredchars\_sortinglang\_endcsname
+   \_ifx \_sortingdata\_relax \_addto\_nold{ sortingdata}%
+       \_let \_sortingdata = \_sortingdataen \_fi
+   \_ifx \_compoundchars\_relax \_addto\_nold{ compoundchars}%
+       \_let \_compoundchars = \_compoundcharsen \_fi
+   \_ifx \_ignoredchars\_relax \_addto\_nold{ ignoredchars}%
+       \_let \_ignoredchars = \_ignoredcharsen \_fi
+   \_ifx \_compoundchars\_empty \_else
+      \_edef \_compoundchars {\_detokenize\_ea{\_compoundchars} }\_fi % all must be catcode 12
+   \_def \_act ##1{\_ifx##1\_relax \_else
+      \_ifx##1,\_advance\_tmpnum by1
+      \_else \_lccode`##1=\_tmpnum \_fi
+      \_ea\_act \_fi}%
+   \_tmpnum=65 \_ea\_act \_sortingdata \_relax
+   \_def \_act ##1{\_ifx##1\_relax \_else
+      \_lccode`##1=`\^^I
+      \_ea\_act \_fi}% 
+   \_ea\_act \_ignoredchars \_relax
+}
+
+   \_doc -----------------------------
+   Preparing to secondary pass is implemented by the \`\_setsecondarysorting` macro.
+   \_cod -----------------------------
+
+\_def\_setsecondarysorting {%
+   \_def \_act ##1{\_ifx##1\_relax \_else
+      \_ifx##1,\_else \_advance\_tmpnum by1 \_lccode`##1=\_tmpnum \_fi
+      \_ea\_act \_fi}%
+  \_tmpnum=65 \_ea\_act \_sortingdata \_relax 
+}
+
+   \_doc -----------------------------
+   Strings to be sorted are prepared in `\,<string>` control sequences 
+   (in order to save `\TeX` memory).
+   The \`\_preparesorting` `\,<string>` converts `<string>` to `\_tmpb` 
+   with respect to the data initialized in \^`\_setprimarysorting` or
+   \^`\_setsecondarysorting`.\nl
+   The compoud characters are converted to single characters by the
+   \`\_docompound` macro.
+   \_cod -----------------------------
+
+\_def \_preparesorting #1{%
+   \_edef \_tmpb {\_ea\_ignorefirst\_csstring #1}% \,<string> -> <string>
+   \_ea \_docompound \_compoundchars \_relax:{}       % replace compound characters 
+   \_lowercase \_ea{\_ea\_def \_ea\_tmpb \_ea{\_tmpb}}% convert in respect to \_sortingdata
+   \_ea\_replstring \_ea\_tmpb \_ea{\_csstring\^^I}{}% remove ignored characters
+}
+\_def \_docompound #1:#2 {%
+   \_ifx\_relax#1\_else \_replstring\_tmpb {#1}{#2}\_ea\_docompound \_fi
+}
+\_def \_ignorefirst#1{}
+
+   \_doc -----------------------------
+   Macro \`\_isAleB` `\,<string1> \,<string2>` returns the result of comparison 
+   of given two strings to \`\_ifAleB` control sequence. Usage:
+   `\isAleB \,<string1> \,<string2> \_ifAleB ... \_else ... \_fi`
+   The converted strings (in respect of the data prepared for first pass)
+   must be saved as values of `\,<string1>` and `\,<string2>` macros.
+   The reason is speed:  we don't want to convert them repeatedly in each 
+   comparison.
+   \nl
+   The macro
+   \`\_testAleB` `<converted string1>&\_relax<converted-string2>\_relax \,<string1>\,<string2>`\nl
+   does the real work. It reads first character from both converted strings, compares them
+   and if it is equal then calls itself recursively else gives result.
+   \_cod -----------------------------
+
+\_newifi \_ifAleB
+
+\_def\_isAleB #1#2{%
+   \_edef\_tmpb {#1&\_relax#2&\_relax}%
+   \_ea \_testAleB \_tmpb #1#2%
+}
+\_def\_testAleB #1#2\_relax #3#4\_relax #5#6{%
+  \_if #1#3\_if #1&\_testAleBsecondary #5#6%   goto to the second pass::
+          \_else \_testAleB #2\_relax #4\_relax #5#6%
+          \_fi
+  \_else \_ifnum `#1<`#3 \_AleBtrue \_else \_AleBfalse \_fi
+  \_fi
+}
+\_def\_testAleBsecondary#1#2{%
+  \_bgroup
+     \_setsecondarysorting
+     \_preparesorting#1\_let\_tmpa=\_tmpb \_preparesorting#2%
+     \_edef\_tmpb{\_tmpa0\_relax\_tmpb1\_relax}%
+     \_ea\_testAleBsecondaryX \_tmpb
+  \_egroup
+}
+\_def\_testAleBsecondaryX #1#2\_relax #3#4\_relax {%
+   \_if #1#3\_testAleBsecondaryX #2\_relax #4\_relax
+   \_else \_ifnum `#1<`#3 \_global\_AleBtrue \_else \_global \_AleBfalse \_fi
+   \_fi
+}
+
+   \_doc -----------------------------
+   Merge sort is very effectively implemented by \TeX/ macros. The following
+   code is created by my son Miroslav.
+   The \`\_mergesort` macro expects that all items in `\_iilist` are separated
+   by comma when it starts. It ends with sorted items in `\_iilist` without commas.
+   So `\_dosorting` macro must prepare commas between items.
+   \_cod -----------------------------
+
+\_def\_mergesort #1#2,#3{% by Miroslav Olsak
+   \_ifx,#1%                      % prazdna-skupina,neco,  (#2=neco #3=pokracovani)
+      \_addto\_iilist{#2,}%        % dvojice skupin vyresena
+      \_sortreturn{\_fif\_mergesort#3}%   % \mergesort pokracovani
+   \_fi
+   \_ifx,#3%                      % neco,prazna-skupina,  (#1#2=neco #3=,)
+      \_addto\_iilist{#1#2,}%      % dvojice skupin vyresena
+      \_sortreturn{\_fif\_mergesort}%      % \mergesort dalsi
+   \_fi
+   \_ifx\_end#3%                   % neco,konec (#1#2=neco)
+      \_ifx\_empty\_iilist                % neco=kompletni setrideny seznam
+         \_def\_iilist{#1#2}%
+         \_sortreturn{\_fif\_fif\_gobbletoend}%   % koncim
+      \_else                      % neco=posledni skupina nebo \end
+         \_sortreturn{\_fif\_fif       % spojim \indexbuffer+necoa cele znova
+                      \_edef\_iilist{\_ea}\_ea\_mergesort\_iilist#1#2,#3}%
+   \_fi\_fi                      % zatriduji: p1+neco1,p2+neco2, (#1#2=p1+neco1 #3=p2)
+   \_isAleB #1#3\_ifAleB         % p1<p2
+      \_addto\_iilist{#1}%       % p1 do bufferu
+      \_sortreturn{\_fif\_mergesort#2,#3}%         % \mergesort neco1,p2+neco2,
+   \_else                       % p1>p2
+      \_addto\_iilist{#3}%       % p2 do bufferu
+      \_sortreturn{\_fif\_mergesort#1#2,}%         % \mergesort p1+neco1,neco2,
+   \_fi
+   \_relax % zarazka, na ktere se zastavi \sortreturn
+}
+\_def\_sortreturn#1#2\_fi\_relax{#1} \_def\_fif{\_fi}
+\_def\_gobbletoend #1\_end{}
+
+   \_doc -----------------------------
+   The \`\_dosorting` `\list` macro redefines `\list` as sorted `\list`.
+   The `\list` have to include control sequences in the form `\<c><string>`.
+   These control sequences will be sorted in respect to <strings> without
+   change of meanings of these control sequences. Their meanings are
+   irrelevant when sorting. The first character <c> in `\<c><string>` should
+   be whatever. It does not influence the sorting. \OpTeX/ uses comma at
+   this place for sorting indexes: `\,<word1> \,<word2> \,<word3> ...`.
+
+   The actual language (chosen for hyphenation patterns) is used for 
+   sorting data. If the `\_sortinglang` macro 
+   is defined as `<iso-code>`(for example `\def\sortinglang{de}`) 
+   then this has precedence and actual language is not used.
+   Moreover, if you specify \`\_asciisortingtrue` then ASCII 
+   sorting will be processed and all language sorting data will be ignored. 
+   \_cod -----------------------------
+
+\_newifi \_ifasciisorting  \_asciisortingfalse
+\_def\_dosorting #1{%
+   \_begingroup
+     \_def\_nold{}% 
+     \_ifx\_sotringlang\_undefined \_edef\_sortinglang{\_cs{_lan:\_the\_language}}\_fi
+      \_ifasciisorting
+          \_edef\_sortinglang{ASCII}%
+          \_def \_preparesorting##1{\_edef\_tmpb{\_ea\_ignorefirst\_csstring##1}}%
+          \_let \_setsecondarysorting=\_relax
+      \_else
+         \_setprimarysorting
+      \_fi        
+      \_message{OpTeX: Sorting \_string#1 (\_sortinglang) ...^^J}%
+      \_ifx\_nold\_empty\_else \_opwarning{Missing\_nold\_space for language (\_sortinglang)}\_fi
+      \_def \_act##1{\_preparesorting ##1\_edef##1{\_tmpb}}%
+      \_ea\_xargs \_ea\_act #1;%
+      \_def \_act##1{\_addto #1{##1,}}%
+      \_edef #1{\_ea}\_ea\_xargs \_ea\_act #1;%
+      \_edef \_iilist{\_ea}\_ea\_mergesort #1\_end,\_end
+   \_ea\_endgroup
+   \_ea\_def\_ea#1\_ea{\_iilist}%
+}
+
+   \_doc -----------------------------
+   The \`\makeindex` prints the index. First, it sorts the `\_iilist`
+   second, it prints the sorted `\_iilist`, each item is printed 
+   using \^`\_printindexitem`.
+   \_cod -----------------------------
+
+\_def\_makeindex{\_par
+  \_ifx\_iilist\_empty \_opwarning{index data-buffer is empty. TeX me again}
+  \_else
+    \_dosorting \_iilist % sorting \_iilist   
+    \_bgroup
+       \_rightskip=0pt plus1fil \_exhyphenpenalty=10000 \_leftskip=\_iindent
+       \_ea\_xargs \_ea\_printindexitem \_iilist ;\_par
+    \_egroup
+  \_fi
+}
+\_public \makeindex ;
+
+   \_doc -----------------------------
+   The \`\_printindexitem` `\,<word>` prints one item to the index.
+   If `\_,<word>` is defined then this is used instead real <word>
+   (this exception is declared by `\iis` macro). Else <word> is printed by
+   \^`\_printii`. Finally, \^`\_printiipages` prints the value of `\,<word>`,
+   i.e. the list of pages. 
+   \_cod -----------------------------  
+
+\_def\_printindexitem #1{%
+   \_ifcsname _\_csstring #1\_endcsname
+      \_ea\_ea\_ea \_printii \_csname _\_csstring #1\_endcsname &%
+   \_else
+      \_ea\_ea\_ea\_printii \_ea\_ignorefirst \_csstring #1&%
+   \_fi   
+   \_ea\_printiipages #1&
+}
+
+   \_doc -----------------------------
+   \`\_printii` `<word>&` does more intelligent work because we are working with
+    words in the form `<main-word>/<sub-word>/<sub-sub-word>`.
+    The \^`\everyii` tokens register is applied before `\noindent`. User can
+    declare something special here.
+
+   The \`\_newiiletter``{<letter>}` macro is empty by default. It is invoked if first
+   letter of index entries is changed. You can declare a design between
+   index entries here. You can try, for example:
+   \begtt
+   \def\_newiiletter#1#2{%
+       \bigskip \hbox{\setfontsize{at15pt}\bf\uppercase{#1}}\medskip}
+   \endtt
+   \_cod -----------------------------
+
+\_def\_printii #1#2&{%
+   \_ismacro\_lastii{#1}\_iffalse \_newiiletter{#1}{#2}\_def\_lastii{#1}\_fi
+   \_gdef\_currii{#1#2}\_the\_everyii\_noindent
+   \_hskip-\_iindent \_ignorespaces\_printiiA#1#2//}
+\_def\_printiiA #1/{\_if^#1^\_let\_previi=\_currii \_else
+   \_ea\_scanprevii\_previi/&\_edef\_tmpb{\_detokenize{#1}}%
+   \_ifx\_tmpa\_tmpb \_iiemdash \_else#1 \_gdef\_previi{}\_fi
+   \_expandafter\_printiiA\_fi
+}
+\_def\_iiemdash{\_kern.1em---\_space}
+\_def\_lastii{}
+\_def\_newiiletter#1#2{}
+
+\_def\_scanprevii#1/#2&{\_def\_previi{#2}\_edef\_tmpa{\_detokenize{#1}}}
+\_def\_previi{} % previous index item
+
+   \_doc -----------------------------
+   \`\_printiipages` `<pglist>&` gets `<pglist>` in the form
+   `<pg>:<type>,<pg>:<type>,...<pg>:<type>` and it converts them to
+   `<pg>, <pg>, <from>--<to>, <pg>` etc. The same pages must be printed only once
+   and continuous consequences of pages must be compressed to the form <from>-<to>. 
+   Moreover, the consequence is continuous only if all pages have the same <type>.
+   Empty <type> is most common, pages with `b` <type> must be printed as bold
+   and with `i` `<type>` as italics.
+   Moreover, the `<pg>` mentioned here are <gpageno>, but we have to print
+   <pageno>. The following macros solves these tasks.
+   \_cod -----------------------------
+
+\_def\_printiipages#1&{\_let\_pgtype=\_undefined \_tmpnum=0 \_printpages #1,:,\_par}
+\_def\_printpages#1:#2,{%  state automaton for compriming pages
+   \_ifx,#1,\_uselastpgnum
+   \_else \_def\_tmpa{#2}%
+      \_ifx\_pgtype\_tmpa \_else
+         \_let\_pgtype=\_tmpa 
+         \_uselastpgnum \_usepgcomma \_pgprint#1:{#2}%
+         \_tmpnum=#1 \_returnfi \_fi
+      \_ifnum\_tmpnum=#1 \_returnfi \_fi
+      \_advance\_tmpnum by1
+      \_ifnum\_tmpnum=#1 \_ifx\_lastpgnum\_undefined \_usepgdash\_fi
+                         \_edef\_lastpgnum{\_the\_tmpnum:{\_pgtype}}%
+                         \_returnfi \_fi
+      \_uselastpgnum \_usepgcomma \_pgprint#1:{#2}%
+      \_tmpnum=#1
+      \_relax
+   \_ea\_printpages \_fi
+}
+\_def\_returnfi #1\_relax{\_fi}
+\_def\_uselastpgnum{\_ifx\_lastpgnum\_undefined 
+   \_else \_ea\_pgprint\_lastpgnum \_let\_lastpgnum=\_undefined \_fi
+}
+\_def\_usepgcomma{\_ifnum\_tmpnum>0, \_fi} % comma+space between page numbers
+\_def\_usepgdash{\_hbox{--}}               % dash in the <from>--<to> form
+
+   \_doc -----------------------------
+   You can re-define \`\_pgprint` `<gpageno>:{<iitype>}` 
+   if you need to implement more <iitypes>.
+   \_cod -----------------------------
+
+\_def\_pgprint #1:#2{%
+   \_ifx ,#2,\_pgprintA{#1}\_returnfi \_fi
+   \_ifx b#2{\_bf \_pgprintA{#1}}\_returnfi \_fi   
+   \_ifx i#2{\_it \_pgprintA{#1}}\_returnfi \_fi   
+   \_ifx u#2\_pgu{\_pgprintA{#1}}\_returnfi \_fi   
+  \_pgprintA{#1}\_relax
+}
+\_def\_pgprintA #1{\_ilink[pg:#1]{\_cs{_pgi:#1}}} % \ilink[pg:<gpageno>]{<pageno>}
+\_def\_pgu#1{\_leavevmode\_vtop{\_hbox{#1}\kern.3ex\_hrule}}
+
+   \_doc -----------------------------
+   The \`\iindex``{<word>}` puts one <word> to the index. It writes
+   \^`\_Xindex``{<word>}{<iitype>}` to the `.ref` file. 
+   All othes variants of indexing macros expands internally to `\iindex`.
+   \_cod -----------------------------
+
+\_def\_iindex#1{\_isempty{#1}\_iffalse\_openref{\def~{ }%
+   \edef\_act{\_noexpand\_wref\_noexpand\_Xindex{{#1}{\_iitypesaved}}}\_act}\_fi}
+\_public \iindex ;
+
+   \_doc -----------------------------
+   The \`\_Xindex``{<word>}{<iitype>}` stores `\,<word>` to the `\_iilist` if
+   there is first occurrence of the <word>. The list of pages where `<word>`
+   occurs, is the value of the macro `\,<word>`, so the `<gpageno>:<iitype>` 
+   is appended to this list.
+   Moreower, we need a mapping from <gpageno> to `<pageno>`, because we print
+   `<pageno>` in the index, but hyperlinks are implemented by `<gpageno>`.
+   So, the macro `\_pgi:<gpageno>` is defined as `<pageno>`.
+   \_cod -----------------------------
+
+\_def \_iilist {}
+\_def \_Xindex #1#2{\_ea\_XindexA \_csname ,#1\_ea\_endcsname \_currpage {#2}}
+\_def \_XindexA #1#2#3#4{% #1=\,<word> #2=<gpageno> #3=<pageno> #4=<iitype>
+   \_ifx#1\_relax \_global\_addto \_iilist {#1}%
+                 \_gdef #1{#2:#4}%
+   \_else \_global\_addto #1{,#2:#4}%
+   \_fi
+   \_sxdef{_pgi:#2}{#3}%
+}
+
+   \_doc -----------------------------
+   The implementation of macros \`\ii`, \`\iid`, \`\iis` follows.
+   Note that `\ii` works in horizontal mode on order to the `\write` whatsit 
+   is not broken from the following word. If you need to keep vertical mode,
+   use \^`\iindex``{<word>}` directly.
+   \nl
+   The \`\iitype` `{<type>}` saves the `<type>` to the \`\_iitypesaved` macro. It is
+   used in the \^`\iindex` macro.
+   \_cod -----------------------------
+
+\_def\_ii #1 {\_leavevmode\_def\_tmp{#1}\_iiA #1,,\_def\_iitypesaved{}}
+
+\_def\_iiA #1,{\_if$#1$\_else\_def\_tmpa{#1}%
+   \_ifx\_tmpa\_iiatsign \_ea\_iiB\_tmp,,\_else\_iindex{#1}\_fi
+   \_ea\_iiA\_fi}
+\_def\_iiatsign{@}
+
+\_def\_iiB #1,{\_if$#1$\_else \_iiC#1/\_relax \_ea\_iiB\_fi}
+\_def\_iiC #1/#2\_relax{\_if$#2$\_else\_iindex{#2#1}\_fi}
+
+\_def\_iid #1 {\_leavevmode\_iindex{#1}#1\_futurelet\_tmp\_iiD\_def\_iitypesaved{}}
+\_def\_iiD{\_ifx\_tmp,\_else\_ifx\_tmp.\_else\_space\_fi\_fi}
+
+\_def\_iis #1 #2{{\_def~{ }\_global\_sdef{_,#1}{#2}}\_ignorespaces}
+
+\_def\_iitypesaved{}
+\_def\_iitype #1{\_def\_iitypesaved{#1}\_ignorespaces}
+
+\_public \ii \iid \iis \iitype ;
+
+\_endcode % -------------------------------------
+
+2020-04-21 \isempty \iffalse ... \fi added to \iindex
+2020-03-26 introduced


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/makeindex.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/maketoc.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/maketoc.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/maketoc.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,126 @@
+% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \maketoc {Macros for maketoc <2020-03-12>} % preloaded in format
+
+   \_doc ------------------------------------
+   \`\_Xtoc` `{<level>}{<type>}{<number>}{<title>}` (in `.ref` file) reads the 
+   specified data and appends them to the \`\_toclist` as
+   \^`\_tocline``{<level>}{<type>}{<number>}{<title>}{<gpageno>}{<pageno>}`
+   where:
+   \begitems
+   * `<level>`:   0 reserved, 1: chapter, 2: section, 3: subsection
+   * `<type>`:    the type of the level, i.e. chap, sec, secc
+   * `<number>`:  the number of the chapter/section/subsection in the format 1.2.3
+   * `<title>`:   the title text
+   * `<gpageno>`: the page number numbered from 1 independently of pagination 
+   * `<pageno>`:  the page number used in the pagination
+   \enditems
+   The last two parameters are restored from previous
+   \^`\_Xpage``{<pageno>}{<gpageno>}`, data were saved in the \^`\_currpage` macro.
+   \_cod ------------------------------------
+
+\_def\_toclist{} 
+\_newifi \_ifischap \_ischapfalse
+
+\_def\_Xtoc#1#2#3#4{\_ifnum#1=0 \_ischaptrue\_fi 
+   \_addto\_toclist{\_tocline{#1}{#2}{#3}{#4}}
+   \_ea\_addto\_ea\_toclist\_ea{\_currpage}%
+}
+
+   \_doc ------------------------------------
+   \`\_tocline``{<level>}{<type>}{<number>}{<title>}{<gpageno>}{<pageno>}` prints
+   the record to the table of contents. It opens group, reduces `\_leftskip`,
+   `\_rightskip`, runs the \^`\everytocline` (user can customise the design of TOC
+   here) and runs `\_tocl:<level> {<number>}{<title>}{<pageno>}` macro. 
+   This macro starts with vertical mode,
+   inserts one record with given `<level>` and it should end by \^`\_tocpar`
+   which returns to hrizontal mode. The `\_tocpar`
+   appends `\_nobreak \_hskip-2\_iindent\_null \_par`. This causes
+   that the last line of the record is shifted outside the margin given by
+   `\_rightskip`. A typical record (with long `<title>`) looks like:
+   \begtt
+                  |                        |
+   \llap{<number>} text text text text text
+                   text text text text text
+                   text text .................... <pageno>
+   \endtt
+   Margins given by `\leftskip` and `\rightskip` are denoted by `|` in the
+   examle above. 
+   \nl
+   \`\tocrefnum` is global counter of all TOC records (used by hyperlinks).
+   \_cod ------------------------------------
+
+\_newcount \_tocrefnum
+\_def\_tocline#1#2#3#4#5#6{%
+   \_advance\_tocrefnum by1
+   \_bgroup
+      \_leftskip=\_iindent \_rightskip=2\_iindent
+      \_ifischap \_advance\_leftskip by \_iindent \_fi
+      \_def\_pgn{\_ilink[pg:#5]}%
+      \_the\_everytocline
+      \_ifcsname _tocl:#1\_endcsname 
+         \_cs{_tocl:#1}{#3}{#4}{#6}\_par
+      \_fi
+   \_egroup
+}
+\_public \tocrefnum ;
+
+   \_doc -----------------------------------
+   You can re-define default macros for each level of tocline if you want.\nl
+   Parameters are `{<number>}{<title>}{<pageno>}`.
+   \_cod -----------------------------------
+
+\_sdef{_tocl:1}#1#2#3{\_nofirst\_bigskip \_bf\_llaptoclink{#1}{#2}\_hfill \_pgn{#3}\_tocpar}
+\_sdef{_tocl:2}#1#2#3{\_llaptoclink{#1}{#2}\_tocdotfill \_pgn{#3}\_tocpar}
+\_sdef{_tocl:3}#1#2#3{\_advance\_leftskip by\_iindent \_cs{_tocl:2}{#1}{#2}{#3}}
+
+   \_doc -----------------------------------
+   The auxiliary macros are:
+   \begitems
+   * \`\_llaptoclink``<text>` does `\_noindent\_llap{<linked text>}`.
+   * \`\_tocdotfill` creates dots in the TOC.
+   * \`\_nofirst``\macro` applies the `\macro` only if we don't print the first
+     record of the TOC.
+   * \`\_tocpar` finalizes one TOC recors whith rlapped `<pageno>`.
+   * \`\_pgn``{<pageno>}` creates <pageno> as link to real `<gpage>` saved in `#6`
+     of \^`\_tocline`. This is temporarily defined in the \^`\_tocline`.
+   \enditems
+   \_cod ----------------------------------
+
+\_def\_llaptoclink#1{\_noindent
+   \_llap{\_ilink[toc:\_the\_tocrefnum]{\_enspace#1\_kern.4em}\_kern.1em}}
+\_def\_tocdotfill{\_nobreak\_leaders\_hbox to.8em{\_hss.\_hss}\_hskip 1em plus1fill\_relax}
+\_def\_nofirst #1{\_ifnum \_lastpenalty=11333 \_else #1\_fi}
+\_def\_tocpar{\_nobreak \_hskip-2\_iindent\_null \_par}
+
+   \_doc -----------------------------------
+   \`\maketoc` prints warning if TOC data is empty, else it creates TOC by
+   running \^`\_toclist` 
+   \_cod ----------------------------------
+
+\_def\_maketoc{\_par \_ifx\_toclist\_empty
+      \_opwarning{\_noexpand\maketoc -- data unavailable, TeX me again}\_openref
+   \_else \_begingroup 
+      \_tocrefnum=0 \_penalty11333 
+      \_the\_regtoc \_toclist 
+   \_endgroup \_fi
+}
+
+   \_doc -----------------------------------
+   \`\regmacro` appends its parameters to \`\_regtoc`, \`\_regmark` and
+   \`\_regoul`. These token lists are used in \^`\maketoc`, \^`\_begoutput` and
+   \^`\pdfunidef`.
+   \_cod \_fin -----------------------------
+
+\_newtoks \_regtoc  \_newtoks \_regmark  \_newtoks \_regoul  
+
+\_def\_regmacro #1#2#3{%
+   \_toksapp\_regtoc{#1}\_toksapp\_regmark{#2}\_toksapp\_regoul{#3}%
+}
+\_public \maketoc \regmacro ;
+
+\_endcode 
+
+2020-04-23 \_tocpar introduced (incompatible change)
+2020-04-22 \_pg -> \_pgn (incompatible change)
+2020-03-12 introduced
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/maketoc.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/margins.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/margins.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/margins.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,78 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \margins {Macros for margins setting <2020-03-14>} % preloaded in format
+
+    \_doc ----------------------------
+    \`\margins``/<pg> <fmt> (<left>,<right>,<top>,<bot>)<unit>`
+    takes its parameters, does calculation and sets `\hoffset`, `\voffset`,
+    `\hsize` and `\vsize` registers. Note that \OpTeX/ sets the page origin at
+    the top left corner of the paper, no at the obscure position 1\,in, 1\,in.
+    It is much more comfortable for macro writers.
+    \_cod ----------------------------
+
+\_newdimen\_pgwidth  \_newdimen\_pgheight  \_pgwidth=0pt
+\_newdimen\_shiftoffset
+
+\_def\_margins/#1 #2 (#3,#4,#5,#6)#7 {\_def\_tmp{#7}%
+   \_ifx\_tmp\_empty
+      \_opwarning{\_string\_margins: missing unit, mm inserted}\_def\_tmp{mm}\_fi
+   \_setpagedimens #2 % setting \_pgwidth, \_pgheight
+   \_ifdim\_pgwidth=0pt \_else
+      \_hoffset=0pt \_voffset=0pt
+      \_if$#3$\_if$#4$\_hoffset =\_dimexpr (\_pgwidth -\_hsize)/2 \_relax
+              \_else  \_hoffset =\_dimexpr \_pgwidth -\_hsize - #4\_tmp \_relax % only right margin
+              \_fi
+      \_else  \_if$#4$\_hoffset = #3\_tmp \_relax  % only left margin
+              \_else  \_hsize =\_dimexpr \_pgwidth - #3\_tmp - #4\_tmp \_relax % left+right margin
+                      \_hoffset = #3\_tmp \_relax
+      \_fi\_fi
+      \_if$#5$\_if$#6$\_voffset =\_dimexpr (\_pgheight -\_vsize)/2 \_relax
+              \_else  \_voffset =\_dimexpr \_pgheight -\_vsize - #6\_tmp \_relax % only bottom margin
+              \_fi
+      \_else  \_if$#6$\_voffset = #5\_tmp \_relax  % only top margin
+              \_else  \_vsize=\_dimexpr \_pgheight - #5\_tmp - #6\_tmp \_relax % top+bottom margin
+                      \_voffset = #5\_tmp \_relax
+      \_fi\_fi
+      \_if 1#1\_shiftoffset=0pt \_def\_prepoffsets{}\_else \_if 2#1% double-page layout
+         \_shiftoffset = \_dimexpr \_pgwidth -\_hsize -2\_hoffset \_relax
+         \_def\_prepoffsets{\_ifodd\_pageno \_else \_advance\_hoffset \_shiftoffset \_fi}%
+      \_else \_opwarning{use \_string\_margins/1 or \_string\_margins/2}%
+   \_fi\_fi\_fi
+}
+\_def\_setpagedimens{\_isnextchar({\_setpagedimensB}{\_setpagedimensA}}
+\_def\_setpagedimensA#1 {\_ifcsname _pgs:#1\_endcsname
+   \_ea\_ea\_ea\_setpagedimensB \_csname _pgs:#1\_ea\_endcsname\_space
+   \_else \_opwarning{page specification "#1" is undefined}\_fi}
+\_def\_setpagedimensB (#1,#2)#3 {\_setpagedimensC\_pgwidth=#1:#3 
+                                 \_setpagedimensC\_pgheight=#2:#3
+        \_pdfpagewidth=\_pgwidth \_pdfpageheight=\_pgheight
+}
+\_def\_setpagedimensC #1=#2:#3 {#1=#2\_ifx^#3^\_tmp\_else#3\_fi\_relax\_truedimen#1}
+
+\_public \margins ;
+
+    \_doc ----------------------------
+    The common page dimensions are defined here.
+    \_cod ----------------------------
+
+\_sdef{_pgs:a3}{(297,420)mm}  \_sdef{_pgs:a4}{(210,297)mm}  \_sdef{_pgs:a5}{(148,210)mm}
+\_sdef{_pgs:a3l}{(420,297)mm} \_sdef{_pgs:a4l}{(297,210)mm} \_sdef{_pgs:a5l}{(210,148)mm}
+\_sdef{_pgs:b5}{(176,250)mm}  \_sdef{_pgs:letter}{(8.5,11)in}
+
+    \_doc ----------------------------
+    \`\magscale` `[<factor>]` does `\mag=<factor>` and recalculates page
+    dimensions to their true values.
+    \_cod ----------------------------
+
+\_def\_trueunit{}
+\_def\_magscale[#1]{\_mag=#1\_def\_trueunit{true}%
+   \_ifdim\_pgwidth=0pt \_else \_truedimen\_pgwidth \_truedimen\_pgheight \_fi
+   \_truedimen\_pdfpagewidth \_truedimen\_pdfpageheight 
+}
+\_def\_truedimen#1{\_ifx\_trueunit\_empty \_else#1=\_ea\_ignorept\_the#1truept \_fi}
+
+\_public \magscale ;
+
+\_endcode % -----------------------------------------
+
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/margins.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/math-macros.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/math-macros.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/math-macros.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,946 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \sin {Math macros plus mathchardefs <2020-04-27>} % preloaded in format 
+
+   \_doc -----------------------------
+   The category code of the character `_` remains as letter (11) and the mathocode 
+   of it is `"8000`. 
+   It means that it is active character in math mode. It is defined as subscript prefix.
+
+   There is a problem: The `x_n` is tokenized as `x`, `_`, `n` and it works
+   without problem. But `\int``_a^b` is tokenized as `\int``_a`, `^`, `b`. The
+   control sequence `\int``_a` isn't defined. We must write `\int _a^b`.
+
+   The lua code presented here solves this problem. But you cannot set our own
+   control sequence in the form `\<word>_` or `\<word>_<one-letter>` (where
+   <word> is sequence of letters) because such control sequences are
+   unacessible: proprocessor rewrites it.
+
+   The \`\mathsbon` macro activates the rewritting rule `\<word>_<nonleter>` to
+   `\<word> _<nonletter>` and 
+   `\<word>``_<letter><nonletter>` to `\<word> _<letter><nonletter>` at input
+   processor level. The \`\mathsboff` deactivates it.
+   You can ask by \`\_ifmathsb` if this feature is activated or deactivated.
+   By default, is is activated in the `\everyjob`.
+   \_cod -----------------------------
+
+\catcode`\_ = 8   \let\sb = _
+\catcode`\_ = 13  \let _ = \sb
+\catcode`\_ = 11  
+\_private \sb ;
+
+\_newifi\_ifmathsb   \_mathsbfalse
+\_def \_mathsbon {%
+   \_directlua{
+   callback.register("process_input_buffer",
+     function (str)
+       return string.gsub(str.." ", "(\_nbb[a-zA-Z]+)_([a-zA-Z]?[^_a-zA-Z])", "\_pcent 1 _\_pcent 2")
+     end) }%
+   \_global\_mathsbtrue
+}
+\_def \_mathsboff {%
+   \_directlua{ callback.register("process_input_buffer", nil) }%
+   \_global \_mathsbfalse
+}
+\_public \mathsboff \mathsbon ;
+
+   \_doc -----------------------------
+   All mathcodes are set to equal values as in plain\TeX/.
+   But all encoding-dependend declarations (like these) will be set 
+   to different values when Unicode-math font is used.
+   \_cod -----------------------------
+
+\_mathcode`\^^@="2201 % \cdot
+\_mathcode`\^^A="3223 % \downarrow
+\_mathcode`\^^B="010B % \alpha
+\_mathcode`\^^C="010C % \beta
+\_mathcode`\^^D="225E % \land
+\_mathcode`\^^E="023A % \lnot
+\_mathcode`\^^F="3232 % \in
+\_mathcode`\^^G="0119 % \pi
+\_mathcode`\^^H="0115 % \lambda
+\_mathcode`\^^I="010D % \gamma
+\_mathcode`\^^J="010E % \delta
+\_mathcode`\^^K="3222 % \uparrow
+\_mathcode`\^^L="2206 % \pm
+\_mathcode`\^^M="2208 % \oplus
+\_mathcode`\^^N="0231 % \infty
+\_mathcode`\^^O="0140 % \partial
+\_mathcode`\^^P="321A % \subset
+\_mathcode`\^^Q="321B % \supset
+\_mathcode`\^^R="225C % \cap
+\_mathcode`\^^S="225B % \cup
+\_mathcode`\^^T="0238 % \forall
+\_mathcode`\^^U="0239 % \exists
+\_mathcode`\^^V="220A % \otimes
+\_mathcode`\^^W="3224 % \leftrightarrow
+\_mathcode`\^^X="3220 % \leftarrow
+\_mathcode`\^^Y="3221 % \rightarrow
+\_mathcode`\^^Z="8000 % \ne
+\_mathcode`\^^[="2205 % \diamond
+\_mathcode`\^^\="3214 % \le
+\_mathcode`\^^]="3215 % \ge
+\_mathcode`\^^^="3211 % \equiv
+\_mathcode`\^^_="225F % \lor
+\_mathcode`\ ="8000 % \space
+\_mathcode`\!="5021
+\_mathcode`\'="8000 % ^\prime
+\_mathcode`\(="4028
+\_mathcode`\)="5029
+\_mathcode`\*="2203 % \ast
+\_mathcode`\+="202B
+\_mathcode`\,="613B
+\_mathcode`\-="2200
+\_mathcode`\.="013A
+\_mathcode`\/="013D
+\_mathcode`\:="303A
+\_mathcode`\;="603B
+\_mathcode`\<="313C
+\_mathcode`\=="303D
+\_mathcode`\>="313E
+\_mathcode`\?="503F
+\_mathcode`\[="405B
+\_mathcode`\\="026E % \backslash
+\_mathcode`\]="505D
+\_mathcode`\_="8000 % math-active subscript
+\_mathcode`\{="4266
+\_mathcode`\|="026A
+\_mathcode`\}="5267
+\_mathcode`\^^?="1273 % \smallint
+
+\_delcode`\(="028300
+\_delcode`\)="029301
+\_delcode`\[="05B302
+\_delcode`\]="05D303
+\_delcode`\<="26830A
+\_delcode`\>="26930B
+\_delcode`\/="02F30E
+\_delcode`\|="26A30C
+\_delcode`\\="26E30F
+
+   \_doc -----------------------------
+   All control sequences declared by `\mathchardef` are supposed (by default)
+   only for public usage. It means that they are delcared without `_` prefix.
+   If such sequences are used in internal \OpTeX/ macro then their internal
+   prefixed form is declared using `\_private` macro.\nl
+   These encoding dependent declarations will be set to different values
+   when Unicode-math font is loaded.\nl
+   The declared sequences for math symbols are not hyperlinked in this documentation.
+   \maxlines=15
+   \_cod -----------------------------
+
+\_mathchardef\alpha="010B
+\_mathchardef\beta="010C
+\_mathchardef\gamma="010D
+\_mathchardef\delta="010E
+\_mathchardef\epsilon="010F
+\_mathchardef\zeta="0110
+\_mathchardef\eta="0111
+\_mathchardef\theta="0112
+\_mathchardef\iota="0113
+\_mathchardef\kappa="0114
+\_mathchardef\lambda="0115
+\_mathchardef\mu="0116
+\_mathchardef\nu="0117
+\_mathchardef\xi="0118
+\_mathchardef\pi="0119
+\_mathchardef\rho="011A
+\_mathchardef\sigma="011B
+\_mathchardef\tau="011C
+\_mathchardef\upsilon="011D
+\_mathchardef\phi="011E
+\_mathchardef\chi="011F
+\_mathchardef\psi="0120
+\_mathchardef\omega="0121
+\_mathchardef\varepsilon="0122
+\_mathchardef\vartheta="0123
+\_mathchardef\varpi="0124
+\_mathchardef\varrho="0125
+\_mathchardef\varsigma="0126
+\_mathchardef\varphi="0127
+\_mathchardef\Gamma="7000
+\_mathchardef\Delta="7001
+\_mathchardef\Theta="7002
+\_mathchardef\Lambda="7003
+\_mathchardef\Xi="7004
+\_mathchardef\Pi="7005
+\_mathchardef\Sigma="7006
+\_mathchardef\Upsilon="7007
+\_mathchardef\Phi="7008
+\_mathchardef\Psi="7009
+\_mathchardef\Omega="700A
+
+\_mathchardef\aleph="0240
+\_mathchardef\imath="017B
+\_mathchardef\jmath="017C
+\_mathchardef\ell="0160
+\_mathchardef\wp="017D
+\_mathchardef\Re="023C
+\_mathchardef\Im="023D
+\_mathchardef\partial="0140
+\_mathchardef\infty="0231
+\_mathchardef\prime="0230   
+\_mathchardef\emptyset="023B
+\_mathchardef\nabla="0272
+\_protected\_def \surd{{\_mathchar"1270}}
+\_mathchardef\top="023E
+\_mathchardef\bot="023F
+\_mathchardef\triangle="0234
+\_mathchardef\forall="0238
+\_mathchardef\exists="0239
+\_mathchardef\neg="023A  \_let\lnot=\neg
+\_mathchardef\flat="015B
+\_mathchardef\natural="015C
+\_mathchardef\sharp="015D
+\_mathchardef\clubsuit="027C
+\_mathchardef\diamondsuit="027D
+\_mathchardef\heartsuit="027E
+\_mathchardef\spadesuit="027F
+
+\_mathchardef\coprod="1360
+\_mathchardef\bigvee="1357
+\_mathchardef\bigwedge="1356
+\_mathchardef\biguplus="1355
+\_mathchardef\bigcap="1354
+\_mathchardef\bigcup="1353
+\_mathchardef\intop="1352  
+\_protected\_def \int{\_intop\_nolimits}  \_private \intop;
+\_mathchardef\prod="1351
+\_mathchardef\sum="1350
+\_mathchardef\bigotimes="134E
+\_mathchardef\bigoplus="134C
+\_mathchardef\bigodot="134A
+\_mathchardef\ointop="1348
+\_protected\_def\_oint {\_ointop\_nolimits}  \_private \ointop;
+\_mathchardef\bigsqcup="1346
+\_mathchardef\smallint="1273
+
+\_mathchardef\triangleleft="212F   \_private \triangleleft;
+\_mathchardef\triangleright="212E  \_private \trianglerigt;
+\_mathchardef\bigtriangleup="2234
+\_mathchardef\bigtriangledown="2235
+\_mathchardef\wedge="225E \let\land=\wedge
+\_mathchardef\vee="225F \let\lor=\vee
+\_mathchardef\cap="225C
+\_mathchardef\cup="225B
+\_mathchardef\ddagger="227A
+\_mathchardef\dagger="2279
+\_mathchardef\sqcap="2275
+\_mathchardef\sqcup="2274
+\_mathchardef\uplus="225D
+\_mathchardef\amalg="2271
+\_mathchardef\diamond="2205
+\_mathchardef\bullet="220F   \_private \bullet;
+\_mathchardef\wr="226F
+\_mathchardef\div="2204
+\_mathchardef\odot="220C
+\_mathchardef\oslash="220B
+\_mathchardef\otimes="220A
+\_mathchardef\ominus="2209
+\_mathchardef\oplus="2208
+\_mathchardef\mp="2207
+\_mathchardef\pm="2206
+\_mathchardef\circ="220E
+\_mathchardef\bigcirc="220D
+\_mathchardef\setminus="226E % for set difference A\setminus B
+\_mathchardef\cdot="2201
+\_mathchardef\ast="2203
+\_mathchardef\times="2202
+\_mathchardef\star="213F
+
+\_mathchardef\propto="322F
+\_mathchardef\sqsubseteq="3276
+\_mathchardef\sqsupseteq="3277
+\_mathchardef\parallel="326B
+\_mathchardef\mid="326A
+\_mathchardef\dashv="3261
+\_mathchardef\vdash="3260
+\_mathchardef\nearrow="3225
+\_mathchardef\searrow="3226
+\_mathchardef\nwarrow="322D
+\_mathchardef\swarrow="322E
+\_mathchardef\Leftrightarrow="322C
+\_mathchardef\Leftarrow="3228
+\_mathchardef\Rightarrow="3229 
+\_protected\_def \neq{\_not=} \_let\ne=\neq
+\_mathchardef\leq="3214 \let\le=\leq
+\_mathchardef\geq="3215 \let\ge=\geq
+\_mathchardef\succ="321F
+\_mathchardef\prec="321E
+\_mathchardef\approx="3219
+\_mathchardef\succeq="3217
+\_mathchardef\preceq="3216
+\_mathchardef\supset="321B
+\_mathchardef\subset="321A
+\_mathchardef\supseteq="3213
+\_mathchardef\subseteq="3212
+\_mathchardef\in="3232
+\_mathchardef\ni="3233 \let\owns=\ni
+\_mathchardef\gg="321D
+\_mathchardef\ll="321C
+% \_mathchardef\not="3236  % defined below
+\_mathchardef\leftrightarrow="3224
+\_mathchardef\leftarrow="3220  \_let\gets=\leftarrow 
+\_mathchardef\rightarrow="3221 \_let\to=\rightarrow
+\_mathchardef\mapstochar="3237
+\_protected\_def\mapsto{\_mapstochar\_rightarrow}  \_private \mapstochar \rightarrow ;
+\_mathchardef\sim="3218
+\_mathchardef\simeq="3227
+\_mathchardef\perp="323F
+\_mathchardef\equiv="3211
+\_mathchardef\asymp="3210
+\_mathchardef\smile="315E
+\_mathchardef\frown="315F
+\_mathchardef\leftharpoonup="3128  
+\_mathchardef\leftharpoondown="3129
+\_mathchardef\rightharpoonup="312A
+\_mathchardef\rightharpoondown="312B  
+
+   \_doc -----------------------------
+   The math functions like log, sin, cos are declared in tha same way as in
+   plain\TeX/, but they are `\protected` in \OpTeX/.
+   \_cod -----------------------------
+
+\_protected\_def\log {\_mathop{\_rm log}\_nolimits}
+\_protected\_def\lg {\_mathop{\_rm lg}\_nolimits}
+\_protected\_def\ln {\_mathop{\_rm ln}\_nolimits}
+\_protected\_def\lim {\_mathop{\_rm lim}}
+\_protected\_def\limsup {\_mathop{\_rm lim\_thinsk sup}}
+\_protected\_def\liminf {\_mathop{\_rm lim\_thinsk inf}}
+\_protected\_def\sin {\_mathop{\_rm sin}\_nolimits}
+\_protected\_def\arcsin {\_mathop{\_rm arcsin}\_nolimits}
+\_protected\_def\sinh {\_mathop{\_rm sinh}\_nolimits}
+\_protected\_def\cos {\_mathop{\_rm cos}\_nolimits}
+\_protected\_def\arccos {\_mathop{\_rm arccos}\_nolimits}
+\_protected\_def\cosh {\_mathop{\_rm cosh}\_nolimits}
+\_protected\_def\tan {\_mathop{\_rm tan}\_nolimits}
+\_protected\_def\arctan {\_mathop{\_rm arctan}\_nolimits}
+\_protected\_def\tanh {\_mathop{\_rm tanh}\_nolimits}
+\_protected\_def\cot {\_mathop{\_rm cot}\_nolimits}
+\_protected\_def\coth {\_mathop{\_rm coth}\_nolimits}
+%\_protected\_def\sec {\_mathop{\_rm sec}\_nolimits} % \sec is section
+\_protected\_def\csc {\_mathop{\_rm csc}\_nolimits}
+\_protected\_def\max {\_mathop{\_rm max}}
+\_protected\_def\min {\_mathop{\_rm min}}
+\_protected\_def\sup {\_mathop{\_rm sup}}
+\_protected\_def\inf {\_mathop{\_rm inf}}
+\_protected\_def\arg {\_mathop{\_rm arg}\_nolimits}
+\_protected\_def\ker {\_mathop{\_rm ker}\_nolimits}
+\_protected\_def\dim {\_mathop{\_rm dim}\_nolimits}
+\_protected\_def\hom {\_mathop{\_rm hom}\_nolimits}
+\_protected\_def\det {\_mathop{\_rm det}}
+\_protected\_def\exp {\_mathop{\_rm exp}\_nolimits}
+\_protected\_def\Pr {\_mathop{\_rm Pr}}
+\_protected\_def\gcd {\_mathop{\_rm gcd}}
+\_protected\_def\deg {\_mathop{\_rm deg}\_nolimits}
+
+   \_doc -----------------------------
+   These macros are defined similarly as in plain\TeX. Only internal macro 
+   names from plain\TeX/ with `@` character are re-written in more readable
+   form.\nl
+   \`\sp` is alternative for `^`. The \`\sb` alternative for `_` was defined
+   at the line 27 of the file `math-macros.opm`. 
+   \_cod -----------------------------
+
+\_let\_sp=^ \public \sp ;
+% \sb=_ , defined at beginning of this file
+
+\_def\_thinsk {\_mskip\_thinmuskip} 
+\_protected\_def\,{\_relax\_ifmmode \_thinsk \_else \_thinspace \_fi}
+\_protected\_def\>{\_mskip\_medmuskip}    \let\_medsk   = \>
+\_protected\_def\;{\_mskip\_thickmuskip}  \let\_thicksk = \;
+\_protected\_def\!{\_mskip-\_thinmuskip}  \let\_thinneg = \!
+%\_def\*{\discretionary{\thinspace\the\textfont2\char2}{}{}} % obsolete
+
+   \_doc -----------------------------
+   Active \`\prime` character is defined here.
+   \_cod -----------------------------
+
+{\_catcode`\'=\active \_gdef'{^\_bgroup\_primes}} % primes dance
+\_def\_primes{\_prime\_isnextchar'{\_primesA}%
+                                  {\_isnextchar^{\_primesB}{\_egroup}}}
+\_def\_primesA #1{\_primes}
+\_def\_primesB #1#2{#2\egroup}
+\_private \prime ;
+
+   \_doc -----------------------------
+   \`\big`, \`\Big`, \`\bigg`, \`\Bigg`, \`\bigl`, \`\bigm`, \`\bigr`, \`\Bigl`, \`\Bigm`, 
+   \`\Bigr`, \`\biggl`, \`\biggm`, \`\biggr`, \`\Biggl`, \`\Biggm`, \`\Bigg`, \`\Biggr`
+   are based on the \`\_scalebig` macro because we need the dependency on
+   the various sizes of the fonts.
+   \_cod -----------------------------
+
+%{\catcode`\^^Z=\active \gdef^^Z{\not=}} % ^^Z is like \ne in math %obsolete
+
+\_def\_scalebig#1#2{{\_left#1\_vbox to#2\_fontdimen6\_textfont1{}%
+                     \_kern-\_nulldelimiterspace\_right.}}
+\_protected\_def\_big#1{\_scalebig{#1}{.85}}  
+\_protected\_def\_Big#1{\_scalebig{#1}{1.15}} 
+\_protected\_def\_bigg#1{\_scalebig{#1}{1.45}}
+\_protected\_def\_Bigg#1{\_scalebig{#1}{1.75}}
+\_public \big \Big \bigg \Bigg ;
+
+\_protected\_def\_bigl{\_mathopen\_big}
+\_protected\_def\_bigm{\_mathrel\_big}
+\_protected\_def\_bigr{\_mathclose\_big}
+\_protected\_def\_Bigl{\_mathopen\_Big}
+\_protected\_def\_Bigm{\_mathrel\_Big}
+\_protected\_def\_Bigr{\_mathclose\_Big}
+\_protected\_def\_biggl{\_mathopen\_bigg}
+\_protected\_def\_biggm{\_mathrel\_bigg}
+\_protected\_def\_biggr{\_mathclose\_bigg}
+\_protected\_def\_Biggl{\_mathopen\_Bigg}
+\_protected\_def\_Biggm{\_mathrel\_Bigg}
+\_protected\_def\_Biggr{\_mathclose\_Bigg}
+\_public \bigl \bigm \bigr \Bigl \Bigm \Bigr \biggl \biggm \biggr \Biggl \Biggm \Biggr ;
+
+   \_doc -----------------------------
+   Math relations defined by the \`\jointrel` plain \TeX/ macro: 
+   \_cod -----------------------------
+
+\_protected\_def\_joinrel{\_mathrel{\_mkern-2.5mu}}  % -3mu in plainTeX
+\_protected\_def\relbar{\_mathrel{\_smash-}} % \_smash, because - has the same height as +
+\_protected\_def\Relbar{\_mathrel=}
+\_mathchardef\lhook="312C 
+\_protected\_def\hookrightarrow{\_lhook\_joinrel\_rightarrow}
+\_mathchardef\rhook="312D 
+\_protected\_def\hookleftarrow{\_leftarrow\_joinrel\_rhook} 
+\_protected\_def\bowtie{\_mathrel\_triangleright\_joinrel\_mathrel\_triangleleft}
+\_protected\_def\models{\_mathrel|\_joinrel=}
+\_protected\_def\Longrightarrow{\_Relbar\_joinrel\_Rightarrow} 
+\_protected\_def\longrightarrow{\_relbar\_joinrel\_rightarrow} 
+\_protected\_def\longleftarrow{\_leftarrow\_joinrel\_relbar}  
+\_protected\_def\Longleftarrow{\_Leftarrow\_joinrel\_Relbar} 
+\_protected\_def\longmapsto{\_mapstochar\_longrightarrow}
+\_protected\_def\longleftrightarrow{\_leftarrow\_joinrel\_rightarrow}
+\_protected\_def\Longleftrightarrow{\_Leftarrow\_joinrel\_Rightarrow}
+\_protected\_def\iff{\_thicksk\_Longleftrightarrow\_thicksk} 
+\_private \lhook \rightarrow \leftarrow \rhook \triangleright \triangleleft
+   \Relbar \Rightarrow \relbar \rightarrow \Leftarrow \mapstochar
+   \longrightarrow \Longleftrightarrow ;
+\_public \joinrel ;
+
+   \_doc -----------------------------
+   \`\ldots`, \`\cdots`,  \`\vdots`, \`\ddots` from plain \TeX/
+   \_cod -----------------------------
+
+\_mathchardef\_ldotp="613A % ldot as a punctuation mark
+\_mathchardef\_cdotp="6201 % cdot as a punctuation mark
+\_mathchardef\_colon="603A % colon as a punctuation mark
+\_public \ldotp \cdotp \colon ;
+
+\_protected\_def\_ldots{\_mathinner{\_ldotp\_ldotp\_ldotp}}
+\_protected\_def\_cdots{\_mathinner{\_cdotp\_cdotp\_cdotp}}
+\_protected\_def\_vdots{\_vbox{\_baselineskip=.4em \_lineskiplimit=0pt
+    \_kern.6em \_hbox{.}\_hbox{.}\_hbox{.}}}
+\_protected\_def\_ddots{\_mathinner{% 
+    \_mkern1mu\_raise.7em\_vbox{\_kern.7em\_hbox{.}}\_mkern2mu
+    \_raise.4em\_hbox{.}\_mkern2mu\_raise.1em\_hbox{.}\_mkern1mu}}
+
+\_public \ldots \cdots \vdots \ddots ;
+
+   \_doc -----------------------------
+   Math accents (encoding dependent declarations).
+   \_cod -----------------------------
+
+\_protected\_def\acute{\_mathaccent"7013 }
+\_protected\_def\grave{\_mathaccent"7012 }
+\_protected\_def\ddot{\_mathaccent"707F }
+\_protected\_def\tilde{\_mathaccent"707E }
+\_protected\_def\bar{\_mathaccent"7016 }
+\_protected\_def\breve{\_mathaccent"7015 }
+\_protected\_def\check{\_mathaccent"7014 }
+\_protected\_def\hat{\_mathaccent"705E }
+\_protected\_def\vec{\_mathaccent"017E }
+\_protected\_def\dot{\_mathaccent"705F }
+\_protected\_def\widetilde{\_mathaccent"0365 }
+\_protected\_def\widehat{\_mathaccent"0362 }
+
+   \_doc -----------------------------
+   \`\overrightarrow`, \`\overleftarrow`, \`\overbrace`, \`\underbrace`, \`\skew` macros.
+   \_cod -----------------------------
+
+\_def\_math{\_mathsurround0pt }
+\_protected\_def\_overrightarrow #1{\_vbox{\_math\_ialign{##\_crcr
+      \_rightarrowfill\_crcr\_noalign{\_kern-.1em \_nointerlineskip}
+      $\_hfil\_displaystyle{#1}\_hfil$\_crcr}}}
+\_protected\_def\_overleftarrow #1{\_vbox{\_math\_ialign{##\_crcr
+      \_leftarrowfill\_crcr\_noalign{\_kern-.1em \_nointerlineskip}
+      $\_hfil\_displaystyle{#1}\_hfil$\_crcr}}}
+\_protected\_def\_overbrace #1{\_mathop{%
+      \_vbox{\_math\_ialign{##\_crcr\_noalign{\_kern.3em}
+      \_downbracefill\_crcr\_noalign{\_kern.3em \_nointerlineskip}
+      $\_hfil\_displaystyle{#1}\_hfil$\_crcr}}}\_limits}
+\_protected\_def\_underbrace #1{\_mathop{\_vtop{\_math\_ialign{##\_crcr
+      $\_hfil\_displaystyle{#1}\_hfil$\_crcr\_noalign{\_kern.3em \_nointerlineskip}
+      \_upbracefill\_crcr\_noalign{\_kern.3em}}}}\_limits}
+\_protected\_def\_skew #1#2#3{{\_muskip0=#1mu\_divide\_muskip0=by2 \_mkern\_muskip0
+    #2{\_mkern-\_muskip0{#3}\_mkern\_muskip0}\_mkern-\_muskip0}{}}
+
+\_public \overrightarrow \overleftarrow \overbrace \underbrace \skew ;
+
+   \_doc -----------------------------
+   Macros based on `\delimiter`, `\*witdelims`  and `\radical` primitives.
+   \_cod -----------------------------
+
+\_protected\_def\lmoustache{\_delimiter"437A340 } % top from (, bottom from )
+\_protected\_def\rmoustache{\_delimiter"537B341 } % top from ), bottom from (
+\_protected\_def\lgroup{\_delimiter"462833A } % extensible ( with sharper tips
+\_protected\_def\rgroup{\_delimiter"562933B } % extensible ) with sharper tips
+\_protected\_def\arrowvert{\_delimiter"26A33C } % arrow without arrowheads
+\_protected\_def\Arrowvert{\_delimiter"26B33D } % double arrow without arrowheads
+\_protected\_def\bracevert{\_delimiter"77C33E } % the vertical bar that extends braces
+\_protected\_def\Vert{\_delimiter"26B30D } \_let\|=\_Vert
+\_protected\_def\vert{\_delimiter"26A30C }
+\_protected\_def\uparrow{\_delimiter"3222378 }
+\_protected\_def\downarrow{\_delimiter"3223379 }
+\_protected\_def\updownarrow{\_delimiter"326C33F }
+\_protected\_def\Uparrow{\_delimiter"322A37E }
+\_protected\_def\Downarrow{\_delimiter"322B37F }
+\_protected\_def\Updownarrow{\_delimiter"326D377 }
+\_protected\_def\backslash{\_delimiter"26E30F } % for double coset G\_backslash H
+\_protected\_def\rangle{\_delimiter"526930B }
+\_protected\_def\langle{\_delimiter"426830A }
+\_protected\_def\rbrace{\_delimiter"5267309 } \_let\}=\rbrace \_let\_rbrace=\rbrace
+\_protected\_def\lbrace{\_delimiter"4266308 } \_let\{=\lbrace \_let\_lbrace=\lbrace
+\_protected\_def\rceil{\_delimiter"5265307 }
+\_protected\_def\lceil{\_delimiter"4264306 }
+\_protected\_def\rfloor{\_delimiter"5263305 }
+\_protected\_def\lfloor{\_delimiter"4262304 }
+
+\_protected\_def\choose{\_atopwithdelims()}
+\_protected\_def\brack{\_atopwithdelims[]}
+\_protected\_def\brace{\_atopwithdelims\_lbrace\_rbrace}
+
+\_protected\_def\_sqrt{\_radical"270370 }  \_public \sqrt ;
+
+   \_doc -----------------------------
+   \`\mathpalette`, \`\vphantom`, \`\hphantom`, \`\phantom`, \`\mathstrut`, and
+   \`\smash` macros from plain \TeX.
+   \_cod -----------------------------
+
+\_def\_mathpalette#1#2{\_mathchoice{#1\_displaystyle{#2}}%
+  {#1\_textstyle{#2}}{#1\_scriptstyle{#2}}{#1\_scriptscriptstyle{#2}}}
+\_newbox\_rootbox
+\_protected\_def\root#1\of{\_setbox\_rootbox
+  \_hbox{$\_math\_scriptscriptstyle{#1}$}\_mathpalette\_rootA}
+\_def\_rootA#1#2{\_setbox0=\_hbox{$\_math#1\_sqrt{#2}$}\_dimen0=\_ht0
+  \_advance\_dimen0by-\_dp0
+  \_mkern5mu\_raise.6\_dimen0\_copy\_rootbox \_mkern-10mu\_box0 }
+\_newifi\_ifvp \_newifi\_ifhp
+\_protected\_def\_vphantom{\_vptrue\_hpfalse\_phant}
+\_protected\_def\_hphantom{\_vpfalse\_hptrue\_phant}
+\_protected\_def\_phantom{\_vptrue\_hptrue\_phant}
+\_def\_phant{\_ifmmode\_def\_next{\_mathpalette\_mathphant}%
+  \_else\_let\_next=\_makephant\_fi\_next}
+\_def\_makephant#1{\_setbox0\_hbox{#1}\_finphant}
+\_def\_mathphant#1#2{\_setbox0=\_hbox{$\_math#1{#2}$}\_finphant}
+\_def\_finphant{\_setbox2=\_null
+  \_ifvp \_ht2=\_ht0 \_dp2=\_dp0 \_fi
+  \_ifhp \_wd2=\_wd0 \_fi \_box2 }
+\_def\_mathstrut{\_vphantom(}
+\_protected\_def\_smash{\_relax % \_relax, in case this comes first in \halign
+  \_ifmmode\_def\_next{\_mathpalette\_mathsmash}\_else\_let\_next\_makesmash
+  \_fi\_next}
+\_def\_makesmash#1{\_setbox0=\_hbox{#1}\_finsmash}
+\_def\_mathsmash#1#2{\_setbox0=\_hbox{$\_math#1{#2}$}\_finsmash}
+\_def\_finsmash{\_ht0=0pt \_dp0=0pt \_box0 }
+\_public \mathpalette \vphantom \hphantom \phantom \mathstrut \smash ;
+
+   \_doc -----------------------------
+   \`\cong`, \`\notin`, \`\rightleftharpoons`, \`\buildrel`, \`\doteq`, \`\bmod`
+   and \`\pmod` macros from plain \TeX/.
+   \_cod -----------------------------
+
+\_protected\_def\_cong{\_mathrel{\_mathpalette\_overeq\_sim}} % congruence sign
+\_def\_overeq#1#2{\_lower.05em\_vbox{\_lineskiplimit\_maxdimen\_lineskip=-.05em
+    \_ialign{$\_math#1\_hfil##\_hfil$\_crcr#2\_crcr=\_crcr}}}
+\_protected\_def\_notin{\_mathrel{\_mathpalette\_cancel\_in}}
+\_def\_cancel#1#2{\_math\_ooalign{$\_hfil#1\_mkern1mu/\_hfil$\_crcr$#1#2$}}
+\_protected\_def\_rightleftharpoons{\_mathrel{\_mathpalette\_rlhp{}}}
+\_def\_rlhp#1{\_vcenter{\_math\_hbox{\_ooalign{\_raise.2em
+          \_hbox{$#1\_rightharpoonup$}\_crcr
+        $#1\_leftharpoondown$}}}}
+\_protected\_def\_buildrel#1\over#2{\_mathrel{\_mathop{\_kern0pt #2}\_limits^{#1}}}
+\_protected\_def\_doteq{\_buildrel\_textstyle.\over=}
+\_public \cong \notin \rightleftharpoons \buildrel \doteq ;
+
+\_protected\_def\_bmod{\_nonscript\_mskip-\_medmuskip\_mkern5mu
+  \_mathbin{\_rm mod}\_penalty900\_mkern5mu\_nonscript\_mskip-\_medmuskip}
+\_protected\_def\_pmod#1{\_allowbreak\_mkern18mu({\_rm mod}\_thinsk\_thinsk#1)}
+\_public \bmod \pmod ;
+
+   \_doc -----------------------------
+   \`\cases`, \`\matrix`, \`\pmatrix` and \`\bordermatrix` macros from plain \TeX/
+   \_cod -----------------------------
+
+\_protected\_def\_cases#1{\_left\{\_thinsk\_vcenter{\_normalbaselines\_math
+    \_ialign{$##\_hfil$&\_quad##\_hfil\_crcr#1\_crcr}}\_right.}
+\_protected\_def\_matrix#1{\_null\_thinsk\_vcenter{\_normalbaselines\_math
+    \_ialign{\_hfil$##$\_hfil&&\_quad\_hfil$##$\_hfil\_crcr
+      \_mathstrut\_crcr\_noalign{\_kern-\_baselineskip}
+      #1\_crcr\_mathstrut\_crcr\_noalign{\_kern-\_baselineskip}}}\_thinsk}
+\_protected\_def\_pmatrix#1{\_left(\_matrix{#1}\_right)}
+\_newdimen\_ptrenwd
+\_ptrenwd=0.875\_fontdimen6\_textfont1 % width of the big left (
+\_protected\_def\_bordermatrix#1{\_begingroup \_math
+  \_setbox0=\_vbox{\_def\_cr{\_crcr\_noalign{\_kern.2em\_global\_let\_cr\_endline}}%
+    \_ialign{$##$\_hfil\_kern.2em\_kern\_ptrenwd&\_thinspace\_hfil$##$\_hfil
+      &&\_quad\_hfil$##$\_hfil\_crcr
+      \_omit\_strut\_hfil\_crcr\_noalign{\_kern-\_baselineskip}%
+      #1\_crcr\_omit\_strut\_cr}}%
+  \_setbox2=\_vbox{\_unvcopy0 \_global\_setbox1=\_lastbox}%
+  \_setbox2=\_hbox{\_unhbox1 \_unskip\_global\_setbox1=\_lastbox}%
+  \_setbox2=\_hbox{$\_kern\_wd1 \_kern-\_ptrenwd\_left(\_kern-\_wd1
+    \_global\_setbox1=\_vbox{\_box1 \_kern.2em}%
+    \_vcenter{\_kern-\_ht1 \_unvbox0 \_kern-\_baselineskip}\_thinsk\_right)$}%
+  \_null\_thicksk\_vbox{\_kern\_ht1 \_box2}\_endgroup}
+\_public \cases \matrix \pmatrix \bordermatrix ;
+
+   \_doc -----------------------------
+   \`\openup`, \`\eqalign`, \`\displaylines` and  \`\eqalignno` macros from
+   plain \TeX/.
+   \_cod -----------------------------
+
+\_def\_openup{\_afterassignment\_openupA\_dimen0=}
+\_def\_openupA{\_advance\_lineskip by\_dimen0
+  \_advance\_baselineskip by\_dimen0
+  \_advance\_lineskiplimit by\_dimen0 }
+\_def\_eqalign#1{\_null\_thinsk\_vcenter{\_openup\_jot\_math
+  \_ialign{\_strut\_hfil$\_displaystyle{##}$&$\_displaystyle{{}##}$\_hfil
+      \_crcr#1\_crcr}}\_thinsk}
+\_newifi\_ifdtop
+\_def\_display{\_global\_dtoptrue\_openup\_jot\_math
+  \_everycr{\_noalign{\_ifdtop \_global\_dtopfalse \_ifdim\_prevdepth>-1000pt
+      \_vskip-\_lineskiplimit \_vskip\_normallineskiplimit \_fi
+      \_else \_penalty\_interdisplaylinepenalty \_fi}}}
+\_def\_elign{\_tabskip=\_zoskip\_everycr{}} % restore inside \_display
+\_def\_displaylines#1{\_display \_tabskip=\_zoskip
+  \_halign{\_hbox to\_displaywidth{$\_elign\_hfil\_displaystyle##\_hfil$}\_crcr
+    #1\_crcr}}
+\_def\_eqalignno#1{\_display \_tabskip=\_centering
+  \_halign to\_displaywidth{\_hfil$\_elign\_displaystyle{##}$\_tabskip=\_zoskip
+    &$\_elign\_displaystyle{{}##}$\_hfil\_tabskip\_centering
+    &\_llap{$\_elign##$}\_tabskip\_zoskip\_crcr
+    #1\_crcr}}
+\_def\_leqalignno#1{\_display \_tabskip=\_centering
+  \_halign to\_displaywidth{\_hfil$\_elign\_displaystyle{##}$\_tabskip=\_zoskip
+    &$\_elign\_displaystyle{{}##}$\_hfil\_tabskip=\_centering
+    &\_kern-\_displaywidth\_rlap{$\_elign##$}\_tabskip\_displaywidth\_crcr
+    #1\_crcr}}
+\_public \openup \eqalign \displaylines \eqalignno ; 
+
+   \_doc -----------------------------
+   These macros are inspired from `ams-math.tex` file.
+   \maxlines=15
+   \_cod -----------------------------
+
+\_def\_amsafam{4} \_def\_amsbfam{5} 
+
+\_mathchardef \boxdot   "2\_amsafam 00
+\_mathchardef \boxplus   "2\_amsafam 01
+\_mathchardef \boxtimes   "2\_amsafam 02
+\_mathchardef \square   "0\_amsafam 03
+\_mathchardef \blacksquare   "0\_amsafam 04
+\_mathchardef \centerdot   "2\_amsafam 05
+\_mathchardef \lozenge   "0\_amsafam 06
+\_mathchardef \blacklozenge   "0\_amsafam 07
+\_mathchardef \circlearrowright   "3\_amsafam 08
+\_mathchardef \circlearrowleft   "3\_amsafam 09
+\_mathchardef \rightleftharpoons   "3\_amsafam 0A
+\_mathchardef \leftrightharpoons   "3\_amsafam 0B
+\_mathchardef \boxminus   "2\_amsafam 0C
+\_mathchardef \Vdash   "3\_amsafam 0D
+\_mathchardef \Vvdash   "3\_amsafam 0E
+\_mathchardef \vDash   "3\_amsafam 0F
+\_mathchardef \twoheadrightarrow   "3\_amsafam 10
+\_mathchardef \twoheadleftarrow   "3\_amsafam 11
+\_mathchardef \leftleftarrows   "3\_amsafam 12
+\_mathchardef \rightrightarrows   "3\_amsafam 13
+\_mathchardef \upuparrows   "3\_amsafam 14
+\_mathchardef \downdownarrows   "3\_amsafam 15
+\_mathchardef \upharpoonright   "3\_amsafam 16
+\_mathchardef \downharpoonright   "3\_amsafam 17
+\_mathchardef \upharpoonleft   "3\_amsafam 18
+\_mathchardef \downharpoonleft   "3\_amsafam 19
+\_mathchardef \rightarrowtail   "3\_amsafam 1A
+\_mathchardef \leftarrowtail   "3\_amsafam 1B
+\_mathchardef \leftrightarrows   "3\_amsafam 1C
+\_mathchardef \rightleftarrows   "3\_amsafam 1D
+\_mathchardef \Lsh   "3\_amsafam 1E
+\_mathchardef \Rsh   "3\_amsafam 1F
+\_mathchardef \rightsquigarrow   "3\_amsafam 20
+\_mathchardef \leftrightsquigarrow   "3\_amsafam 21
+\_mathchardef \looparrowleft   "3\_amsafam 22
+\_mathchardef \looparrowright   "3\_amsafam 23
+\_mathchardef \circeq   "3\_amsafam 24
+\_mathchardef \succsim   "3\_amsafam 25
+\_mathchardef \gtrsim   "3\_amsafam 26
+\_mathchardef \gtrapprox   "3\_amsafam 27
+\_mathchardef \multimap   "3\_amsafam 28
+\_mathchardef \therefore   "3\_amsafam 29
+\_mathchardef \because   "3\_amsafam 2A
+\_mathchardef \doteqdot   "3\_amsafam 2B
+\_mathchardef \triangleq   "3\_amsafam 2C
+\_mathchardef \precsim   "3\_amsafam 2D
+\_mathchardef \lesssim   "3\_amsafam 2E
+\_mathchardef \lessapprox   "3\_amsafam 2F
+\_mathchardef \eqslantless   "3\_amsafam 30
+\_mathchardef \eqslantgtr   "3\_amsafam 31
+\_mathchardef \curlyeqprec   "3\_amsafam 32
+\_mathchardef \curlyeqsucc   "3\_amsafam 33
+\_mathchardef \preccurlyeq   "3\_amsafam 34
+\_mathchardef \leqq   "3\_amsafam 35
+\_mathchardef \leqslant   "3\_amsafam 36
+\_mathchardef \lessgtr   "3\_amsafam 37
+\_mathchardef \backprime   "0\_amsafam 38
+\_mathchardef \risingdotseq   "3\_amsafam 3A
+\_mathchardef \fallingdotseq   "3\_amsafam 3B
+\_mathchardef \succcurlyeq   "3\_amsafam 3C
+\_mathchardef \geqq   "3\_amsafam 3D
+\_mathchardef \geqslant   "3\_amsafam 3E
+\_mathchardef \gtrless   "3\_amsafam 3F
+\_mathchardef \sqsubset   "3\_amsafam 40
+\_mathchardef \sqsupset   "3\_amsafam 41
+\_mathchardef \vartriangleright   "3\_amsafam 42
+\_mathchardef \vartriangleleft   "3\_amsafam 43
+\_mathchardef \trianglerighteq   "3\_amsafam 44
+\_mathchardef \trianglelefteq   "3\_amsafam 45
+\_mathchardef \bigstar   "0\_amsafam 46
+\_mathchardef \between   "3\_amsafam 47
+\_mathchardef \blacktriangledown   "0\_amsafam 48
+\_mathchardef \blacktriangleright   "3\_amsafam 49
+\_mathchardef \blacktriangleleft   "3\_amsafam 4A
+\_mathchardef \vartriangle   "3\_amsafam 4D
+\_mathchardef \blacktriangle   "0\_amsafam 4E
+\_mathchardef \triangledown   "0\_amsafam 4F
+\_mathchardef \eqcirc   "3\_amsafam 50
+\_mathchardef \lesseqgtr   "3\_amsafam 51
+\_mathchardef \gtreqless   "3\_amsafam 52
+\_mathchardef \lesseqqgtr   "3\_amsafam 53
+\_mathchardef \gtreqqless   "3\_amsafam 54
+\_mathchardef \Rrightarrow   "3\_amsafam 56
+\_mathchardef \Lleftarrow   "3\_amsafam 57
+\_mathchardef \veebar   "2\_amsafam 59
+\_mathchardef \barwedge   "2\_amsafam 5A
+\_mathchardef \doublebarwedge   "2\_amsafam 5B
+\_mathchardef \angle   "0\_amsafam 5C
+\_mathchardef \measuredangle   "0\_amsafam 5D
+\_mathchardef \sphericalangle   "0\_amsafam 5E
+\_mathchardef \varpropto   "3\_amsafam 5F
+\_mathchardef \smallsmile   "3\_amsafam 60
+\_mathchardef \smallfrown   "3\_amsafam 61
+\_mathchardef \Subset   "3\_amsafam 62
+\_mathchardef \Supset   "3\_amsafam 63
+\_mathchardef \Cup   "2\_amsafam 64
+\_mathchardef \Cap   "2\_amsafam 65
+\_mathchardef \curlywedge   "2\_amsafam 66
+\_mathchardef \curlyvee   "2\_amsafam 67
+\_mathchardef \leftthreetimes   "2\_amsafam 68
+\_mathchardef \rightthreetimes   "2\_amsafam 69
+\_mathchardef \subseteqq   "3\_amsafam 6A
+\_mathchardef \supseteqq   "3\_amsafam 6B
+\_mathchardef \bumpeq   "3\_amsafam 6C
+\_mathchardef \Bumpeq   "3\_amsafam 6D
+\_mathchardef \lll   "3\_amsafam 6E
+\_mathchardef \ggg   "3\_amsafam 6F
+\_protected\_def \ulcorner {\_delimiter"4\_amsafam 70\_amsafam 70 }
+\_protected\_def \urcorner {\_delimiter"5\_amsafam 71\_amsafam 71 }
+\_mathchardef \circledS   "0\_amsafam 73
+\_mathchardef \pitchfork   "3\_amsafam 74
+\_mathchardef \dotplus   "2\_amsafam 75
+\_mathchardef \backsim   "3\_amsafam 76
+\_mathchardef \backsimeq   "3\_amsafam 77
+\_protected\_def \llcorner {\_delimiter"4\_amsafam 78\_amsafam 78 }
+\_protected\_def \lrcorner {\_delimiter"5\_amsafam 79\_amsafam 79 }
+\_mathchardef \complement   "0\_amsafam 7B
+\_mathchardef \intercal   "2\_amsafam 7C
+\_mathchardef \circledcirc   "2\_amsafam 7D
+\_mathchardef \circledast   "2\_amsafam 7E
+\_mathchardef \circleddash   "2\_amsafam 7F
+\_mathchardef \rhd   "2\_amsafam 42
+\_mathchardef \lhd   "2\_amsafam 43
+\_mathchardef \unrhd   "2\_amsafam 44
+\_mathchardef \unlhd   "2\_amsafam 45
+
+   \_let\restriction\upharpoonright
+   \_let\Doteq\doteqdot
+   \_let\doublecup\Cup
+   \_let\doublecap\Cap
+   \_let\llless\lll
+   \_let\gggtr\ggg
+   \_let\Box=\square % LaTeX symbol
+   \_let\Box=\square % LaTeX symbol
+
+\_mathchardef \lvertneqq   "3\_amsbfam 00
+\_mathchardef \gvertneqq   "3\_amsbfam 01
+\_mathchardef \nleq   "3\_amsbfam 02
+\_mathchardef \ngeq   "3\_amsbfam 03
+\_mathchardef \nless   "3\_amsbfam 04
+\_mathchardef \ngtr   "3\_amsbfam 05
+\_mathchardef \nprec   "3\_amsbfam 06
+\_mathchardef \nsucc   "3\_amsbfam 07
+\_mathchardef \lneqq   "3\_amsbfam 08
+\_mathchardef \gneqq   "3\_amsbfam 09
+\_mathchardef \nleqslant   "3\_amsbfam 0A
+\_mathchardef \ngeqslant   "3\_amsbfam 0B
+\_mathchardef \lneq   "3\_amsbfam 0C
+\_mathchardef \gneq   "3\_amsbfam 0D
+\_mathchardef \npreceq   "3\_amsbfam 0E
+\_mathchardef \nsucceq   "3\_amsbfam 0F
+\_mathchardef \precnsim   "3\_amsbfam 10
+\_mathchardef \succnsim   "3\_amsbfam 11
+\_mathchardef \lnsim   "3\_amsbfam 12
+\_mathchardef \gnsim   "3\_amsbfam 13
+\_mathchardef \nleqq   "3\_amsbfam 14
+\_mathchardef \ngeqq   "3\_amsbfam 15
+\_mathchardef \precneqq   "3\_amsbfam 16
+\_mathchardef \succneqq   "3\_amsbfam 17
+\_mathchardef \precnapprox   "3\_amsbfam 18
+\_mathchardef \succnapprox   "3\_amsbfam 19
+\_mathchardef \lnapprox   "3\_amsbfam 1A
+\_mathchardef \gnapprox   "3\_amsbfam 1B
+\_mathchardef \nsim   "3\_amsbfam 1C
+\_mathchardef \ncong   "3\_amsbfam 1D
+\_mathchardef \diagup   "0\_amsbfam 1E
+\_mathchardef \diagdown   "0\_amsbfam 1F
+\_mathchardef \varsubsetneq   "3\_amsbfam 20
+\_mathchardef \varsupsetneq   "3\_amsbfam 21
+\_mathchardef \nsubseteqq   "3\_amsbfam 22
+\_mathchardef \nsupseteqq   "3\_amsbfam 23
+\_mathchardef \subsetneqq   "3\_amsbfam 24
+\_mathchardef \supsetneqq   "3\_amsbfam 25
+\_mathchardef \varsubsetneqq   "3\_amsbfam 26
+\_mathchardef \varsupsetneqq   "3\_amsbfam 27
+\_mathchardef \subsetneq   "3\_amsbfam 28
+\_mathchardef \supsetneq   "3\_amsbfam 29
+\_mathchardef \nsubseteq   "3\_amsbfam 2A
+\_mathchardef \nsupseteq   "3\_amsbfam 2B
+\_mathchardef \nparallel   "3\_amsbfam 2C
+\_mathchardef \nmid   "3\_amsbfam 2D
+\_mathchardef \nshortmid   "3\_amsbfam 2E
+\_mathchardef \nshortparallel   "3\_amsbfam 2F
+\_mathchardef \nvdash   "3\_amsbfam 30
+\_mathchardef \nVdash   "3\_amsbfam 31
+\_mathchardef \nvDash   "3\_amsbfam 32
+\_mathchardef \nVDash   "3\_amsbfam 33
+\_mathchardef \ntrianglerighteq   "3\_amsbfam 34
+\_mathchardef \ntrianglelefteq   "3\_amsbfam 35
+\_mathchardef \ntriangleleft   "3\_amsbfam 36
+\_mathchardef \ntriangleright   "3\_amsbfam 37
+\_mathchardef \nleftarrow   "3\_amsbfam 38
+\_mathchardef \nrightarrow   "3\_amsbfam 39
+\_mathchardef \nLeftarrow   "3\_amsbfam 3A
+\_mathchardef \nRightarrow   "3\_amsbfam 3B
+\_mathchardef \nLeftrightarrow   "3\_amsbfam 3C
+\_mathchardef \nleftrightarrow   "3\_amsbfam 3D
+\_mathchardef \divideontimes   "2\_amsbfam 3E
+\_mathchardef \varnothing   "0\_amsbfam 3F
+\_mathchardef \nexists   "0\_amsbfam 40
+\_mathchardef \Finv   "0\_amsbfam 60
+\_mathchardef \Game   "0\_amsbfam 61
+\_mathchardef \mho   "0\_amsbfam 66
+\_mathchardef \eth   "0\_amsbfam 67
+\_mathchardef \eqsim   "3\_amsbfam 68
+\_mathchardef \beth   "0\_amsbfam 69
+\_mathchardef \gimel   "0\_amsbfam 6A
+\_mathchardef \daleth   "0\_amsbfam 6B
+\_mathchardef \lessdot   "2\_amsbfam 6C
+\_mathchardef \gtrdot   "2\_amsbfam 6D
+\_mathchardef \ltimes   "2\_amsbfam 6E
+\_mathchardef \rtimes   "2\_amsbfam 6F
+\_mathchardef \shortmid   "3\_amsbfam 70
+\_mathchardef \shortparallel   "3\_amsbfam 71
+\_mathchardef \smallsetminus   "2\_amsbfam 72
+\_mathchardef \thicksim   "3\_amsbfam 73
+\_mathchardef \thickapprox   "3\_amsbfam 74
+\_mathchardef \approxeq   "3\_amsbfam 75
+\_mathchardef \precapprox   "3\_amsbfam 76
+\_mathchardef \succapprox   "3\_amsbfam 77
+\_mathchardef \curvearrowleft   "3\_amsbfam 78
+\_mathchardef \curvearrowright   "3\_amsbfam 79
+\_mathchardef \digamma   "0\_amsbfam 7A
+\_mathchardef \varkappa   "0\_amsbfam 7B
+\_mathchardef \Bbbk   "0\_amsbfam 7C
+\_mathchardef \hslash   "0\_amsbfam 7D
+\_mathchardef \hbar   "0\_amsbfam 7E
+\_mathchardef \backepsilon   "3\_amsbfam 7F
+
+\_let\circledplus\oplus
+\_let\circledminus\ominus
+\_let\circledtimes\otimes
+\_let\circledslash\oslash
+\_let\circleddot\odot
+
+   \_doc -----------------------------
+   The \`\not` macro is re-defined to be mote inteligent than in plain
+   \TeX/. The macro follows this rule:
+   \begtt
+   \not< becomes \_nless
+   \not> becomes \_ngtr
+   if \_notXXX is defined, \not\XXX becomes \_notXXX;
+   if \_nXXX is defined, \not\XXX becomes \_nXXX;
+   otherwise, \not\XXX is done in the usual way.
+   \endtt
+   \_cod -----------------------------
+
+\_mathchardef \_notchar  "3236
+
+\_protected\_def \_not#1{%
+  \_ifx #1<\_nless \_else
+  \_ifx #1>\_ngtr \_else
+  \_edef\_tmpn{\_csstring#1}%
+  \_ifcsname _not\_tmpn\_endcsname \_csname _not\_tmpn\_endcsname
+  \_else \_ifcsname _n\_tmpn\_endcsname \_csname _n\_tmpn\_endcsname
+  \_else \_mathrel{\_mathord{\_notchar}\_mathord{#1}}%
+  \_fi \_fi \_fi \_fi}
+\_private 
+  \nleq \ngeq \nless \ngtr \nprec \nsucc \nleqslant \ngeqslant \npreceq
+  \nsucceq \nleqq \ngeqq \nsim \ncong \nsubseteqq \nsupseteqq \nsubseteq
+  \nsupseteq \nparallel \nmid \nshortmid \nshortparallel \nvdash \nVdash
+  \nvDash \nVDash \ntrianglerighteq \ntrianglelefteq \ntriangleleft
+  \ntriangleright \nleftarrow \nrightarrow \nLeftarrow \nRightarrow
+  \nLeftrightarrow \nleftrightarrow \nexists ;
+\_public \not ;
+
+   \_doc -----------------------------
+   \`\mathstyles``{<math list>}`
+   behaves like `{<math list>}`, but you can use following commands in the
+   `<math list>`:
+   \begitems
+   * \`\currstyle` which expands to `\displaystyle`, `\textstyle`,
+     `\scriptstyle` or `\scriptscriptstyle` depending on the current math style
+     when \^`\mathstyles` was opened. 
+   * `\dobystyle{<D>}{<T>}{<S>}{<SS>}` is expandable macro. It expands to
+     `<D>`, `<T>`, `<S>` or `<SS>` depending on the current math style
+     when \^`\mathstyles` was opened.
+   * The value of the \`\stylenum` is 0, 1, 2 or 3 
+     depending on the current math style when \^`\mathstyles` was opened.  
+   \enditems
+   Example of usage of \^`\mathstyles`: 
+   `\def\mathframe#1{\mathstyles{\frame{$\currstyle#1$}}}`.
+   \_cod -----------------------------   
+
+\_newcount\_stylenum
+\_def\_mathstyles#1{{\_mathchoice{\_stylenum0 #1}{\_stylenum1 #1}%
+                                {\_stylenum2 #1}{\_stylenum1 #1}}}
+\_def\_dobystyle#1#2#3#4{\_ifcase\_stylenum#1\_or#2\_or#3\_or#4\_fi}
+\_def\_currstyle{\dobystyle\_displaystyle\_textstyle\_scriptstyle\_scriptscriptstyle}
+\_public \mathstyles \dobystyle \currstyle \stylenum ;
+
+   \_doc -----------------------------
+   The \`\mathbox``{<text>}` macro is copied from OPmac trick 078.
+   It behaves like `\hbox{<text>}` but the `<text>` is scaled to smaller
+   size if it is used in scriptstye or scriptscript style.
+   \_cod -----------------------------
+
+\_def\_mathbox#1{{\_mathstyles{\_hbox{%
+   \_ifnum\_stylenum<2 \_everymath{\_currstyle}%
+   \_else \_typoscale[\_dobystyle{}{}{700}{500}/]\_fi #1}}}%
+}
+\_public \mathbox ;
+
+\_endcode %---------------------------------------------------
+
+2020-04-27 \mathstyles introduced
+2020-03-14 implemented


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/math-macros.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/math-preload.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/math-preload.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/math-preload.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,221 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \normalmath {Math fonts CM + AMS preloaded <2020-05-06>} % preloaded in format 
+
+  \_doc ------------------------------
+  We have two math macros \`\normalmath` for normal shape of all math
+  symbols and \`\boldmath` for bold shape of all math symbos. The second one
+  can be used in bold titles, for example.
+  These macros load all fonts from all given math font families.
+  \_cod ------------------------------
+
+\_def\_normalmath{%
+  \_loadmathfamily 0 cmr  % CM Roman
+  \_loadmathfamily 1 cmmi % CM Math Italic
+  \_loadmathfamily 2 cmsy % CM Standard symbols
+  \_loadmathfamily 3 cmex % CM extra symbols   
+  \_loadmathfamily 4 msam % AMS symbols A
+  \_loadmathfamily 5 msbm % AMS symbols B
+  \_loadmathfamily 6 rsfs % script
+  \_loadmathfamily 7 eufm % fractur
+  \_loadmathfamily 8 bfsans % sans serif bold
+  \_loadmathfamily 9 bisans % sans serif bold slanted (for vectors)
+%  \_setmathfamily 10 \_tentt
+%  \_setmathfamily 11 \_tenit
+  \_setmathdimens
+}
+\_def\_boldmath{%
+  \_loadmathfamily 0 cmbx  % CM Roman Bold Extended
+  \_loadmathfamily 1 cmmib % CM Math Italic Bold
+  \_loadmathfamily 2 cmbsy % CM Standard symbols Bold
+  \_loadmathfamily 3 cmexb % CM extra symbols Bold   
+  \_loadmathfamily 4 msam  % AMS symbols A (bold not available?)
+  \_loadmathfamily 5 msbm  % AMS symbols B (bold not available?)
+  \_loadmathfamily 6 rsfs  % script (bold not available?)
+  \_loadmathfamily 7 eufb  % fractur bold
+  \_loadmathfamily 8 bbfsans % sans serif extra bold
+  \_loadmathfamily 9 bbisans % sans serif extra bold slanted (for vectors)
+%  \_setmathfamily 10 \_tentt
+%  \_setmathfamily 11 \_tenbi
+  \_setmathdimens
+}
+\_count18=9   % families declared by \newfam are 12, 13, ...
+
+\_def \normalmath {\_normalmath}  \_def\boldmath {\_boldmath}
+
+   \_doc -----------------------------
+   The classical math family selectors 
+   \`\mit`, \^`\cal`, \^`\bbchar`, \^`\frak` and \^`\script`
+   are defined here. 
+   The \^`\rm`, \^`\bf`, \^`\it`, \^`\bi` and \^`\tt` does two things: 
+   they are variant selectors for text fonts and math family selectors for math fonts. 
+   The idea was adapted from plain \TeX/.\nl
+   These macros are redefined when `unimat-codes.opm` is loaded,
+   see the section~\ref[unimath-codes].
+   \_cod -----------------------------
+
+\_chardef\_bffam = 8
+\_chardef\_bifam = 9
+%\_chardef\_ttfam = 10
+%\_chardef\_itfam = 11
+
+\_protected\_def \_rm {\_tryloadrm \_tenrm \_fam0 } 
+\_protected\_def \_bf {\_tryloadbf \_tenbf \_fam\_bffam}
+\_protected\_def \_it {\_tryloadit \_tenit \_fam1 }
+\_protected\_def \_bi {\_tryloadbi \_tenbi \_fam\_bifam}  
+\_protected\_def \_tt {\_tryloadtt \_tentt}
+
+\_protected\_def \_mit    {\_fam1 }
+\_protected\_def \_cal    {\_fam2 }
+\_protected\_def \_bbchar {\_fam5 }  % double stroked letters
+\_protected\_def \_frak   {\_fam7 }  % fraktur
+\_protected\_def \_script {\_fam6 }  % more extensive script than \cal
+
+\_public \rm \bf \it \bi \tt \mit \cal \bbchar \frak \script ;
+
+   \_doc -----------------------------
+   The optical sizes of Computer Modern fonts, AMS and other fonts
+   are declared here.
+   \_cod -----------------------------
+
+%% CM math fonts, optical sizes:
+
+\_regtfm cmmi 0 cmmi5 5.5 cmmi6 6.5 cmmi7 7.5 cmmi8 8.5 cmmi9 9.5
+                cmmi10 11.1 cmmi12 *
+\_regtfm cmmib 0 cmmib5 5.5 cmmib6 6.5 cmmib7 7.5 cmmib8 8.5 cmmib9 9.5 cmmib10 *
+\_regtfm cmtex 0 cstex8 8.5 cstex9 9.5 cstex10 *
+\_regtfm cmsy 0 cmsy5 5.5 cmsy6 6.5 cmsy7 7.5 cmsy8 8.5 cmsy9 9.5 cmsy10 *
+\_regtfm cmbsy 0 cmbsy5 5.5 cmbsy6 6.5 cmbsy7 7.5 cmbsy8 8.5 cmbsy9 9.5 cmbsy10 *  
+\_regtfm cmex 0 cmex7 7.5 cmex8 8.5 cmex9 9.5 cmex10 *
+\_regtfm cmexb 0 cmexb10 *
+
+\_regtfm cmr  0 cmr5 5.5 cmr6 6.5 cmr7 7.5 cmr8 8.5 cmr9 9.5
+                cmr10 11.1 cmr12 15 cmr17 *
+\_regtfm cmbx 0 cmbx5 5.5 cmbx6 6.5 cmbx7 7.5 cmbx8 8.5 cmbx9 9.5 
+                cmbx10 11.1 cmbx12 *
+\_regtfm cmti 0 cmti7 7.5 cmti8 8.5 cmti9 9.5 cmti10 11.1 cmti12 *
+\_regtfm cmtt 0 cmtt10 11.1 cmtt12 *
+
+%% AMS math fonts, optical sizes:
+
+\_regtfm msam 0 msam5 5.5 msam6 6.5 msam7 7.5 msam8 8.5 msam9 9.5 msam10 *
+\_regtfm msbm 0 msbm5 5.5 msbm6 6.5 msbm7 7.5 msbm8 8.5 msbm9 9.5 msbm10 *
+
+%% fraktur, rsfs, optical sizes:
+
+\_regtfm eufm 0 eufm5 5.5 eufm6 6.5 eufm7 7.5 eufm8 8.5 eufm9 9.5 eufm10 *
+\_regtfm eufb 0 eufb5 5.5 eufb6 6.5 eufb7 7.5 eufb8 8.5 eufb9 9.5 eufb10 *
+\_regtfm rsfs 0 rsfs5 6 rsfs7 8.5 rsfs10 *
+
+%% bf and bi sansserif math alternatives:
+
+\_regtfm bfsans 0 ecsx0500 5.5 ecsx0600 6.5 ecsx0700 7.5 ecsx0800 
+             8.5 ecsx0900 9.5 ecsx1000 11.1 ecsx1200 * 
+\_regtfm bisans 0 ecso0500 5.5 ecso0600 6.5 ecso0700 7.5 ecso0800 
+             8.5 ecso0900 9.5 ecso1000 11.1 ecso1200 * 
+\_regtfm bbfsans 0 ecsx0500 5.5 ecsx0600 6.5 ecsx0700 7.5 ecsx0800 
+             8.5 ecsx0900 9.5 ecsx1000 11.1 ecsx1200 * 
+\_regtfm bbisans 0 ecso0500 5.5 ecso0600 6.5 ecso0700 7.5 ecso0800 
+             8.5 ecso0900 9.5 ecso1000 11.1 ecso1200 * 
+
+   \_doc -----------------------------
+   \`\_loadmathfamily` `<number> <font>` loads one math family, i.\,e.\ 
+   the triple of fonts in the text size, script size and script-script size.
+   The `<font>` is `<font-id>` used in the `\_regtfm` parameter or
+   the real TFM name. The family is saved as `\fam<number>`.
+   \nl
+   \`\_setmathfamily` `<number> \<font-switch>` loads one math family
+   like `\_loadmathfamily` does it. But the second parameter is a
+   `\<font-switch>` declared previously by the `\font` primitive.
+   \nl
+   The font family is loaded at \`\_sizemtext`, \`\_sizemscript` and
+   \`\_sizemsscript` sizes. These sizes are set by the
+   \`\setmathsizes` `[<text-size>/<script-size>/<scriptscript-size>]` macro. 
+   These parameters are given in the \`\ptmunit` unit, it is set to 
+   1\`\ptunit` and it is set to 1\,pt by  defaut.
+   \nl
+   \`\_corrmsizes` should be used in the \^`\normalmath` and \^`\boldmath`
+   macros if you need a size correction when a selected math family is
+   loaded. It is similar as ex-height correction but for math fonts. 
+   \_cod -----------------------------
+
+\_def\_corrmsizes{\_ptmunit=1\_ptunit\_relax} % for corrections of sizes in diferent fomts
+
+\_def\_loadmathfamily #1 #2 {\_chardef\_tmp#1\_corrmsizes
+  \_edef\_optsizesave{\_the\_optsize}%
+  \_optsize=\_sizemtext    \_font\_mF=\_whichtfm{#2} at\_optsize \_textfont#1=\_mF
+  \_optsize=\_sizemscript  \_font\_mF=\_whichtfm{#2} at\_optsize \_scriptfont#1=\_mF
+  \_optsize=\_sizemsscript \_font\_mF=\_whichtfm{#2} at\_optsize \_scriptscriptfont#1=\_mF
+  \_optsize=\_optsizesave \_relax
+}
+\_def\_setmathfamily #1 #2{\_let\_mF=#2\_chardef\_tmp#1\_corrmsizes
+  \_edef\_optsizesave{\_the\_optsize}%
+  \_optsize=\_sizemtext    \_fontlet#2=#2 at\_optsize \_textfont#1=#2%
+  \_optsize=\_sizemscript  \_fontlet#2=#2 at\_optsize \_scriptfont#1=#2%
+  \_optsize=\_sizemsscript \_fontlet#2=#2 at\_optsize \_scriptscriptfont#1=#2%
+  \_optsize=\_optsizesave \_let#2=\_mF
+}
+\_def\_setmathsizes[#1/#2/#3]{%
+   \_def\_sizemtext{#1\_ptmunit}\_def\_sizemscript{#2\_ptmunit}% 
+   \_def\_sizemsscript{#3\_ptmunit}%
+}
+\_newdimen\_ptunit   \_ptunit=1pt
+\_newdimen\_ptmunit  \_ptmunit=1\_ptunit
+
+\_public \setmathsizes \ptunit \ptmunit ;
+
+   \_doc -----------------------------
+   The \`\_setmathdimens` macro is used in \^`\normalmath` or \^`\boldmath`
+   macros. It makes math dimensions dependent on the font size (plain \TeX/ sets
+   them only for 10\,pt typesetting). The `\skewchar` of some math families are
+   set here too.
+   \_cod -----------------------------
+
+\_def\_setmathdimens{% PlainTeX sets these dimens for 10pt size only:
+  \_delimitershortfall=0.5\_fontdimen6\_textfont3
+  \_nulldelimiterspace=0.12\_fontdimen6\_textfont3
+  \_scriptspace=0.05\_fontdimen6\_textfont3
+  \_skewchar\_textfont1=127 \_skewchar\_scriptfont1=127
+  \_skewchar\_scriptscriptfont1=127
+  \_skewchar\_textfont2=48  \_skewchar\_scriptfont2=48 
+  \_skewchar\_scriptscriptfont2=48 
+  \_skewchar\_textfont6=127 \_skewchar\_scriptfont6=127
+  \_skewchar\_scriptscriptfont6=127
+}
+
+   \_doc -----------------------------
+   Finaly, we preload a math fonts colleciton in [10/7/5] sizes 
+   when the format is generated. This is done when
+   `\_suppressfontnotfounderror=1` because we need not errors when format is
+   generated. Maybe there are not all fonts in the \TeX/ distribution
+   installed. 
+   \_cod -----------------------------
+
+\_suppressfontnotfounderror=1
+\_setmathsizes[10/7/5]\_normalmath
+\_suppressfontnotfounderror=0
+
+
+\_endcode %---------------------------------------------------
+
+The Computer Modern and AMS fonts are preloaded here in classical math-fam
+concept, where each math family includes three fonts with max 256 characters
+(typically 128 characters).
+
+On the other hand, when \^`\fontfam` macro is used in the document then text
+font family and appropriate math family is loaded with Unicoded fonts, i.e.
+Unicoded-math is used. It re-defines all settings given here.
+
+The general rule of usage the math fonts in different sizes in \OpTeX/ says: set three
+sizes by the macro 
+\^`\setmathsizes` `[<text-size>/<script-size>/<scriptscript-size>]` and then
+load all math fonts in given sizes by \^`\normalmath` or \^`\boldmath` macros.
+For example
+\begtt
+\setmathsizes[12/8.4/6]\normalmath ... math typesetting at 12 pt is ready.
+\endtt
+
+\_endinput 
+
+2020-05-06: \itfam, \ttfam removed, (Unicode math preferred)
+2020-04-14: \skewchar\fam6 added


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/math-preload.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/math-unicode.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/math-unicode.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/math-unicode.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,236 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \loadmath {Unicode Math fonts <2020-02-25>} % preloaded in format
+
+   \_doc -----------------------------
+   \`\loadmath` `{<Unicode-math font>}` loads given font. It does:
+   \begitems
+   * define \`\_unimathfont` as `<Unicode-math font>`,
+   * redefine `\normalmath` and `\boldmath` macros to their Unicode counterparts,
+   * load the `\_unimathfont` by `\normalmath`,
+   * print information about loaded font on the terminal,
+   * redefine all encoding dependent setting by `\input unimath-codes.opm`,
+   * protect new loading by setting \`\_ifmathloading` to false.
+   \enditems
+   \`\noloadmath` disallows Unicode-math loading by \`\_mathloadingfalse`.\nl
+   \`\doloadmath` allows Unicode-math loading by \`\_mathloadingtrue`.
+   \_cod -----------------------------
+
+\_newifi \_ifmathloading   \_mathloadingtrue
+
+\_def\_noloadmath{\_mathloadingfalse}
+\_def\_doloadmath{\_mathloadingtrue}
+
+\_def\_loadmath#1{%
+   \_ifmathloading
+   \_initunifonts
+   \_isfont{#1}\_iffalse
+      \_opwarning{Math font "#1" not found, skipped...}%
+   \_else
+      \_def\_unimathfont{#1}%
+      \_let\_normalmath = \_normalunimath  \_let\_boldmath = \_boldunimath 
+      \_normalmath
+      \_wterm {MATH-FONT: "#1" -- unicode math prepared.}%
+      \_opinput {unimath-codes.opm}% 
+      \_mathloadingfalse
+   \_fi\_fi}
+
+\_public \loadmath \noloadmath \doloadmath ;
+
+   \_doc -----------------------------
+   \`\loadboldmath` `{<bold-font>} \to {<normal-font>}`
+   defines \`\_unimathboldfont` as `<bold-font>` only if `\_unimathfont` is
+   defined as `<normal-font>`. It is used when `\boldmath` macro is run.
+   When no `\_unimathboldfont` is defined then the `\boldmath` macro
+   use \"fake bold" generated by `embolden` \LuaTeX/ font feature.
+   \_cod -----------------------------
+
+\_def\_loadboldmath#1#2\to #3{%
+   \_def\_tmp{#3}\_ifx\_unimathfont\_tmp % do work only if #3 is loaded as normal Math
+   \_isfont"#1"\_iffalse
+      \_opwarning{Bold-Math font "#1" not found, skipped...}   
+   \_else
+      \_def\_unimathboldfont{#1}%
+      \_wterm {MATH-FONT: "#1" -- unicode math bold prepared.}%
+   \_fi\_fi}
+
+\_public \loadboldmath ;
+
+   \_doc -----------------------------
+   The Unicode version of the \^`\normalmath` and \^`\boldmath` macros
+   are defined here as \`\_normalunimath` and \`\_boldunimath` macros.
+   They are using \`\_setunimathdimens` in similar sense as 
+   \^`\_setmathdimens`.
+   \_cod -----------------------------
+
+\_def\_normalunimath{%
+    \_loadumathfamily 1 {\_unimathfont}{} % Base font
+    \_loadmathfamily  4 rsfs              % script
+    \_setunimathdimens
+}%
+\_def\_boldunimath{%
+    \_ifx\_unimathboldfont \_undefined 
+       \_loadumathfamily 1 {\_unimathfont}{embolden=1.7;} % Base faked bold
+    \_else
+       \_loadumathfamily 1 {\_unimathboldfont}{} % Base real bold font
+    \_fi
+    \_loadmathfamily  4 rsfs              % script
+    \_setunimathdimens
+}%
+\_def\_setunimathdimens{% PlainTeX sets these dimens for 10pt size only:
+  \_delimitershortfall=0.5\_fontdimen6\_textfont3
+  \_nulldelimiterspace=0.12\_fontdimen6\_textfont3
+  \_scriptspace=0.05\_fontdimen6\_textfont3
+}
+
+   \_doc -----------------------------
+   \`\_loadumathfamily` `<number> {<font>}{<font features>}` 
+   loads the given Unicode-math fonts in three sizes given by the 
+   \^`\setmathsizes` macro and sets it as the math family `<number>`.
+   The `<font features>` are added to the default
+   \`\_mfontfeatures` and to the size dependent features `+ssty=0`
+   if script size is asked or `+ssty=1` if scriptscriptsize is asked.
+   If the fath family 1 is loaded then the family 2 and 3 is set by the same
+   font because \TeX/ needs to read dimension information about generating 
+   math formulae from these three math families. All information needed by
+   \TeX/ is collected in single Unicode-math font.
+   \_cod -----------------------------
+
+\_def\_umathname#1#2{"#1:\_mfontfeatures#2"}
+\_def\_mfontfeatures{mode=base;script=math;} 
+
+\_def\_loadumathfamily #1 #2#3 {%
+  \_edef\_optsizesave{\_the\_optsize}%
+  \_optsize=\_sizemtext  \_font\_mF=\_umathname{#2}{#3} at\_optsize \_textfont#1=\_mF
+  \_ifnum#1=1 \_textfont2=\_mF \_textfont3=\_mF \_fi
+  \_optsize=\_sizemscript \_font\_mF=\_umathname{#2}{+ssty=0;#3} at\_optsize \_scriptfont#1=\_mF
+  \_ifnum#1=1 \_scriptfont2=\_mF \_scriptfont3=\_mF \_fi
+  \_optsize=\_sizemsscript \_font\_mF=\_umathname{#2}{+ssty=1;#3} at\_optsize\_scriptscriptfont#1=\_mF
+  \_ifnum#1=1 \_scriptscriptfont2=\_mF \_scriptscriptfont3=\_mF \_fi  
+  \_optsize=\_optsizesave \_relax
+}
+
+   \_doc -----------------------------
+   Unicode math font includes all typical math alphabets together, user needs not to
+   load more \TeX/ math families. These math aphabets are encoded by
+   different parts of Unicode table. We need auxiliary macros for setting
+   mathcodes by selected math alphabet.
+   \nl 
+   \`\_umathrange` `{<from->-<to>}\<first>` sets `\Umathcode`s
+   of the characters in the interval `<from>-<to>` to `\<first>`, 
+   `\<first>+1`, `\<first>+2`
+   etc., but \`\_umathcharholes` are skipped 
+   (`\_umathcharholes` are parts of the Unicode table not designed for math
+   alphabets but they causes that the math alphabets are 
+   not continuously spread out in the table; I mean that the
+   designers were under the influence of drugs when they created
+   this part of the Unicode table).
+   The `<from>-<to>` clause includes normal letters like `A-Z`.   
+   \nl
+   \`\_umahrangegreek` `\<first>` is the same as 
+   `\_umathrange {<alpha>-<omega>}\<first>`.
+   \nl
+   \`\_umahrangeGREEK` `\<first>` is the same as 
+   `\_umathrange {<Alpha>-<Omega>}\<first>`.
+   \nl
+   \`\_greekdef` `<control sequences> \_relax` defines each control sequence
+   as a normal character with codes `\_umathnumB`, `\_umathnumB+1`, 
+   `\_umathnumB+2` etc. It is used for redefinig the contol sequences for
+   math Greek `\alpha`, `\beta`, `\gamma` etc.
+   \_cod -----------------------------
+
+\_newcount\_umathnumA  \_newcount\_umathnumB
+
+\_def\_umathcorr#1#2{\_ea#1\_ea{\_the#2}}
+\_def\_umathprepare#1{\_def\_umathscanholes##1[#1]##2##3\_relax{##2}}
+\_def\_umathvalue#1{\_ea\_umathscanholes\_umathcharholes[#1]{#1}\_relax}
+
+\_def\_umathcharholes{% holes in math alphabets:
+   [119893]{"210E}[119965]{"212C}[119968]{"2130}[119969]{"2131}%
+   [119971]{"210B}[119972]{"2110}[119975]{"2112}[119976]{"2133}[119981]{"211B}%
+   [119994]{"212F}[119996]{"210A}[120004]{"2134}%
+   [120070]{"212D}[120075]{"210C}[120076]{"2111}[120085]{"211C}[120093]{"2128}%
+   [120122]{"2102}[120127]{"210D}[120133]{"2115}[120135]{"2119}
+   [120136]{"211A}[120137]{"211D}[120145]{"2124}%
+}
+\_def\_umathrange#1#2{\_umathnumB=#2\_relax \_umathrangeA#1}
+\_def\_umathrangeA#1-#2{\_umathnumA=`#1\_relax
+   \_loop
+      \_umathcorr\_umathprepare\_umathnumB
+      \_Umathcode \_umathnumA = 7 1 \_umathcorr\_umathvalue{\_umathnumB}
+      \_ifnum\_umathnumA<`#2\_relax
+         \_advance\_umathnumA by1 \_advance\_umathnumB by1
+   \_repeat
+}
+\_def\_umathrangeGREEK{\_begingroup
+   \_lccode`A="0391 \_lccode`Z="03A9
+   \_lowercase{\_endgroup \_umathrange{A-Z}}}
+\_def\_umathrangegreek{\_begingroup
+   \_lccode`A="03B1 \_lccode`Z="03D6
+   \_lowercase{\_endgroup \_umathrange{A-Z}}}
+\_def\_greekdef#1{\_ifx#1\_relax \_else
+   \_begingroup \_lccode`X=\_umathnumB \_lowercase{\_endgroup \_def#1{X}}%
+   \_advance\_umathnumB by 1
+   \_expandafter\_greekdef \_fi
+}
+
+\_endcode
+
+
+The \^`\loadmath` `{<Unicode-math font>}` macro loads math fonts and
+redefines all default math-codes using `\input unimath-codes.opm`. 
+If Unicode-math font is loaded then \^`\_mathloadingfalse`
+is set, so new UnicodeMath font isn't loaded until \^`\doloadmath` is used.
+
+\^`\loadboldmath` `{<bold-font>} \to {<normal-font>}` loads bold variant only
+if `<normal-font>` was sucessully loaded by the `\loadmath`. For example:
+
+\begtt
+\loadmath     {[xitsmath-regular]}
+\loadboldmath {[xitsmath-bold]} \to {[xitsmath-regular]}
+\endtt
+
+You can combine more fonts, if you register them to another
+math families (5, 6, 7, etc.) in the `\normalmath` macro.
+
+The default value of `\normalmath` shows a combination of base Unicode Math
+font with 8bit Math font at family 4. See definition of `\script` macro where
+`\fam4` is used. Of course, we need to set `\rmvariables` too, because 8bit font
+accepts only codes less than 255.
+
+See \url{http://tex.stackexchange.com/questions/308749/} for more technical details.
+
+The \^`\loadmath` macro was succesfully tested on:
+
+\begtt
+\loadmath{[XITSMath-Regular]}       ... XITS MATH
+\loadmath{[latinmodern-math]}       ... Latin Modern Math
+\loadmath{[texgyretermes-math]}     ... TeXGyre Termes Math 
+\loadmath{[texgyrebonum-math]}      ... TeXGyre Bonum Math 
+\loadmath{[texgyrepagella-math]}    ... TeXGyre Pagella Math 
+\loadmath{[texgyreschola-math]}     ... TeXGyre Schola Math
+\loadmath{[texgyredejavu-math]}     ... TeXGyre DeJaVu Math 
+\loadmath{[LibertinusMath-Regular]} ... Libertinus Math 
+\loadmath{[FiraMath-Regular]}       ... Fira Math
+\loadmath{[Asana-Math]}             ... Asana Math
+\endtt
+
+\secc Unicode-math macros preloaded in the format
+
+\printdoc math-unicode.opm
+
+\secc[unimath-codes] Macros and codes set when \code{\\loadmatfont} is processed
+
+The file `unimath-codes.opm` is loaded when the \^`\loadmath` is used. The
+macros here redefines globally all encoding dependent settings declared in
+the section~\ref[math-macros].
+
+\printdoc     unimath-codes.opm
+\printdoctail unimath-codes.opm
+
+
+
+\_endinput
+
+2020-04-15 \_setmathdimens -> \_setuniathdimens
+2020-02-25 implemented


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/math-unicode.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/mathclass.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/mathclass.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/mathclass.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,1591 @@
+# File: MathClass.txt
+# Revision: 15
+# Date: 2017-06-01, 12:35:00 GMT
+#
+# © 2017 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+# For documentation, see http://www.unicode.org/reports/tr25/
+#
+# ------------------------------------------------
+# This file is a classification of characters based on their usage in
+# mathematical notation.
+#
+# While the contents of this file represent the best information
+# available to the authors and the Unicode Technical Committee as
+# of the date referenced above, it is likely that the information
+# in this file will change from time to time.
+#
+# This file is *NOT* formally part of the Unicode Character Database
+# at this time.
+#
+# The character encoding of this plain-text file is UTF-8.
+#
+# The data consists of 2 fields.
+#
+# 1: code point or range
+#
+# 2: class, one of:
+#
+#	N - Normal - includes all digits and symbols requiring only one form
+#	A - Alphabetic
+#	B - Binary
+#	C - Closing - usually paired with opening delimiter
+#	D - Diacritic
+#	F - Fence - unpaired delimiter (often used as opening or closing)
+#	G - Glyph_Part - piece of large operator
+#	L - Large - n-ary or large operator, often takes limits
+#	O - Opening - usually paired with closing delimiter
+#	P - Punctuation
+#	R - Relation - includes arrows
+#	S - Space
+#	U - Unary - operators that are only unary
+#	V - Vary - operators that can be unary or binary depending on context
+#	X - Special - characters not covered by other classes
+#
+# Fields are delimited by ';'. Spaces adjacent to the delimiter or the '#' are
+# not significant. Future versions of this file may use different amounts of
+# whitespace.
+#
+# Some character positions in the Mathematical Alphanumeric Symbols block are
+# reserved and have been mapped to the Letterlike Symbols block in Unicode.
+# This is indicated in 24 special purpose comments.
+#
+# The character repertoire of this revision is the repertoire of Unicode
+# Version 9.0. For more information see Revision 15 or later of UTR #25.
+# ------------------------------------------------
+
+0020;S
+0021;N
+0023;N
+0024;N
+0025;N
+0026;N
+0028;O
+0029;C
+002A;N
+002B;V
+002C;P
+002D;N
+002E;P
+002F;B
+0030..0039;N
+003A;P
+003B;P
+003C;R
+003D;R
+003E;R
+003F;P
+0040;N
+0041..005A;A
+005B;O
+005C;B
+005D;C
+005E;N
+005F;N
+0060;D
+0061..007A;A
+007B;O
+007C;F
+007D;C
+007E;N
+00A0;S
+00A1;P
+00A2;N
+00A3;N
+00A4;N
+00A5;N
+00A6;N
+00A7;N
+00A8;D
+00AC;U
+00AF;D
+00B0;N
+00B1;V
+00B2;N
+00B3;N
+00B4;N
+00B5;N
+00B6;N
+00B7;B
+00B9;N
+00BC;N
+00BD;N
+00BE;N
+00BF;P
+00D7;B
+00F7;B
+0131;A
+0237;A
+02C6;D
+02C7;D
+02D8;D
+02D9;D
+02DA;D
+02DC;D
+0300;D
+0301;D
+0302;D
+0303;D
+0304;D
+0305;D
+0306;D
+0307;D
+0308;D
+030A;D
+030C;D
+0311;D
+0323;D
+032C;D
+032D;D
+032E;D
+032F;D
+0330;D
+0331;D
+0332;D
+0333;D
+0338;D
+033A;D
+033F;D
+0346;D
+0391;A
+0392;A
+0393;A
+0394;A
+0395;A
+0396;A
+0397;A
+0398;A
+0399;A
+039A;A
+039B;A
+039C;A
+039D;A
+039E;A
+039F;A
+03A0;A
+03A1;A
+03A3;A
+03A4;A
+03A6;A
+03A7;A
+03A8;A
+03A9;A
+03B1;A
+03B2;A
+03B3;A
+03B4;A
+03B5;A
+03B6;A
+03B7;A
+03B8;A
+03B9;A
+03BA;A
+03BB;A
+03BC;A
+03BD;A
+03BE;A
+03BF;A
+03C0;A
+03C1;A
+03C3;A
+03C4;A
+03C5;A
+03C6;A
+03C7;A
+03C8;A
+03C9;A
+03D0;A
+03D1;A
+03D2;A
+03D5;A
+03D6;A
+03D8;N
+03D9;N
+03DA;A
+03DB;A
+03DC;A
+03DD;A
+03E0;A
+03E1;A
+03F0;A
+03F1;A
+03F4;A
+03F5;A
+03F6;N
+0428;A
+0606;L
+0607;L
+0608;A
+2000;S
+2001;S
+2002;S
+2003;S
+2004;S
+2005;S
+2006;S
+2007;S
+2009;S
+200A;S
+200B;S
+2010;P
+2012;P
+2013;P
+2014;P
+2016;F
+2020;R
+2021;R
+2022;B
+2026;N
+2032;N
+2033;N
+2034;N
+2035;N
+2036;N
+2037;N
+203B;N
+203C;N
+2040;B
+2044;B
+204E;B
+204F;R
+2050;R
+2051;N
+2052;N
+2057;N
+205F;S
+2061;B
+2062;B
+2063;P
+2064;X
+207A..207E;N
+208A..208E;N
+20D0;D
+20D1;D
+20D2;D
+20D3;X
+20D4;D
+20D5;D
+20D6;D
+20D7;D
+20D8;D
+20D9;D
+20DA;D
+20DB;D
+20DC;D
+20DD;D
+20DE;D
+20DF;D
+20E1;D
+20E4;D
+20E5;D
+20E6;D
+20E7;D
+20E8;D
+20E9;D
+20EA;D
+20EB;D
+20EC;D
+20ED;D
+20EE;D
+20EF;D
+2102;A
+2107;N
+210A;A
+210B;A
+210C;A
+210D;A
+210E;N
+210F;N
+2110;A
+2111;A
+2112;A
+2113;A
+2115;A
+2118;A
+2119;A
+211A;A
+211B;A
+211C;A
+211D;A
+2124;A
+2126;N
+2127;N
+2128;A
+2129;N
+212B;A
+212C;A
+212D;A
+212F;A
+2130;A
+2131;A
+2132;N
+2133;A
+2134;A
+2135;A
+2136;A
+2137;A
+2138;A
+213C;A
+213D;A
+213E;N
+213F;A
+2140;L
+2141;N
+2142;N
+2143;N
+2144;N
+2145;N
+2146;N
+2147;N
+2148;N
+2149;N
+214B;N
+2190..21B3;R
+21B6;R
+21B7;R
+21BA..21FF;R
+2200;U
+2201;U
+2202;N
+2203;U
+2204;U
+2205;N
+2206;U
+2207;U
+2208;R
+2209;R
+220A;R
+220B;R
+220C;R
+220D;R
+220E;N
+220F;L
+2210;L
+2211;L
+2212;V
+2213;V
+2214;B
+2215;B
+2216;B
+2217;B
+2218;B
+2219;B
+221A;L
+221B;L
+221C;L
+221D;R
+221E;N
+221F;N
+2220;N
+2221;N
+2222;N
+2223;R
+2224;R
+2225;R
+2226;R
+2227;B
+2228;B
+2229;B
+222A;B
+222B;L
+222C;L
+222D;L
+222E;L
+222F;L
+2230;L
+2231;L
+2232;L
+2233;L
+2234;R
+2235;R
+2236;R
+2237;R
+2238;B
+2239;R
+223A;R
+223B;R
+223C;R
+223D;R
+223E;B
+223F;N
+2240;B
+2241;R
+2242;R
+2243;R
+2244;R
+2245;R
+2246;R
+2247;R
+2248;R
+2249;R
+224A;R
+224B;R
+224C;R
+224D;R
+224E;R
+224F;R
+2250;R
+2251;R
+2252;R
+2253;R
+2254;R
+2255;R
+2256;R
+2257;R
+2258;R
+2259;R
+225A;R
+225B;R
+225C;R
+225D;R
+225E;R
+225F;R
+2260;R
+2261;R
+2262;R
+2263;R
+2264;R
+2265;R
+2266;R
+2267;R
+2268;R
+2269;R
+226A;R
+226B;R
+226C;R
+226D;R
+226E;R
+226F;R
+2270;R
+2271;R
+2272;R
+2273;R
+2274;R
+2275;R
+2276;R
+2277;R
+2278;R
+2279;R
+227A;R
+227B;R
+227C;R
+227D;R
+227E;R
+227F;R
+2280;R
+2281;R
+2282;R
+2283;R
+2284;R
+2285;R
+2286;R
+2287;R
+2288;R
+2289;R
+228A;R
+228B;R
+228C;B
+228D;B
+228E;B
+228F;R
+2290;R
+2291;R
+2292;R
+2293;B
+2294;B
+2295;B
+2296;B
+2297;B
+2298;B
+2299;B
+229A;B
+229B;B
+229C;B
+229D;B
+229E;B
+229F;B
+22A0;B
+22A1;B
+22A2;R
+22A3;R
+22A4;N
+22A5;R
+22A6;R
+22A7;R
+22A8;R
+22A9;R
+22AA;R
+22AB;R
+22AC;R
+22AD;R
+22AE;R
+22AF;R
+22B0;R
+22B1;R
+22B2;R
+22B3;R
+22B4;R
+22B5;R
+22B6;R
+22B7;R
+22B8;R
+22B9;B
+22BA;B
+22BB;B
+22BC;B
+22BD;B
+22BE;N
+22BF;N
+22C0;L
+22C1;L
+22C2;L
+22C3;L
+22C4;B
+22C5;B
+22C6;B
+22C7;B
+22C8;R
+22C9;B
+22CA;B
+22CB;B
+22CC;B
+22CD;R
+22CE;B
+22CF;B
+22D0;R
+22D1;R
+22D2;B
+22D3;B
+22D4;R
+22D5;R
+22D6;R
+22D7;R
+22D8;R
+22D9;R
+22DA;R
+22DB;R
+22DC;R
+22DD;R
+22DE;R
+22DF;R
+22E0;R
+22E1;R
+22E2;R
+22E3;R
+22E4;R
+22E5;R
+22E6;R
+22E7;R
+22E8;R
+22E9;R
+22EA;R
+22EB;R
+22EC;R
+22ED;R
+22EE;R
+22EF;R
+22F0;R
+22F1;R
+22F2;R
+22F3;R
+22F4;R
+22F5;R
+22F6;R
+22F7;R
+22F8;R
+22F9;R
+22FA;R
+22FB;R
+22FC;R
+22FD;R
+22FE;R
+22FF;R
+2300;N
+2302;N
+2305;B
+2306;B
+2308;O
+2309;C
+230A;O
+230B;C
+2310;N
+2311;N
+2319;N
+231C;O
+231D;C
+231E;O
+231F;C
+2320..2321;G
+2322;R
+2323;R
+#2329;O
+#232A;C
+2336;N
+233D;B
+233F;R
+237C;R
+2394;N
+239B..23AF;G
+23B0;R
+23B1;R
+23B2..23B3;G
+23B4;N
+23B5;N
+23B6;N
+23B7;G
+23D0;G
+23DC;N
+23DD;N
+23DE;N
+23DF;N
+23E0;N
+23E1;N
+23E2;N
+23E3;N
+23E4;N
+23E5;N
+23E6;N
+23E7;N
+24C8;N
+25A0;N
+25A1;N
+25AA;N
+25AB;N
+25AD;N
+25AE;N
+25AF;N
+25B0;N
+25B1;N
+25B2;B
+25B3;B
+25B4;B
+25B5;B
+25B6;B
+25B7;B
+25B8;B
+25B9;B
+25BC;B
+25BD;B
+25BE;B
+25BF;B
+25C0;B
+25C1;B
+25C2;B
+25C3;B
+25C4;B
+25C5;B
+25C6;N
+25C7;N
+25C8;N
+25C9;N
+25CA;B
+25CB;B
+25CE;N
+25CF;N
+25D0..25D3;N
+25D6;N
+25D7;N
+25E2;N
+25E3;N
+25E4;N
+25E5;N
+25E6;B
+25E7..25EA;N
+25EB;B
+25EC;B
+25EF;N
+25F8;B
+25F9;B
+25FA;B
+25FB;B
+25FC;B
+25FD;B
+25FE;B
+25FF;B
+2605;B
+2606;B
+2609;N
+260C;N
+263D;N
+263E;N
+263F;N
+2640;N
+2641;N
+2642;N
+2643;N
+2644;N
+2646;N
+2647;N
+2648;N
+2649;N
+2660;N
+2661;N
+2662;N
+2663;N
+2664;N
+2665;N
+2666;N
+2667;N
+2669;N
+266D;N
+266E;N
+266F;N
+2680;N
+2681;N
+2682;N
+2683;N
+2684;N
+2685;N
+2686;N
+2687;N
+2688;N
+2689;N
+26AA;N
+26AB;N
+26AC;N
+26B2;N
+2713;N
+2717;N
+2720;N
+272A;N
+2736;N
+2772;O
+2773;C
+27C0;N
+27C1;N
+27C2;R
+27C3;R
+27C4;R
+27C5;R
+27C6;R
+27C7;R
+27C8;R
+27C9;R
+27CA;R
+27CB;R
+27CC;L
+27CD;R
+27CE;B
+27CF;B
+27D0;N
+27D1;B
+27D2;R
+27D3;R
+27D4;R
+27D5;L
+27D6;L
+27D7;L
+27D8;L
+27D9;L
+27DA;R
+27DB;R
+27DC;R
+27DD;R
+27DE;R
+27DF;R
+27E0;B
+27E1;B
+27E2;B
+27E3;B
+27E4;B
+27E5;B
+27E6;O
+27E7;C
+27E8;O
+27E9;C
+27EA;O
+27EB;C
+27EC;O
+27ED;C
+27EE;O
+27EF;C
+27F0;R
+27F1;R
+27F2;R
+27F3;R
+27F4;R
+27F5;R
+27F6;R
+27F7;R
+27F8;R
+27F9;R
+27FA;R
+27FB;R
+27FC;R
+27FD;R
+27FE;R
+27FF;R
+2900;R
+2901;R
+2902;R
+2903;R
+2904;R
+2905;R
+2906;R
+2907;R
+2908;R
+2909;R
+290A;R
+290B;R
+290C;R
+290D;R
+290E;R
+290F;R
+2910;R
+2911;R
+2912;R
+2913;R
+2914;R
+2915;R
+2916;R
+2917;R
+2918;R
+2919;R
+291A;R
+291B;R
+291C;R
+291D;R
+291E;R
+291F;R
+2920;R
+2921;R
+2922;R
+2923;R
+2924;R
+2925;R
+2926;R
+2927;R
+2928;R
+2929;R
+292A;R
+292B;R
+292C;R
+292D;R
+292E;R
+292F;R
+2930;R
+2931;R
+2932;R
+2933;R
+2934;R
+2935;R
+2936;R
+2937;R
+2938;R
+2939;R
+293A;R
+293B;R
+293C;R
+293D;R
+293E;R
+293F;R
+2940;R
+2941;R
+2942;R
+2943;R
+2944;R
+2945;R
+2946;R
+2947;R
+2948;R
+2949;R
+294A;R
+294B;R
+294C;R
+294D;R
+294E;R
+294F;R
+2950;R
+2951;R
+2952;R
+2953;R
+2954;R
+2955;R
+2956;R
+2957;R
+2958;R
+2959;R
+295A;R
+295B;R
+295C;R
+295D;R
+295E;R
+295F;R
+2960;R
+2961;R
+2962;R
+2963;R
+2964;R
+2965;R
+2966;R
+2967;R
+2968;R
+2969;R
+296A;R
+296B;R
+296C;R
+296D;R
+296E;R
+296F;R
+2970;R
+2971;R
+2972;R
+2973;R
+2974;R
+2975;R
+2976;R
+2977;R
+2978;R
+2979;R
+297A;R
+297B;R
+297C;R
+297D;R
+297E;R
+297F;R
+2980;F
+2981;N
+2982;F
+2983;O
+2984;C
+2985;O
+2986;C
+2987;O
+2988;C
+2989;O
+298A;C
+298B;O
+298C;C
+298D;O
+298E;C
+298F;O
+2990;C
+2991;O
+2992;C
+2993;O
+2994;C
+2995;O
+2996;C
+2997;O
+2998;C
+2999;F
+299A;F
+299B;N
+299C;N
+299D;N
+299E;N
+299F;N
+29A0;N
+29A1;N
+29A2;N
+29A3;N
+29A4;N
+29A5;N
+29A6;N
+29A7;N
+29A8;N
+29A9;N
+29AA;N
+29AB;N
+29AC;N
+29AD;N
+29AE;N
+29AF;N
+29B0;N
+29B1;N
+29B2;N
+29B3;N
+29B4;N
+29B5;N
+29B6;B
+29B7;B
+29B8;B
+29B9;B
+29BA;N
+29BB;N
+29BC;N
+29BD;N
+29BE;N
+29BF;N
+29C0;B
+29C1;B
+29C2;N
+29C3;N
+29C4;B
+29C5;B
+29C6;B
+29C7;B
+29C8;B
+29C9;N
+29CA;N
+29CB;N
+29CC;N
+29CD;N
+29CE;R
+29CF;R
+29D0;R
+29D1;R
+29D2;R
+29D3;R
+29D4;R
+29D5;R
+29D6;B
+29D7;B
+29D8;O
+29D9;C
+29DA;O
+29DB;C
+29DC;N
+29DD;N
+29DE;N
+29DF;R
+29E0;N
+29E1;R
+29E2;B
+29E3;R
+29E4;R
+29E5;R
+29E6;R
+29E7;N
+29E8;N
+29E9;N
+29EA;N
+29EB;B
+29EC;N
+29ED;N
+29EE;N
+29EF;N
+29F0;N
+29F1;N
+29F2;N
+29F3;N
+29F4;R
+29F5;B
+29F6;B
+29F7;B
+29F8;L
+29F9;L
+29FA;B
+29FB;B
+29FC;O
+29FD;C
+29FE;B
+29FF;B
+2A00;L
+2A01;L
+2A02;L
+2A03;L
+2A04;L
+2A05;L
+2A06;L
+2A07;L
+2A08;L
+2A09;L
+2A0A;L
+2A0B;L
+2A0C;L
+2A0D;L
+2A0E;L
+2A0F;L
+2A10;L
+2A11;L
+2A12;L
+2A13;L
+2A14;L
+2A15;L
+2A16;L
+2A17;L
+2A18;L
+2A19;L
+2A1A;L
+2A1B;L
+2A1C;L
+2A1D;L
+2A1E;L
+2A1F;L
+2A20;L
+2A21;L
+2A22;B
+2A23;B
+2A24;B
+2A25;B
+2A26;B
+2A27;B
+2A28;B
+2A29;B
+2A2A;B
+2A2B;B
+2A2C;B
+2A2D;B
+2A2E;B
+2A2F;B
+2A30;B
+2A31;B
+2A32;B
+2A33;B
+2A34;B
+2A35;B
+2A36;B
+2A37;B
+2A38;B
+2A39;B
+2A3A;B
+2A3B;B
+2A3C;B
+2A3D;B
+2A3E;B
+2A3F;B
+2A40;B
+2A41;B
+2A42;B
+2A43;B
+2A44;B
+2A45;B
+2A46;B
+2A47;B
+2A48;B
+2A49;B
+2A4A;B
+2A4B;B
+2A4C;B
+2A4D;B
+2A4E;B
+2A4F;B
+2A50;B
+2A51;B
+2A52;B
+2A53;B
+2A54;B
+2A55;B
+2A56;B
+2A57;B
+2A58;B
+2A59;R
+2A5A;B
+2A5B;B
+2A5C;B
+2A5D;B
+2A5E;B
+2A5F;B
+2A60;B
+2A61;B
+2A62;B
+2A63;B
+2A64;B
+2A65;B
+2A66;R
+2A67;R
+2A68;R
+2A69;R
+2A6A;R
+2A6B;R
+2A6C;R
+2A6D;R
+2A6E;R
+2A6F;R
+2A70;R
+2A71;B
+2A72;B
+2A73;R
+2A74;R
+2A75;R
+2A76;R
+2A77;R
+2A78;R
+2A79;R
+2A7A;R
+2A7B;R
+2A7C;R
+2A7D;R
+2A7E;R
+2A7F;R
+2A80;R
+2A81;R
+2A82;R
+2A83;R
+2A84;R
+2A85;R
+2A86;R
+2A87;R
+2A88;R
+2A89;R
+2A8A;R
+2A8B;R
+2A8C;R
+2A8D;R
+2A8E;R
+2A8F;R
+2A90;R
+2A91;R
+2A92;R
+2A93;R
+2A94;R
+2A95;R
+2A96;R
+2A97;R
+2A98;R
+2A99;R
+2A9A;R
+2A9B;R
+2A9C;R
+2A9D;R
+2A9E;R
+2A9F;R
+2AA0;R
+2AA1;R
+2AA2;R
+2AA3;R
+2AA4;R
+2AA5;R
+2AA6;R
+2AA7;R
+2AA8;R
+2AA9;R
+2AAA;R
+2AAB;R
+2AAC;R
+2AAD;R
+2AAE;R
+2AAF;R
+2AB0;R
+2AB1;R
+2AB2;R
+2AB3;R
+2AB4;R
+2AB5;R
+2AB6;R
+2AB7;R
+2AB8;R
+2AB9;R
+2ABA;R
+2ABB;R
+2ABC;R
+2ABD;R
+2ABE;R
+2ABF;R
+2AC0;R
+2AC1;R
+2AC2;R
+2AC3;R
+2AC4;R
+2AC5;R
+2AC6;R
+2AC7;R
+2AC8;R
+2AC9;R
+2ACA;R
+2ACB;R
+2ACC;R
+2ACD;R
+2ACE;R
+2ACF;R
+2AD0;R
+2AD1;R
+2AD2;R
+2AD3;R
+2AD4;R
+2AD5;R
+2AD6;R
+2AD7;R
+2AD8;R
+2AD9;R
+2ADA;R
+2ADB;R
+2ADC;R
+2ADD;R
+2ADE;R
+2ADF;R
+2AE0;R
+2AE1;N
+2AE2;R
+2AE3;R
+2AE4;R
+2AE5;R
+2AE6;R
+2AE7;R
+2AE8;R
+2AE9;R
+2AEA;R
+2AEB;R
+2AEC;R
+2AED;R
+2AEE;R
+2AEF;R
+2AF0;R
+2AF1;N
+2AF2;R
+2AF3;R
+2AF4;B
+2AF5;B
+2AF6;B
+2AF7;R
+2AF8;R
+2AF9;R
+2AFA;R
+2AFB;B
+2AFC;L
+2AFD;B
+2AFE;B
+2AFF;L
+2B00..2B11;R
+2B12;N
+2B13;N
+2B14;N
+2B15;N
+2B16;N
+2B17;N
+2B18;N
+2B19;N
+2B1B..2B1F;N
+2B20;N
+2B21;N
+2B22;N
+2B23;N
+2B24..2B2F;N
+2B30..2B44;R
+2B45;R
+2B46;R
+2B47..2B4C;R
+2B50..2B54;N
+2B95;R
+2BC2..2BC8;N
+2BCA;N
+2BCB;N
+3008;X
+3009;X
+#3014;O
+#3015;C
+#3018;O
+#3019;C
+301A;X
+301B;X
+306E;N
+FB29;X
+FE00;D
+#deprecFE35;
+#deprecFE36;
+#deprecFE37;
+#deprecFE38;
+FE61..FE66;X
+FE68;X
+FF0B;X
+FF1C..FF1E;X
+FF3C;X
+FF3E;X
+FF5C;X
+FF5E;X
+FFE2;X
+FFE9..FFEC;X
+1D400..1D454;A
+#1D455=210E;N
+1D456..1D49B;A
+1D49C;A
+#1D49D=212C;A
+1D49E;A
+1D49F;A
+#1D4A0=2130;A
+#1D4A1=2131;A
+1D4A2;A
+#1D4A3=210B;A
+#1D4A4=2110;A
+1D4A5;A
+1D4A6;A
+#1D4A7=2112;A
+#1D4A8=2133;A
+1D4A9;A
+1D4AA;A
+1D4AB;A
+1D4AC;A
+#1D4AD=211B;A
+1D4AE;A
+1D4AF;A
+1D4B0;A
+1D4B1;A
+1D4B2;A
+1D4B3;A
+1D4B4;A
+1D4B5;A
+1D4B6;A
+1D4B7;A
+1D4B8;A
+1D4B9;A
+#1D4BA=212F;A
+1D4BB;A
+#1D4BC=210A;A
+1D4BD;A
+1D4BE;A
+1D4BF;A
+1D4C0;A
+1D4C1;A
+1D4C2;A
+1D4C3;A
+#1D4C4=2134;A
+1D4C5;A
+1D4C6;A
+1D4C7;A
+1D4C8;A
+1D4C9;A
+1D4CA;A
+1D4CB;A
+1D4CC;A
+1D4CD;A
+1D4CE;A
+1D4CF;A
+1D4D0..1D503;A
+1D504;A
+1D505;A
+#1D506=212D;A
+1D507;A
+1D508;A
+1D509;A
+1D50A;A
+#1D50B=210C;A
+#1D50C=2111;A
+1D50D;A
+1D50E;A
+1D50F;A
+1D510;A
+1D511;A
+1D512;A
+1D513;A
+1D514;A
+#1D515=211C;A
+1D516;A
+1D517;A
+1D518;A
+1D519;A
+1D51A;A
+1D51B;A
+1D51C;A
+#1D51D=2128;A
+1D51E;A
+1D51F;A
+1D520;A
+1D521;A
+1D522;A
+1D523;A
+1D524;A
+1D525;A
+1D526;A
+1D527;A
+1D528;A
+1D529;A
+1D52A;A
+1D52B;A
+1D52C;A
+1D52D;A
+1D52E;A
+1D52F;A
+1D530;A
+1D531;A
+1D532;A
+1D533;A
+1D534;A
+1D535;A
+1D536;A
+1D537;A
+1D538;A
+1D539;A
+#1D53A=2102;A
+1D53B;A
+1D53C;A
+1D53D;A
+1D53E;A
+#1D53F=210D;A
+1D540;A
+1D541;A
+1D542;A
+1D543;A
+1D544;A
+#1D545=2115;A
+1D546;A
+#1D547=2119;A
+#1D548=211A;A
+#1D549=211D;A
+1D54A;A
+1D54B;A
+1D54C;A
+1D54D;A
+1D54E;A
+1D54F;A
+1D550;A
+#1D551=2124;A
+1D552;A
+1D553;A
+1D554;A
+1D555;A
+1D556;A
+1D557;A
+1D558;A
+1D559;A
+1D55A;A
+1D55B;A
+1D55C;A
+1D55D;A
+1D55E;A
+1D55F;A
+1D560;A
+1D561;A
+1D562;A
+1D563;A
+1D564;A
+1D565;A
+1D566;A
+1D567;A
+1D568;A
+1D569;A
+1D56A;A
+1D56B;A
+1D56C..1D6A3;A
+1D6A4;A
+1D6A5;A
+1D6A8..1D7C9;A
+1D7CA;A
+1D7CB;A
+1D7CE..1D7FF;N
+1EE00..1EE03;A
+1EE05..1EE1F;A
+1EE21;A
+1EE22;A
+1EE24;A
+1EE27;A
+1EE29..1EE32;A
+1EE34..1EE37;A
+1EE39;A
+1EE3B;A
+1EE42;A
+1EE47;A
+1EE49;A
+1EE4B;A
+1EE4D..1EE4F;A
+1EE51;A
+1EE52;A
+1EE54;A
+1EE57;A
+1EE59;A
+1EE5B;A
+1EE5D;A
+1EE5F;A
+1EE61;A
+1EE62;A
+1EE64;A
+1EE67..1EE6A;A
+1EE6C..1EE72;A
+1EE74..1EE77;A
+1EE79..1EE7C;A
+1EE7E;A
+1EE80..1EE89;A
+1EE8B..1EE9B;A
+1EEA1..1EEA3;A
+1EEA5..1EEA9;A
+1EEAB..1EEBB;A
+1EEF0;L
+1EEF1;L
+1F784;N
+1F78C;N
+1F78D;N
+1F797..1F799;N
+1F79D..1F79F;N
+
+# EOF


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/mathclass.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/more-macros.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/more-macros.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/more-macros.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,241 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \eoldef {OpTeX useful macos <2020-05-03>} % preloaded in format
+
+   \_doc -----------------------------
+   We define \`\opinput` `{<file name>}` macro which
+   does `\input {<file name>}` but catocodes are set to normal catcodes
+   (like \OpTeX/ initializes them) and the catodes setting is return back to
+   the current values when the file is read. You can use `\optinput`
+   in any situation inside the document and you will be sure that the file
+   is read correctly with correct catcode settings.
+
+   In order to achieve this, we declare \`\optexcatcodes` catcode table
+   and \`\plaintexcatocdes`. They save the commonly used catcode tables.
+   Note that `\catcodetable` is a part of \LuaTeX/ extension.
+   The catcodetable stack is implemented by \OpTeX/ macros.
+   The \`\setctable` `<catcode table>` pushes 
+   current catcode table to the stack and activates catcodes from
+   the `<catcode table>`. The \`\restorectable` returns to the saved catocdes
+   from the catcode table stack. So, the `\opinput` macro can be implemented simply:
+   \_cod -----------------------------
+
+\_def\_opinput #1{\_setctable\_optexcatcodes \_input {#1}\_relax\_restorectable}
+
+\_newcatcodetable \_optexcatcodes
+\_newcatcodetable \_plaintexcatcodes
+
+\_public \optexcatcodes \plaintexcatcodes \opinput ;
+
+\_savecatcodetable\_optexcatcodes
+{\_catcode`_=8 \savecatcodetable\plaintexcatcodes}
+
+   \_doc -----------------------------
+   The implementation of the catcodetable stack follows. 
+
+   The current catodes are
+   managed in the `\catcodetable0`. If the `\setctable` is used first (or at
+   the outer level of the stack), then the `\catcodetable0` is pushed to the
+   stack and the current table is re-set to the given `<catcode table>`.
+   The numbers of these tables are stacked to the \`\_ctablelist` macro.
+   The `\restorectable` reads the last saved catcode table number from the
+   `\_ctablelist` and uses it.
+   \_cod -----------------------------
+
+\_newcount\_currctable \_currctable=0
+\_catcodetable0
+
+\_def\_setctable#1{\_edef\_ctablelist{{\_the\_currctable}\_ctablelist}%
+   \_catcodetable#1\_relax \_currctable=#1\_relax
+}
+\_def\_restorectable{\_ea\_restorectableA\_ctablelist\_relax}
+\_def\_restorectableA#1#2\_relax{%
+   \_ifx^#2^\_opwarning
+      {You can't use \_noindent\restorectable without previous \_string\setctable}%
+   \_else \_def\_ctablelist{#2}\_catcodetable#1\_relax \_currctable=#1\_relax \_fi
+}
+\_def\_ctablelist{.}
+
+\_public \setctable \restorectable ;
+
+   \_doc -----------------------------
+   When a special macro is defined with different catcodes then
+   \`\normalcatcodes` can be used at the end of such definition. 
+   The normal catcodes are restored.
+   The macro reads
+   catcodes from `\optecatodes` table and sets it to the main catcode table 0.
+   \_cod -----------------------------
+
+\_def\_normalcatcodes {\_catcodetable\_optexcatcodes \_savecatcodetable0 \_catcodetable0 }
+\_public \normalcatodes ; 
+
+   \_doc -----------------------------
+   The \`\load` `[<filename-list>]` loads files specfied in
+   comma separated `<filename-list>`. The first space (after comma)
+   is ignored using the trick `#1#2,`: first parameter is unseparated.
+   The `\load` macro saves the information about loaded files by setting
+   `\_load:<filename>` as a defined macro.
+
+   If the \`\_afterload` macro is defined then it is run after `\_opinput`.
+   The catcode setting should be here. Note that catcode setting done in the
+   loaded file is forgotten after the `\opinput`.
+   \_cod -----------------------------
+
+\_def \_load [#1]{\_loadA #1,,,\_end}
+\_def \_loadA #1#2,{\_ifx,#1 \_ea \_loadE \_else \_loadB{#1#2}\_ea\_loadA\_fi}
+\_def \_loadB #1{%
+   \_ifcsname _load:#1\_endcsname \_else
+      \_isfile {#1.opm}\_iftrue \_opinput {#1.opm}\_else \_opinput {#1}\_fi
+      \_sxdef{_load:#1}{}%
+      \_trycs{_afterload}{}\_let\_afterload=\_undefined
+   \_fi
+}
+\_def \_loadE #1\_end{}
+\_public \load ;
+
+   \_doc -----------------------------
+   The declarator \`\optdef``\macro [<opt default>] <params>{<replacement text>}` 
+   defines the `\macro` with the optional parameter followed by normal parameters
+   declared in `<params>`. The optional parameter must be used as the first
+   first parameter in brackets `[...]`. If it isn't used then <opt default>
+   is taken into account. The `<replacement text>` can use `\the\opt`
+   because optional parameter is saved to the \`\opt` tokens register.
+   Note the difference from \LaTeX/ concept where the optional parameter is
+   in `#1`. \OpTeX/ uses `#1` as the first normal parameter (if declared).
+
+   The \`\_nospaceafter` ignores the following optional space at expand
+   processor level using the negative `\romannumeral` trick.
+   \_cod -----------------------------
+
+\_def\_optdef#1[#2]{% 
+   \_def#1{\_opt={#2}\_isnextchar[{\_cs{_oA:\_string#1}}{\_cs{_oB:\_string#1}}}% 
+   \_sdef{_oA:\_string#1}[##1]{\_opt={##1}\_cs{_oB:\_string#1\_nospaceafter}}% 
+   \_sdef{_oB:\_string#1\_nospaceafter}% 
+} 
+\_def\_nospaceafter#1{\_ea#1\_romannumeral-`\.}
+\_newtoks\_opt
+
+\_public \opt \optdef ; 
+
+   \_doc -----------------------------
+   The declarator \`\eoldef``\macro #1{<replacement text>}` defines a `\macro`
+   which scans its parameter to the end of the current line.
+   This is the parameter `#1` which can be used in the `<replacement text>`.
+   The catcode of the `\endlinechar` is reset temporarily when the parameter is scanned. 
+
+   The macro defined by `\eoldef` cannot be used with its parameter inside
+   other macros because the catcode dancing is not possible here. But the
+   \`\bracedparam``\macro{<parameter>}` can be used here. The `\bracedparam`
+   is a prefix which re-sets temporarily the `\macro` to a `\macro` with
+   normal one parameter.
+
+   The \`\skiptoeol` macro reads the text to the end of the current line 
+   and ignores it.
+   \_cod -----------------------------
+
+\_def\_eoldef #1{\_def #1{\_begingroup \_catcode`\^^M=12 \_eoldefA #1}%
+   \_ea\_def\_csname _\_csstring #1:M\_endcsname}
+\_catcode`\^^M=12 %
+\_def\_eoldefA #1#2^^M{\_endgroup\_csname _\_csstring #1:M\_endcsname{#2}}%
+\_normalcatcodes %
+
+\_eoldef\_skiptoeol#1{}
+\_def\_bracedparam#1{\_ifcsname _\_csstring #1:M\_endcsname
+    \_csname _\_csstring #1:M\_ea \_endcsname
+    \_else \_csname __in\_csstring #1:M\_ea \_endcsname \_fi
+} 
+\_public \eoldef \skiptoeol \bracedparam ;
+
+   \_doc -----------------------------
+   The \`\replstring``\macro{<textA>}{<textB>}`
+   replaces all occurrences of `<textA>` by `<textB>` in the `\macro` body.
+   The `\macro` must be defined without parameters. The occurrences of
+   `<textA>` are not replaced if they are \"hidden" in braces, for example
+   `...{...<textA>...}...`. The category codes in the `<textA>` must exactly
+   match.
+   \_cod -----------------------------
+
+\_catcode`!=3 \_catcode`?=3
+\_def\_replstring #1#2#3{%  \replstring #1{stringA}{stringB}
+   \_long\_def\_replacestringsA##1#2{\_def #1{##1}\_replacestringsB}%
+   \_long\_def\_replacestringsB##1#2{\_ifx!##1\_relax \_else \_addto #1{#3##1}%
+      \_ea\_replacestringsB\_fi}%      
+   \_ea\_replacestringsA #1?#2!#2%
+   \_long\_def\_replacestringsA##1?{\_def #1{##1}}\_ea\_replacestringsA #1}
+\_normalcatcodes
+
+\_public \replstring ;
+
+   \_doc -----------------------------
+   The \`\catcode` primitive is redefined here. Why?
+   There is very common cases like \code{\\catcode`}`<something>`
+   or `\catcode"<number>` but these characters
+   \code{\`} or \code{"} can be set as active (typically by `\activettchar` macro).
+   Nothing problematic happens if re-defined `\catcode` is used in this case.
+
+   If you really need primitive `\catcode` then you can use `\_catcode`.
+   \_cod -----------------------------
+
+\_def\catcode{\_catcode\_string} % more robust in cases \catcode` or \catcode"
+
+   \_doc -----------------------------
+   The \`\removespaces` `<text with spaces >{}` expands to <textwithoutspaces>.
+   \nl
+   The 	`\_ea`\`\ignorept``\the<dimen>` expands to a decimal
+   number `\the<dimen>` but without `pt` unit.
+   \nl
+   The \`\ignoreit``<token>` just ignores the `<token>`.
+   \_cod -----------------------------
+
+\_def\_removespaces #1 {\_isempty{#1}\_iffalse #1\_ea\_removespaces\_fi}
+\_ea\_def \_ea\_ignorept \_ea#\_ea1\_detokenize{pt}{#1}
+\_def\_ignoreit#1{}
+
+\public \removespaces \ignorept \ignoreit ;
+
+   \_doc -----------------------------
+   You can use expandable \`\bp``{<dimen>}` convertor from
+   \TeX/ `<dimen>` (or from an expression accepted by
+   `\dimexpr` primitive) to a decimal value in big points
+   (used as natural unit in the PDF format). So, you can write, for example:
+   \begtt
+   \pdfliteral{q \_bp{.3\hsize-2mm} \_bp{2mm} m 0 \_bp{-4mm} l S Q}
+   \endtt
+   You can use expandable \`\expr``{<expression>}` for analogical purposes.
+   It expands to the value of the `<expression>` at expand processor level
+   with \`\_decdigits` digits after decimal point.
+   The `<expression>` can include `+-*/()` and decimal numbers in common syntax.
+
+   The usage of prefixed versions \`\_expr` or \`\_bp` is more recommended
+   because user can re-define the control sequences `\expr` or `\bp`.
+   \_cod -----------------------------
+
+\_def\_decdigits{3} % digits after decimal point in \_bp and \_expr outputs.
+\_def\_pttopb{%
+   \_directlua{tex.print(string.format('\_pcent.\_decdigits f',
+               token.scan_dimen()/65781.76))}%  pt to bp conversion
+}
+\def\_bp#1{\_ea\_pttopb\_dimexpr#1\_relax}
+\def\_expr#1{\_directlua{tex.print(string.format('\_pcent.\_decdigits f',#1))}}
+
+\_public \expr \bp ;
+
+   \_doc ------------------
+   The pair {\`\_doc` ... \`\_cod`} is used for documenting macros and to
+   printing the technical documentation of the \OpTeX/. The syntax is:
+   {\begtt
+   \_doc <ignored text>
+   <documentation>
+   \_cod <ignored text>
+   \endtt
+   }
+   The `<documentation>` (and `<ignored text>` too) must be `<balanced text>`. 
+   It means that you cannot document only the `{` but you must document the `}` too.
+   \_cod ------------------
+
+\_long\_def\_doc #1\_cod {\_skiptoeol}
+
+\_endcode % -------------------------------------
+
+2020-05-03 \load macro introduced
+2020-03-15 released


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/more-macros.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/multicolumns.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/multicolumns.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/multicolumns.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,114 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \begmulti {Balanced columns <2020-03-26>} % preloaded in format
+
+   \_doc -----------------------------
+   This code is documented in detail in the \"\TeX/book naruby", pages 244--246,
+   free available, \url{http://petr.olsak.net/tbn.html}, but in Czech.
+   Roughly speaking, macros complete all material between 
+   \`\begmulti``<num-columns>` and \`\endmulti`
+   into one `\vbox 6`. Then the macro measures the amount of free space at the current 
+   page using `\pagegoal` and `\pagtotal` and does `\vsplit` of `\vbox 6` to 
+   columns with height of such free space. This is done only if we have
+   enought amount of material in `\vbox 6` to fill full page by columns.
+   This is repeated in loop until we have less amount of material in `\vbox 6`.
+   Then we run `\_balancecolumns` which balances the last part of columns.
+   Each part of printed material is distributed to main vertical list as
+   `\hbox{<columns>}` and we need not do any change in the output routine.
+
+   If you have paragraphs in `\begmulti`... `\endmulti` environment then
+   you may say `\raggedright` inside this environment and you can re-assign
+   `\widowpenalty` and `\clubppenalty` (they are set to 10000 in \OpTeX/).
+   \_cod -----------------------------
+
+\_def\_multiskip{\_medskip}      % space above and below \begmulti...\endmulti
+
+\_newcount\_mullines
+
+\_def\_begmulti #1 {\_par\_bgroup\_wipeepar\_multiskip\_penalty0 \_def\_Ncols{#1}
+   \_setbox6=\_vbox\_bgroup\_penalty0
+   %% \hsize := column width = (\hsize+\colsep) / n - \colsep
+   \_advance\_hsize by\_colsep
+   \_divide\_hsize by\_Ncols  \_advance\_hsize by-\_colsep
+   \_mullines=0
+   \_def\par{\_ifhmode\_endgraf\_global\_advance\_mullines by\_prevgraf\_fi}%
+}
+\_def\_endmulti{\_vskip-\_prevdepth\_vfil
+   \_ea\_egroup\_ea\_baselineskip\_the\_baselineskip\_relax 
+   \_dimen0=.8\_maxdimen \_tmpnum=\_dimen0 \_divide\_tmpnum by\_baselineskip 
+   \_splittopskip=\_baselineskip
+   \_setbox1=\_vsplit6 to0pt
+   %% \dimen1 := the free space on the page
+   \_ifdim\_pagegoal=\_maxdimen \_dimen1=\_vsize \_corrsize{\_dimen1}
+   \_else \_dimen1=\_pagegoal \_advance\_dimen1 by-\_pagetotal \_fi
+   \_ifdim \_dimen1<2\_baselineskip
+     \_vfil\_break \_dimen1=\_vsize \_corrsize{\_dimen1} \_fi
+   \_ifnum\_mullines<\_tmpnum \_dimen0=\_ht6 \_else \_dimen0=.8\_maxdimen \_fi
+   \_divide\_dimen0 by\_Ncols \_relax
+   %% split the material to more pages?
+   \_ifdim \_dimen0>\_dimen1 \_splitpart
+   \_else \_balancecolumns \_fi  % only balancing
+   \_multiskip\_egroup
+}
+
+   \_doc -----------------------------
+   Splitting columns...
+   \_cod -----------------------------   
+
+\_def\_makecolumns{\_bgroup % full page, destination height: \dimen1
+   \_vbadness=20000 \_setbox1=\_hbox{}\_tmpnum=0
+   \_loop \_ifnum\_Ncols>\_tmpnum
+      \_advance\_tmpnum by1
+      \_setbox1=\_hbox{\_unhbox1 \_vsplit6 to\_dimen1 \_hss}
+   \_repeat
+   \_hbox{}\_nobreak\_vskip-\_splittopskip \_nointerlineskip
+   \_line{\_unhbox1\_unskip}
+   \_dimen0=\_dimen1 \_divide\_dimen0 by\_baselineskip \_multiply\_dimen0 by\_Ncols
+   \_global\_advance\_mullines by-\_dimen0
+   \_egroup
+}
+\_def\_splitpart{%
+   \_makecolumns % full page
+   \_vskip 0pt plus 1fil minus\_baselineskip \_break
+   \_ifnum\_mullines<\_tmpnum \_dimen0=\_ht6 \_else \_dimen0=.8\_maxdimen \_fi
+   \_divide\_dimen0 by\_Ncols \_relax
+   \_ifx\_balancecolumns\_flushcolumns \_advance\_dimen0 by-.5\_vsize \_fi
+   \_dimen1=\_vsize \_corrsize{\_dimen1}\_dimen2=\_dimen1
+   \_advance\_dimen2 by-\_baselineskip
+   %% split the material to more pages?
+   \_ifvoid6 \_else
+      \_ifdim \_dimen0>\_dimen2 \_ea\_ea\_ea \_splitpart
+      \_else \_balancecolumns % last balancing
+   \_fi \_fi
+}
+
+   \_doc -----------------------------
+   Final balancing of the columns.
+   \_cod -----------------------------
+
+\_def\_balancecolumns{\_bgroup \_setbox7=\_copy6 % destination height: \dimen0
+   \_ifdim\_dimen0>\_baselineskip \_else \_dimen0=\_baselineskip \_fi
+   \_vbadness=20000
+   \_def\_tmp{%
+      \_setbox1=\_hbox{}\_tmpnum=0
+      \_loop \_ifnum\_Ncols>\_tmpnum
+         \_advance\_tmpnum by1
+         \_setbox1=\_hbox{\_unhbox1
+              \_ifvoid6 \_hbox to\_wd6{\_hss}\_else \_vsplit6 to\_dimen0 \_fi\_hss}
+      \_repeat
+   \_ifvoid6 \_else
+      \_advance \_dimen0 by.2\_baselineskip
+      \_setbox6=\_copy7
+      \_ea \_tmp \_fi}\_tmp
+   \_hbox{}\_nobreak\_vskip-\_splittopskip \_nointerlineskip
+   \_hbox to\_hsize{\_unhbox1\_unskip}%
+   \_egroup
+}
+\_def\_corrsize #1{%% #1 := #1 + \splittopskip - \topskip
+   \_advance #1 by \_splittopskip \_advance #1 by-\_topskip
+}
+\_public \begmulti \endmulti ;
+
+\_endcode % -------------------------------------
+
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/multicolumns.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/optex.ini
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/optex.ini	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/optex.ini	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,99 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+%% OpTeX ini file
+%% Petr Olsak <project started from: Jan. 2020>
+
+% Catcodes:
+
+\catcode `\{=1 % left brace is begin-group character
+\catcode `\}=2 % right brace is end-group character
+\catcode `\$=3 % dollar sign is math shift
+\catcode `\&=4 % ampersand is alignment tab
+\catcode `\#=6 % hash mark is macro parameter character
+\catcode `\^=7 % 
+\catcode `\^^K=7 % circumflex and uparrow are for superscripts
+\catcode `\^^A=8 % downarrow is for subscripts
+\catcode `\^^I=10 % ascii tab is a blank space
+\catcode `\_=11 % underline can be used in control sequences
+\catcode `\~=13 % tilde is active
+\catcode `\^^a0=13 % non breaking space in Unicode
+\catcode 127=12 % normal character
+
+% OpTeX version
+
+\def\optexversion{Beta 0.12 May 2020}
+\def\fmtname{OpTeX}
+
+% Engine testing:
+
+\newlinechar=`\^^J
+\ifx\directlua\undefined 
+   \message{This format is based only on LuaTeX, use luatex -ini optex.ini^^J} 
+   \endinput \fi
+
+\ifx\bgroup\undefined \else
+   \message{This file can be used only for format initialisation, use luatex -ini^^J}
+   \endinput \fi
+
+% Basic .opm syntax:
+
+\let\_endcode =\endinput
+\def \_codedecl #1#2{\message{#2^^J}}%  information about .opm file
+\long\def\_doc#1\_cod#2 {} % skip documentation
+
+% Initialization:
+
+\message{OpTeX (Olsak's Plain TeX) initialization <\optexversion>^^J}
+
+\input prefixed.opm        % prefixed primitives and code syntax
+\input luatex-ini.opm      % luaTeX initialization
+\input basic-macros.opm    % basic macros
+\input alloc.opm           % allocators for registers
+\input if-macros.opm       % special \if-macros, \is-macros and loops
+\input parameters.opm      % parameters setting
+\input more-macros.opm     % OpTeX useful macros  (todo: doc)
+\input plain-macros.opm    % plainTeX macros   (todo:doc)
+\input fonts-preload.opm   % preloaded Latin Modern fonts  
+\input fonts-resize.opm    % font resizing (low-level macros) (todo: texdoc)
+\input fonts-select.opm    % font selection system  (todo: texdoc)
+\input math-preload.opm    % math fams CM + AMS preloaded  (todo: doc)
+\input math-macros.opm     % basic macros for math plus mathchardefs  (todo: x)
+\input math-unicode.opm    % macros for loading UnicodeMath fonts  (todo: x)
+\input fonts-opmac.opm     % font managing macros from OPmac  (todo: doc)
+\input output.opm          % output routine
+\input margins.opm         % macros for margins setting  (todo: texdoc)
+\input colors.opm          % colors
+\input ref-file.opm        % ref file
+\input references.opm      % references
+\input hyperlinks.opm      % hyperlinks
+\input maketoc.opm         % maketoc
+\input outlines.opm        % PDF outlines  (todo: x)
+\input pdfuni-string.opm   % PDFunicode strings for outlines  (todo: x)  
+\input sections.opm        % titles, chapters, sections
+\input lists.opm           % lists, \begitems, \enditems
+\input verbatim.opm        % verbatim
+\input hi-syntax.opm       % syntax highlighting of verbatim listimgs
+\input graphics.opm        % graphics
+\input table.opm           % table macro
+\input multicolumns.opm    % more columns by \begmulti ...\endmulti
+\input cite-bib.opm        % Bibliography, \cite
+\input makeindex.opm       % Make index and sorting
+\input fnotes.opm          % \fnotes, \mnotes
+\input styles.opm          % styles \report, \letter
+\input logos.opm           % standard logos
+\input uni-lcuc.opm        % Setting lccodes and uccodes for Unicode characters
+\input hyphen-lan.opm      % initialization of hyphenation patterns  (todo: doc)
+\input languages.opm       % languages
+\input others.opm          % miscenaleous
+
+\_everyjob = {%
+   \_message{This is OpTeX (Olsak's Plain TeX), version <\optexversion>^^J}%
+   \_mathchardef\_fnotestack=\_pdfcolorstackinit page {0 g 0 G}%
+   \_mathsbon % replaces \int_a^b to \int _a^b
+   \_inputref % inputs \jobname.ref if exists
+}
+
+\_dump
+
+\_endcode % ------------------------------
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/optex.ini
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/others.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/others.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/others.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,92 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \uv {Miscenaleous <2020-04-02>} % preloaded in format
+
+    \_doc ----------------------------
+    \`\useOpTeX` and \`\useoptex` are declared as `\relax`.
+    \_cod ----------------------------
+
+\_let \useOpTeX = \_relax   \_let \useoptex = \_relax
+
+    \_doc ----------------------------
+    The \`\lastpage` and \`\totalpages` get the information from the
+    \^`\_currpage`. The \^`\_Xpage` from `.ref` file sets the \^`\_currpage`.  
+    \_cod ----------------------------
+
+\_def\_totalpages {\_openref\_ea\_lastpageA\_currpage}
+\_def\_lastpage   {\_openref\_ea\_lastpageB\_currpage}
+\_def\_lastpageA #1#2{#1}
+\_def\_lastpageB #1#2{#2}
+\_def\_currpage {{0}{?}}
+\_public \lastpage \totalpages ;
+
+    \_doc ----------------------------
+    We need \`\uv`, \`\clqq`, \`\crqq`, \`\flqq`, \`\frqq`, \`\uslang`, \`\ehyph`
+    \`\chyph`, \`\shyph`, for backward compatibility with \csplain.  
+    Codes are set according to Unicode, because we are using Czech only in Unicode
+    when \LuaTeX/ is used.
+    \_cod ----------------------------
+
+
+% for compatibility with csplain:
+
+\_chardef\clqq=8222  \_chardef\crqq=8220
+\_chardef\flqq=171   \_chardef\frqq=187
+\_chardef\promile=8240
+
+\_def\uv#1{\clqq#1\crqq}
+
+\_let\uslang=\enlang  \_let\ehyph=\enlang  
+\_let\chyph=\cslang   \_let\shyph=\sklang
+\_let\csUnicode=\csPatt \_let\czUnicode=\csPatt \_let\skUnicode=\skPatt
+
+    \_doc ----------------------------
+    The \`\letfont` was used in \csplain/ instead of `\fontlet`. 
+    \_cod ----------------------------
+
+\_let \letfont = \_fontlet
+
+    \_doc ----------------------------
+    Non breaking space in Unicode.
+    \_cod ----------------------------
+
+\let ^^a0=~
+
+    \_doc ----------------------------
+    TikZ needs these funny control sequences.
+    \_cod ----------------------------
+
+\_ea\_toksdef \_csname toks@\_endcsname=0
+\_ea\_let     \_csname voidb at x\_endcsname=\_voidbox
+
+    \_doc ----------------------------
+    We don't want to read `opmac.tex` unless `\input opmac` is specified.
+    \_cod ----------------------------
+
+\_def\OPmacversion{OpTeX}  
+
+    \_doc ----------------------------
+    Lorem ipsum can be printed by \`\lipsum``[<range>]` or \`\lorem``[<range>]`,
+    for example `\lipsum[3]` or `\lipsum[112-121]`, max=150. The data are read
+    from \LaTeX/ file `lipsum.ltd.tex`.
+    \_cod ----------------------------
+
+\_def \_lipsum {%
+   {\_long\_def\ProvidesFile##1[##2]##3{\_ifx\_par##3\_relax\_else \_ea##3\_fi}\_tmpnum=0
+    \_def\NewLipsumPar{\_advance\_tmpnum by1 
+       \_afterassignment\_negativermnm \_sxdef{lips:\_the\_tmpnum}}%
+    \_opinput {lipsum.ltd.tex}%
+    \_global\_let \_lipsum=\_reallipsum
+   }\_lipsum
+}
+\_def\_negativermnm{\_romannumeral-`\.} 
+\_def\_reallipsum[#1]{\_lipsumA #1\_empty-\_empty\_end} 
+\_def\_lipsumA #1-#2\_empty#3\_end{\_tmpnum=#1 \_edef\_tmp{\_ifx^#2^#1\_else#2\_fi}% 
+   \_loop \_csname lips:\_the\_tmpnum\_endcsname \par % \par is better here
+         \_ifnum\_tmpnum<\_tmp \_advance\_tmpnum by1 \_repeat 
+}
+\def\lipsum {\_lipsum}
+\def\lorem  {\_lipsum}
+
+\_endcode
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/others.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/outlines.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/outlines.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/outlines.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,97 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \outlines {PDF outlines <2020-03-12>} % preloaded in format
+
+\_def\_outlines#1{\_pdfcatalog{/PageMode/UseOutlines}\_openref
+   \_ifx\_toclist\_empty
+     \_opwarning{\_noexpand\outlines -- data unavailable. TeX me again}%
+   \_else
+     \_ifx\_dest\_destactive \_else
+        \_opwarning{\_noexpand\outlines doesn't work when \_noexpand\hyperlinks isn't declared}\_fi
+     {\_let\_tocline=\_outlinesA
+      \_count0=0 \_count1=0 \_count2=0 \_count3=0 \_toclist % calculate numbers o childs
+      \_def\_outlinelevel{#1}\_let\_tocline=\_outlinesB
+      \_tocrefnum=0 \_count0=0 \_count1=0 \_count2=0 \_count3=0 
+      \_toclist}% create outlines
+   \_fi
+}
+\_def\_outlinesA#1#2#3#4#5#6{%
+   \_advance\_count#1 by1
+   \_ifcase#1\_or
+      \_addoneol{_ol:\_the\_count0}\_or
+      \_addoneol{_ol:\_the\_count0:\_the\_count1}\_or
+      \_addoneol{_ol:\_the\_count0:\_the\_count1:\_the\_count2}\_or
+      \_addoneol{_ol:\_the\_count0:\_the\_count1:\_the\_count2:\_the\_count3}\_fi
+}
+\_def\_addoneol#1{%
+   \_ifcsname #1\_endcsname
+           \_tmpnum=\_csname#1\_endcsname\_relax
+           \_advance\_tmpnum by1 \_sxdef{#1}{\_the\_tmpnum}%
+   \_else \_sxdef{#1}{1}%
+   \_fi
+}
+\_def\_outlinesB#1#2#3#4#5#6{%
+   \_advance\_count#1 by1
+   \_ifcase#1%
+      \_tmpnum=\_trycs{_ol:\_the\_count0}{0}\_or
+      \_tmpnum=\_trycs{_ol:\_the\_count0:\_the\_count1}{0}\_relax\_or
+      \_tmpnum=\_trycs{_ol:\_the\_count0:\_the\_count1:\_the\_count2}{0}\_relax\_or
+      \_tmpnum=\_trycs{_ol:\_the\_count0:\_the\_count1:\_the\_count2:\_the\_count3}{0}\_relax\_or
+      \_tmpnum = 0\_relax\_fi
+   \_pdfunidef\_tmp{#4}%
+   \_advance\_tocrefnum by1
+   \_outlinesC{#1}{toc:\_the\_tocrefnum}{\_ifnum#1<\_outlinelevel\_space\_else-\_fi}{\_tmpnum}{\_tmp}%
+}
+\_def\_outlinesC#1#2#3#4#5{\_pdfoutline goto name{#2} count #3#4{#5}\_relax}
+
+\_newcount\_oulnum
+\_def\_insertoutline#1{\_global\_advance\_oulnum by1
+   \_pdfdest name{oul:\_the\_oulnum} xyz\_relax
+   \_pdfunidef\_tmp{#1}%
+   \_pdfoutline goto name{oul:\_the\_oulnum} count0 {\_tmp}\_relax
+}
+\_public \outlines \insertoutline ;
+
+\_endcode % ----------------------------
+
+The problem is that PDF format needs to know the number of direct
+descendants of each outline if we need to create the tree of structured
+outlines. But we know only the level of each outline. The required data
+should be calculated from TOC data. We use two steps over TOC data saved in
+the `\_toclist` where each record is represented by one `\_tocline`.
+
+First step, the \`\outlines` macro sets `\_tocline` to \`\_outlinesA` and
+calculates the number of direct descendants of each record. Second step, 
+the `\outlines` macro sets `\_tocline` to \`\_outlinesB` and it uses prepared 
+data and create outlines.
+
+Each ouline is mapped to the control sequence of the type
+`\_ol:<num>` or `\_ol:<num>:<num>` or `\_ol:<num>:<num>:<num>` or etc.
+The first one is reserved for level 0, the second one for level 1 (chapters), third
+one for level 2 (sections) etc. The number of direct descentants will be stored
+in these macros after first step is finished. Each new outline of given level
+increases the `<num>` at given level. When the first step is processed then
+(above that) the `\_ol:..` sequence of the parent inceases its value too. The
+`_ol:...` sequences are implemented by `\_ol:\_count0:\_count1:\count2` etc.
+For example, when section (level 2) is processed in the first step then we do:
+
+\begtt
+   \advance \count2 by 1  
+                    % increases the mapping pointer of the type 
+                    % \_ol:<\_count0:\_count1:\_count2> of this section
+   \advance \<_ol:\_count0:\_count1> by 1  
+                    % increases the number of descendants connected 
+                    % to the parent of this section.
+\endtt
+
+When second step is processed, then we only read the stored data about the
+number of descentants. Ad we use it in `count` parameter of `\_pdfoutline`
+primitive.
+
+For linking, we use the same links as in TOC, i.e. the `toc:\_the\_tocrefnum` 
+labels are used.
+
+\`\insertoutline` `{<text>}` inserts one outline with zero direct descendants.
+It creates link destination of the type `oul:<num>` into the document
+(where \^`\insertoutline` is used) and the link itself is created too in the
+outline.


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/outlines.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/output.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/output.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/output.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,245 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \nopagenumbers {Output routine <2020-03-28>} % preloaded in format
+
+   \_doc -----------------------------
+   \`\_optexoutput` is default output routine. You can create another...
+   \_cod -----------------------------
+
+\_output={\_optexoutput}
+\_def \_optexoutput{\_begoutput \_shipout\_completepage \_endoutput}
+
+   \_doc -----------------------------
+   Default \`\_begoutput` and \`\_endoutput` is defined.
+   If you need another functionality implemented in the output routine, you can
+   \^`\addto``\_begoutput{...}` or \^`\addto``\_endoutput{...}`. The settings
+   here is local in the `\output` group.
+
+   The \`\_prepoffsets` can set `\hoffset` differently for left or right
+   page. It is re-defined by the \^`\margins` macro..
+
+   The \^`\_regmark` tokens list includes accumulated `#2` from the \^`\regmacro`.
+   Logos and another macros are re-defined here (locally) for their usage 
+   in headlines or footlines.
+   \_cod -----------------------------
+
+\_def \_begoutput{\_incr\_gpageno 
+   \_immediate\_wref\_Xpage{{\_the\_gpageno}{\_folio}}%
+   \_prepoffsets \_the\_regmark} % 
+\_def \_endoutput{\_advancepageno
+   {\_globaldefs=1 \_the\_nextpages \_nextpages={}}%
+   \_ifnum\_outputpenalty>-20000 \_else\_dosupereject\_fi
+}
+\_def \_prepoffsets {}
+
+   \_doc -----------------------------
+   \`\gpageno` counts pages from one in whole document
+   \_cod -----------------------------
+
+\_newcount\_gpageno
+\_public \gpageno ;
+
+   \_doc -----------------------------
+   The \`\_completepage` is similar what plain \TeX/ does in its output routine.
+   New is only \`\_backgroundbox`. It is `\vbox` with zero height with its
+   contents (from \^`\pgbackground`) llaped down. It is shifted directly to the 
+   left-upper corner of the paper. 
+
+   The \`\_ensureblack` sets the typesetting of its parameter locally to `\Black`
+   color. We needn't do this if colors are never used in the document. So,
+   default value of the `\_ensureblack` macro is empty. But first usage of 
+   color macros in the document re-defines `\_ensureblack`.
+   See the section~\ref[colors] for more details.  
+   \_cod -----------------------------
+
+\_def\_completepage{\_vbox{%
+     \_istoksempty \_pgbackground 
+        \_iffalse \_ensureblack{\_backgroundbox{\_the\_pgbackground}}\_nointerlineskip \_fi
+     \_ensureblack{\_makeheadline}%
+     \_vbox to\_vsize {\_boxmaxdepth=\_maxdepth \_pagecontents}% \pagebody in plainTeX
+     \_ensureblack{\_makefootline}}%
+}
+\_def \_ensureblack #1{#1} % will be re-defined by color macros
+\_let \_openfnotestack = \_relax % will be re-defined by color macros
+\_def \_backgroundbox #1{\_moveleft\_hoffset\_vbox to0pt{\_kern-\_voffset #1\_vss}}
+
+   \_doc -----------------------------
+   \`\_makeheadline` creates `\vbox to0pt` with its contents (the \^`\headline`) 
+   shifted by \^`\headlinedist` up. 
+   \_cod -----------------------------
+
+\_def\_makeheadline {\_istoksempty \_headline \_iffalse 
+   \_vbox to0pt{\_vss 
+                \_baselineskip=\_headlinedist \_lineskiplimit=-\_maxdimen
+                \_line{\_the\_headline}\_hbox{}}\_nointerlineskip 
+   \_fi
+}
+
+   \_doc -----------------------------
+   The \`\_makefootline` appends the \^`\footline` to the page-body box.
+   \_cod -----------------------------
+
+\_def\_makefootline{\_istoksempty \_footline \_iffalse 
+      \_baselineskip=\_footlinedist 
+      \_lineskiplimit=-\_maxdimen \_line{\_the\_footline}
+   \_fi
+}
+
+   \_doc -----------------------------
+   The \`\_pagecontents` is similar as in plain \TeX/. The only differnece is
+   that the \`\_pagedest` is inserted at the top of `\_pagecontents` and 
+   \^`\_ensureblack` is applied to the \^`\topins` and \^`\footins` material.\nl
+   The \`\_footnoterule` is defined here.
+   \_cod -----------------------------
+
+\_def\_pagecontents{\_pagedest % destination of the page 
+  \_ifvoid\_topins \_else \_ensureblack{\_unvbox\_topins}\_fi
+  \_dimen0=\_dp255 \_unvbox255 % open up \box255
+  \_ifvoid\_footins \_else % footnote info is present
+    \_vskip\_skip\_footins
+    \_ensureblack{\_footnoterule \_openfnotestack \_unvbox\_footins}\_fi
+  \_kern-\_dimen0 \_vskip \_pgbottomskip
+}
+\_def \_pagedest {{\_def\_destheight{25pt}\_dest[pg:\_the\_gpageno]}}
+\_def \_footnoterule {\_kern-3pt \_hrule width 2truein \_kern 2.6pt } 
+
+   \_doc -----------------------------
+   \`\pageno`, \`\folio`, \`\nopagenumbers`, \`\advancepageno`
+   and \`\normalbottom`
+   used in the context of the output routine
+   from plain \TeX/ is defined here.
+   Only the \`\raggedbottom` macro is defined differently. We use the
+   \^`\pgbottomskip` register here which is set to 0\,pt by default.
+   \_cod -----------------------------
+
+\_countdef\_pageno=0 \_pageno=1 % first page is number 1
+\_def \_folio {\_ifnum\_pageno<0 \_romannumeral-\_pageno \_else \_number\_pageno \_fi}
+\_def \_nopagenumbers {\_footline={}}
+\_def \_advancepageno {%
+   \_ifnum\_pageno<0 \_global\_advance\_pageno by-1 \_else \_incr\_pageno \_fi 
+} % increase |pageno|
+\_def \_raggedbottom {\_topskip=\_dimexpr\_topskip plus60pt \_pgbottomskip=0pt plus1fil\_relax}
+\_def \_normalbottom {\_topskip=\_dimexpr\_topskip \_pgbottomskip=0pt\_relax}
+
+\_public \pageno \folio \nopagenumbers \advancepageno \raggedbottom \normalbottom ;
+
+   \_doc -----------------------------
+   Macros for footnotes are the same as in plain \TeX. There is only one
+   difference: \`\vfootnote` is implemented as \`\_opfootnote` with empty
+   parameter `#1`. This parameter should do a local settings inside
+   the \`\footins` group and it does it when `\fnote` macro is used.\nl
+   The `\_opfootnote` nor `\vfootnote` don't take the footnote text
+   as a parameter. This is due to user can do catcode settings (like inline
+   verbatim) in the footnote text. This idea is adapted from plain \TeX.\nl
+   The \`\footnote` and \`\footstrut` is defined as in plain \TeX/.
+   \_cod -----------------------------
+
+\_newinsert\_footins
+\_def \_footnote #1{\_let\_osf=\_empty % parameter #2 (the text) is read later
+   \_ifhmode \_edef\_osf{\_spacefactor\_the\_spacefactor}\/\_fi
+  #1\_osf\_vfootnote{#1}}
+\_def\_vfootnote{\_opfootnote{}}
+\_def \_opfootnote #1#2{\_insert\_footins\_bgroup
+  \_interlinepenalty=\_interfootnotelinepenalty
+  \_leftskip=0pt \_rightskip=0pt \_spaceskip=0pt \_xspaceskip=0pt \_relax 
+  \_let\_colorstackcnt=\_fnotestack % special color stack for footnotes
+  #1\_relax % local settings used by \fnote macro
+  \_splittopskip=\_ht\_strutbox % top baseline for broken footnotes
+  \_splitmaxdepth=\_dp\_strutbox \_floatingpenalty=20000
+  \_textindent{#2}\_footstrut
+  \_isnextchar \_bgroup 
+     {\_bgroup \_aftergroup\_vfootA \_afterassignment\_ignorespaces \_let\_next=}{\_vfootB}%
+}
+\_def\_vfootA{\_unskip\_strut\_isnextchar\_colorstackpop\_closefncolor\_vfootF}
+\_def\_vfootB #1{#1\_uskip\_strut\_vfootF}
+\_def\_vfootF{\_egroup} % close \_insert\_footins\_bgroup
+\_def\_closefncolor#1{#1\_isnextchar\_colorstackpop\_closefncolor\_vfootF}
+\_def \_footstrut {\_vbox to\_splittopskip{}}
+\_skip\_footins=\_bigskipamount % space added when footnote is present
+\_count\_footins=1000 % footnote magnification factor (1 to 1)
+\_dimen\_footins=8in % maximum footnotes per page
+\_public
+   \footins \footnote \vfootnote \footstrut ;
+
+   \_doc -----------------------------
+   The \`\topins` macros 
+   \`\topinsert`, \`\midinsert`, \`\pageinsert`, \`\endinsert`
+   are the same as in plain \TeX/.
+   \_cod -----------------------------
+
+\_newinsert\_topins
+\_newifi\_ifupage \_newifi\_ifumid
+\_def \_topinsert {\_umidfalse \_upagefalse \_oins}
+\_def \_midinsert {\_umidtrue \_oins}
+\_def \_pageinsert {\_umidfalse \_upagetrue \_oins}
+\_skip\_topins=\_zoskip % no space added when a topinsert is present
+\_count\_topins=1000 % magnification factor (1 to 1)
+\_dimen\_topins=\_maxdimen % no limit per page
+\_def \_oins {\_par \_begingroup\_setbox0=\_vbox\_bgroup} % start a \_vbox
+\_def \_endinsert {\_par\_egroup % finish the \_vbox
+  \_ifumid \_dimen0=\_ht0 \_advance\_dimen0 by\_dp0 \_advance\_dimen0 by\_baselineskip
+    \_advance\_dimen0 by\_pagetotal \_advance\_dimen0 by-\_pageshrink
+    \_ifdim\_dimen0>\_pagegoal \_umidfalse \_upagefalse \_fi \_fi
+  \_ifumid \_bigskip \_box0 \_bigbreak
+  \_else \_insert \_topins {\_penalty100 % floating insertion
+    \_splittopskip=0pt
+    \_splitmaxdepth=\_maxdimen \_floatingpenalty=0
+    \_ifupage \_dimen0=\_dp0
+    \_vbox to\_vsize {\_unvbox0 \_kern-\_dimen0}% depth is zero
+    \_else \_box0 \_nobreak \_bigskip \_fi}\_fi\_endgroup}
+
+\_public \topins \topinsert \midinsert \pageinsert \endinsert ;
+
+   \_doc -----------------------------
+   The \`\draft` macro is an example of usage `\_pgbackground` to create 
+   water color marks.
+   \_cod -----------------------------
+
+\_def \_draft {\_pgbackground={\_draftbox{\_draftfont DRAFT}}%
+   \_fontdef\_draftfont{\_setfontsize{at10pt}\_bf}%
+   \_global\_let\_draftfont=\_draftfont
+}
+\_def \_draftbox #1{\_setbox0=\_hbox{#1}%
+   \_kern.5\_vsize \_kern4.5\_wd0 
+   \_hbox to0pt{\_kern.5\_hsize \_kern-1\_wd0
+   \_pdfsave \_pdfrotate{55}\_pdfscale{10}{10}%
+   \_hbox to0pt{\_localcolor\LightGrey \_box0\_hss}%
+   \_pdfrestore
+   \_hss}%
+}
+\_public \draft ;
+
+\_endcode % -------------------------------------
+
+
+The output routine \^`\_optexoutput` is similar as in plain \TeX. It does:
+
+\begitems
+* \^`\_begoutput` which does:
+  \begitems
+  * increments \^`\gpageno`, 
+  * prints `\_Xpage{<gpageno>}{<pageno>}` to the `.ref` file 
+    (if \^`\openref` is active), 
+  * calculates `\hoffset`,
+  * sets local meaning of macros used in headlines/footlines (see \^`\regmacro`).
+  \enditems
+* `\shipout`\^`\_completepage`, which is `\vbox` of --
+  \begitems
+  * backrground box, if \^`\pgbackground` is non-empty,
+  * headline box by \^`\_makeheadline`, if the \^`\headline` is nonempty,
+  * `\vbox to\vsize` of \^`\_pagecontents` which cosnists of --
+    \begitems
+    * \^`\_pagedest`, the page destination `pg:<gpageno>` for hyperlinks is created here, 
+    * \^`\topins` box if non-empty (from \^`\topinsert`s),
+    * `\box255` with completed vertical material from main vertical mode,
+    * \^`\_footnoterule` and \^`\footins` box if nonempty (from \^`\fnote`, \^`\footnote`),
+    * \^`\pgbottomskip` (default is 0\,pt).
+    \enditems
+  * footline box by `\_makefootline`, if the \^`\footline` is nonempty
+  \enditems 
+* \^`\_endoutput` which does:
+  \begitems
+  * increments \^`\pageno` using \^`\advancepageno`
+  * runs output routine repeatedly if \^`\dosupereject` is activated.
+  \enditems
+\enditems


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/output.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/parameters.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/parameters.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/parameters.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,542 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \normalbaselineskip {Parameter settings <2020-03-17>} % preloaded in format 
+
+   \_doc -----------------------------
+   \secc Primitive registers
+   The primitive registers with the same default value as in plain \TeX/ follow:
+   \_cod -----------------------------
+
+\_parindent=20pt     % indentation of paragraphs
+\_pretolerance=100   % parameters used in paragraph breaking algorithm
+\_tolerance=200   
+\_hbadness=1000
+\_vbadness=1000
+\_doublehyphendemerits=10000
+\_finalhyphendemerits=5000
+\_adjdemerits=10000
+\_uchyph=1
+\_defaulthyphenchar=`\-
+\_defaultskewchar=-1
+\_hfuzz=0.1pt
+\_vfuzz=0.1pt
+\_overfullrule=5pt
+\_linepenalty=10     % penalty between lines inside the paragraph
+\_hyphenpenalty=50   % when a word is bro-ken
+\_exhyphenpenalty=50 % when the hyphenmark is used explicitly
+\_binoppenalty=700   % between binary operators in math
+\_relpenalty=500     % between relations in math
+\_brokenpenalty=100  % after lines if they end by a broken word.
+\_displaywidowpenalty=50   % before last line of paragraph if display math follows
+\_predisplaypenalty=10000  % above display math 
+\_postdisplaypenalty=0     % below display math
+\_delimiterfactor=901 % parameter for scaling delimiters
+\_delimitershortfall=5pt
+\_nulldelimiterspace=1.2pt
+\_scriptspace=0.5pt
+\_maxdepth=4pt
+\_splitmaxdepth=\_maxdimen
+\_boxmaxdepth=\_maxdimen
+\_parskip=0pt plus 1pt
+\_abovedisplayskip=12pt plus 3pt minus 9pt
+\_abovedisplayshortskip=0pt plus 3pt
+\_belowdisplayskip=12pt plus 3pt minus 9pt
+\_belowdisplayshortskip=7pt plus 3pt minus 4pt
+\_parfillskip=0pt plus 1fil
+\_thinmuskip=3mu
+\_medmuskip=4mu plus 2mu minus 4mu
+\_thickmuskip=5mu plus 5mu
+
+   \_doc -----------------------------
+   Note that `\topskip` and `\splittopskip` are changed when first
+   `\typosize` sets the main values (default font size and default 
+   `\baselineskip`).
+   \_cod -----------------------------
+
+\_topskip=10pt       % top edge of page-box to first baseline distance
+\_splittopskip=10pt
+
+   \_doc -----------------------------
+   \secc Plain \TeX/ registers
+   Declared registers used in plain \TeX/
+   \_cod -----------------------------
+
+% We also define special registers that function like parameters:
+\_newskip\_smallskipamount \_smallskipamount=3pt plus 1pt minus 1pt
+\_newskip\_medskipamount \_medskipamount=6pt plus 2pt minus 2pt
+\_newskip\_bigskipamount \_bigskipamount=12pt plus 4pt minus 4pt
+\_newskip\_normalbaselineskip \_normalbaselineskip=12pt
+\_newskip\_normallineskip \_normallineskip=1pt
+\_newdimen\_normallineskiplimit \_normallineskiplimit=0pt
+\_newdimen\_jot \_jot=3pt
+\_newcount\_interdisplaylinepenalty \_interdisplaylinepenalty=100
+\_newcount\_interfootnotelinepenalty \_interfootnotelinepenalty=100
+
+\_def\_normalbaselines{\_lineskip=\_normallineskip
+  \_baselineskip=\_normalbaselineskip \_lineskiplimit=\_normallineskiplimit}
+
+\_def\_frenchspacing{\_sfcode`\.=1000 \_sfcode`\?=1000 \_sfcode`\!=1000
+  \_sfcode`\:=1000 \_sfcode`\;=1000 \_sfcode`\,=1000 }
+\_def\_nonfrenchspacing{\_sfcode`\.=3000 \_sfcode`\?=3000 \_sfcode`\!=3000
+  \_sfcode`\:=2000 \_sfcode`\;=1500 \_sfcode`\,=1250 }
+
+\_public \normalbaselines \frenchspacing \nonfrenchspacing 
+   \smallskipamount \medskipamount \bigskipamount 
+   \normalbaselineskip \normallineskip \normallineskiplimit
+   \jot \interdisplaylinepenalty \interfootnotelinepenalty ; 
+
+   \_doc -----------------------------
+   \secc Different settings than in plain \TeX/
+
+   Default \"baseline setting" is for 10\,pt fonts (like in plain \TeX/).
+   But `\typosize` and `\typoscale` macros re-declare it if another font size is used.
+
+   The \`\nonfrenchspacing` is not set by default because 
+   the author of \OpTeX/ is living in the Europe.
+   If you set `\enlang` hyphenation patterns then `\nonfrenchspacing`
+   is set.
+   \_cod -----------------------------
+
+\_normalbaselines % baseline setting, 10 pt font size
+
+   \_doc -----------------------------
+   Different values than in plain \TeX/ have following primitive registers.
+   We prohibit orphans, set more information for tracing boxes, set page origin
+   to upper left corner of the paper (no at 1\,in, 1\,in coordinates)
+   and set default page dimensions as A4, no letter.
+   \_cod -----------------------------
+
+\_emergencystretch=20pt % we want to use third pass of aparagraph building algoritmh
+                        % we need not to keep the compatibility with old documents
+
+\_clubpenalty=10000    % after first line of paragraph
+\_widowpenalty=10000   % before last line of paragraph
+
+\_showboxbreadth=150   % for tracing boxes
+\_showboxdepth=7
+\_errorcontextlines=15
+\_tracinglostchars=2   % missing chracter warnings on terminal too
+
+\_outputmode=1   % PDF ouput
+\_pdfvorigin=0pt % orgin is exatly at left upper corner 
+\_pdfhorigin=0pt
+\_hoffset=25mm   % margins are 2.5cm, no 1in
+\_voffset=25mm   
+\_hsize=160mm    % 210mm (from A4 size) - 2*25mm (default margins)
+\_vsize=244mm    % 297mm (from A4 size) - 2*25mm (default margins) -3mm baseline correction
+\_pagewidth=210 true mm
+\_pageheight=297 true mm
+
+   \_doc -----------------------------
+   If you insist on plain \TeX/ values of these parameters then you can
+   call the `\plaintexsetting` macro.
+   \_cod -----------------------------
+
+\_def\_plaintexsetting{%
+   \_emergencystretch=0pt
+   \_clubpenalty=150 
+   \_widowpenalty=150
+   \_pdfvorigin=1in
+   \_pdfhorigin=1in
+   \_hoffset=0pt
+   \_voffset=0pt
+   \_hsize=6.5in 
+   \_vsize=8.9in
+   \_pagewidth=8.5 true in
+   \_pageheight=11 true in
+   \_nonfrenchspacing
+}
+\_public \plaintexsetting ;
+
+   \_doc -----------------------------
+   \secc \OpTeX/ parameters
+
+   The main principle how to configure \OpTeX/ is not to use only parameters.
+   A designer can copy macros from \OpTeX/ and re-define them as required.
+   This is a reason why we don't implement dozens of parameters,
+   but we keep \OpTeX/ macros relatively simple. Example: do you want
+   another design of section titles? Copy macros `\_printsec` and
+   `\_printsecc` from `sections.opm` file to your macro file and re-define them.
+
+   Notice for OPmac users: there is important difference: all "string-like"
+   parameters are token lists in \OpTeX/ (OPmac uses macros for them). The reason of
+   this difference: if user sets parameter by unprotected control sequence,
+   an \OpTeX/ macro can read {\em the same data} using protected control sequence.
+   If user re-defines such unprotected control sequence (because he/she does
+   know about it) then nothing bad happens.
+
+   The \`\picdir` tokens list can include a directory where image files
+   (loaded by `\inspic`) are saved. Empty `\picdir` (default value) means
+   that image files are in the current directory (or somewhere in the \TeX/
+   system where \LuaTeX/ is able to find them). If you set non-empty value to
+   the `\picdir`, then it must end by `/` character, for example
+   `\picdir={img/}` means that there exists a directory `img` in your
+   current directory and the image files are stored here. 
+   \_cod -----------------------------
+
+\_newtoks\_picdir
+\_public \picdir ;
+
+   \_doc -----------------------------
+   You can control the dimesions of included images by
+   the parameters \`\picwidth` (which is equivalent to \`\picw`) and
+   \`\picheight`. By default these parameters are set to zero: the native
+   dimension of the image is used. If only `\picwidth` has a nonzero value,
+   then this is the width of the image (height is calculated automatically in
+   order to respect the aspect of the image). If only `\picheight` has
+   a nonzero value then height is given, width is calculated. If both
+   parameters are non-zero, the height and width are given and the aspect
+   ratio of the image is (probably) broken. We recommend to set these
+   parameters locally in the group where `\inspic` is used in order to not
+   influence the dimensions of another images. But there exist many
+   situations you need to put the same dimensions to more images,
+   so you can set this parameter only once before more `\inspic` macros.
+   \_cod -----------------------------
+
+\_newdimen\_picwidth   \_picwidth=0pt   \_let\picw=\_picwidth 
+\_newdimen\_picheight  \_picheight=0pt
+\_public \picwidth \picheight ;
+
+   \_doc -----------------------------
+   The \`\everytt` is token list used in 
+   `\begtt`...`\endtt` environment and
+   in the verbatim group opened by `\verbinput` macro. You can include a
+   code which is processed inside the group after basic settings were done
+   On the other hand, it is processed before scanner of verbatim text is started. 
+   Your macros should influence scanner (catcode settings) or printing 
+   process of the verbatim code or both.
+
+   The code from the line immediately after `\begtt` is processed after
+   the `\everytt`. This code should overwrite `\everytt` settings. Use
+   `\everytt` for all verbatim environments in your document and use a code
+   after `\begtt` locally only for this environment. 
+
+   The \`\everyintt` token list does similar work 
+   but acts in the in-line verbatim
+   text processed by a pair of `\activettchar` characters or by `\code{<text>}`.
+   You can set `\everyintt={\Red}` for example if you want in-line verbatim
+   in red color.
+   \_cod -----------------------------
+
+\_newtoks\_everytt      
+\_newtoks\_everyintt
+\_public \everytt \everyintt ;
+
+   \_doc -----------------------------
+   The \`\ttline` is used 
+   in `\begtt`...`\endtt` environment or in the code
+   printed by `\verbinput`. If `\ttline` is positive or zero, then the
+   verbatim code have numbered lines from `\ttline+1`. The `\ttline`
+   register is re-set to new value after a code piece is printed, so next
+   code pieces have numbered lines continuously. If `\ttline=-1`, then
+   `\begtt`...`\endtt` lines are without numbers and `\verbinput` lines
+   shows the line numbers of inputted file. If `\ttline`\code{<-1} 
+   then no line numbers are printed.
+   \_cod -----------------------------
+
+\_newcount\_ttline    \_ttline=-1  % last line number in \begtt...\endtt
+\_public \ttline ;
+
+   \_doc -----------------------------
+   The \`\ttindent` gives default indentation 
+   of verbatim lines printed by `\begtt`...`\endtt` pair or by
+   `\verbinput`.
+   \nl
+   The \`\ttshift` gives the amount of shift of all verbatim lines to right.
+   Despite to the \^`\ttindent`, it does not shift the line numbers, only
+   the text.
+   \nl
+   The \`\iindent` gives default indentations used in table of contents, 
+   captions, lists, bib references,
+   \nl
+   It is strongly recommended to re-set this value if you set `\parindent`
+   to another value than plain \TeX/ default 20pt. A well typeset
+   document should have the same dimension for all indentations, so
+   you should say `\ttindent=\parindent` and `\iindent=\parindent`. 
+   \_cod -----------------------------
+
+\_newdimen\_ttindent \_ttindent=\_parindent % indentation in verbatim
+\_newdimen\_ttshift  
+\_newdimen\_iindent  \_iindent=\_parindent
+\_public \ttindent \ttshift \iindent ;
+
+   \_doc -----------------------------
+   The tabelator `^^I` has its category code like space: it behaves as a
+   space in normal text. This is normal plain \TeX/ setting. 
+   But in the multiline verbatim environment it
+   is active and expands to the `\hskip<dimen>` where `<dimen>`
+   is the width of \`\tabspaces` spaces. 
+   Default `\tabspaces=3` means
+   that tabelator behaves like three spaces in multiline verbatim.
+   \_cod -----------------------------
+
+\_newcount \_tabspaces   \_tabspaces=3
+\_public \tabspaces ;
+
+   \_doc -----------------------------
+   If \`\hicolors` is non-empty then its contents is used instead
+   `\_hicolors<name>` declared in the file `hisyntax-<name>.opm`.
+   The user can give his/her preferences about colors for
+   syntax highlighting by this tokens list.
+   Full color set must be declared here.
+   \_cod -----------------------------
+
+\_newtoks\_hicolors  
+\_public \hicolors ;
+
+   \_doc -----------------------------
+   The default item mark used between `\begitems` and `\enditems` is bullet.
+   The \`\defaultitem` tokens list declare this default item mark.
+   \nl
+   The \`\everyitem` tokens list is applied in vertical mode
+   at the start of each item.
+   \nl 
+   The \`\everylist` tokens list is applied after group is opened by
+   \nl
+   The \`\ilevel` keeps the value of current nesting level of the items list.
+   \nl
+   The \`\listskipamount` gives vertical skip above and below the items list
+   if `\ilevel=1`.
+   \_cod -----------------------------
+
+\_newtoks\_defaultitem  \_defaultitem={$\_bullet$\_enspace}
+\_newtoks\_everyitem
+\_newtoks\_everylist
+\_newskip \_listskipamount  \_listskipamount=\_medskipamount
+\_newcount \_ilevel
+\_public \defaultitem \everyitem \everylist \listskipamount \ilevel ;
+
+   \_doc -----------------------------
+   The `\tit` macro includes `\vglue`\`\titskip` above the title of the document.
+   \_cod -----------------------------
+
+\_newskip\_titskip   \_titskip=40pt \_relax  % \vglue above title printed by \tit
+\_public \titskip ;
+
+   \_doc ----------------------------
+   The `\begmulti` `\endmulti` pair creates more columns. The parameter
+   \`\colsep` declares the space between columns. If $n$ columns are specified
+   then we have $n-1$ `\colseps` and $n$ columns in total `\hsize`. This
+   gives definite result of columns width. 
+   \_cod ----------------------------
+
+\_newdimen\_colsep \_colsep=20pt  % space between columns
+\_public \colsep ;
+
+   \_doc -----------------------------
+   Each line in the Table of contents is printed in a group.
+   The \`\everytocline` tokens list is processed here before 
+   the internal `\_tocl:<num>` macro which starts printing the line.
+   \_cod -----------------------------
+
+\_newtoks \_everytocline
+\_public \everytocline ;
+
+   \_doc -----------------------------
+   The \`\bibtexhook` tokens list is used inside the group when `\usebib` command is
+   processed after style file is loaded and before printing bib-entries.
+   You can re-define a behavior of style file here or you can modify the
+   more declaration for printing (fonts, baselineskip, etc.) or you can
+   define a specific macros used in your `.bib` file.
+   \_cod -----------------------------
+
+\_newtoks\_bibtexhook
+\_public \bibtexhook ;
+
+\_newtoks\_everycaptiont  \_newtoks\_everycaptionf
+\_public \everycaptiont \everycaptionf ;
+
+   \_doc -----------------------------
+   The \`\everyii` tokens list is used before `\noindent` for each
+   Index item when printing the Index. 
+   \_cod -----------------------------
+
+\_newtoks\_everyii
+\_public \everyii ;
+
+   \_doc -----------------------------
+   The \`\everymnote` is used in the `\mnote` group before `\noindent` which
+   immediately precedes marginal note text.
+   \nl
+   The \`\mnotesize` is horizontal size of the marginal notes.
+   \nl
+   The \`\mnoteindent` is horizontal space between body-text and marginal note.
+   \nl
+   The \`\mnoteskip` is a dimen which denotes the vertical shift of marginal
+   note from its normal position. Positive value means shift up, negative
+   down. The `\mnoteskip` register is set to zero 
+   after the marginal note is printed.
+   Use it as an exception of marginal note position if the marginal
+   notes overlaps or they are put at bottom of the page.      
+   \_cod -----------------------------
+
+\_newtoks\_everymnote 
+\_newdimen\_mnotesize   \_mnotesize=20mm   % the width of the mnote paragraph
+\_newdimen\_mnoteindent \_mnoteindent=10pt % ditance between mnote and text
+\_newdimen\_mnoteskip  
+\_public \everymnote \mnotesize \mnoteindent \mnoteskip ;
+
+   \_doc -----------------------------
+   The `\table` parameters follows. The \`\thistable` tokens list 
+   register should be used for giving an exception for only one `\table` 
+   which follows. It should change locally other parameters of the `\table`. 
+   It is reset to empty list after the table is printed.
+   \nl
+   The \`\everytable` tokens list register is applied in every table.
+   There is another difference between these two registers.
+   The 	`\thistable` is used first, then strut and baselineskip settings are
+   done, then `\everytable` is applied and then the table is printed.
+   \nl
+   \`\tabstrut` configures the height and depth of lines in the table.
+   You can declare `\tabstrut={}`, then normal baselineskip is used in the
+   table. This can be used when you don't use horizontal nor vertical 
+   lines in tables.
+   \nl
+   \`\tabiteml` is applied before each item,
+   \`\tabitemr` is applied after each item of the table.
+   \nl 
+   \`\tablinespace` is additional vertical space between horizontal rules
+   and the lines of the table.
+   \nl
+   \`\hhkern` gives the space between horizontal lines if they are doubled and 
+   \`\vvkern` gives the space between such vertical lines. 
+   \_cod -----------------------------
+
+\_newtoks\_everytable \_newtoks\_thistable 
+\_newtoks\_tabiteml \_newtoks\_tabitemr \_newtoks\_tabstrut
+\_newdimen\_tablinespace \_newdimen\_vvkern \_newdimen\_hhkern
+\_everytable={}        % code used after settings in \vbox before table processing
+\_thistable={}         % code used when \vbox starts, is is removed after using it
+\_tabstrut={\_strut}
+\_tabiteml={\_enspace} % left material in each column
+\_tabitemr={\_enspace} % right material in each column
+\_tablinespace=2pt     % additional vertical space before/after horizontal rules
+\_vvkern=1pt           % space between double vertical line and used in \frame
+\_hhkern=1pt           % space between double horizontal line and used in \frame
+\_public \everytable \thistable \tabiteml \tabitemr \tabstrut \tablinespace \vvkern \hhkern ;
+
+   \_doc -----------------------------
+   The output routine uses token list \`\headline` and \`\footline` in the
+   same sense as in plain \TeX/. If they are non-empty then `\hfil` or `\hss`
+   must be here because they are used inside `\hbox to\hsize`.
+
+   Assume that page-body text can be typeset in different sizes and
+   different fonts and we don't know in what font context the output routine
+   is invoked. So, it is strongly recommended to declare fixed variants of
+   fonts at begining of your document. For example `\fontdef\rmfixed{\rm}`,
+   `\fontdef\itfixed{\it}`. Then use them in headline and footline:
+   \begtt
+   \headline={\itfixed Text of headline, section: \fistmark \hss}
+   \footline={\rmfixed \ifodd\pageno \hfill\fi \folio \hfil}
+   \endtt
+   \_cod -----------------------------
+
+\_newtoks\_headline   \_headline={}
+\_newtoks\_footline   \_footline={\_hss\_rmfixed \_folio \_hss}
+\_public \headline \footline ;
+
+   \_doc -----------------------------
+   The distance between the `\headline` and the top of the page-text
+   is controlled by the \`\headlinedist` register. 
+   The distance between bottom of
+   page-text and `\footline` is \`\footlinedist`. 
+   More precisely: baseline of
+   headline and baseline of first line in page-text have distance
+   `\headlinedist+\topskip`. The baseline of the last line in page-text and
+   the baseline of the footline have distance `\footlinedist`.
+   Default values are inspired from plain \TeX/.
+   \_cod -----------------------------
+
+\_newdimen \_headlinedist  \_headlinedist=14pt
+\_newdimen \_footlinedist  \_footlinedist=24pt
+\_public \headlinedist \footlinedist ;
+
+   \_doc -----------------------------
+   The \`\pgbottomskip` is inserted to the page bottom 
+   in the output routine. You can set a less tolerance here than
+   `\raggedbotom` does. By default, no tolerance is given.
+   \_cod -----------------------------
+
+\_newskip \_pgbottomskip  \_pgbottomskip=0pt \_relax
+\_public \pgbottomskip ;
+
+   \_doc -----------------------------
+   The \`\nextpages` tokens list can include settings which will be used at
+   next pages. It is processed at the end of output routine with
+   `\globaldefs=1` prefix. The `\nextpages` is reset to empty after
+   processing. Example of usage:
+   \begtt
+   \headline={} \nexptages={\headline={\fixedrm \firstmark \hfil}}
+   \endtt 
+   This example sets current page with empty headline, but next pages have 
+   non-empty headlines.
+   \_cod -----------------------------
+
+\_newtoks \_nextpages
+\_public \nextpages ;
+
+   \_doc -----------------------------
+   The \`\pgbackground` token list can include macros which generate a
+   vertical list. It is used as page background. The top-left corner of such
+   `\vbox` is at the top-left corner of the paper. Example creates the
+   background of all pages yellow:
+   \begtt
+   \pgbackground={\Yellow \hrule height 0pt depth\pdfpageheight width\pdfpagewidth}
+   \endtt
+   \_cod -----------------------------
+
+\_newtoks \_pgbackground   \_pgbackground={} % for page background
+\_public \pgbackground  ;
+
+   \_doc -----------------------------
+   The parameters used in `\inoval` and `\incircle` macros.
+   The default values (documented in user manual) are set in the macros.
+   The user can re-set these values using tokens \`\ovalparams`, \`\circleparams`. 
+   \_cod -----------------------------
+
+\_newtoks \_ovalparams
+\_newtoks \_circleparams
+%\_ovalparams={\_roundness=2pt \_fcolor=\Yellow \_lcolor=\Red \_lwidth=.5bp 
+%              \_shadow=N \_overlapmargins=N \_hhkern=0pt \_vvkern=0pt }
+%\_circleparams={\_ratio=1 \_fcolor=\Yellow \_lcolor=\Red \_lwidth=.5bp 
+%                \_shadow=N \_overlapmargins=N \_hhkern=3pt \_vvkern=3pt}
+
+\_newdimen \_roundness    \_roundness=5mm % used in \clippingoval macro
+
+\_public \ovalparams \circleparams \roundness ;
+
+
+\_endcode %----------------------------------------------------
+
+The behavior of document processing by \OpTeX/ is
+controlled by {\em parameters}. The parameters are
+\begitems
+* primitive registers used in build-in algorithms of \TeX/,
+* registers declared and used by \OpTeX/ macros.
+\enditems
+Both groups of registers have their type: number, dimension, skip, token
+list.  
+
+The registers are represented by their names (control sequences). If the user
+re-defines such control sequence then the appropriate register exists
+steadily and build-in algorithms are using it without change. But user
+cannot access its value in such case. \OpTeX/ declares two control sequences
+for each register: prefixed and unprefixed. \OpTeX/ macros use only
+prefixed variants of control sequences. The user should use unprefixed variant
+with the same meaning and set or read values of registers using the
+unprefixed variant. If the user re-defines the unprefixed control sequence of 
+a register then \OpTeX/ macros still work without change.
+
+%There is only few parameters declared by \OpTeX/ macros. All of them 
+%are listed in this section. This is desired feature of the \OpTeX/. 
+%If you want to do more
+%changes wich cannot be controlled by parameters listed here then you 
+%can copy the appropriate \OpTeX/ macro to your macro file and you 
+%can completely re-define it. The typical examples are `\_printsomething`
+%macros which declares the design of the document.
+
+\_endinput
+
+History:
+2020-04-04 ... \tabspaces added
+2020-04-03 ... \hicolors added


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/parameters.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/pdfuni-string.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/pdfuni-string.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/pdfuni-string.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,78 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \pdfunidef {PDFunicode strings for outlines <2020-03-12>} % preloaded in format
+
+\_edef\_octalprint#1#2{\_noexpand\_directlua{% #1=character-code #2=character
+    if ('#2'>='A' and '#2'<='Z') or ('#2'>='a' and '#2'<='z') then
+      tex.print(string.format('000\_pcent s',"#2"))
+    else
+      local num=#1\_pcent256
+      tex.print(string.format('\_pcent 03o\_nbb\_pcent03o',(#1-num)/256,num))
+    end
+}}
+\_def\_pdfunidef#1#2{%
+   \_begingroup
+      \_catcode`\\=12 \_let\\=\_bslash
+      \_the\_regoul \_relax % \_regmacro alternatives of logos etc.
+      \_escapechar=-1
+      \_edef#1{#2\_empty}%
+      \_escapechar=`\\
+      \_ea\_edef \_ea#1\_ea{\_ea\_removeoutmath   #1$\_end$}%  $x$ -> x
+      \_ea\_edef \_ea#1\_ea{\_ea\_removeoutbraces #1{\_end}}%  {x} -> x
+      \_edef#1{\_detokenize\_ea{#1}}%
+      \_replstring#1{ }{{ }}%  text text -> text{ }text
+      \_edef\_out{\\376\\377}%
+      \_ea\_pdfunidefB#1^%  text -> \_out in octal
+      \_ea
+   \_endgroup
+   \_ea\_def\_ea#1\_ea{\_out}
+}
+\_def\_pdfunidefB#1{%
+   \_ifx^#1\_else 
+      \_tmpnum=`#1
+      \_pdfunidefC{\_luaescapestring{#1}}%
+   \_ea\_pdfunidefB \_fi
+} 
+\_def\_pdfunidefC #1{\_edef\_out{\_out \\\_ea\_octalprint\_ea{\_the\_tmpnum}{#1}}}
+
+\_def\_removeoutbraces #1#{#1\_removeoutbracesA}
+\_def\_removeoutbracesA #1{\_ifx\_end#1\_else #1\_ea\_removeoutbraces\_fi}
+\_def\_removeoutmath #1$#2${#1\_ifx\_end#2\_else #2\_ea\_removeoutmath\_fi}
+
+\_regmacro {}{}{\_let\em=\_empty \_let\rm=\_empty \_let\bf=\_empty
+    \_let\it=\_empty \_let\bi=\_empty \_let\tt=\_empty \_let\/=\_empty
+    \_let~=\_space
+}
+\public \pdfunidef ;
+
+\_endcode % --------------------------------
+
+There are only two encodings for PDF strings (used in PDFoutlines, PDFinfo
+etc.). First one is PDFDocEncoding which is one-byte encoding, but most
+Czech or Slovak characters are missing here.
+
+The second encoding is PDFunicode encoding wich is implemented in this file. 
+This encoding is \TeX/-discomfortable, because it looks like
+
+\begtt
+\376\377\000C\000v\000i\001\015\000e\000n\000\355\000\040\000j\000e\000\040
+\000z\000\341\000t\001\033\001\176 
+\endtt
+
+This example is real encoding of the string "Cvičení je zátěž". You can see
+that this is UTF-16 encoding (two bytes per character) with two starting
+bytes FEFF. Moreover, each byte is encoded by three octal digits preceded by
+backslash. The only exception is the visible ASCII character encoding: such
+a character is encoded by its real byte preceded by `\000`.
+
+The command \`\pdfunidef``\macro{string}` is implemented here
+using `\directlua`.
+The input string is preprocessed: detokenized, converted `\word /` to
+`\word/` (used in logos) preprocessed spaces using \^`\replstring` and then the
+\`\_pdfunidefB` is repeated on each character. It calls the `\directlua` chunk
+to print octal numbers in the macro `\_octalprint`.
+
+The \^`\regmacro` is used in order to sed the values of macros
+`\em`, `\rm`, `\bf`, `\it`, `\bi`, `\tt`, `\/` and `~` to values usable in
+PDF outlines.
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/pdfuni-string.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/plain-macros.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/plain-macros.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/plain-macros.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,339 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \magstep {Macros from plain TeX <2020-02-14>} % preloaded in format
+
+   \_doc -----------------------------
+   The \`\dospecials` works like in plain TeX but does nothing with `_`.
+   If you need to do the same with this character, you can re-define:
+   \begtt
+   \addto \dospecials{\do\_}
+   \endtt
+   \_cod -----------------------------
+
+\_def\_dospecials {\do\ \do\\\do\{\do\}\do\$\do\&%
+  \do\#\do\^\do\^^K\do\^^A\do\%\do\~}
+\_chardef\_active = 13
+
+\_public \dospecials \active ;
+
+   \_doc -----------------------------
+   The shortcuts `\chardef\@one` is not defined in \OpTeX/. Use normal
+   numbers instead of such obscurities.
+   \nl
+   The \`\magstep` and \`\magstephalf` are 
+   defined with `\space`, (no `\relax`), in order to be expandable.
+   \_cod -----------------------------
+   
+\_def \_magstephalf{1095 }
+\_def \_magstep#1{\_ifcase#1 1000\_or 1200\_or 1440\_or 1728\_or 2074\_or 2488\_fi\_space}
+\_public \magstephalf \magstep ;
+
+   \_doc -----------------------------
+   Plain \TeX/ basic macros and control sequences. 
+   \`\endgraf`, \`\endline`.
+   The `^^L` is not defined in \OpTeX/ because it is obsolete.
+   \_cod -----------------------------
+
+\_def\^^M{\ } % control <return> = control <space>
+\_def\^^I{\ } % same for <tab>
+
+\_def\lq{`} \def\rq{'}
+\_def\lbrack{[} \_def\rbrack{]} % They are only public versions.
+% \catcode`\^^L=\active \outer\def^^L{\par} % ascii form-feed is "\outer\par" % obsolete
+
+\_let\_endgraf=\_par \_let\_endline=\_cr
+\_public \endgraf \endline ;
+
+   \_doc -----------------------------
+   Plain \TeX/ classical \`\obeylines` and \`\obeyspaces`.
+   \_cod -----------------------------
+
+% In \obeylines, we say `\let^^M=\par' instead of `\def^^M{\par}'
+% since this allows, for example, `\let\par=\cr \obeylines \halign{...'
+{\_catcode`\^^M=13 % these lines must end with %
+  \_gdef\_obeylines{\_catcode`\^^M=13\_let^^M\_par}%
+  \_global\_let^^M=\par} % this is in case ^^M appears in a \write
+\_def\_obeyspaces{\_catcode`\ =13 }
+{\_obeyspaces\_global\_let =\_space}
+\_public \obeylines \obeyspaces ;
+
+   \_doc -----------------------------
+   Spaces. 
+   \`\thinspace`, \`\negthinspace`, \`\enspace`, \`\enskip`, 
+   \`\quad`, \`\qquad`, \`\smallskip`, 
+   \`\medskip`, \`\bigskip`, \`\nointerlineskip`, \`\offinterlineskip`,
+   \`\topglue`, \`\vglue`, \`\hglue`, \`\slash`. 
+   \_cod -----------------------------
+
+\_protected\_def\_thinspace {\_kern .16667em }
+\_protected\_def\_negthinspace {\_kern-.16667em }
+\_protected\_def\_enspace {\_kern.5em }
+\_protected\_def\_enskip {\_hskip.5em\_relax}
+\_protected\_def\_quad {\_hskip1em\_relax}
+\_protected\_def\_qquad {\_hskip2em\_relax}
+\_protected\_def\_smallskip {\_vskip\_smallskipamount}
+\_protected\_def\_medskip {\_vskip\_medskipamount}
+\_protected\_def\_bigskip {\_vskip\_bigskipamount}
+\_def\_nointerlineskip {\_prevdepth=-1000pt }
+\_def\_offinterlineskip {\_baselineskip=-1000pt \_lineskip=0pt \_lineskiplimit=\_maxdimen}
+
+\_public \thinspace \negthinspace \enspace \enskip \quad \qquad \smallskip
+   \medskip \bigskip \nointerlineskip \offinterlineskip ;
+
+\_def\_topglue {\_nointerlineskip\_vglue-\_topskip\_vglue} % for top of page
+\_def\_vglue {\_afterassignment\_vglA \_skip0=}
+\_def\_vglA {\_par \_dimen0=\_prevdepth \_hrule height0pt
+  \_nobreak\_vskip\_skip0 \_prevdepth=\_dimen0 }
+\_def\_hglue {\_afterassignment\_hglA \_skip0=}
+\_def\_hglA {\_leavevmode \_count255=\_spacefactor \_vrule width0pt
+  \_nobreak\_hskip\_skip0 \_spacefactor=\_count255 }
+\_protected\_def~{\_penalty10000 \ } % tie
+\_protected\_def\_slash {/\_penalty\_exhyphenpenalty} % a `/' that acts like a `-'
+
+\_public \topglue \vglue \hglue \slash ;
+
+   \_doc -----------------------------
+   Penalties macros:
+   \`\break`, \`\nobreak`, \`\allowbreak`, \`\filbreak`, \`\goodbreak`,  
+   \`\eject`, \`\supereject`, \`\dosupereject`, 
+   \`\removelastskip`, \`\smallbreak`, \`\medbreak`, \`\bigbreak`.
+   \_cod -----------------------------
+
+\_protected\_def \_break {\_penalty-10000 }
+\_protected\_def \_nobreak {\_penalty10000 }
+\_protected\_def \_allowbreak {\_penalty0 }
+\_protected\_def \_filbreak {\_par\_vfil\_penalty-200\_vfilneg}
+\_protected\_def \_goodbreak {\_par\_penalty-500 }
+\_protected\_def \_eject {\_par\_break}
+\_protected\_def \_supereject {\_par\_penalty-20000 }
+\_protected\_def \_dosupereject {\_ifnum \_insertpenalties>0 % something is being held over
+  \_line{}\_kern-\_topskip \_nobreak \_vfill \_supereject \_fi}
+\_def \_removelastskip {\_ifdim\_lastskip=0pt \_else \_vskip-\_lastskip \_fi}
+\_def \_smallbreak {\_par\_ifdim\_lastskip<\_smallskipamount
+  \_removelastskip \_penalty-50 \_smallskip \_fi}
+\_def \_medbreak {\_par\_ifdim\_lastskip<\_medskipamount
+  \_removelastskip \_penalty-100 \_medskip \_fi}
+\_def \_bigbreak {\_par\_ifdim\_lastskip<\_bigskipamount
+  \_removelastskip \_penalty-200 \_bigskip \_fi}
+
+\_public \break \nobreak \allowbreak \filbreak \goodbreak \eject \supereject \dosupereject
+   \removelastskip \smallbreak \medbreak \bigbreak ;
+
+   \_doc -----------------------------
+   Boxes.
+   \`\line`, \`\leftline`, \`\rightline`, \`\centerline`, \`\rlap`, \`\llap`, 
+   \`\underbar`. 
+   \_cod -----------------------------
+
+\_def \_line {\_hbox to\_hsize}
+\_def \_leftline #1{\_line{#1\_hss}}
+\_def \_rightline #1{\_line{\_hss#1}}
+\_def \_centerline #1{\_line{\_hss#1\_hss}}
+\_def \_rlap #1{\_hbox to0pt{#1\_hss}}
+\_def \_llap #1{\_hbox to0pt{\_hss#1}}
+\_def\_underbar #1{$\_setbox0=\_hbox{#1}\_dp0=0pt \_math \_underline{\_box0}$}
+
+\_public \line \leftline \rightline \centerline \rlap \llap \underbar ;
+
+   \_doc -----------------------------
+   The \`\strutbox` is declared as 10pt size dependent (like in plain \TeX), but
+   the macro `\_setbaselineskip` (from `fonts-opmac.opm`) redefines it.
+   \_cod -----------------------------
+
+\_newbox\_strutbox
+\_setbox\_strutbox=\_hbox{\_vrule height8.5pt depth3.5pt width0pt}
+\_def \_strut {\_relax\_ifmmode\_copy\_strutbox\_else\_unhcopy\_strutbox\_fi}
+
+\_public \strutbox \strut ;
+
+   \_doc -----------------------------
+   Alignment. \`\hidewidth` \`\ialign` \`\multispan`.
+   \_cod -----------------------------
+
+\_def \_hidewidth {\_hskip\_hideskip} % for alignment entries that can stick out
+\_def \_ialign{\_everycr={}\_tabskip=\_zoskip \_halign} % initialized \halign
+\_newcount\_mscount
+\_def \_multispan #1{\_omit \_mscount=#1\_relax
+   \_loop \_ifnum\_mscount>1 \_spanA \_repeat}
+\_def \_spanA {\_span\_omit \_advance\_mscount by-1 }
+
+\_public \hidewidth \ialign \multispan ;
+
+   \_doc -----------------------------
+   Tabbing macros are omitted because they are obsolete.
+   \nl
+   Indentation and others. \`\textindent`, \`\item`, \`\itemitem`,
+   \`\narrower`, \`\raggedright`, \`\ttraggedright`, \`\leavevmode`.
+   \_cod -----------------------------
+
+\_def \_hang {\_hangindent\_parindent}
+\_def \_textindent #1{\_indent\_llap{#1\_enspace}\_ignorespaces}
+\_def \_item {\_par\_hang\_textindent}
+\_def \_itemitem {\_par\_indent \_hangindent2\_parindent \_textindent}
+\_def \_narrower {\_advance\_leftskip\_parindent
+   \_advance\_rightskip\_parindent}
+\_def \_raggedright {\_rightskip=0pt plus2em 
+   \_spaceskip=.3333em \_xspaceskip=.5em\_relax}
+\_def \_ttraggedright {\_tt \_rightskip=0pt plus2em\_relax} % for use with \tt only
+\_def \_leavevmode {\_unhbox\_voidbox} % begins a paragraph, if necessary
+
+\_public \hang \textindent \item \itemitem \narrower \raggedright \ttraggedright \leavevmode ;
+
+   \_doc -----------------------------
+   Few character codes are set for backward compatibility. But old obscurities
+   (from plain TeX) based on \`\mathhexbox` 
+   are not supported -- an error message and recommendation 
+   to directly using of the desired character is implemented by the
+   \`\_usedirectly` macro). 
+   The user can re-define these control sequences of course.
+   \_cod -----------------------------
+
+%\chardef\%=`\%
+\_let\% = \_pcent  % more natural, can be used in lua codes.
+\_chardef\&=`\&
+\_chardef\#=`\#
+\_chardef\$=`\$
+\_chardef\ss="FF
+\_chardef\ae="E6
+\_chardef\oe="F7
+\_chardef\o="F8
+\_chardef\AE="C6
+\_chardef\OE="D7
+\_chardef\O="D8
+\_chardef\i="11 \chardef\j="12 % dotless letters
+\_chardef\aa="E5
+\_chardef\AA="C5
+\_chardef\S="9F
+\_def\l{\_errmessage{\_usedirectly ł}}
+\_def\L{\_errmessage{\_usedirectly Ł}}
+%\def\_{\_ifmmode \kern.06em \vbox{\hrule width.3em}\else _\fi} % obsolete
+\_def\_{\_hbox{_}}
+\_def\dag{\_errmessage{\_usedirectly †}} 
+\_def\ddag{\_errmessage{\_usedirectly ‡}}
+%\_def\copyright{\_errmessage{\_usedirectly ©}}
+\_def\copyright{©} % << example, what to do
+%\_def\Orb{\_mathhexbox20D} % obsolete (part of Copyright)
+%\_def\P{\_mathhexbox27B}   % obsolete
+
+\_def \_usedirectly #1{Load Unicoded font by \string\fontfam\space and use directly #1}
+\_def \_mathhexbox #1#2#3{\_leavevmode \_hbox{$\_math \_mathchar"#1#2#3$}}
+\_public \mathhexbox ;
+
+   \_doc -----------------------------
+   Accents. 
+   The macros \`\ooalign`, \`\d`, \`\b`, \`\c`, \`\dots`,
+   are defined for backward compatibility.
+   \_cod -----------------------------
+
+\_def \_oalign #1{\_leavevmode\_vtop{\_baselineskip=0pt \_lineskip=.25ex 
+   \_ialign{##\_crcr#1\_crcr}}} 
+\_def \_oalignA {\_lineskiplimit=0pt \_oalign}
+\_def \_ooalign {\_lineskiplimit=-\_maxdimen \_oalign} % chars over each other
+\_def \_shiftx #1{\_dimen0=#1\_kern\_ea\_ignorept \_the\_fontdimen1\_font
+   \_dimen0 } % kern by #1 times the current slant
+\_def \_d #1{{\_oalignA{\_relax#1\_crcr\_hidewidth\_shiftx{-1ex}.\_hidewidth}}}
+\_def \_b #1{{\_oalignA{\_relax#1\_crcr\_hidewidth\_shiftx{-3ex}%
+   \_vbox to.2ex{\_hbox{\_char\_macron}\_vss}\_hidewidth}}}
+\_def \_c #1{{\_setbox0=\_hbox{#1}\_ifdim\_ht0=1ex\_accent\_cedilla #1%
+   \_else\_ooalign{\_unhbox0\_crcr\_hidewidth\_cedilla\_hidewidth}\_fi}}
+\_def\_dots{\_relax\_ifmmode\_ldots\_else$\_math\_ldots\_thinsk$\_fi}
+\_public \oalign \ooalign \d \b \c \dots ;
+
+   \_doc -----------------------------
+   The accents commands like `\v`, `\.`, `\H`, etc. are not defined. Use the
+   accented characters directly -- it is best solution. But you can use the
+   macro \`\oldaccents` which defines accented macros.
+   \nl
+   Much more usable is to define these control sequences to other purposes.
+   \_cod -----------------------------
+
+\_def \_oldaccents {%
+   \_def\`##1{{\_accent\_tgrave  ##1}}%
+   \_def\'##1{{\_accent\_tacute  ##1}}%
+   \_def\v##1{{\_accent\_caron  ##1}}%
+   \_def\u##1{{\_accent\_tbreve  ##1}}%
+   \_def\=##1{{\_accent\_macron ##1}}%
+   \_def\^##1{{\_accent\_circumflex ##1}}%
+   \_def\.##1{{\_accent\_dotaccent ##1}}%
+   \_def\H##1{{\_accent\_hungarumlaut ##1}}%
+   \_def\~##1{{\_accent\_ttilde  ##1}}%
+   \_def\"##1{{\_accent\_dieresis ##1}}%
+   \_def\r##1{{\_accent\_ring   ##1}}%
+}
+\_public \oldaccents ;
+
+% ec-lmr encoding (will be changed after \fontfam macro):
+\_chardef\_tgrave=0
+\_chardef\_tacute=1
+\_chardef\_circumflex=2
+\_chardef\_ttilde=3
+\_chardef\_dieresis=4
+\_chardef\_hungarumlaut=5
+\_chardef\_ring=6
+\_chardef\_caron=7
+\_chardef\_tbreve=8
+\_chardef\_macron=9
+\_chardef\_dotaccent=10
+\_chardef\_cedilla=11
+
+\_def \_uniaccents {% accents with Unicode
+   \_chardef\_tgrave="0060
+   \_chardef\_tacute="00B4
+   \_chardef\_circumflex="005E
+   \_chardef\_ttilde="02DC
+   \_chardef\_dieresis="00A8
+   \_chardef\_hungarumlaut="02DD
+   \_chardef\_ring="02DA
+   \_chardef\_caron="02C7
+   \_chardef\_tbreve="02D8
+   \_chardef\_macron="00AF
+   \_chardef\_dotaccent="02D9
+   \_chardef\_cedilla="00B8
+   \_chardef\_ogonek="02DB
+   \_let \_uniaccents=\_relax
+}
+
+   \_doc -----------------------------
+   The last part of plain \TeX/ macros. 
+   \`\hrulefill`, \`\dotfill`, \`\rightarrowfill`, \`\leftarrowfill`, 
+   \`\magnification`, \`\bye`.
+   Math macros are defined in the `math-macros.opm` file.
+   \_cod -----------------------------
+
+
+\_def \_hrulefill {\_leaders\_hrule\_hfill}
+\_def \_dotfill {\_cleaders\_hbox{$\_math \_mkern1.5mu.\_mkern1.5mu$}\_hfill}
+\_def \_rightarrowfill {$\_math\_smash-\_mkern-7mu%
+  \_cleaders\_hbox{$\_mkern-2mu\_smash-\_mkern-2mu$}\_hfill
+  \_mkern-7mu\_mathord\_rightarrow$}
+\_def \_leftarrowfill {$\_math\_mathord\_leftarrow\_mkern-7mu%
+  \_cleaders\_hbox{$\_mkern-2mu\_smash-\_mkern-2mu$}\_hfill
+  \_mkern-7mu\_smash-$}
+
+\_public \hrulefill \dotfill \rightarrowfill \leftarrowfill ;
+
+% \downbracefill \upbracefill will be re-defined when Unicode-math is used
+\_mathchardef \_braceld="37A \_mathchardef \_bracerd="37B
+\_mathchardef \_bracelu="37C \_mathchardef \_braceru="37D
+\_def \downbracefill {$\_math \_setbox0=\_hbox{$\_braceld$}%
+  \_braceld \_leaders\_vrule height\_ht0 depth0pt \_hfill \_braceru
+  \_bracelu \_leaders\_vrule height\_ht0 depth0pt \_hfill \_bracerd$}
+\_def \upbracefill {$\_math \_setbox0=\_hbox{$\_braceld$}%
+  \_bracelu \_leaders\_vrule height\_ht0 depth0pt \_hfill \_bracerd
+  \_braceld \_leaders\_vrule height\_ht0 depth0pt \_hfill \_braceru$}
+
+\_def \_magnification {\_afterassignment \_magA \_count255 }
+\_def \_magA {\_mag=\_count255 \_truedimen\_hsize \_truedimen\_vsize
+  \_dimen\_footins=8truein 
+}
+% only for backward compatibility, but \margins macro is preferred.
+\_public \magnification ;
+
+\_def \_showhyphens #1{\_setbox0=\_vbox{\_parfillskip=0pt \_hsize=\_maxdimen \_tenrm
+  \_pretolerance=-1 \tolerance=-1 \hbadness=0 \showboxdepth=0 \ #1}}
+
+\_def \_bye {\_par \_vfill \_supereject \_end}
+\_public \bye ;
+
+\_endcode % -------------------------------------
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/plain-macros.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/prefixed.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/prefixed.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/prefixed.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,275 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \public {Prefixing and code syntax <2020-02-14>} % preloaded in format
+
+   \_doc ---------
+   All \TeX/ primitives have alternative control sequence `\_hbox` `\_string`, ...
+   \_cod ---------
+
+\let\_directlua = \directlua
+\_directlua {
+    % enable all TeX primitives with _ prefix
+    tex.enableprimitives('_', tex.extraprimitives('tex'))
+    % enable all primitives without prefixing
+    tex.enableprimitives('', tex.extraprimitives())
+    % enable all primitives with _ prefix
+    tex.enableprimitives('_', tex.extraprimitives())
+}
+
+   \_doc ------------------
+   \`\ea` is useful shortcut for `\expandafter`. We recommend to use always the
+   private form of \`\_ea` 
+   because there is high probability that `\ea` will be redefined by the user.
+   \nl
+   \`\public` `<sequence> <sequence> ... ;` does
+   `\let \<sequence> = \_<sequence>` for all sequences.
+   \nl
+   \`\private` `<sequence> <sequence> ...;` does
+   `\let \_<sequence> = \<sequence>` for all sequences.
+   \nl
+   \`\xargs` `<what> <sequence> <sequence> ... ;`
+   does `<what><sequence>` for each sequences.
+   \_cod -----------------
+
+\_let\_ea =\_expandafter  % usefull shortcut
+
+\_long\_def \_xargs #1#2{\_ifx #2;\_else \_ea#1\_ea#2\_ea\_xargs \_ea #1\_fi}
+
+\_def \_pkglabel{}
+\_def \_public {\_xargs \_publicA}
+\_def \_publicA #1{\_ea\_let \_ea#1\_csname \_pkglabel _\_csstring #1\_endcsname} 
+
+\_def \_private {\_xargs \_privateA}
+\_def \_privateA #1{\_ea\_let \_csname \_pkglabel _\_csstring #1\_endcsname =#1} 
+
+\_public \public \private \xargs \ea ;
+
+   \_doc -----------------------
+   Each macro file should begin with \`\_codedecl` `\macro {<info>}`.
+   If the `\macro` is defined already then the `\endpinput` protects to read
+   such file more than one times. Else the <info> is printed to the terminal
+   and the file is read.\nl
+   The {\`\_endcode`} is defined as `\endinput` in the `optex.ini` file. 
+   \`\wterm` `{<text>}` prints `<text>` 
+   to the terminal and to the `.log` file (as in plain \TeX/).
+   \_cod -----------------------
+
+\_def \_codedecl #1#2{%
+   \_ifx #1\_undefined \_wterm{#2}%
+   \_else \_expandafter \_endinput \_fi
+}
+\_def \_wterm {\_immediate \_write16 }
+
+\_public \wterm ;
+
+   \_doc ------------------------
+   The `\optexversion` and `\fmtname` are defined in the `optex.ini` file.
+   Maybe, somebody will need a private version of these macros.
+   \_cod ------------------------
+
+\_private \optexversion \fmtname ;
+
+   \_doc -----------------------------
+   The `\_mathsbon` and `\_mathsboff` are defined in `math-macros.opm` file.
+   Now, we define the macro \`\_namespace` `{<pkg label>}` for package writers, see
+   section~\ref[pkg-namespace].
+   \_cod -----------------------------
+
+\_def\_namespace #1{%
+   \_ifcsname namesp:#1\_endcsname \_errmessage
+      {The name space "#1" is used already, it cannot be used twice}%
+      \_endinput
+   \_else
+      \_ea \_gdef \_csname namesp:#1\_endcsname {}%
+      \_gdef \_pkglabel{_#1}%
+      \_directlua{
+      callback.register("process_input_buffer",
+        function (str)
+           return string.gsub(str, "\_nbb[.]([a-zA-Z])", "\_nbb _#1_\_pcent 1")
+        end )
+      }%
+      \_gdef \_endcode {%
+          \_ifmathsb \_mathsbon \_else \_mthsboff \_fi
+          \_gdef \_pkglabel{_#1}%
+          \_global \_let \_endcode=\_endinput
+          \_endinput }%
+   \_fi
+}
+
+\_endcode %----------------------------------------------------
+
+
+\sec Concept of name spaces of control sequences
+
+\secc Prefixing internal control sequences
+
+All control sequences used in \OpTeX/ are used and defined with `_` prefix. 
+The user can be sure that when he/she does `\def\foo` then internal macros of
+\OpTeX/ nor \TeX/ primitives will be not damaged. For example
+`\def\if{...}` will not damage macros because \OpTeX/'s macros 
+are using `\_if` instead of `\if`.
+
+All \TeX/ primitives are initialized with two representative control
+sequences: `\word` and `\_word`, for example `\hbox` and `\_hbox`.
+The first alternative is reserved for users or such control sequences 
+can be re-defined by user.
+
+\OpTeX/ sets the character `_` as letter, so it can be used in
+control sequences. When a control sequence begins with this character 
+then it means that it is a primitive or it is used in \OpTeX/ macros as
+internal. User can redefine such prefixed control sequence only 
+if he/she explicitly know what happens.
+
+We never change catcode of `_`, so internal macros can be 
+redefined by user without problems if it is desired. We need not 
+something like `\makealetter` from \LaTeX/.
+
+\OpTeX/ defines all new macros as prefixed. For public usage of such macros 
+we need to set non-prefixed version. This is done by 
+
+\begtt
+\public <list of control sequences> ;
+\endtt
+
+For example \^`\public`` \foo \bar ;` does `\let\foo=\_foo`, `\let\bar=\_bar`.
+
+At the end of each code segment in \OpTeX/, the `\_public` macro is used. You
+can see, what macros are defined for public usage in such code segment. 
+
+The macro \^`\private` does a reverse job to `\public` with the same syntax.
+For example `\private \foo \bar ;` does `\let\_foo=\foo`, `\let\_bar=\bar`.
+This should be used when unprefixed variant of control sequence is declared
+already but we need the prefixed variant too.
+
+In this documentation: if both variants of a control sequence are declared
+(prefixed and unprefixed), then the accompanying text mentions only
+unprefixed variant. The code typically defines prefixed variant 
+and then the \^`\public` (or `\_public`) macro is used.
+
+\secc Name space of control sequences for users
+
+User can define or declare any control sequence with a name without any `_`.
+This does not make any problem. Only one exception is the reserved control
+sequence `\par`. It is generated by tokenizer (at empty lines) 
+and used as internal in \TeX/.
+
+User can define or declare control sequences with `_` character, for
+example `\my_control_sequence`, but with the following exceptions:
+
+\begitems
+* Control sequences which begin with `_` are reserved for \TeX/ primitives, 
+  \OpTeX/ internal macros and macro package writers.
+* Control sequences (terminated by non-letter) in the form 
+  `\<word>_` or `\<word>_<one-letter>`, where
+  <word> is a sequence of letters, are unaccessible, because they
+  are interpreted as `\<word>` followed by `_` or as `\<word>` followed by
+  `_<one-letter>`. This is important for writing math, for example:
+\begtt  \adef-{_}
+  \int-a^b    ... is interpreted as \int _a^b
+  \max-M      ... is interpreted as \max _M
+  \alpha-{ij} ... is interpreted as \alpha _{ij}
+\endtt
+  This feature is implemented using lua code at input processor level, see
+  the section~\ref[math-macros] for more details. You can deactivate this feature by
+  \^`\mathsboff`. After this, you can still write 
+  `$`$\int$`_a^b$` (Unicode) or `$\int _a^b$` % $∫_a^b$ (Unicode) or $\int _a^b$ 
+  without problems but `\int``_a^b` yields to undefined control sequence
+  `\int``_a`. You can activate this feature again by \^`\mathsbon`. The 
+  effect will take shape from next line read from input file.
+* Control sequences in the form `\_<pkg>_<word>` is intended for package
+  writers as internal macros for a package with `<pkg>` identifier, 
+  see section~\ref[pkg-namespace].
+\enditems
+
+The single letter control sequences like `\%`, `\$`, `\^` etc. are not used
+in internal macros. User can redefine them, but (of course) some classical 
+features can be lost (printing percent character by `\%` for example).
+
+\secc Macro files syntax
+
+Each segment of \OpTeX/ macros is stored in one file with `.opm` extension
+(means OPtex Macros). Your local macros should be in normal `*.tex` file.
+
+The code in macro files starts by \^`\_codedecl` and ends by \^`\_endcode`.
+The \^`\_endcode` is equivalent for `\endinput`, so documentation can follow.
+The \^`\_codedecl` has syntax:
+
+\begtt
+\_codedecl \sequence {Name <version>}
+\endtt
+
+If the mentioned `\sequence` is defined, then \^`\_codedecl` does the same as
+`\endinput`: this protect from reading the file twice. We suppose, that
+`\sequence` is defined in the macro file.
+
+It is possible to use the \^`\_doc` ... \^`\_cod` pair between the macro lines.
+The documentation text should be here. It is ignored when macros are read
+but it can be printed using `doc.opm` macros like in this documentation.
+
+
+\secc[pkg-namespace] Name spaces for package writers  
+
+Package writer should use internal names in the form `\_<pgk>_<sequence>`,
+where `<pkg>` is a package label. For example: 
+`\_qr_utfstring` from `qrcode.opm` package.
+
+The package writer needs not write repeatedly `\_pkg_foo` `\_pkg_bar` 
+etc.\ again and again in the macro file.\fnote
+{We have not adatped the idea from expl3 language:)} 
+When the \^`\_namespace` `{<pkg>}` 
+is declared at the beginning of the macro file then all occurrences of
+`\.foo` will be replaced by `\_<pkg>_foo` at the input processor level.
+The macro writer can write (and backward can read his/her code) simply with 
+`\.foo`, `\.bar` control sequences and `\_<pkg>_foo`, `\_<pkg>_bar` 
+control sequences are processed internally.
+The scope of the \^`\_namespace` command ends at the \^`\_endcode` command
+or when another \^`\_namespace` is used. This command checks
+if the same package label is not declared by the \^`\_namespace` twice.
+
+The \^`\public` macro does `\let\foo = \_<pkg>_foo` when 
+\^`\_namespace{<pkg>}` is declared. And the \^`\private` macro does reverse
+operation to it. Example: you can define `\def\.macro{...}` and then
+set it to the user name space by `\_public \macro;`.
+
+If the package writer needs to declare a control 
+sequence by \^`\newif`, then there is an exception of the rule described above. Use
+\^`\_newifi\_if<pkg>_bar`, for example `\_newifi\_ifqr_incorner`.
+Then the control sequences `\_qr_incornertrue` and
+`\_qr_incornerfalse` can be used (or the sequences `\.incornertrue`
+and `\.incornerfalse` when `\_namespace{qr}` is used).
+
+
+\secc Summary about rules for external macro files published for \OpTeX/
+
+If you are writting a macro file which is intended to be published for
+\OpTeX/, then you are greatly welcome. You should follow these rules:
+
+\begitems
+* Don't use a control sequences from user name space in the macro
+  bodies if there is not explicit and documented reason to do this. 
+* Don't declare control sequences in the user name space if there is not 
+  explicit and documented reason to do this.
+* Use control sequences from \OpTeX/ and primitive name space 
+  in read only mode if there is not explicit and documented reason to
+  redefine them. 
+* Use `\_<pkg>_<name>` for your internal macros or `\.<name>` if the 
+  \^`\_namespace{<pkg>}` is declared. See section~\ref[pkg-namespace].
+* Use \^`\load` (or better: `\_load`) for loading more external macros 
+  if you need them. Don't use `\_input` explicitly in such cases. 
+  The reason is: the external macro file is not loaded 
+  twice if another macro or the user needs it explicitly too. 
+* Use \^`\_codedecl` as your first command in the macro file and 
+  \^`\_endcode` to close the text of macros.
+* Use \^`\_doc` ... \^`\_cod` pairs for documenting the code pieces and/or write
+  more documentation after the \^`\_endcode` command.
+\enditems
+
+If the macro file accepts these recommendations then it should be  
+named by `<filename>.opm` where `<filename>` differs from file names 
+used directly in \OpTeX/ and from other published macros. 
+This extension `opm` has a precedence before `.tex` when
+the \^`\load` macro is used.
+
+The `qrcode.opm` is first example how an external macro file for \OpTeX/ 
+can look like.
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/prefixed.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/ref-file.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/ref-file.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/ref-file.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,137 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \openref {File for references <2020-02-14>} % preloaded in format
+
+   \_doc --------------------------
+   The \`\_inputref` macro is used in `\everyjob`. It reads `\jobname.ref` file
+   if it exists. After the file is read then it is removed and opened to write
+   a new contents to this file.
+   \_cod --------------------------
+
+\_newwrite\_reffile
+
+\_def\_inputref {%
+  \_isfile{\_jobname.ref}\_iftrue
+     \_input {\_jobname.ref}
+     \_gfnotenum=0 \_lfnotenum=0 \_mnotenum=0 
+     \_openrefA{\_string\_inputref}%
+  \_fi
+}
+
+   \_doc --------------------------
+   If the file does not exists then it is not created by default. It means that if you
+   process a document without any forward references then no `\jobname.ref`
+   file is created because it is unusable. The \^`\_wref` macro is dummy in
+   such case.
+   \_cod --------------------------
+
+\_def\_wrefrelax#1#2{}
+\_let\_wref=\_wrefrelax
+
+   \_doc ---------------------
+   If a macro needs to ceate and to use `.ref` file then such macro must use
+   \`\openref`. When the file is created (using internal \`\_openrefA`) then
+   the \`\_wref` `\<macro>{<data>}` is redefined in order to 
+   save the line `\<macro><data>` to the `.ref` file using asynchronous
+   `\write` primitive. Finally, the `\_openref` destroys itself, because we 
+   need not to open the file again.
+   \_cod ---------------------
+
+\_def\_openref {%
+  \_ifx \_wref\_wrefrelax \_openrefA{\_string\openref}\_fi
+  \_gdef\_openref{}%
+}
+\_def\_openrefA #1{%
+   \_immediate\_openout\_reffile="\_jobname.ref"\_relax 
+   \_gdef\_wref ##1##2{\_write\_reffile{\_string##1##2}}%
+   \_immediate\_write\_reffile {\_pcent\_pcent\_space OPTeX <\_optexversion> - REF file (#1)}%
+   \_immediate\_wref \Xrefversion{{\_REFversion}}%
+}
+\def\openref{\_openref}
+
+   \_doc ----------------------
+   We are using convention that the macros used in `.ref` file are named
+   `\_X<foo>`. If there is a new version of \OpTeX/ with different collection
+   of such macros then we don't want to read the `.ref` files produced by an 
+   old version of \OpTeX/ or by OPmac. So first line of `.ref` file is in 
+   the form
+   \begtt \catcode`\<=13
+   \Xrefversion{<version>}
+   \endtt 
+   We can check the version compatibility by this macro.
+   Because OPmac does not understand `\_Xrefversion` we use 
+   \`\Xrefversion` (with different number of `<version>` form OPmac) here.
+   The result: OPmac skips the `.ref` files produced by \OpTeX/ and vice
+   versa.
+   \_cod ----------------------
+
+\_def\_REFversion{3} % actual version of .ref files in OpTeX
+\_def\_Xrefversion#1{\_ifnum #1=\_REFversion\_relax \_else \_endinput \_fi}
+\_public \Xrefversion ; % we want to ignore .ref files generated by OPmac
+
+   \_doc -----------------------
+   You cannot define your special `.ref` macros before `.ref` file is read
+   because it is read in `\everyjob`. But you can define such macros using
+   \`\refdecl``{<definitions of your ref macros>}`.
+   This command sends to `.ref` file your `<definitions of your ref macros>`
+   immediately. Next lines in `.ref` file should include our macros. Example
+   from CTUstyle2:
+   \begtt
+   \refdecl{%
+      \def\totlist{} \def\toflist{}^^J
+      \def\Xtab#1#2#3{\addto\totlist{\totline{#1}{#2}{#3}}}^^J
+      \def\Xfig#1#2#3{\addto\toflist{\tofline{#1}{#2}{#3}}}
+   }
+   \endtt
+   We must read `<definition of your ref macros>` when catcode of `#` is 12
+   because we needn't to duplicate each `#` in the `.ref` file.
+   \_cod \_fin -----------------
+
+\_def\_refdecl{\_bgroup \_catcode`\#=12 \_refdeclA}
+\_def\_refdeclA #1{\egroup\_openref
+   \_immediate\_write\_reffile {\_pcent\_space \_string \refdecl:}%  
+   \_immediate\_write\_reffile {\_detokenize{#1}}%
+}
+\_public \refdecl ;
+
+\_endcode % ================================================
+
+
+The `.ref` file has the name `\jobname.ref` and 
+it saves information about references, TOC lines, etc. 
+All data needed in next \TeX/ run are saved here.
+\OpTeX/ reads this file at the beginning of the document 
+(using `\everyjob`) if such file exists.
+The `.ref` file looks like:
+
+\begtt \catcode`\<=13
+\Xrefversion{<ref-version>}
+\_Xpage{<gpageno>}{<pageno>}
+\_Xtoc{<level>}{<type>}{<text>}{<title>}
+\_Xlabel{<label>}{<text>}
+\_Xlabel{<label>}{<text>}
+...
+\_Xpage{<gpageno>}{<pageno>}
+\_Xlabel{<label>}{<text>}
+...
+\endtt
+%
+where <gpageno> is internal page number globally numbered from one and 
+`<pageno>` is a page number (`\the\pageno`) used in pagination (they may be differ). 
+Each page begins with `\_Xpage`.
+The `<label>` is a label used by user in `\label[<label>]` and `<text>` is a
+text which should be referenced (the number of section or table, for
+example `2.3.14`). The `<title>` is a title of the chapter (`<level>`=1,
+`<type>`=`chap`), section (`<level>`=2, `<type>`=`sec`), subsection 
+(`<level>`=3, `<type>`=`secc`). The `\_Xpage` is written at begining of each
+page, the `\_Xtoc` is written when chapter or section or subsection title
+exists on the page and `\_Xlabel` when labeled object prefixed by
+`\label[<label>]` exists on the page. 
+
+The `.ref` file is read when the processing of the document starts using
+`\everyjob`. It is read, removed and opened to writing immediately.
+But the `.ref` file should be missing. If none forward references are needed 
+in the document then `.ref` file is not created. For example, you only want
+to test a simple plain \TeX/ macro, you create `test.tex` file, you do
+`optex test` and you don't need to see empty `test.ref` file in your directory. 
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/ref-file.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/references.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/references.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/references.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,86 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \ref {References <2020-03-03>} % preloaded in format
+
+   \_doc ----------------------------
+   \`\_Xpage` `{<gpageno>}{<pageno>}` saves the parameter pair into \`\_currpage`. 
+   Resets `\_lfnotenum`; it is used if footnotes are numbered from one at each page.
+   \_cod ----------------------------
+
+\_def\_Xpage#1#2{\_def\_currpage{{#1}{#2}}\_lfnotenum=0 }
+
+   \_doc ----------------------------
+   \`\_Xlabel` `{<label>}{<text>}` saves the <text> to `\_lab:<label>` and saves
+   `[pg:<gpageno>]{<pageno>}` to `\_pgref:<label>`.
+   \_cod ----------------------------
+
+\_def\_Xlabel#1#2{\_sdef{_lab:#1}{#2}\_sxdef{_pgref:#1}{\_ea\_bracketspg\_currpage}}
+\_def\_bracketspg#1#2{[pg:#1]{#2}}
+
+   \_doc ----------------------------
+   \`\label``[<label>]` saves the decalred label to `\_lastlabel` and 
+   \`\wlabel``{<text>}` uses the `\_lastlabel` and activates 
+   `\wref\_Xlabel{<label>}{<text>}`.
+   \_cod ----------------------------
+
+\_def\_label[#1]{\_isempty{#1}\_iftrue \_global\_let \_lastlabel=\_undefined 
+  \_else \_isdefined{l0:#1}%
+     \_iftrue \_opwarning{duplicated label [#1], ignored}\_else \_xdef\_lastlabel{#1}\_fi
+  \_fi \_ignorespaces
+}
+\_def\_wlabel#1{%
+  \_ifx\_lastlabel\_undefined \_else
+     \_dest[ref:\_lastlabel]%
+     \_printlabel\_lastlabel
+     \_edef\_tmp{{\_lastlabel}{#1}}%
+     \_ea\_wref \_ea\_Xlabel \_ea{\_tmp}%
+     \_sxdef{_lab:\_lastlabel}{#1}\_sxdef{l0:\_lastlabel}{}%
+     \_global\_let\_lastlabel=\_undefined
+  \_fi
+}
+\_public \label \wlabel ;
+
+   \_doc ----------------------------
+   \`\ref``[<label>]` uses saved `\_lab:<label>` and prints (linked) `<text>`.
+   If the reference is backwarded then we know `\lab:<label>` without any need
+   to read REF file. On the other hand, if the reference is forwarded, then we
+   doesn't know `\_lab:<label>` in first run of \TeX/ and we print warning and
+   do `\_openref`.
+   \nl
+   \`\pgref``[<label>]` uses `{<gpageno>}{<pageno>}` from `\_pgref:<label>` and
+   prints (linked) `<pageno>` using `\_ilink` macro.
+   \_cod ----------------------------
+
+\_def\_ref[#1]{\_isdefined{_lab:#1}%
+  \_iftrue \_ilink[ref:#1]{\_csname _lab:#1\_endcsname}%
+  \_else ??\_opwarning{label [#1] unknown. Try to TeX me again}\_openref
+  \_fi
+}
+\_def\_pgref[#1]{\_isdefined{_pgref:#1}%
+  \_iftrue \_ea\_ea\_ea\_ilink \_csname _pgref:#1\_endcsname
+  \_else ??\_opwarning{pg-label [#1] unknown. Try to TeX me again}\_openref
+  \_fi
+}
+\_public \ref \pgref ;
+
+   \_doc -----------------------------
+   Default \`\_printlabel` is empty macro (labels are not printed).
+   The \`\showlabels` redefines it as box with zero dimensions and
+   with left lapped `[<label>]` in blue 10pt `\tt` font shifted up by 1.7ex.
+   \_cod -----------------------------
+
+\_def\_printlabel#1{}
+\_def\_showlabels {%
+   \_def\_printlabel##1{\_vbox to0pt{\_vss\_llap{\_labelfont[##1]}\_kern1.7ex}}%
+   \_fontdef\_labelfont{\_setfontsize{at10pt}\setfontcolor{blue}\_tt}
+}
+\_public \showlabels ;
+
+\_endcode %------------------------------------------
+
+
+If the references are \"forward" (i.~e. the `\ref` is used first, the destination
+is created later) or if the reference text is page number then we must read
+`.ref` file first in order to get appropriate information.
+See section \ref[ref-file] for more information about `.ref` file concept.
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/references.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/sections.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/sections.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/sections.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,411 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \chap {Titles, chapters, sections, subsections <2020-03-28>} % preloaded in format
+
+   \_doc ---------------------------
+   We are using scaled fonts for titles
+   \`\_titfont`, \`\_chapfont`, \`\_secfont` and \`\_seccfont`.
+   They are scaled from main fonts size
+   of the document, which is declared by first `\typosize[<fo-size>/<b-size>]`
+   command. 
+   \_cod ---------------------------
+
+\_def \_titfont  {\_scalemain\_typoscale[\_magstep4/\_magstep5]\_boldify}
+\_def \_chapfont {\_scalemain\_typoscale[\_magstep3/\_magstep3]\_boldify}
+\_def \_secfont  {\_scalemain\_typoscale[\_magstep2/\_magstep2]\_boldify}
+\_def \_seccfont {\_scalemain\_typoscale[\_magstep1/\_magstep1]\_boldify}
+
+   \_doc ---------------------------
+   The \`\tit` macro is defined by `\eoldef`, it means that the parameter is
+   separated by end of line. The macros `\chap`, `\sec` and `\secc` use
+   `\eoldef` too.
+   \_cod ---------------------------
+
+\_eoldef\_tit #1{\_vglue\_titskip
+  {\_leftskip=0pt plus1fill \_rightskip=\_leftskip % centering
+   \_titfont \_noindent #1\_par}%
+   \_nobreak\_bigskip
+}
+\_public \tit ;
+
+   \_doc ---------------------------
+   You can re-define \`\_printchap`, \`\_printsec` or \`\_printsecc` macros if 
+   another design of section titles is needed. These macros gets the
+   `<title>` text in its parameter. The common recommendations for these macros are:
+   \begitems
+   * Use \^`\_abovetitle``{<penaltyA>}{<skipA>}` and \^`\_belowtitle``{<skipB>}`
+     for inserting vertical material above and below the section title.
+     The arguments of these macros are normally used, i.\,e.\ \^`\_abovetitle`
+     inserts `<penaltyA><skipA>` and \^`\_belowtitle` inserts `<skipB>`. 
+     But there is an
+     exception: if \^`\_belowtitle``{<skipB>}` is immediately followed by
+     \^`\_abovetitle``{<penaltyA>}{<skipA>}` (for example section title is 
+     immediately followed by subsection title), then only `<skipA>` is generated, 
+     i.\,e.\ `<skipB><penaltyA><skipA>` is reduced only to `<skipA>`.
+     The reason of such behavior: we don't want to duplicate vertical skip 
+     and we don't want to use negative penalty in such cases.
+     Moreover, \^`\_abovetitle``{<penaltyA>}{<skipA>}` takes previous whatever
+     vertical skip (other than from `\_belowtitle`) and generates only 
+     greater from this pair of skips. It means that `<whatever-skip><penaltyA><skipA>` 
+     is transformed to `<penaltyA>`max(`<whatever-skip><skipA>`). 
+     The reason of such behavior: we don't want to
+     duplicate vertical skips (from `\_belowlistskip`, for example) above the title.
+   * Use \^`\_printrefnum``[<pre>@<post>]` in horizontal mode. It prints 
+     `<pre><ref-num><post>`. The `<ref-num>` is \^`\_thechapnum` or \^`\_thesecnum`
+     or \^`\_theseccnum` depending on what type o title is processed.
+     If \^`\nonum` prefix is used then \^`\_printrefnum` prints nothing. 
+     The macro \^`\_printrefnum` does more work: it creates destination of hyperlinks 
+     (if \^`\hyperlinks``{}{}` is used) and saves references from label (if
+     \^`\label``[<label>]` precedes) and saves references for table of contents
+     (if \^`\maketoc` is used).
+   * Use \^`\nbpar` for closing the paragraph for printing title. This
+     command inserts `\_nobreak` between each line of such paragraph, so
+     the title cannot be broken to more pages. 
+   * You can use \^`\_firstnoindent` in order to the first paragraph after
+     the title is not indented.
+   \enditems
+   \_cod ---------------------------
+
+\_def\_printchap #1{\_vfill\_supereject
+   {\_chapfont \_noindent \_mtext{chap} \_printrefnum[@]\_par
+    \_nobreak\_smallskip
+    \_noindent \_raggedright #1\_nbpar}\_mark{}%
+   \_nobreak \_belowtitle{\_bigskip}% 
+   \_firstnoindent
+}
+\_def\_printsec#1{\_par 
+   \_abovetitle{\_penalty-400}\_bigskip
+   {\_secfont \_noindent \_raggedright \_printrefnum[@\_quad]#1\_nbpar}\_insertmark{#1}%
+   \_nobreak \_belowtitle{\_medskip}% 
+   \_firstnoindent
+}
+\_def\_printsecc#1{\_par 
+   \_abovetitle{\_penalty-200}\_medskip 
+   {\_seccfont \_noindent \_raggedright \_printrefnum[@\_quad]#1\_nbpar}%
+   \_nobreak \_belowtitle{\_medskip}% 
+   \_firstnoindent
+}
+
+   \_doc --------------------------
+   The \`\_sectionlevel` is the level of the printed section:
+   \begitems
+   * `\_sectionlevel=0` -- reserved for parts of the book (unused by default)
+   * `\_sectionlevel=1` -- chapters (used in `\chap`)
+   * `\_sectionlevel=2` -- sections (used in `\sec`)
+   * `\_sectionlevel=3` -- subsections (used in `\secc`)
+   * `\_sectionlevel=4` -- subsubsections (unused by default)
+   \enditems
+   \_cod --------------------------
+
+\_newcount\_sectionlevel
+\_def \_secinfo {\_ifcase \_sectionlevel
+   part\_or chap\_or sec\_or secc\_or seccc\_fi
+}
+
+   \_doc --------------------------
+   The \`\_chapx` initializes counters used in chapters, 
+   the \`\_secx` initializes counters in sections
+   and \`\_seccx` initializes counters in subsections.
+   If you have more types of numbered objects in your document then you can
+   declare appropriate counters and do `\addto\_chapx{\yourcounter=0 }` 
+   for example. If you have another concept of numbering objects used in your 
+   document, you can re-define these macros. All settings here are global
+   because it is used by `{\_globaldefs=1 \_chapx}`.
+
+   Default concept: Tables, figuers and display maths are numbered
+   from one in each section -- subsetions doesn't reset these counters.
+   Footnotes declared by \^`\fnotenumchapters` are numbered in each chapter
+   from one.
+
+   The `\_the*` macros 
+   \`\_thechapnum`, \`\_thesecnum`, \`\_theseccnum`, 
+   \`\_thetnum`, \`\_thefnum` and \`\_thednum`
+   include the format of numbers used when the object
+   is printing. If chapter is never used in the document then `\_chapnum=0`
+   and \`\_othe``\_chapnum.` expands to empty. Sections have numbers <num> and
+   subsections <num>.<num>. On the other hand, if chapter is used in the
+   document then `\_chapnum>0` and sections have numbers` <num>.<num>` 
+   and subsections have numbers `<num>.<num>.<num>`. 
+
+   \_cod --------------------------
+
+\_newcount \_chapnum  % chapters 
+\_newcount \_secnum   % sections
+\_newcount \_seccnum  % subsections
+\_newcount \_tnum     % table numbers
+\_newcount \_fnum     % figure numbers
+\_newcount \_dnum     % numbered display maths
+
+\_def \_chapx {\_secx  \_secnum=0  \_lfnotenum=0 }
+\_def \_secx  {\_seccx \_seccnum=0 \_tnum=0 \_fnum=0 \_dnum=0 \_resetABCDE }
+\_def \_seccx {} 
+
+\_def \_thechapnum {\_the\_chapnum}
+\_def \_thesecnum  {\_othe\_chapnum.\_the\_secnum}
+\_def \_theseccnum {\_othe\_chapnum.\_the\_secnum.\_the\_seccnum}
+\_def \_thetnum    {\_othe\_chapnum.\_the\_secnum.\_the\_tnum}
+\_def \_thefnum    {\_othe\_chapnum.\_the\_secnum.\_the\_fnum}
+\_def \_thednum    {(\_the\_dnum)}
+
+\_def\_othe #1.{\_ifnum#1>0 \_the#1.\_fi}
+\_def\_incr #1{\_global\_advance#1by1 }
+
+   \_doc ----------------------------
+   The \`\notoc` and \`\nonum` prefixes are implemented by
+   internal `\_ifnotoc` and `\_ifnonum`. They are reset
+   after each chapter/section/subsection by the \`\_resetnonumnotoc` macro.
+   \_cod ----------------------------
+
+\_newifi \_ifnotoc  \_notocfalse  \_def\_notoc {\_global\_notoctrue}
+\_newifi \_ifnonum  \_nonumfalse  \_def\_nonum {\_global\_nonumtrue}
+\_def \_resetnonumnotoc{\_global\_notocfalse \_global\_nonumfalse}
+\_public \notoc \nonum ;
+
+   \_doc ----------------------------
+   The \`\chap`, \`\sec` and \`\secc` macros are implemented here.
+   The \`\_inchap`, \`\_insec` and \`\_insecc` macros does the real work,
+   First, we read the optional parameter `[<label>]`, if it exists.
+   \_cod ----------------------------
+
+\_optdef\_chap[]{\_trylabel \_inchap}
+\_optdef\_sec []{\_trylabel \_insec}
+\_optdef\_secc[]{\_trylabel \_insecc}
+\_def\_trylabel{\_istoksempty\_opt\_iffalse \_label[\_the\_opt]\_fi}
+
+\_eoldef\_inchap #1{\_par \_sectionlevel=1
+   \_def \_savedtitle {#1}% saved to .ref file
+   \_ifnonum \_else {\_globaldefs=1 \_incr\_chapnum \_chapx}\_fi
+   \_edef \_therefnum {\_ifnonum \_space \_else \_thechapnum \_fi}%
+   \_printchap{#1}%
+   \_resetnonumnotoc
+}
+\_eoldef\_insec #1{\_par \_sectionlevel=2
+   \_def \_savedtitle {#1}% saved to .ref file
+   \_ifnonum \_else {\_globaldefs=1 \_incr\_secnum \_secx}\_fi
+   \_edef \_therefnum {\_ifnonum \_space \_else \_thesecnum \_fi}%
+   \_printsec{#1}%
+   \_resetnonumnotoc
+}
+\_eoldef\_insecc #1{\_par \_sectionlevel=3
+   \_def \_savedtitle {#1}% saved to .ref file
+   \_ifnonum \_else {\_globaldefs=1 \_incr\_seccnum \_seccx}\_fi
+   \_edef \_therefnum {\_ifnonum \_space \_else \_theseccnum \_fi}%
+   \_printsecc{#1}%
+   \_resetnonumnotoc
+}
+\_public \chap \sec \secc ;
+
+   \_doc ----------------------------
+   The \`\_printrefnum``[<pre>@<post>]` macro is used in `\_print*` macros.
+   \nl
+   The \`\_wtotoc` `{<level>}{<info>}{<ref-num>}{<title-text>}`
+   macro expands its parameters and does \^`\_wref`.
+
+   Note that the `<tite-text>` is `\detokenize`d before `\_wref`, so the 
+   problem of \"fragile macros" from old \LaTeX/ never occurs. 
+   \_cod ----------------------------
+
+\_def \_printrefnum [#1@#2]{\_leavevmode % we must be in horizontal mode
+   \_ifnonum \_else #1\_therefnum #2\_fi
+   \_wlabel \_therefnum  % references, if `\label[<label>]` is declared 
+   \_ifnotoc \_else \_incr \_tocrefnum
+       \_dest[toc:\_the\_tocrefnum]%
+       \_wtotoc{\_the\_sectionlevel}{\_secinfo}%
+               {\_therefnum}{\_detokenize\_ea{\_savedtitle}}%
+   \_fi
+}
+\_def \_wtotoc #1#2#3#4{\_edef\_tmp{{#1}{#2}{#3}{#4}}\_ea\_wtotocA\_tmp}
+\_def \_wtotocA #1#2#3#4{\_wref\_Xtoc{{#1}{#2}{#3}{#4}}}
+
+   \_doc -----------------------------
+   The \`\_abovetitle``{<penaltyA>}{<skipA>}` and \`\_belowtitle``{<skipB>}` pair 
+   communicates using a special penalty 11333 in vertical mode. 
+   The `\_belowtitle` puts the vertical skip (its value is saved in 
+   `\_savedtitleskip`) followed by this special penalty.
+   The `\_abovetitle` reads `\lastpenalty` and if it has this special value
+   then it removes the skip used before and don't use the parameter.
+   The `\abovetitle` creates `<skipA>` only if whatever previous skip is less
+   or equal than `<skipA>`. We must save `<whatever-skip>`, remove it,
+   create `<penaltyA>` (if `\_belowtitle` does not preceded) and create
+   <whatever-skip> or `<skipA>` depending on what is greater.
+   The amount of `<skipA>` is measured using `\setbox0=\vbox`.
+   \_cod -----------------------------
+
+\_newskip \_savedtitleskip  
+\_newskip \_savedlastskip
+\_def\_abovetitle #1#2{\_savedlastskip=\_lastskip % <whatever-skip>
+   \_ifdim\_lastskip>0pt \_vskip-\_lastskip \_fi
+   \_ifnum\_lastpenalty=11333 \_vskip-\_savedtitleskip \_else #1\_fi
+   \_ifdim\_savedlastskip>0pt \_setbox0=\_vbox{#2\_global\_tmpdim=\_lastskip}%
+   \_else \_tmpdim=\_maxdimen \_fi
+   \_ifdim\_savedlastskip>\_tmpdim \vskip\_savedlastskip \_else #2\_fi
+}
+\_def\_belowtitle #1{#1\_global\_savedtitleskip=\_lastskip \_penalty11333 }
+
+   \_doc -----------------------------
+   \`\nbpar` sets `\interlinepenaty` value.
+   \`\nl` is \"new line" in text (or titles), but space in toc or headlines or outlines.
+   \_cod -----------------------------
+
+\_def\_nbpar{{\_interlinepenalty=10000\_endgraf}}
+
+\_protected\_def\_nl{\_hfil\_break}
+\_regmacro {\_def\_nl{\_unskip\_space}} {\_def\_nl{\_unskip\_space}} {\_def\_nl{ }}
+\_regmacro {\_def\nl{\_unskip\_space}}  {\_def\nl{\_unskip\_space}}  {\_def\nl{ }}
+
+\_public \nbpar \nl ;
+
+   \_doc -----------------------------
+   \`\_firstnoindent` puts a material to `\everypar` in order to next
+   paragraph will be without indentation. It is useful after titles.
+   If you dislike this feature then you can say `\let\_firtnoindent=\relax`.
+   The \`\_wipeepar` removes the material from `\everypar`.
+   \_cod -----------------------------
+
+\_def \_firstnoindent {\_global\_everypar={\_wipeepar \_setbox7=\_lastbox}}
+\_def \_wipeepar {\_global\_everypar={}}
+
+   \_doc ----------------------------- 
+   The `\mark` (for running heads) is used in `\_printsection` only. We
+   suppose that chapters will be printed after `\vfil\break`, so user can
+   implement chapter titles for running headers directly by macros, no
+   `\mark` mechanism is needed. But sections need `\mark`s. And they can be
+   mixed with chapter's running heads, of course. 
+
+   The \`\_insermark``{<title text>}` saves `\mark` in the format
+   `{<title-num>} {<title-text>}`, so it can be printed \"as is" in
+   `\headline` (see the space between them), or you can define a formating
+   macro with two parameters for processing these data, if you need it.   
+   \_cod -----------------------------
+
+\_def\_insertmark#1{\_mark{{\_ifnonum\_else\_therefnum\_fi} {\_unexpanded{#1}}}}
+
+   \_doc -----------------------------
+   \OpTeX/ sets `\headline={}` by default, so no running headings are printed.
+   You can activate the running headings by following code, for example:
+   \begtt
+   \addto\_chapx {\_edef\_runningchap {\_thechapnum: \_unexpanded\_ea{\_savedtitle}}}
+   \def \formathead #1#2{\isempty{#1}\iffalse #1: #2\fi}
+   \headline = {%
+      \ifodd \pageno
+          \hfil \ea\formathead\firstmark{}{}%
+      \else
+          Chapter: \runningchap \hfil
+      \fi 
+   }
+   \endtt
+   The \`\caption``/<letter>` uses `\_<letter>num` counter. 
+   The group opened by `\caption` is finalized by first `\par` from
+   empty line or from `\vskip` or from `\endinsert`.
+   The `\_printcaption<letter>` is called, it starts with
+   printing of the caption.\nl
+   The \`\cskip` macro inserts nobreakable vertical space between caption and
+   the object. 
+   \_cod -----------------------------
+
+\_def\_caption/#1{\_def\_tmpa{#1}\_nospaceafter \_capA}
+\_optdef\_capA []{\_trylabel \_incaption}
+\_def\_incaption {\_bgroup
+   \_ifcsname _\_tmpa num\_endcsname \_ea\_incr \_csname _\_tmpa num\_endcsname
+   \_else \_opwarning{Unknown caption /\_tmpa}\_fi
+   \_edef\_thecapnum {\_csname _the\_tmpa num\_endcsname}%
+   \_edef\_thecaptitle{\_mtext{\_tmpa}}%
+   \_ifcsname _everycaption\_tmpa\_endcsname 
+       \_ea\_the \_csname _everycaption\_tmpa\_endcsname \_fi
+   \_def\_par{\_nbpar\_egroup}\_let\par=\_par
+   \_cs{_printcaption\_tmpa}%
+}
+\_def \_cskip {\_par\_nobreak\_medskip} % space between caption and the object
+
+\_public \caption \cskip ;
+
+   \_doc -----------------------------
+   The \`\_printcaptiont` and \`\_printcaptionf` macros start in vertical mode.
+   They switch to horizontal mode and use `\_wlabel\_thecapnum` (in order to
+   make reference and hyperlink destination) a they can use:
+   \begitems
+   * `\_thecaptitle` ... expands to the word Table or Figure (depending on
+                         the current language).
+   * `\_thecapnum` ...   expands to `\the<letter>num` (caption number).
+   \enditems
+   \_cod -----------------------------
+
+\_def \_printcaptiont {%
+   \_noindent \_wlabel\_thecapnum {\_bf\_thecaptitle~\_thecapnum}\_enspace
+   \_narrowlastlinecentered\_iindent
+}
+\_let \_printcaptionf = \_printcaptiont % caption of figures = caption of tables
+
+   \_doc -----------------------------
+   The default format of `\caption` text is paragraph in block narrower by 
+   `\_iindent` and with the last line is centered. This setting is done by 
+   the \`\_narrowlastlinecentered` macro. 
+   \_cod -----------------------------
+
+\_def\_narrowlastlinecentered#1{%
+   \_leftskip=#1plus1fil
+   \_rightskip=#1plus-1fil
+   \_parfillskip=0pt plus2fil
+}
+
+   \_doc -----------------------------
+   \`\eqmark` is processed in display mode (we add `\eqno` primitive)
+   or in internal mode when `\eqaligno` is used (we don't add `\eqno`). 
+   \_cod -----------------------------
+
+\_optdef\_eqmark []{\_trylabel \_ineqmark}
+\_def\_ineqmark{\_incr\_dnum
+  \_ifinner\_else\_eqno \_fi 
+  \_wlabel\_thednum \_thednum
+}
+\_public \eqmark ;
+
+   \_doc -----------------------------
+   The \`\numberedpar` `<letter>{<name>}` is implemented here.
+   \_cod -----------------------------
+
+\_newcount\_counterA \_newcount\_counterB \_newcount\_counterC 
+\_newcount\_counterD \_newcount\_counterE
+
+\_def\_resetABCDE {\_counterA=0 \_counterB=0 \_counterC=0 \_counterD=0 \_counterE=0 }
+
+\_def \_theAnum {\_othe\_chapnum.\_othe\_secnum.\_the\_counterA}
+\_def \_theBnum {\_othe\_chapnum.\_othe\_secnum.\_the\_counterB}
+\_def \_theCnum {\_othe\_chapnum.\_othe\_secnum.\_the\_counterC}
+\_def \_theDnum {\_othe\_chapnum.\_othe\_secnum.\_the\_counterD}
+\_def \_theEnum {\_othe\_chapnum.\_othe\_secnum.\_the\_counterE}
+
+\_def\_numberedpar#1#2{\_ea \_incr \_csname _counter#1\_endcsname
+   \_def\_tmpa{#1}\_def\_tmpb{#2}\_numberedparparam}
+\_optdef\_numberedparparam[]{%
+   \_ea \_printnumberedpar \_csname _the\_tmpa num\_ea\_endcsname\_ea{\_tmpb}}
+
+\_public \numberedpar ;
+
+   \_doc -----------------------------
+   The \`\_printnumberedpar` `\theXnum {<name>}` opens numbered paragraph and
+   prints it. The optional parameter is in `\_the\_opt`. You can re-define
+   it if you need another design.
+
+   `\_printnumberedpar` needs not to be re-defined if you only want to print
+   Theorems in italic and to insert vertical skips (for example). You can do this 
+   by the following code:
+   \begtt
+   \def\theorem    {\medskip\bgroup\it \numberedpar A{Theorem}}
+   \def\endtheorem {\par\egroup\medskip}
+
+   \theorem Let $M$ be... \endtheorem
+   \endtt
+   \_cod -----------------------------
+
+\_def \_printnumberedpar #1#2{\_par
+   \_noindent\_wlabel #1%
+   {\_bf #2 #1\_istoksempty\_opt\_iffalse \_space \_the\_opt \_fi.}\_space
+   \_ignorespaces
+}
+
+\_endcode % -------------------------------------
+
+2020-04-28 \_secfonts etc: \_boldify is last.
+2020-04-22 \_chapx, \_secx, \_seccx rewritten
+2020-03-14 introduced


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/sections.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/slides.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/slides.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/slides.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,219 @@
+% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \slideshow {Slides style for OpTeX <2020-03-19>} % loaded on demand by \slides
+
+   \_doc -----------------------------
+   Default margins and design is declared here. 
+   The `\_ttfont` is scaled by `mag1.15` in order to balance the
+   ex height of Helvetica (Heros) and LM fonts Typewriter.
+   The `\begtt`...`\endtt` verbatim is printed by smaller text.
+   \_cod -----------------------------
+
+\_margins/1 a5l (14,14,10,3)mm  % landscape A5 format
+\_def\_wideformat{\_margins/1 (263,148) (16,16,10,3)mm } % 16:9 format
+
+\_fontfam[Heros]
+\_typosize[16/19]
+\_famvardef\_ttfont{\_setfontsize{mag1.15}\_tt}
+\_def\_urlfont{}
+\_everytt={\_typosize[13/16] \advance\hsize by10mm}
+\_fontdef\_fixbf{\_bf}
+
+\_nopagenumbers
+\_parindent=0pt
+\_ttindent=5mm
+\_parskip=5pt plus 4pt minus2pt
+\_rightskip=0pt plus 1fil
+\_ttindent=10pt
+\_def\_ttskip{\_smallskip}
+
+\_onlyrgb   % RGB color space is better for presentations
+
+   \_doc -----------------------------
+   The bottom margin is set to 3\,mm. If we use 1\,mm, then baseline of
+   `\footline` is 2\,mm from the bottom page. This is depth of the `\Grey`
+   rectangle used for page numbers. It is r-lapped to `\hoffset` width because left
+   margin = `\hoffset` = right margin. It is 14\,mm for narrow pages or
+   16\,mm for wide pages. 
+   \_cod -----------------------------
+
+\_footlinedist=1mm
+\_footline={\_hss \_rlap{%
+   \_rlap{\Grey\_kern.2\_hoffset\_vrule height6mm depth2mm width.8\_hoffset}%
+                      \_hbox to\_hoffset{\White\_hss\_folio\_kern3mm}}}
+
+   \_doc -----------------------------
+   The \`\subtit` is defined analogically like `\tit`.
+   \_cod -----------------------------
+
+\_eoldef\_subtit#1{\_vskip20pt {\_leftskip=0pt plus1fill \_rightskip=\_leftskip
+   \_subtitfont #1\_nbpar}}
+
+   \_doc -----------------------------
+   The \`\pshow``<num>` prints the text in invisible
+   (transparent) font when \^`\layernum`\code{<}`<num>`. 
+   The trasparency is set by by `\pdfpageresoyrces` primitive.
+   \_cod -----------------------------
+
+\pdfpageresources{/ExtGState << /Invisible << /Type /ExtGState /ca 0 /CA 0 >> 
+                                /Visible   << /Type /ExtGState /ca 1 /CA 1 >> >>}
+\addto\_morepgresources{/Invisible << /Type /ExtGState /ca 0 /CA 0 >> 
+                        /Visible   << /Type /ExtGState /ca 1 /CA 1 >>}
+\def\Invisible {\_pdfliteral{/Invisible gs}}
+\def\Visible   {\_pdfliteral{/Visible gs}}
+\def\Transparent {\Invisible \_aftergroup \Visible}
+
+\_def\_use#1#2{\_ifnum\_layernum#1\_relax#2\_fi}
+\_def\_pshow#1{\_use{=#1}\Red \_use{<#1}\Transparent \_ignorespaces}
+
+   \_doc -----------------------------
+   The main level list of items is activated here. The `\_item:X` and 
+   `\_item:x` are used and are re-defined here.
+   If we are in nested level of items and `\pg+` is used then
+   `\egroups` macro expands to the right number of `\egroup`s
+   in order to close page correctly. The level of nested item lists
+   is saved to the `\_ilevel` register and used when we start again 
+   the next text after `\pg+`. 
+   \_cod -----------------------------
+
+\_newcount\_gilevel
+\_def\*{*}
+\_adef*{\_startitem}
+\_sdef{_item:X}{\Blue\_raise.2ex\_fullrectangle{.8ex}\_kern.5em}
+\_sdef{_item:x}{\Blue\_raise.3ex\_fullrectangle{.6ex}\_kern.4em}
+\_style X
+\_def\_egroups{\_par\_global\_gilevel=\_ilevel \_egroup}
+\_everylist={\_novspaces \_ifcase\_ilevel \_or \_style x \_else \_style - \_fi
+   \_addto\_egroups{\_egroup}}
+
+   \_doc -----------------------------
+   The default values of \`\pg`, i.\,e.\ `\pg;`, `\pg+` and `\pg.` are very simple.
+   They are used when `\showslides` is not specified.
+   \_cod -----------------------------
+
+\_def\_pg#1{\_cs{_spg:#1}}
+\_sdef{_spg:;}{\_vfil\_break \_lfnotenumreset}
+\_sdef{_spg:.}{\_end}
+\_sdef{_spg:+}{\_par}
+
+   \_doc -----------------------------
+   We need no numbers and no table of contents when using slides.
+   The \^`\_printsec` macro is redefined in order the title is centered
+   and typeset in `\Blue`. 
+   \_cod -----------------------------
+
+\_def\_titfont{\_typosize[42/60]\_bf \Blue}
+\_def\_subtitfont{\_typosize[20/30]\_bf}
+\_def\_secfont{\_typosize[25/30]\_bf \Blue}
+
+\_nonum \_notoc \_let\_resetnonumnotoc=\_relax
+\_def\_printsec#1{\_par 
+   \_abovetitle{\_penalty-400}\_bigskip
+   {\_secfont \_noindent \_leftskip=0pt plus1fill \_rightskip=\_leftskip 
+     \_printrefnum[@\_quad]#1\_nbpar}\_insertmark{#1}%
+   \_nobreak \_belowtitle{\_medskip}% 
+}
+
+   \_doc -----------------------------
+   When \`\slideshow` is active then each page is opened 
+   by `\setbox\_slidepage=\vbox\bgroup` (roughly speaking)
+   and closed by `\egroup`. The material is
+   `\unvbox`ed and saved for the usage in the next usage if `\pg+` is in process.
+   The \`\_slidelayer` is incremented instead `\pageno` if `\pg+`.
+   This counter is equal to `\count1`, so it is printed to the terminal and
+   log file next to `\pageno`. 
+
+   The code is somewhat more complicated when \^`\layers` is used. Then
+   `<layered-text>` is saved to the \`\_layertext` macro, the material before
+   it is in \`\_slidepage` box and the material after it is in `\_slidepageB`
+   box. The pages are completed in the `\loop` which increments the
+   \`\layernum` register.   
+   \_cod -----------------------------
+
+\_newbox\_slidepage  \_newbox\_slidepageB
+\_countdef\_slidelayer=1
+\_def\_decr#1{\_global\_advance#1 by-1 }
+
+\_def\_slideshow{\_slidelayer=1 \_slideshowactive \_setbox\_slidepage=\_vbox\_bgroup}
+
+\_def\_slideshowactive{%
+   \_sdef{_spg:;}{\_closepage \_global\_slidelayer=1 \_resetpage \_openslide}
+   \_sdef{_spg:.}{\_closepage \_end}
+   \_sdef{_spg:+}{\_closepage \_incr\_slidelayer \_decr\_pageno \_openslide}
+   \_def\bye     {\_closepage \_end}
+   \_let\_layers=\_layersactive
+   \_def\_destbox[##1:##2]{\_isequal{##1}{ref}\_iffalse \_destboxori[##1:##2]\_fi}%
+}
+\_def\_openslide{\_setbox\_slidepage=\_vbox\_bgroup \_setilevel 
+   \_ifvoid\_slidepage \_else \_unvbox\_slidepage \_nointerlineskip\_lastbox \_fi}
+\_def\_setilevel{\_loop \_decr\_gilevel \_ifnum\_gilevel<0 \_else \_begitems \_repeat}
+
+\_def\_closepage{\_egroups  
+   \_ifnum \_maxlayers=0 \_unvcopy\_slidepage \_vfil\_break
+   \_else \_begingroup \_setwarnslides \_layernum=0 
+      \_loop 
+         \_ifnum\_layernum<\_maxlayers \_advance\_layernum by1
+            \_printlayers \_vfil\_break
+            \_ifnum\_layernum<\_maxlayers \_incr\_slidelayer \_decr\_pageno \_fi 
+      \_repeat
+      \_global\_maxlayers=0
+      \_incr\_layernum \_global\_setbox\_slidepage=\_vbox{\_printlayers}%  
+      \_endgroup
+   \_fi}
+\_def\_resetpage{%
+   \_global\_setbox\_slidepage=\_box\_voidbox \_global\_setbox\_slidepageB=\_box\_voidbox
+   \_lfnotenumreset
+}
+\_def\_setwarnslides{%
+   \_def\pg##1{\_opwarning{\_string\pg##1 \_layersenv}\_def\pg####1{}}%
+   \_def\layers##1 {\_opwarning{\_string\layers\_space \_layersenv}\_def\layers####1{}}%
+}
+\_def\_layersenv{cannot be inside \_string\layers...\_string\endlayers, ignored}
+
+\_def\_printlayers{\_unvcopy\_slidepage \_nointerlineskip\_lastbox
+   \_layertext \_endgraf
+   \_ifdim\_prevdepth>-1000pt \_kern-\_prevdepth \_kern\_dp\_strutbox \_fi
+   \_vskip\_parskip
+   \_unvcopy\_slidepageB
+}
+\_let\_destboxori=\_destbox
+
+\_newcount\_layernum \_newcount\_maxlayers
+\_maxlayers=0
+
+\_long\_def\_layersactive #1 #2\endlayers{%
+   \_par\_egroup
+   \_gdef\_layertext{#2}%
+   \_global\_maxlayers=#1
+   \_setbox\_slidepageB=\_vbox\_bgroup
+}
+\_public \subtit \slideshow \pg \wideformat \use \pshow ;
+
+   \_doc -----------------------------
+   Default \`\layers` `<num>` macro (when \^`\slideshow` is not activated) is simple.
+   It prints the `<layered-text>` with `\layernum=<num>+1` because we need the
+   result after last layer is processed.
+   \_cod -----------------------------
+
+\_def\_layers #1 {\_par\_layernum=\_numexpr#1+1\_relax}
+\_let\endlayers=\_relax
+
+\_def\layers{\_layers}
+
+   \_doc -----------------------------
+   We must to redefine \`\fnotenumpages` because the data from `.ref` file
+   are less usable for implementing such feature: the
+   footnote should be in more layers repeatedly. But we can suppose that 
+   each page starts by `\pg;` macro, so we can reset the footnote counter by
+   this macro. 
+   \_cod -----------------------------
+
+\_def \_fnotenumpages {\_def\_fnotenum{\_the\_lfnotenum}\_pgfnotefalse
+   \_def\_lfnotenumreset{\_global\_lfnotenum=0 }}
+\_let \_lfnotenumreset=\_relax
+\_public \fnotenumpages ;
+
+\_endcode % ----------------------------------------------
+
+The user manual of \OpTeX/ slides are in `op-slides.tex` file.
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/slides.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/styles.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/styles.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/styles.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,115 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \report {Basic styles of OpTeX <2020-03-28>} % preloaded in format
+
+   \_doc -----------------------------
+   We define auxiliary macro first (used by the \^`\address` macro)
+   \nl
+   The `{`\`\boxlines` `<line-1><eol><line-2><eol>...<line-n><eol>}`
+   returns to the outer vertical mode a box with `<line-1>`, next box with
+   `<line-2>` etc. Each box has its natural width. This is reason why we cannot
+   use paragraph mode where each resulting box has the width `\hsize`.
+   The `<eol>` is set active and `\everypar` starts `\hbox{` and acive <eol>
+   closes this `\hbox` by `}`.
+   \_cod -----------------------------
+
+\_def\_boxlines{%
+   \_def\_boxlinesE{\_ifhmode\_egroup\_empty\_fi}%
+   \_def\_nl{\_boxlinesE}%
+   \_bgroup \_lccode`\~=`\^^M\_lowercase{\_egroup\_let~}\_boxlinesE
+   \_everypar{\_setbox0=\_lastbox\_endgraf 
+      \_hbox\_bgroup \_catcode`\^^M=13 \_let\par=\_nl \_aftergroup\_boxlinesC}%
+}
+\_def\_boxlinesC{\_futurelet\_next\_boxlinesD}
+\_def\_boxlinesD{\_ifx\_next\_empty\_else\_ea\_egroup\_fi}
+
+\_public \boxlines ;
+
+   \_doc -----------------------------
+   The \`\report` and \`\letter` style initialization macros are defined here.
+   \nl
+   The `\letter` defines \`\address` and \`\subject` macros.
+   \_cod ----------------------------- 
+
+\_def\_report{
+   \_typosize[11/13.2]
+   \_vsize=\_dimexpr \_topskip + 52\_baselineskip \_relax % added 2020-03-28
+   \_let\_titfont=\_chapfont
+   \_titskip=3ex
+   \_eoldef\_author##1{\_removelastskip\_bigskip
+      {\_leftskip=0pt plus1fill \_rightskip=\_leftskip \_it \_noindent ##1\_par}\_nobreak\_bigskip
+   }
+   \_public \author ;
+   \_parindent=1.2em \_iindent=\_parindent \_ttindent=\_parindent
+   \_footline={\_global\_footline={\_hss\_rmfixed\_folio\_hss}}
+}
+\_def\_letter{
+   \_def\_address{\_vtop\_bgroup\_boxlines \_parskip=0pt \_let\par=\_egroup}
+   \_def\_subject{{\_bf \_mtext{subj}: }}
+   \_public \address \subject ;
+   \_typosize[11/14]
+   \_vsize=\_dimexpr \_topskip + 49\_baselineskip \_relax % added 2020-03-28
+   \_parindent=0pt
+   \_parskip=\_medskipamount
+   \_nopagenumbers
+}
+\_public \letter \report ;
+
+   \_doc -----------------------------
+   The \`\slides` macro reads macro file `slides.opm`, see the section~\ref[slides].
+   \_cod -----------------------------
+
+\_def\_slides{\_par
+  \_input slides.opm
+}
+\_public \slides ;
+
+
+\_endcode % -------------------------------------
+
+The example of `\letter` style document follows:
+
+\begtt %-----------------------------------------------------------------
+
+\letter
+\fontfam[bonum]
+\chyph
+
+\address
+  Vážený pan
+  Mgr. Bořek Byrokrat
+  ředitel Ústavu pro další možnosti
+  Úřední 789
+  123 45 Praha 1
+
+\hfill V Praze dne \today
+
+\subject Žádost o možnost další možnosti
+
+Vážený pane řediteli
+
+na základě Vašeho dopisu č.j.~123456/78-dat a elektronické výzvy si dovoluji 
+Vás požádat o prozkoumání mé možnosti další možnosti. 
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
+eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
+veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
+commodo consequat. 
+
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
+eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
+veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
+commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
+esse cillum dolore eu fugiat nulla pariatur. 
+
+S úctou
+
+\hfill \address
+  {\it Petr Olšák}
+  specialista na \TeX{}
+  Ulice 12345
+  Praha 13
+
+\bye
+
+\endtt %---------------------------------------------------------------------
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/styles.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/table.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/table.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/table.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,211 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \table {Basic macros for OpTeX <2020-04-10>} % preloaded in format
+
+   \_doc -----------------------------
+   The result of the \`\table``{<declaration>}{<data>}` macro is inserted into 
+   `\_tablebox`. You can change default value if you want by 
+   `\let\_tablebox=\vtop` or `\let\_tablebox=\relax`.
+   \_cod -----------------------------
+
+\_let\_tablebox=\_vbox
+
+   \_doc -----------------------------
+   Categories (for example of `|` character) have to be normal when reading 
+   `\table` parameters.
+   \_cod -----------------------------
+
+\_def\_table{\_tablebox\_bgroup \_catcodetable\_optexcatcodes \_tableA}
+\_public \table ;
+
+   \_doc -----------------------------
+   The \^`\tablinespace` is implemented by enlarging given \^`\tabstrut`
+   by desired dimension (height and depth too) and by setting
+   `\_lineskip=-2\_tablinespace`. Normal table rows (where no `\hrule` is
+   between them) have normal baseline distance.
+   \_cod -----------------------------
+
+\_def\_tableA#1{%
+   \_the\_thistable \_global\_thistable={}%
+   \_ea\_ifx\_ea^\_the\_tabstrut^\_setbox\_tstrutbox=\_null
+   \_else \_setbox\_tstrutbox=\_hbox{\_the\_tabstrut}%
+          \_setbox\_tstrutbox=\_hbox{\_vrule width0pt
+              height\_dimexpr\_ht\_tstrutbox+\_tablinespace 
+              depth\_dimexpr\_dp\_tstrutbox+\_tablinespace}%
+          \_offinterlineskip
+          \_lineskip=-2\_tablinespace
+   \_fi
+   \_colnum=0 \_def\_tmpa{}\_tabdata={}\_scantabdata#1\_relax
+   \_the\_everytable \_tableB
+}
+\_def\_tableB#1{\_halign\_ea{\_the\_tabdata\_cr#1\_crcr}\_egroup}
+\_newbox\_tstrutbox  % strut used in table rows
+\_newtoks\_tabdata   % the \halign declaration line
+\_newcount\_colnum   % number of columns
+
+   \_doc -----------------------------
+   The \`\_scantabdata` converts `\table`'s `<declaration>` to 
+   `\halign` `<declaration>`.
+   The result is stored into \`\_tabdata` tokens list. 
+   For example, the 
+   following result is generated when `<declaration>=|cr||cl|`.
+   \begtt
+   tabdata: \_vrule\_the\_tabiteml\_hfil#\_unsskip\_hfil\_the\_tabitemr\_tabstrutA 
+      &\_the\_tabiteml\_hfil#\_unsskip\_the\_tabitemr 
+                                             \_vrule\_kern\_vvkern\_vrule\_tabstrutA 
+      &\_the\_tabiteml\_hfil#\_unsskip\_hfil\_the\_tabitemr\_tabstrutA
+      &\_the\_tabiteml#\_unsskip\_hfil\_the\_tabitemr\_vrule\_tabstrutA
+   ddlinedata: &\_dditem &\_dditem\_vvitem &\_dditem &\_dditem
+   \endtt
+   The second result in the \`\_ddlinedata` macro is a teplate of one row of the table
+   used by \^`\crli` macro.
+   \_cod -----------------------------
+
+\_def\_scantabdata#1{\_let\_next=\_scantabdata
+   \_ifx\_relax#1\_let\_next=\_relax
+   \_else\_ifx|#1\_addtabvrule
+       \_else\_ifx(#1\_def\_next{\_scantabdataE}%
+           \_else\_isinlist{123456789}#1\_iftrue \_def\_next{\_scantabdataC#1}%
+               \_else \_ea\_ifx\_csname _tabdeclare#1\_endcsname \_relax
+                      \_ea\_ifx\_csname _paramtabdeclare#1\_endcsname \_relax
+                          \_opwarning{tab-declarator "#1" unknown, ignored}%
+                      \_else
+                          \_def\_next{\_ea\_scantabdataB\_csname _paramtabdeclare#1\_endcsname}\_fi
+                   \_else \_def\_next{\_ea\_scantabdataA\_csname _tabdeclare#1\_endcsname}%
+   \_fi\_fi\_fi\_fi\_fi \_next
+}
+\_def\_scantabdataA#1{\_addtabitem \_ea\_addtabdata\_ea{#1\_tabstrutA}\_scantabdata}
+\_def\_scantabdataB#1#2{\_addtabitem\_ea\_addtabdata\_ea{#1{#2}\_tabstrutA}\_scantabdata}
+\_def\_scantabdataC {\_def\_tmpb{}\_afterassignment\_scantabdataD \_tmpnum=}
+\_def\_scantabdataD#1{\_loop \_ifnum\_tmpnum>0 \_advance\_tmpnum by-1 \_addto\_tmpb{#1}\_repeat
+   \_ea\_scantabdata\_tmpb}
+\_def\_scantabdataE#1){\_addtabdata{#1}\_scantabdata}
+
+\_def\_addtabitem{\_ifnum\_colnum>0 \_addtabdata{&}\_addto\_ddlinedata{&\_dditem}\_fi
+    \_advance\_colnum by1 \_let\_tmpa=\_relax}
+\_def\_addtabdata#1{\_tabdata\_ea{\_the\_tabdata#1}}
+\_def\_addtabvrule{%
+    \_ifx\_tmpa\_vrule \_addtabdata{\_kern\_vvkern}%
+       \_ifnum\_colnum=0 \_addto\_vvleft{\_vvitem}\_else\_addto\_ddlinedata{\_vvitem}\_fi
+    \_else \_ifnum\_colnum=0 \_addto\_vvleft{\_vvitemA}\_else\_addto\_ddlinedata{\_vvitemA}\_fi\_fi
+    \_let\_tmpa=\_vrule \_addtabdata{\_vrule}%
+}
+\_def\_tabstrutA{\_copy\_tstrutbox}
+\_def\_vvleft{}
+\_def\_ddlinedata{}
+
+   \_doc -----------------------------
+   The default \"declaration letters" `c`, `l`, `r` and `p` are declared.
+   by `\def\_tabdeclare<letter>{...}` for a non-parametric 
+   letter and by `\def\_paramtabdeclare<letter>{...}` for a letter with a parameter.
+   The double hash `##` must be in the definition, it is replaced by a real table item data.
+   All items are put in group because of `\aftergroup` can be used (from
+   `\localcolors` for example).
+   You can declare more such \"declaration letters" if you want.
+   \_cod -----------------------------
+
+\_def\_tabdeclarec{{\_the\_tabiteml\_hfil##\_unsskip\_hfil\_the\_tabitemr}}
+\_def\_tabdeclarel{{\_the\_tabiteml\_relax##\_unsskip\_hfil\_the\_tabitemr}}
+\_def\_tabdeclarer{{\_the\_tabiteml\_hfil##\_unsskip\_the\_tabitemr}}
+\_def\_paramtabdeclarep#1{{\_the\_tabiteml
+   \_vtop{\_hsize=#1\_relax \_baselineskip=\_normalbaselineskip 
+   \_lineskiplimit=0pt \_noindent##\_unsskip\_lower\_dp\_tstrutbox\_hbox{}}\_the\_tabitemr}}
+
+   \_doc -----------------------------
+   User puts optional spaces around the table item typically, i.\,e.\ he/she writes
+   `& text &` instead `&text&`. The left space is ignored by internal \TeX/ algorithm but 
+   the right space must be removed by macros. This is a reason why we reccomend to 
+   use \`\_unsskip` after each `##` in your definition of \"declaration letters".
+   This macro isn't only the primitive `\unskip` because we allow usage of plain \TeX/ 
+   `\hideskip` macro: `&\hideskip text\hideskip&`.
+   \_cod -----------------------------
+
+\_def\_unsskip{\_ifdim\_lastskip>0pt \_unskip\_fi}
+
+   \_doc -----------------------------
+   The family of `\_cr*` macros 
+   \`\crl`, \`\crll`, \`\crli`, \`\crlli`, \`\crlp` and 
+   \`\tskip` `<dimen>` is implemented here. 
+   The \`\_zerotabrule` is used in order to suppress the negative `\lineskip` 
+   declared by \^`\tablinespace`.
+   \_cod -----------------------------
+
+\_def\_crl{\_crcr\_noalign{\_hrule}}
+\_def\_crll{\_crcr\_noalign{\_hrule\_kern\_hhkern\_hrule}}
+\_def\_zerotabrule {\_noalign{\_hrule height0pt width0pt depth0pt}}
+
+\_def\_crli{\_crcr \_zerotabrule \_omit 
+   \_gdef\_dditem{\_omit\_tablinefil}\_gdef\_vvitem{\_kern\_vvkern\_vrule}\_gdef\_vvitemA{\_vrule}%
+   \_vvleft\_tablinefil\_ddlinedata\_crcr \_zerotabrule}
+\_def\_crlli{\_crli\_noalign{\_kern\_hhkern}\_crli}
+\_def\_tablinefil{\_leaders\_hrule\_hfil}
+
+\_def\_crlp#1{\_crcr \_zerotabrule \_noalign{\_kern-\_drulewidth}%
+   \_omit \_xdef\_crlplist{#1}\_xdef\_crlplist{,\_expandafter}\_expandafter\_crlpA\_crlplist,\_end,%
+   \_global\_tmpnum=0 \_gdef\_dditem{\_omit\_crlpD}%
+   \_gdef\_vvitem{\_kern\_vvkern\_kern\_drulewidth}\_gdef\_vvitemA{\_kern\_drulewidth}%
+   \_vvleft\_crlpD\_ddlinedata \_global\_tmpnum=0 \_crcr \_zerotabrule}
+\_def\_crlpA#1,{\_ifx\_end#1\_else \_crlpB#1-\_end,\_expandafter\_crlpA\_fi}
+\_def\_crlpB#1#2-#3,{\_ifx\_end#3\_xdef\_crlplist{\_crlplist#1#2,}\_else\_crlpC#1#2-#3,\_fi}
+\_def\_crlpC#1-#2-#3,{\_tmpnum=#1\_relax 
+   \_loop \_xdef\_crlplist{\_crlplist\_the\_tmpnum,}\_ifnum\_tmpnum<#2\_advance\_tmpnum by1 \_repeat}
+\_def\_crlpD{\_global\_advance\_tmpnum by1
+   \_edef\_tmpa{\_noexpand\_isinlist\_noexpand\_crlplist{,\_the\_tmpnum,}}%
+   \_tmpa\_iftrue \_kern-\_drulewidth \_tablinefil \_kern-\_drulewidth\_else\_hfil \_fi}
+
+\_def\_tskip{\_afterassignment\_tskipA \_tmpdim}
+\_def\_tskipA{\_gdef\_dditem{}\_gdef\_vvitem{}\_gdef\_vvitemA{}\_gdef\_tabstrutA{}%
+    \_vbox to\_tmpdim{}\_ddlinedata \_crcr 
+    \_zerotabrule \_noalign{\_gdef\_tabstrutA{\_copy\_tstrutbox}}}
+
+\_public \crl \crll \crli \crlli \crlp \tskip ;
+
+   \_doc -----------------------------
+   The \`\mspan``[<declaration>]{<text>}` macro generates similar `\omit\span\omit\span` 
+   sequence as plain \TeX/ macro `\multispan`. Moreover, it uses \^`\_scantabdata` to
+   convert `<declaration>` from `\table` syntax to `\halign` syntax.
+   \_cod -----------------------------
+
+\_def\_mspan{\_omit \_tabdata={\_tabstrutA}\_let\_tmpa=\_relax \_afterassignment\_mspanA \_mscount=}
+\_def\_mspanA[#1]#2{\_loop \_ifnum\_mscount>1 \_cs{_span}\_omit \_advance\_mscount-1 \_repeat
+   \_colnum=0 \_def\_tmpa{}\_tabdata={}\_scantabdata#1\_relax
+   \_setbox0=\_vbox{\_halign\_expandafter{\_the\_tabdata\_cr#2\_cr}\_global\_setbox8=\_lastbox}%
+   \_setbox0=\_hbox{\_unhbox8 \_unskip \_global\_setbox8=\_lastbox}%
+   \_unhbox8 \_ignorespaces}
+\_public \mspan ;
+
+   \_doc -----------------------------
+   The parameters of primitive `\vrule` and `\hrule` keeps the rule \"last wins".
+   If we re-define `\hrule` to `\_orihrule height1pt` then each usage
+   of redefined `\hrule` uses `1pt` height if this parameter isn't
+   overwriten by another following `height` parameter. This principle is used for
+   settings another default rule thickness than 0.4\,pt by the macro
+   \`\rulewidth`.
+   \_cod -----------------------------
+
+\_newdimen\_drulewidth  \_drulewidth=0.4pt
+\_let\_orihrule=\_hrule  \_let\_orivrule=\_vrule
+\_def\_rulewidth{\_afterassignment\_rulewidthA \_drulewidth}
+\_def\_rulewidthA{\_edef\_hrule{\_orihrule height\_drulewidth}%
+                  \_edef\_vrule{\_orivrule width\_drulewidth}%
+                  \_let\_rulewidth=\_drulewidth
+                  \_public \vrule \hrule \rulewidth;}
+\_public \rulewidth ;
+
+   \_doc -----------------------------
+   The \`\frame``{<text>}` uses \"\code{\\vbox} in \code{\\vtop}" trick in order to keep the
+   baseline of the internal text at the same level as outer baseline.
+   User can write `\frame{abcxyz}` in normal paragraph line, for example
+   and gets the expected result: \frame{abcxyz}.
+   The internal margins are set by `\vvkern` and `\hhkern` parameters.
+   \_cod -----------------------------
+
+\_long\_def\_frame#1{%
+   \_hbox{\_vrule\_vtop{\_vbox{\_hrule\_kern\_vvkern
+      \_hbox{\_kern\_hhkern\_relax#1\_kern\_hhkern}%
+   }\_kern\_vvkern\_hrule}\_vrule}}
+\_public \frame ;
+
+\_endcode % -------------------------------------
+
+2020-04-10 second group for items in order to \localcolors


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/table.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/uni-lcuc.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/uni-lcuc.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/uni-lcuc.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,15944 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+% Preloaded in format. A copy o uni-lcuc.tex fom csplain is here:
+
+% uni-lcuc.tex -- sets \lccodes and \uccodes for Unicode chars, nothing more 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Petr Olsak,  Jul. 2014
+
+\_wterm{Setting lccodes and uccodes for Unicode characters}
+
+\_def\_tmp #1 #2 {\_ifx^#1^\_else
+   \_lccode"#1="#1
+   \_ifx.#2%
+      \_uccode"#1="#1
+   \_else
+      \_uccode"#2="#2
+      \_lccode"#2="#1
+      \_uccode"#1="#2
+   \_fi
+   \_ea \_tmp \_fi
+}
+\_tmp
+00AA .
+00B5 039C
+00BA .
+00E0 00C0
+00E1 00C1
+00E2 00C2
+00E3 00C3
+00E4 00C4
+00E5 00C5
+00E6 00C6
+00E7 00C7
+00E8 00C8
+00E9 00C9
+00EA 00CA
+00EB 00CB
+00EC 00CC
+00ED 00CD
+00EE 00CE
+00EF 00CF
+00F0 00D0
+00F1 00D1
+00F2 00D2
+00F3 00D3
+00F4 00D4
+00F5 00D5
+00F6 00D6
+00F8 00D8
+00F9 00D9
+00FA 00DA
+00FB 00DB
+00FC 00DC
+00FD 00DD
+00FE 00DE
+00DF .
+00FF 0178
+0101 0100
+0103 0102
+0105 0104
+0107 0106
+0109 0108
+010B 010A
+010D 010C
+010F 010E
+0111 0110
+0113 0112
+0115 0114
+0117 0116
+0119 0118
+011B 011A
+011D 011C
+011F 011E
+0121 0120
+0123 0122
+0125 0124
+0127 0126
+0129 0128
+012B 012A
+012D 012C
+012F 012E
+0133 0132
+0135 0134
+0137 0136
+0138 .
+013A 0139
+013C 013B
+013E 013D
+0140 013F
+0142 0141
+0144 0143
+0146 0145
+0148 0147
+0149 .
+014B 014A
+014D 014C
+014F 014E
+0151 0150
+0153 0152
+0155 0154
+0157 0156
+0159 0158
+015B 015A
+015D 015C
+015F 015E
+0161 0160
+0163 0162
+0165 0164
+0167 0166
+0169 0168
+016B 016A
+016D 016C
+016F 016E
+0171 0170
+0173 0172
+0175 0174
+0177 0176
+017A 0179
+017C 017B
+017E 017D
+0180 0243
+0253 0181
+0183 0182
+0185 0184
+0254 0186
+0188 0187
+0256 0189
+0257 018A
+018C 018B
+018D .
+01DD 018E
+0259 018F
+025B 0190
+0192 0191
+0260 0193
+0263 0194
+0195 01F6
+0269 0196
+0268 0197
+0199 0198
+019A 023D
+019B .
+026F 019C
+0272 019D
+019E 0220
+0275 019F
+01A1 01A0
+01A3 01A2
+01A5 01A4
+0280 01A6
+01A8 01A7
+0283 01A9
+01AA .
+01AB .
+01AD 01AC
+0288 01AE
+01B0 01AF
+028A 01B1
+028B 01B2
+01B4 01B3
+01B6 01B5
+0292 01B7
+01B9 01B8
+01BA .
+01BB .
+01BD 01BC
+01BE .
+01BF 01F7
+01C0 .
+01C1 .
+01C2 .
+01C3 .
+01C6 01C4
+01C9 01C7
+01CC 01CA
+01CE 01CD
+01D0 01CF
+01D2 01D1
+01D4 01D3
+01D6 01D5
+01D8 01D7
+01DA 01D9
+01DC 01DB
+01DF 01DE
+01E1 01E0
+01E3 01E2
+01E5 01E4
+01E7 01E6
+01E9 01E8
+01EB 01EA
+01ED 01EC
+01EF 01EE
+01F0 .
+01F3 01F1
+01F5 01F4
+01F9 01F8
+01FB 01FA
+01FD 01FC
+01FF 01FE
+0201 0200
+0203 0202
+0205 0204
+0207 0206
+0209 0208
+020B 020A
+020D 020C
+020F 020E
+0211 0210
+0213 0212
+0215 0214
+0217 0216
+0219 0218
+021B 021A
+021D 021C
+021F 021E
+0221 .
+0223 0222
+0225 0224
+0227 0226
+0229 0228
+022B 022A
+022D 022C
+022F 022E
+0231 0230
+0233 0232
+0234 .
+0235 .
+0236 .
+0237 .
+0238 .
+0239 .
+2C65 023A
+023C 023B
+2C66 023E
+023F 2C7E
+0240 2C7F
+0242 0241
+0289 0244
+028C 0245
+0247 0246
+0249 0248
+024B 024A
+024D 024C
+024F 024E
+0250 2C6F
+0251 2C6D
+0252 2C70
+0255 .
+0258 .
+025A .
+025C .
+025D .
+025E .
+025F .
+0261 .
+0262 .
+0264 .
+0265 A78D
+0266 A7AA
+0267 .
+026A .
+026B 2C62
+026C .
+026D .
+026E .
+0270 .
+0271 2C6E
+0273 .
+0274 .
+0276 .
+0277 .
+0278 .
+0279 .
+027A .
+027B .
+027C .
+027D 2C64
+027E .
+027F .
+0281 .
+0282 .
+0284 .
+0285 .
+0286 .
+0287 .
+028D .
+028E .
+028F .
+0290 .
+0291 .
+0293 .
+0294 .
+0295 .
+0296 .
+0297 .
+0298 .
+0299 .
+029A .
+029B .
+029C .
+029D .
+029E .
+029F .
+02A0 .
+02A1 .
+02A2 .
+02A3 .
+02A4 .
+02A5 .
+02A6 .
+02A7 .
+02A8 .
+02A9 .
+02AA .
+02AB .
+02AC .
+02AD .
+02AE .
+02AF .
+02B0 .
+02B1 .
+02B2 .
+02B3 .
+02B4 .
+02B5 .
+02B6 .
+02B7 .
+02B8 .
+02B9 .
+02BA .
+02BB .
+02BC .
+02BD .
+02BE .
+02BF .
+02C0 .
+02C1 .
+02C6 .
+02C7 .
+02C8 .
+02C9 .
+02CA .
+02CB .
+02CC .
+02CD .
+02CE .
+02CF .
+02D0 .
+02D1 .
+02E0 .
+02E1 .
+02E2 .
+02E3 .
+02E4 .
+02EC .
+02EE .
+0371 0370
+0373 0372
+0374 .
+0377 0376
+037A .
+037B 03FD
+037C 03FE
+037D 03FF
+03AC 0386
+03AD 0388
+03AE 0389
+03AF 038A
+03CC 038C
+03CD 038E
+03CE 038F
+0390 .
+03B1 0391
+03B2 0392
+03B3 0393
+03B4 0394
+03B5 0395
+03B6 0396
+03B7 0397
+03B8 0398
+03B9 0399
+03BA 039A
+03BB 039B
+03BD 039D
+03BE 039E
+03BF 039F
+03C0 03A0
+03C1 03A1
+03C3 03A3
+03C4 03A4
+03C5 03A5
+03C6 03A6
+03C7 03A7
+03C8 03A8
+03C9 03A9
+03CA 03AA
+03CB 03AB
+03B0 .
+03D7 03CF
+03D2 .
+03D3 .
+03D4 .
+03D9 03D8
+03DB 03DA
+03DD 03DC
+03DF 03DE
+03E1 03E0
+03E3 03E2
+03E5 03E4
+03E7 03E6
+03E9 03E8
+03EB 03EA
+03ED 03EC
+03EF 03EE
+03F2 03F9
+03F3 .
+03F8 03F7
+03FB 03FA
+03FC .
+0450 0400
+0451 0401
+0452 0402
+0453 0403
+0454 0404
+0455 0405
+0456 0406
+0457 0407
+0458 0408
+0459 0409
+045A 040A
+045B 040B
+045C 040C
+045D 040D
+045E 040E
+045F 040F
+0430 0410
+0431 0411
+0432 0412
+0433 0413
+0434 0414
+0435 0415
+0436 0416
+0437 0417
+0438 0418
+0439 0419
+043A 041A
+043B 041B
+043C 041C
+043D 041D
+043E 041E
+043F 041F
+0440 0420
+0441 0421
+0442 0422
+0443 0423
+0444 0424
+0445 0425
+0446 0426
+0447 0427
+0448 0428
+0449 0429
+044A 042A
+044B 042B
+044C 042C
+044D 042D
+044E 042E
+044F 042F
+0461 0460
+0463 0462
+0465 0464
+0467 0466
+0469 0468
+046B 046A
+046D 046C
+046F 046E
+0471 0470
+0473 0472
+0475 0474
+0477 0476
+0479 0478
+047B 047A
+047D 047C
+047F 047E
+0481 0480
+048B 048A
+048D 048C
+048F 048E
+0491 0490
+0493 0492
+0495 0494
+0497 0496
+0499 0498
+049B 049A
+049D 049C
+049F 049E
+04A1 04A0
+04A3 04A2
+04A5 04A4
+04A7 04A6
+04A9 04A8
+04AB 04AA
+04AD 04AC
+04AF 04AE
+04B1 04B0
+04B3 04B2
+04B5 04B4
+04B7 04B6
+04B9 04B8
+04BB 04BA
+04BD 04BC
+04BF 04BE
+04CF 04C0
+04C2 04C1
+04C4 04C3
+04C6 04C5
+04C8 04C7
+04CA 04C9
+04CC 04CB
+04CE 04CD
+04D1 04D0
+04D3 04D2
+04D5 04D4
+04D7 04D6
+04D9 04D8
+04DB 04DA
+04DD 04DC
+04DF 04DE
+04E1 04E0
+04E3 04E2
+04E5 04E4
+04E7 04E6
+04E9 04E8
+04EB 04EA
+04ED 04EC
+04EF 04EE
+04F1 04F0
+04F3 04F2
+04F5 04F4
+04F7 04F6
+04F9 04F8
+04FB 04FA
+04FD 04FC
+04FF 04FE
+0501 0500
+0503 0502
+0505 0504
+0507 0506
+0509 0508
+050B 050A
+050D 050C
+050F 050E
+0511 0510
+0513 0512
+0515 0514
+0517 0516
+0519 0518
+051B 051A
+051D 051C
+051F 051E
+0521 0520
+0523 0522
+0525 0524
+0527 0526
+0561 0531
+0562 0532
+0563 0533
+0564 0534
+0565 0535
+0566 0536
+0567 0537
+0568 0538
+0569 0539
+056A 053A
+056B 053B
+056C 053C
+056D 053D
+056E 053E
+056F 053F
+0570 0540
+0571 0541
+0572 0542
+0573 0543
+0574 0544
+0575 0545
+0576 0546
+0577 0547
+0578 0548
+0579 0549
+057A 054A
+057B 054B
+057C 054C
+057D 054D
+057E 054E
+057F 054F
+0580 0550
+0581 0551
+0582 0552
+0583 0553
+0584 0554
+0585 0555
+0586 0556
+0559 .
+0587 .
+05D0 .
+05D1 .
+05D2 .
+05D3 .
+05D4 .
+05D5 .
+05D6 .
+05D7 .
+05D8 .
+05D9 .
+05DA .
+05DB .
+05DC .
+05DD .
+05DE .
+05DF .
+05E0 .
+05E1 .
+05E2 .
+05E3 .
+05E4 .
+05E5 .
+05E6 .
+05E7 .
+05E8 .
+05E9 .
+05EA .
+05F0 .
+05F1 .
+05F2 .
+0620 .
+0621 .
+0622 .
+0623 .
+0624 .
+0625 .
+0626 .
+0627 .
+0628 .
+0629 .
+062A .
+062B .
+062C .
+062D .
+062E .
+062F .
+0630 .
+0631 .
+0632 .
+0633 .
+0634 .
+0635 .
+0636 .
+0637 .
+0638 .
+0639 .
+063A .
+063B .
+063C .
+063D .
+063E .
+063F .
+0640 .
+0641 .
+0642 .
+0643 .
+0644 .
+0645 .
+0646 .
+0647 .
+0648 .
+0649 .
+064A .
+066E .
+066F .
+0671 .
+0672 .
+0673 .
+0674 .
+0675 .
+0676 .
+0677 .
+0678 .
+0679 .
+067A .
+067B .
+067C .
+067D .
+067E .
+067F .
+0680 .
+0681 .
+0682 .
+0683 .
+0684 .
+0685 .
+0686 .
+0687 .
+0688 .
+0689 .
+068A .
+068B .
+068C .
+068D .
+068E .
+068F .
+0690 .
+0691 .
+0692 .
+0693 .
+0694 .
+0695 .
+0696 .
+0697 .
+0698 .
+0699 .
+069A .
+069B .
+069C .
+069D .
+069E .
+069F .
+06A0 .
+06A1 .
+06A2 .
+06A3 .
+06A4 .
+06A5 .
+06A6 .
+06A7 .
+06A8 .
+06A9 .
+06AA .
+06AB .
+06AC .
+06AD .
+06AE .
+06AF .
+06B0 .
+06B1 .
+06B2 .
+06B3 .
+06B4 .
+06B5 .
+06B6 .
+06B7 .
+06B8 .
+06B9 .
+06BA .
+06BB .
+06BC .
+06BD .
+06BE .
+06BF .
+06C0 .
+06C1 .
+06C2 .
+06C3 .
+06C4 .
+06C5 .
+06C6 .
+06C7 .
+06C8 .
+06C9 .
+06CA .
+06CB .
+06CC .
+06CD .
+06CE .
+06CF .
+06D0 .
+06D1 .
+06D2 .
+06D3 .
+06D5 .
+06E5 .
+06E6 .
+06EE .
+06EF .
+06FA .
+06FB .
+06FC .
+06FF .
+0710 .
+0712 .
+0713 .
+0714 .
+0715 .
+0716 .
+0717 .
+0718 .
+0719 .
+071A .
+071B .
+071C .
+071D .
+071E .
+071F .
+0720 .
+0721 .
+0722 .
+0723 .
+0724 .
+0725 .
+0726 .
+0727 .
+0728 .
+0729 .
+072A .
+072B .
+072C .
+072D .
+072E .
+072F .
+074D .
+074E .
+074F .
+0750 .
+0751 .
+0752 .
+0753 .
+0754 .
+0755 .
+0756 .
+0757 .
+0758 .
+0759 .
+075A .
+075B .
+075C .
+075D .
+075E .
+075F .
+0760 .
+0761 .
+0762 .
+0763 .
+0764 .
+0765 .
+0766 .
+0767 .
+0768 .
+0769 .
+076A .
+076B .
+076C .
+076D .
+076E .
+076F .
+0770 .
+0771 .
+0772 .
+0773 .
+0774 .
+0775 .
+0776 .
+0777 .
+0778 .
+0779 .
+077A .
+077B .
+077C .
+077D .
+077E .
+077F .
+0780 .
+0781 .
+0782 .
+0783 .
+0784 .
+0785 .
+0786 .
+0787 .
+0788 .
+0789 .
+078A .
+078B .
+078C .
+078D .
+078E .
+078F .
+0790 .
+0791 .
+0792 .
+0793 .
+0794 .
+0795 .
+0796 .
+0797 .
+0798 .
+0799 .
+079A .
+079B .
+079C .
+079D .
+079E .
+079F .
+07A0 .
+07A1 .
+07A2 .
+07A3 .
+07A4 .
+07A5 .
+07B1 .
+07CA .
+07CB .
+07CC .
+07CD .
+07CE .
+07CF .
+07D0 .
+07D1 .
+07D2 .
+07D3 .
+07D4 .
+07D5 .
+07D6 .
+07D7 .
+07D8 .
+07D9 .
+07DA .
+07DB .
+07DC .
+07DD .
+07DE .
+07DF .
+07E0 .
+07E1 .
+07E2 .
+07E3 .
+07E4 .
+07E5 .
+07E6 .
+07E7 .
+07E8 .
+07E9 .
+07EA .
+07F4 .
+07F5 .
+07FA .
+0800 .
+0801 .
+0802 .
+0803 .
+0804 .
+0805 .
+0806 .
+0807 .
+0808 .
+0809 .
+080A .
+080B .
+080C .
+080D .
+080E .
+080F .
+0810 .
+0811 .
+0812 .
+0813 .
+0814 .
+0815 .
+081A .
+0824 .
+0828 .
+0840 .
+0841 .
+0842 .
+0843 .
+0844 .
+0845 .
+0846 .
+0847 .
+0848 .
+0849 .
+084A .
+084B .
+084C .
+084D .
+084E .
+084F .
+0850 .
+0851 .
+0852 .
+0853 .
+0854 .
+0855 .
+0856 .
+0857 .
+0858 .
+08A0 .
+08A2 .
+08A3 .
+08A4 .
+08A5 .
+08A6 .
+08A7 .
+08A8 .
+08A9 .
+08AA .
+08AB .
+08AC .
+0904 .
+0905 .
+0906 .
+0907 .
+0908 .
+0909 .
+090A .
+090B .
+090C .
+090D .
+090E .
+090F .
+0910 .
+0911 .
+0912 .
+0913 .
+0914 .
+0915 .
+0916 .
+0917 .
+0918 .
+0919 .
+091A .
+091B .
+091C .
+091D .
+091E .
+091F .
+0920 .
+0921 .
+0922 .
+0923 .
+0924 .
+0925 .
+0926 .
+0927 .
+0928 .
+0929 .
+092A .
+092B .
+092C .
+092D .
+092E .
+092F .
+0930 .
+0931 .
+0932 .
+0933 .
+0934 .
+0935 .
+0936 .
+0937 .
+0938 .
+0939 .
+093D .
+0950 .
+0958 .
+0959 .
+095A .
+095B .
+095C .
+095D .
+095E .
+095F .
+0960 .
+0961 .
+0971 .
+0972 .
+0973 .
+0974 .
+0975 .
+0976 .
+0977 .
+0979 .
+097A .
+097B .
+097C .
+097D .
+097E .
+097F .
+0985 .
+0986 .
+0987 .
+0988 .
+0989 .
+098A .
+098B .
+098C .
+098F .
+0990 .
+0993 .
+0994 .
+0995 .
+0996 .
+0997 .
+0998 .
+0999 .
+099A .
+099B .
+099C .
+099D .
+099E .
+099F .
+09A0 .
+09A1 .
+09A2 .
+09A3 .
+09A4 .
+09A5 .
+09A6 .
+09A7 .
+09A8 .
+09AA .
+09AB .
+09AC .
+09AD .
+09AE .
+09AF .
+09B0 .
+09B2 .
+09B6 .
+09B7 .
+09B8 .
+09B9 .
+09BD .
+09CE .
+09DC .
+09DD .
+09DF .
+09E0 .
+09E1 .
+09F0 .
+09F1 .
+0A05 .
+0A06 .
+0A07 .
+0A08 .
+0A09 .
+0A0A .
+0A0F .
+0A10 .
+0A13 .
+0A14 .
+0A15 .
+0A16 .
+0A17 .
+0A18 .
+0A19 .
+0A1A .
+0A1B .
+0A1C .
+0A1D .
+0A1E .
+0A1F .
+0A20 .
+0A21 .
+0A22 .
+0A23 .
+0A24 .
+0A25 .
+0A26 .
+0A27 .
+0A28 .
+0A2A .
+0A2B .
+0A2C .
+0A2D .
+0A2E .
+0A2F .
+0A30 .
+0A32 .
+0A33 .
+0A35 .
+0A36 .
+0A38 .
+0A39 .
+0A59 .
+0A5A .
+0A5B .
+0A5C .
+0A5E .
+0A72 .
+0A73 .
+0A74 .
+0A85 .
+0A86 .
+0A87 .
+0A88 .
+0A89 .
+0A8A .
+0A8B .
+0A8C .
+0A8D .
+0A8F .
+0A90 .
+0A91 .
+0A93 .
+0A94 .
+0A95 .
+0A96 .
+0A97 .
+0A98 .
+0A99 .
+0A9A .
+0A9B .
+0A9C .
+0A9D .
+0A9E .
+0A9F .
+0AA0 .
+0AA1 .
+0AA2 .
+0AA3 .
+0AA4 .
+0AA5 .
+0AA6 .
+0AA7 .
+0AA8 .
+0AAA .
+0AAB .
+0AAC .
+0AAD .
+0AAE .
+0AAF .
+0AB0 .
+0AB2 .
+0AB3 .
+0AB5 .
+0AB6 .
+0AB7 .
+0AB8 .
+0AB9 .
+0ABD .
+0AD0 .
+0AE0 .
+0AE1 .
+0B05 .
+0B06 .
+0B07 .
+0B08 .
+0B09 .
+0B0A .
+0B0B .
+0B0C .
+0B0F .
+0B10 .
+0B13 .
+0B14 .
+0B15 .
+0B16 .
+0B17 .
+0B18 .
+0B19 .
+0B1A .
+0B1B .
+0B1C .
+0B1D .
+0B1E .
+0B1F .
+0B20 .
+0B21 .
+0B22 .
+0B23 .
+0B24 .
+0B25 .
+0B26 .
+0B27 .
+0B28 .
+0B2A .
+0B2B .
+0B2C .
+0B2D .
+0B2E .
+0B2F .
+0B30 .
+0B32 .
+0B33 .
+0B35 .
+0B36 .
+0B37 .
+0B38 .
+0B39 .
+0B3D .
+0B5C .
+0B5D .
+0B5F .
+0B60 .
+0B61 .
+0B71 .
+0B83 .
+0B85 .
+0B86 .
+0B87 .
+0B88 .
+0B89 .
+0B8A .
+0B8E .
+0B8F .
+0B90 .
+0B92 .
+0B93 .
+0B94 .
+0B95 .
+0B99 .
+0B9A .
+0B9C .
+0B9E .
+0B9F .
+0BA3 .
+0BA4 .
+0BA8 .
+0BA9 .
+0BAA .
+0BAE .
+0BAF .
+0BB0 .
+0BB1 .
+0BB2 .
+0BB3 .
+0BB4 .
+0BB5 .
+0BB6 .
+0BB7 .
+0BB8 .
+0BB9 .
+0BD0 .
+0C05 .
+0C06 .
+0C07 .
+0C08 .
+0C09 .
+0C0A .
+0C0B .
+0C0C .
+0C0E .
+0C0F .
+0C10 .
+0C12 .
+0C13 .
+0C14 .
+0C15 .
+0C16 .
+0C17 .
+0C18 .
+0C19 .
+0C1A .
+0C1B .
+0C1C .
+0C1D .
+0C1E .
+0C1F .
+0C20 .
+0C21 .
+0C22 .
+0C23 .
+0C24 .
+0C25 .
+0C26 .
+0C27 .
+0C28 .
+0C2A .
+0C2B .
+0C2C .
+0C2D .
+0C2E .
+0C2F .
+0C30 .
+0C31 .
+0C32 .
+0C33 .
+0C35 .
+0C36 .
+0C37 .
+0C38 .
+0C39 .
+0C3D .
+0C58 .
+0C59 .
+0C60 .
+0C61 .
+0C85 .
+0C86 .
+0C87 .
+0C88 .
+0C89 .
+0C8A .
+0C8B .
+0C8C .
+0C8E .
+0C8F .
+0C90 .
+0C92 .
+0C93 .
+0C94 .
+0C95 .
+0C96 .
+0C97 .
+0C98 .
+0C99 .
+0C9A .
+0C9B .
+0C9C .
+0C9D .
+0C9E .
+0C9F .
+0CA0 .
+0CA1 .
+0CA2 .
+0CA3 .
+0CA4 .
+0CA5 .
+0CA6 .
+0CA7 .
+0CA8 .
+0CAA .
+0CAB .
+0CAC .
+0CAD .
+0CAE .
+0CAF .
+0CB0 .
+0CB1 .
+0CB2 .
+0CB3 .
+0CB5 .
+0CB6 .
+0CB7 .
+0CB8 .
+0CB9 .
+0CBD .
+0CDE .
+0CE0 .
+0CE1 .
+0CF1 .
+0CF2 .
+0D05 .
+0D06 .
+0D07 .
+0D08 .
+0D09 .
+0D0A .
+0D0B .
+0D0C .
+0D0E .
+0D0F .
+0D10 .
+0D12 .
+0D13 .
+0D14 .
+0D15 .
+0D16 .
+0D17 .
+0D18 .
+0D19 .
+0D1A .
+0D1B .
+0D1C .
+0D1D .
+0D1E .
+0D1F .
+0D20 .
+0D21 .
+0D22 .
+0D23 .
+0D24 .
+0D25 .
+0D26 .
+0D27 .
+0D28 .
+0D29 .
+0D2A .
+0D2B .
+0D2C .
+0D2D .
+0D2E .
+0D2F .
+0D30 .
+0D31 .
+0D32 .
+0D33 .
+0D34 .
+0D35 .
+0D36 .
+0D37 .
+0D38 .
+0D39 .
+0D3A .
+0D3D .
+0D4E .
+0D60 .
+0D61 .
+0D7A .
+0D7B .
+0D7C .
+0D7D .
+0D7E .
+0D7F .
+0D85 .
+0D86 .
+0D87 .
+0D88 .
+0D89 .
+0D8A .
+0D8B .
+0D8C .
+0D8D .
+0D8E .
+0D8F .
+0D90 .
+0D91 .
+0D92 .
+0D93 .
+0D94 .
+0D95 .
+0D96 .
+0D9A .
+0D9B .
+0D9C .
+0D9D .
+0D9E .
+0D9F .
+0DA0 .
+0DA1 .
+0DA2 .
+0DA3 .
+0DA4 .
+0DA5 .
+0DA6 .
+0DA7 .
+0DA8 .
+0DA9 .
+0DAA .
+0DAB .
+0DAC .
+0DAD .
+0DAE .
+0DAF .
+0DB0 .
+0DB1 .
+0DB3 .
+0DB4 .
+0DB5 .
+0DB6 .
+0DB7 .
+0DB8 .
+0DB9 .
+0DBA .
+0DBB .
+0DBD .
+0DC0 .
+0DC1 .
+0DC2 .
+0DC3 .
+0DC4 .
+0DC5 .
+0DC6 .
+0E01 .
+0E02 .
+0E03 .
+0E04 .
+0E05 .
+0E06 .
+0E07 .
+0E08 .
+0E09 .
+0E0A .
+0E0B .
+0E0C .
+0E0D .
+0E0E .
+0E0F .
+0E10 .
+0E11 .
+0E12 .
+0E13 .
+0E14 .
+0E15 .
+0E16 .
+0E17 .
+0E18 .
+0E19 .
+0E1A .
+0E1B .
+0E1C .
+0E1D .
+0E1E .
+0E1F .
+0E20 .
+0E21 .
+0E22 .
+0E23 .
+0E24 .
+0E25 .
+0E26 .
+0E27 .
+0E28 .
+0E29 .
+0E2A .
+0E2B .
+0E2C .
+0E2D .
+0E2E .
+0E2F .
+0E30 .
+0E32 .
+0E33 .
+0E40 .
+0E41 .
+0E42 .
+0E43 .
+0E44 .
+0E45 .
+0E46 .
+0E81 .
+0E82 .
+0E84 .
+0E87 .
+0E88 .
+0E8A .
+0E8D .
+0E94 .
+0E95 .
+0E96 .
+0E97 .
+0E99 .
+0E9A .
+0E9B .
+0E9C .
+0E9D .
+0E9E .
+0E9F .
+0EA1 .
+0EA2 .
+0EA3 .
+0EA5 .
+0EA7 .
+0EAA .
+0EAB .
+0EAD .
+0EAE .
+0EAF .
+0EB0 .
+0EB2 .
+0EB3 .
+0EBD .
+0EC0 .
+0EC1 .
+0EC2 .
+0EC3 .
+0EC4 .
+0EC6 .
+0EDC .
+0EDD .
+0EDE .
+0EDF .
+0F00 .
+0F40 .
+0F41 .
+0F42 .
+0F43 .
+0F44 .
+0F45 .
+0F46 .
+0F47 .
+0F49 .
+0F4A .
+0F4B .
+0F4C .
+0F4D .
+0F4E .
+0F4F .
+0F50 .
+0F51 .
+0F52 .
+0F53 .
+0F54 .
+0F55 .
+0F56 .
+0F57 .
+0F58 .
+0F59 .
+0F5A .
+0F5B .
+0F5C .
+0F5D .
+0F5E .
+0F5F .
+0F60 .
+0F61 .
+0F62 .
+0F63 .
+0F64 .
+0F65 .
+0F66 .
+0F67 .
+0F68 .
+0F69 .
+0F6A .
+0F6B .
+0F6C .
+0F88 .
+0F89 .
+0F8A .
+0F8B .
+0F8C .
+1000 .
+1001 .
+1002 .
+1003 .
+1004 .
+1005 .
+1006 .
+1007 .
+1008 .
+1009 .
+100A .
+100B .
+100C .
+100D .
+100E .
+100F .
+1010 .
+1011 .
+1012 .
+1013 .
+1014 .
+1015 .
+1016 .
+1017 .
+1018 .
+1019 .
+101A .
+101B .
+101C .
+101D .
+101E .
+101F .
+1020 .
+1021 .
+1022 .
+1023 .
+1024 .
+1025 .
+1026 .
+1027 .
+1028 .
+1029 .
+102A .
+103F .
+1050 .
+1051 .
+1052 .
+1053 .
+1054 .
+1055 .
+105A .
+105B .
+105C .
+105D .
+1061 .
+1065 .
+1066 .
+106E .
+106F .
+1070 .
+1075 .
+1076 .
+1077 .
+1078 .
+1079 .
+107A .
+107B .
+107C .
+107D .
+107E .
+107F .
+1080 .
+1081 .
+108E .
+2D00 10A0
+2D01 10A1
+2D02 10A2
+2D03 10A3
+2D04 10A4
+2D05 10A5
+2D06 10A6
+2D07 10A7
+2D08 10A8
+2D09 10A9
+2D0A 10AA
+2D0B 10AB
+2D0C 10AC
+2D0D 10AD
+2D0E 10AE
+2D0F 10AF
+2D10 10B0
+2D11 10B1
+2D12 10B2
+2D13 10B3
+2D14 10B4
+2D15 10B5
+2D16 10B6
+2D17 10B7
+2D18 10B8
+2D19 10B9
+2D1A 10BA
+2D1B 10BB
+2D1C 10BC
+2D1D 10BD
+2D1E 10BE
+2D1F 10BF
+2D20 10C0
+2D21 10C1
+2D22 10C2
+2D23 10C3
+2D24 10C4
+2D25 10C5
+2D27 10C7
+2D2D 10CD
+10D0 .
+10D1 .
+10D2 .
+10D3 .
+10D4 .
+10D5 .
+10D6 .
+10D7 .
+10D8 .
+10D9 .
+10DA .
+10DB .
+10DC .
+10DD .
+10DE .
+10DF .
+10E0 .
+10E1 .
+10E2 .
+10E3 .
+10E4 .
+10E5 .
+10E6 .
+10E7 .
+10E8 .
+10E9 .
+10EA .
+10EB .
+10EC .
+10ED .
+10EE .
+10EF .
+10F0 .
+10F1 .
+10F2 .
+10F3 .
+10F4 .
+10F5 .
+10F6 .
+10F7 .
+10F8 .
+10F9 .
+10FA .
+10FC .
+10FD .
+10FE .
+10FF .
+1100 .
+1101 .
+1102 .
+1103 .
+1104 .
+1105 .
+1106 .
+1107 .
+1108 .
+1109 .
+110A .
+110B .
+110C .
+110D .
+110E .
+110F .
+1110 .
+1111 .
+1112 .
+1113 .
+1114 .
+1115 .
+1116 .
+1117 .
+1118 .
+1119 .
+111A .
+111B .
+111C .
+111D .
+111E .
+111F .
+1120 .
+1121 .
+1122 .
+1123 .
+1124 .
+1125 .
+1126 .
+1127 .
+1128 .
+1129 .
+112A .
+112B .
+112C .
+112D .
+112E .
+112F .
+1130 .
+1131 .
+1132 .
+1133 .
+1134 .
+1135 .
+1136 .
+1137 .
+1138 .
+1139 .
+113A .
+113B .
+113C .
+113D .
+113E .
+113F .
+1140 .
+1141 .
+1142 .
+1143 .
+1144 .
+1145 .
+1146 .
+1147 .
+1148 .
+1149 .
+114A .
+114B .
+114C .
+114D .
+114E .
+114F .
+1150 .
+1151 .
+1152 .
+1153 .
+1154 .
+1155 .
+1156 .
+1157 .
+1158 .
+1159 .
+115A .
+115B .
+115C .
+115D .
+115E .
+115F .
+1160 .
+1161 .
+1162 .
+1163 .
+1164 .
+1165 .
+1166 .
+1167 .
+1168 .
+1169 .
+116A .
+116B .
+116C .
+116D .
+116E .
+116F .
+1170 .
+1171 .
+1172 .
+1173 .
+1174 .
+1175 .
+1176 .
+1177 .
+1178 .
+1179 .
+117A .
+117B .
+117C .
+117D .
+117E .
+117F .
+1180 .
+1181 .
+1182 .
+1183 .
+1184 .
+1185 .
+1186 .
+1187 .
+1188 .
+1189 .
+118A .
+118B .
+118C .
+118D .
+118E .
+118F .
+1190 .
+1191 .
+1192 .
+1193 .
+1194 .
+1195 .
+1196 .
+1197 .
+1198 .
+1199 .
+119A .
+119B .
+119C .
+119D .
+119E .
+119F .
+11A0 .
+11A1 .
+11A2 .
+11A3 .
+11A4 .
+11A5 .
+11A6 .
+11A7 .
+11A8 .
+11A9 .
+11AA .
+11AB .
+11AC .
+11AD .
+11AE .
+11AF .
+11B0 .
+11B1 .
+11B2 .
+11B3 .
+11B4 .
+11B5 .
+11B6 .
+11B7 .
+11B8 .
+11B9 .
+11BA .
+11BB .
+11BC .
+11BD .
+11BE .
+11BF .
+11C0 .
+11C1 .
+11C2 .
+11C3 .
+11C4 .
+11C5 .
+11C6 .
+11C7 .
+11C8 .
+11C9 .
+11CA .
+11CB .
+11CC .
+11CD .
+11CE .
+11CF .
+11D0 .
+11D1 .
+11D2 .
+11D3 .
+11D4 .
+11D5 .
+11D6 .
+11D7 .
+11D8 .
+11D9 .
+11DA .
+11DB .
+11DC .
+11DD .
+11DE .
+11DF .
+11E0 .
+11E1 .
+11E2 .
+11E3 .
+11E4 .
+11E5 .
+11E6 .
+11E7 .
+11E8 .
+11E9 .
+11EA .
+11EB .
+11EC .
+11ED .
+11EE .
+11EF .
+11F0 .
+11F1 .
+11F2 .
+11F3 .
+11F4 .
+11F5 .
+11F6 .
+11F7 .
+11F8 .
+11F9 .
+11FA .
+11FB .
+11FC .
+11FD .
+11FE .
+11FF .
+1200 .
+1201 .
+1202 .
+1203 .
+1204 .
+1205 .
+1206 .
+1207 .
+1208 .
+1209 .
+120A .
+120B .
+120C .
+120D .
+120E .
+120F .
+1210 .
+1211 .
+1212 .
+1213 .
+1214 .
+1215 .
+1216 .
+1217 .
+1218 .
+1219 .
+121A .
+121B .
+121C .
+121D .
+121E .
+121F .
+1220 .
+1221 .
+1222 .
+1223 .
+1224 .
+1225 .
+1226 .
+1227 .
+1228 .
+1229 .
+122A .
+122B .
+122C .
+122D .
+122E .
+122F .
+1230 .
+1231 .
+1232 .
+1233 .
+1234 .
+1235 .
+1236 .
+1237 .
+1238 .
+1239 .
+123A .
+123B .
+123C .
+123D .
+123E .
+123F .
+1240 .
+1241 .
+1242 .
+1243 .
+1244 .
+1245 .
+1246 .
+1247 .
+1248 .
+124A .
+124B .
+124C .
+124D .
+1250 .
+1251 .
+1252 .
+1253 .
+1254 .
+1255 .
+1256 .
+1258 .
+125A .
+125B .
+125C .
+125D .
+1260 .
+1261 .
+1262 .
+1263 .
+1264 .
+1265 .
+1266 .
+1267 .
+1268 .
+1269 .
+126A .
+126B .
+126C .
+126D .
+126E .
+126F .
+1270 .
+1271 .
+1272 .
+1273 .
+1274 .
+1275 .
+1276 .
+1277 .
+1278 .
+1279 .
+127A .
+127B .
+127C .
+127D .
+127E .
+127F .
+1280 .
+1281 .
+1282 .
+1283 .
+1284 .
+1285 .
+1286 .
+1287 .
+1288 .
+128A .
+128B .
+128C .
+128D .
+1290 .
+1291 .
+1292 .
+1293 .
+1294 .
+1295 .
+1296 .
+1297 .
+1298 .
+1299 .
+129A .
+129B .
+129C .
+129D .
+129E .
+129F .
+12A0 .
+12A1 .
+12A2 .
+12A3 .
+12A4 .
+12A5 .
+12A6 .
+12A7 .
+12A8 .
+12A9 .
+12AA .
+12AB .
+12AC .
+12AD .
+12AE .
+12AF .
+12B0 .
+12B2 .
+12B3 .
+12B4 .
+12B5 .
+12B8 .
+12B9 .
+12BA .
+12BB .
+12BC .
+12BD .
+12BE .
+12C0 .
+12C2 .
+12C3 .
+12C4 .
+12C5 .
+12C8 .
+12C9 .
+12CA .
+12CB .
+12CC .
+12CD .
+12CE .
+12CF .
+12D0 .
+12D1 .
+12D2 .
+12D3 .
+12D4 .
+12D5 .
+12D6 .
+12D8 .
+12D9 .
+12DA .
+12DB .
+12DC .
+12DD .
+12DE .
+12DF .
+12E0 .
+12E1 .
+12E2 .
+12E3 .
+12E4 .
+12E5 .
+12E6 .
+12E7 .
+12E8 .
+12E9 .
+12EA .
+12EB .
+12EC .
+12ED .
+12EE .
+12EF .
+12F0 .
+12F1 .
+12F2 .
+12F3 .
+12F4 .
+12F5 .
+12F6 .
+12F7 .
+12F8 .
+12F9 .
+12FA .
+12FB .
+12FC .
+12FD .
+12FE .
+12FF .
+1300 .
+1301 .
+1302 .
+1303 .
+1304 .
+1305 .
+1306 .
+1307 .
+1308 .
+1309 .
+130A .
+130B .
+130C .
+130D .
+130E .
+130F .
+1310 .
+1312 .
+1313 .
+1314 .
+1315 .
+1318 .
+1319 .
+131A .
+131B .
+131C .
+131D .
+131E .
+131F .
+1320 .
+1321 .
+1322 .
+1323 .
+1324 .
+1325 .
+1326 .
+1327 .
+1328 .
+1329 .
+132A .
+132B .
+132C .
+132D .
+132E .
+132F .
+1330 .
+1331 .
+1332 .
+1333 .
+1334 .
+1335 .
+1336 .
+1337 .
+1338 .
+1339 .
+133A .
+133B .
+133C .
+133D .
+133E .
+133F .
+1340 .
+1341 .
+1342 .
+1343 .
+1344 .
+1345 .
+1346 .
+1347 .
+1348 .
+1349 .
+134A .
+134B .
+134C .
+134D .
+134E .
+134F .
+1350 .
+1351 .
+1352 .
+1353 .
+1354 .
+1355 .
+1356 .
+1357 .
+1358 .
+1359 .
+135A .
+1380 .
+1381 .
+1382 .
+1383 .
+1384 .
+1385 .
+1386 .
+1387 .
+1388 .
+1389 .
+138A .
+138B .
+138C .
+138D .
+138E .
+138F .
+13A0 .
+13A1 .
+13A2 .
+13A3 .
+13A4 .
+13A5 .
+13A6 .
+13A7 .
+13A8 .
+13A9 .
+13AA .
+13AB .
+13AC .
+13AD .
+13AE .
+13AF .
+13B0 .
+13B1 .
+13B2 .
+13B3 .
+13B4 .
+13B5 .
+13B6 .
+13B7 .
+13B8 .
+13B9 .
+13BA .
+13BB .
+13BC .
+13BD .
+13BE .
+13BF .
+13C0 .
+13C1 .
+13C2 .
+13C3 .
+13C4 .
+13C5 .
+13C6 .
+13C7 .
+13C8 .
+13C9 .
+13CA .
+13CB .
+13CC .
+13CD .
+13CE .
+13CF .
+13D0 .
+13D1 .
+13D2 .
+13D3 .
+13D4 .
+13D5 .
+13D6 .
+13D7 .
+13D8 .
+13D9 .
+13DA .
+13DB .
+13DC .
+13DD .
+13DE .
+13DF .
+13E0 .
+13E1 .
+13E2 .
+13E3 .
+13E4 .
+13E5 .
+13E6 .
+13E7 .
+13E8 .
+13E9 .
+13EA .
+13EB .
+13EC .
+13ED .
+13EE .
+13EF .
+13F0 .
+13F1 .
+13F2 .
+13F3 .
+13F4 .
+1401 .
+1402 .
+1403 .
+1404 .
+1405 .
+1406 .
+1407 .
+1408 .
+1409 .
+140A .
+140B .
+140C .
+140D .
+140E .
+140F .
+1410 .
+1411 .
+1412 .
+1413 .
+1414 .
+1415 .
+1416 .
+1417 .
+1418 .
+1419 .
+141A .
+141B .
+141C .
+141D .
+141E .
+141F .
+1420 .
+1421 .
+1422 .
+1423 .
+1424 .
+1425 .
+1426 .
+1427 .
+1428 .
+1429 .
+142A .
+142B .
+142C .
+142D .
+142E .
+142F .
+1430 .
+1431 .
+1432 .
+1433 .
+1434 .
+1435 .
+1436 .
+1437 .
+1438 .
+1439 .
+143A .
+143B .
+143C .
+143D .
+143E .
+143F .
+1440 .
+1441 .
+1442 .
+1443 .
+1444 .
+1445 .
+1446 .
+1447 .
+1448 .
+1449 .
+144A .
+144B .
+144C .
+144D .
+144E .
+144F .
+1450 .
+1451 .
+1452 .
+1453 .
+1454 .
+1455 .
+1456 .
+1457 .
+1458 .
+1459 .
+145A .
+145B .
+145C .
+145D .
+145E .
+145F .
+1460 .
+1461 .
+1462 .
+1463 .
+1464 .
+1465 .
+1466 .
+1467 .
+1468 .
+1469 .
+146A .
+146B .
+146C .
+146D .
+146E .
+146F .
+1470 .
+1471 .
+1472 .
+1473 .
+1474 .
+1475 .
+1476 .
+1477 .
+1478 .
+1479 .
+147A .
+147B .
+147C .
+147D .
+147E .
+147F .
+1480 .
+1481 .
+1482 .
+1483 .
+1484 .
+1485 .
+1486 .
+1487 .
+1488 .
+1489 .
+148A .
+148B .
+148C .
+148D .
+148E .
+148F .
+1490 .
+1491 .
+1492 .
+1493 .
+1494 .
+1495 .
+1496 .
+1497 .
+1498 .
+1499 .
+149A .
+149B .
+149C .
+149D .
+149E .
+149F .
+14A0 .
+14A1 .
+14A2 .
+14A3 .
+14A4 .
+14A5 .
+14A6 .
+14A7 .
+14A8 .
+14A9 .
+14AA .
+14AB .
+14AC .
+14AD .
+14AE .
+14AF .
+14B0 .
+14B1 .
+14B2 .
+14B3 .
+14B4 .
+14B5 .
+14B6 .
+14B7 .
+14B8 .
+14B9 .
+14BA .
+14BB .
+14BC .
+14BD .
+14BE .
+14BF .
+14C0 .
+14C1 .
+14C2 .
+14C3 .
+14C4 .
+14C5 .
+14C6 .
+14C7 .
+14C8 .
+14C9 .
+14CA .
+14CB .
+14CC .
+14CD .
+14CE .
+14CF .
+14D0 .
+14D1 .
+14D2 .
+14D3 .
+14D4 .
+14D5 .
+14D6 .
+14D7 .
+14D8 .
+14D9 .
+14DA .
+14DB .
+14DC .
+14DD .
+14DE .
+14DF .
+14E0 .
+14E1 .
+14E2 .
+14E3 .
+14E4 .
+14E5 .
+14E6 .
+14E7 .
+14E8 .
+14E9 .
+14EA .
+14EB .
+14EC .
+14ED .
+14EE .
+14EF .
+14F0 .
+14F1 .
+14F2 .
+14F3 .
+14F4 .
+14F5 .
+14F6 .
+14F7 .
+14F8 .
+14F9 .
+14FA .
+14FB .
+14FC .
+14FD .
+14FE .
+14FF .
+1500 .
+1501 .
+1502 .
+1503 .
+1504 .
+1505 .
+1506 .
+1507 .
+1508 .
+1509 .
+150A .
+150B .
+150C .
+150D .
+150E .
+150F .
+1510 .
+1511 .
+1512 .
+1513 .
+1514 .
+1515 .
+1516 .
+1517 .
+1518 .
+1519 .
+151A .
+151B .
+151C .
+151D .
+151E .
+151F .
+1520 .
+1521 .
+1522 .
+1523 .
+1524 .
+1525 .
+1526 .
+1527 .
+1528 .
+1529 .
+152A .
+152B .
+152C .
+152D .
+152E .
+152F .
+1530 .
+1531 .
+1532 .
+1533 .
+1534 .
+1535 .
+1536 .
+1537 .
+1538 .
+1539 .
+153A .
+153B .
+153C .
+153D .
+153E .
+153F .
+1540 .
+1541 .
+1542 .
+1543 .
+1544 .
+1545 .
+1546 .
+1547 .
+1548 .
+1549 .
+154A .
+154B .
+154C .
+154D .
+154E .
+154F .
+1550 .
+1551 .
+1552 .
+1553 .
+1554 .
+1555 .
+1556 .
+1557 .
+1558 .
+1559 .
+155A .
+155B .
+155C .
+155D .
+155E .
+155F .
+1560 .
+1561 .
+1562 .
+1563 .
+1564 .
+1565 .
+1566 .
+1567 .
+1568 .
+1569 .
+156A .
+156B .
+156C .
+156D .
+156E .
+156F .
+1570 .
+1571 .
+1572 .
+1573 .
+1574 .
+1575 .
+1576 .
+1577 .
+1578 .
+1579 .
+157A .
+157B .
+157C .
+157D .
+157E .
+157F .
+1580 .
+1581 .
+1582 .
+1583 .
+1584 .
+1585 .
+1586 .
+1587 .
+1588 .
+1589 .
+158A .
+158B .
+158C .
+158D .
+158E .
+158F .
+1590 .
+1591 .
+1592 .
+1593 .
+1594 .
+1595 .
+1596 .
+1597 .
+1598 .
+1599 .
+159A .
+159B .
+159C .
+159D .
+159E .
+159F .
+15A0 .
+15A1 .
+15A2 .
+15A3 .
+15A4 .
+15A5 .
+15A6 .
+15A7 .
+15A8 .
+15A9 .
+15AA .
+15AB .
+15AC .
+15AD .
+15AE .
+15AF .
+15B0 .
+15B1 .
+15B2 .
+15B3 .
+15B4 .
+15B5 .
+15B6 .
+15B7 .
+15B8 .
+15B9 .
+15BA .
+15BB .
+15BC .
+15BD .
+15BE .
+15BF .
+15C0 .
+15C1 .
+15C2 .
+15C3 .
+15C4 .
+15C5 .
+15C6 .
+15C7 .
+15C8 .
+15C9 .
+15CA .
+15CB .
+15CC .
+15CD .
+15CE .
+15CF .
+15D0 .
+15D1 .
+15D2 .
+15D3 .
+15D4 .
+15D5 .
+15D6 .
+15D7 .
+15D8 .
+15D9 .
+15DA .
+15DB .
+15DC .
+15DD .
+15DE .
+15DF .
+15E0 .
+15E1 .
+15E2 .
+15E3 .
+15E4 .
+15E5 .
+15E6 .
+15E7 .
+15E8 .
+15E9 .
+15EA .
+15EB .
+15EC .
+15ED .
+15EE .
+15EF .
+15F0 .
+15F1 .
+15F2 .
+15F3 .
+15F4 .
+15F5 .
+15F6 .
+15F7 .
+15F8 .
+15F9 .
+15FA .
+15FB .
+15FC .
+15FD .
+15FE .
+15FF .
+1600 .
+1601 .
+1602 .
+1603 .
+1604 .
+1605 .
+1606 .
+1607 .
+1608 .
+1609 .
+160A .
+160B .
+160C .
+160D .
+160E .
+160F .
+1610 .
+1611 .
+1612 .
+1613 .
+1614 .
+1615 .
+1616 .
+1617 .
+1618 .
+1619 .
+161A .
+161B .
+161C .
+161D .
+161E .
+161F .
+1620 .
+1621 .
+1622 .
+1623 .
+1624 .
+1625 .
+1626 .
+1627 .
+1628 .
+1629 .
+162A .
+162B .
+162C .
+162D .
+162E .
+162F .
+1630 .
+1631 .
+1632 .
+1633 .
+1634 .
+1635 .
+1636 .
+1637 .
+1638 .
+1639 .
+163A .
+163B .
+163C .
+163D .
+163E .
+163F .
+1640 .
+1641 .
+1642 .
+1643 .
+1644 .
+1645 .
+1646 .
+1647 .
+1648 .
+1649 .
+164A .
+164B .
+164C .
+164D .
+164E .
+164F .
+1650 .
+1651 .
+1652 .
+1653 .
+1654 .
+1655 .
+1656 .
+1657 .
+1658 .
+1659 .
+165A .
+165B .
+165C .
+165D .
+165E .
+165F .
+1660 .
+1661 .
+1662 .
+1663 .
+1664 .
+1665 .
+1666 .
+1667 .
+1668 .
+1669 .
+166A .
+166B .
+166C .
+166F .
+1670 .
+1671 .
+1672 .
+1673 .
+1674 .
+1675 .
+1676 .
+1677 .
+1678 .
+1679 .
+167A .
+167B .
+167C .
+167D .
+167E .
+167F .
+1681 .
+1682 .
+1683 .
+1684 .
+1685 .
+1686 .
+1687 .
+1688 .
+1689 .
+168A .
+168B .
+168C .
+168D .
+168E .
+168F .
+1690 .
+1691 .
+1692 .
+1693 .
+1694 .
+1695 .
+1696 .
+1697 .
+1698 .
+1699 .
+169A .
+16A0 .
+16A1 .
+16A2 .
+16A3 .
+16A4 .
+16A5 .
+16A6 .
+16A7 .
+16A8 .
+16A9 .
+16AA .
+16AB .
+16AC .
+16AD .
+16AE .
+16AF .
+16B0 .
+16B1 .
+16B2 .
+16B3 .
+16B4 .
+16B5 .
+16B6 .
+16B7 .
+16B8 .
+16B9 .
+16BA .
+16BB .
+16BC .
+16BD .
+16BE .
+16BF .
+16C0 .
+16C1 .
+16C2 .
+16C3 .
+16C4 .
+16C5 .
+16C6 .
+16C7 .
+16C8 .
+16C9 .
+16CA .
+16CB .
+16CC .
+16CD .
+16CE .
+16CF .
+16D0 .
+16D1 .
+16D2 .
+16D3 .
+16D4 .
+16D5 .
+16D6 .
+16D7 .
+16D8 .
+16D9 .
+16DA .
+16DB .
+16DC .
+16DD .
+16DE .
+16DF .
+16E0 .
+16E1 .
+16E2 .
+16E3 .
+16E4 .
+16E5 .
+16E6 .
+16E7 .
+16E8 .
+16E9 .
+16EA .
+1700 .
+1701 .
+1702 .
+1703 .
+1704 .
+1705 .
+1706 .
+1707 .
+1708 .
+1709 .
+170A .
+170B .
+170C .
+170E .
+170F .
+1710 .
+1711 .
+1720 .
+1721 .
+1722 .
+1723 .
+1724 .
+1725 .
+1726 .
+1727 .
+1728 .
+1729 .
+172A .
+172B .
+172C .
+172D .
+172E .
+172F .
+1730 .
+1731 .
+1740 .
+1741 .
+1742 .
+1743 .
+1744 .
+1745 .
+1746 .
+1747 .
+1748 .
+1749 .
+174A .
+174B .
+174C .
+174D .
+174E .
+174F .
+1750 .
+1751 .
+1760 .
+1761 .
+1762 .
+1763 .
+1764 .
+1765 .
+1766 .
+1767 .
+1768 .
+1769 .
+176A .
+176B .
+176C .
+176E .
+176F .
+1770 .
+1780 .
+1781 .
+1782 .
+1783 .
+1784 .
+1785 .
+1786 .
+1787 .
+1788 .
+1789 .
+178A .
+178B .
+178C .
+178D .
+178E .
+178F .
+1790 .
+1791 .
+1792 .
+1793 .
+1794 .
+1795 .
+1796 .
+1797 .
+1798 .
+1799 .
+179A .
+179B .
+179C .
+179D .
+179E .
+179F .
+17A0 .
+17A1 .
+17A2 .
+17A3 .
+17A4 .
+17A5 .
+17A6 .
+17A7 .
+17A8 .
+17A9 .
+17AA .
+17AB .
+17AC .
+17AD .
+17AE .
+17AF .
+17B0 .
+17B1 .
+17B2 .
+17B3 .
+17D7 .
+17DC .
+1820 .
+1821 .
+1822 .
+1823 .
+1824 .
+1825 .
+1826 .
+1827 .
+1828 .
+1829 .
+182A .
+182B .
+182C .
+182D .
+182E .
+182F .
+1830 .
+1831 .
+1832 .
+1833 .
+1834 .
+1835 .
+1836 .
+1837 .
+1838 .
+1839 .
+183A .
+183B .
+183C .
+183D .
+183E .
+183F .
+1840 .
+1841 .
+1842 .
+1843 .
+1844 .
+1845 .
+1846 .
+1847 .
+1848 .
+1849 .
+184A .
+184B .
+184C .
+184D .
+184E .
+184F .
+1850 .
+1851 .
+1852 .
+1853 .
+1854 .
+1855 .
+1856 .
+1857 .
+1858 .
+1859 .
+185A .
+185B .
+185C .
+185D .
+185E .
+185F .
+1860 .
+1861 .
+1862 .
+1863 .
+1864 .
+1865 .
+1866 .
+1867 .
+1868 .
+1869 .
+186A .
+186B .
+186C .
+186D .
+186E .
+186F .
+1870 .
+1871 .
+1872 .
+1873 .
+1874 .
+1875 .
+1876 .
+1877 .
+1880 .
+1881 .
+1882 .
+1883 .
+1884 .
+1885 .
+1886 .
+1887 .
+1888 .
+1889 .
+188A .
+188B .
+188C .
+188D .
+188E .
+188F .
+1890 .
+1891 .
+1892 .
+1893 .
+1894 .
+1895 .
+1896 .
+1897 .
+1898 .
+1899 .
+189A .
+189B .
+189C .
+189D .
+189E .
+189F .
+18A0 .
+18A1 .
+18A2 .
+18A3 .
+18A4 .
+18A5 .
+18A6 .
+18A7 .
+18A8 .
+18AA .
+18B0 .
+18B1 .
+18B2 .
+18B3 .
+18B4 .
+18B5 .
+18B6 .
+18B7 .
+18B8 .
+18B9 .
+18BA .
+18BB .
+18BC .
+18BD .
+18BE .
+18BF .
+18C0 .
+18C1 .
+18C2 .
+18C3 .
+18C4 .
+18C5 .
+18C6 .
+18C7 .
+18C8 .
+18C9 .
+18CA .
+18CB .
+18CC .
+18CD .
+18CE .
+18CF .
+18D0 .
+18D1 .
+18D2 .
+18D3 .
+18D4 .
+18D5 .
+18D6 .
+18D7 .
+18D8 .
+18D9 .
+18DA .
+18DB .
+18DC .
+18DD .
+18DE .
+18DF .
+18E0 .
+18E1 .
+18E2 .
+18E3 .
+18E4 .
+18E5 .
+18E6 .
+18E7 .
+18E8 .
+18E9 .
+18EA .
+18EB .
+18EC .
+18ED .
+18EE .
+18EF .
+18F0 .
+18F1 .
+18F2 .
+18F3 .
+18F4 .
+18F5 .
+1900 .
+1901 .
+1902 .
+1903 .
+1904 .
+1905 .
+1906 .
+1907 .
+1908 .
+1909 .
+190A .
+190B .
+190C .
+190D .
+190E .
+190F .
+1910 .
+1911 .
+1912 .
+1913 .
+1914 .
+1915 .
+1916 .
+1917 .
+1918 .
+1919 .
+191A .
+191B .
+191C .
+1950 .
+1951 .
+1952 .
+1953 .
+1954 .
+1955 .
+1956 .
+1957 .
+1958 .
+1959 .
+195A .
+195B .
+195C .
+195D .
+195E .
+195F .
+1960 .
+1961 .
+1962 .
+1963 .
+1964 .
+1965 .
+1966 .
+1967 .
+1968 .
+1969 .
+196A .
+196B .
+196C .
+196D .
+1970 .
+1971 .
+1972 .
+1973 .
+1974 .
+1980 .
+1981 .
+1982 .
+1983 .
+1984 .
+1985 .
+1986 .
+1987 .
+1988 .
+1989 .
+198A .
+198B .
+198C .
+198D .
+198E .
+198F .
+1990 .
+1991 .
+1992 .
+1993 .
+1994 .
+1995 .
+1996 .
+1997 .
+1998 .
+1999 .
+199A .
+199B .
+199C .
+199D .
+199E .
+199F .
+19A0 .
+19A1 .
+19A2 .
+19A3 .
+19A4 .
+19A5 .
+19A6 .
+19A7 .
+19A8 .
+19A9 .
+19AA .
+19AB .
+19C1 .
+19C2 .
+19C3 .
+19C4 .
+19C5 .
+19C6 .
+19C7 .
+1A00 .
+1A01 .
+1A02 .
+1A03 .
+1A04 .
+1A05 .
+1A06 .
+1A07 .
+1A08 .
+1A09 .
+1A0A .
+1A0B .
+1A0C .
+1A0D .
+1A0E .
+1A0F .
+1A10 .
+1A11 .
+1A12 .
+1A13 .
+1A14 .
+1A15 .
+1A16 .
+1A20 .
+1A21 .
+1A22 .
+1A23 .
+1A24 .
+1A25 .
+1A26 .
+1A27 .
+1A28 .
+1A29 .
+1A2A .
+1A2B .
+1A2C .
+1A2D .
+1A2E .
+1A2F .
+1A30 .
+1A31 .
+1A32 .
+1A33 .
+1A34 .
+1A35 .
+1A36 .
+1A37 .
+1A38 .
+1A39 .
+1A3A .
+1A3B .
+1A3C .
+1A3D .
+1A3E .
+1A3F .
+1A40 .
+1A41 .
+1A42 .
+1A43 .
+1A44 .
+1A45 .
+1A46 .
+1A47 .
+1A48 .
+1A49 .
+1A4A .
+1A4B .
+1A4C .
+1A4D .
+1A4E .
+1A4F .
+1A50 .
+1A51 .
+1A52 .
+1A53 .
+1A54 .
+1AA7 .
+1B05 .
+1B06 .
+1B07 .
+1B08 .
+1B09 .
+1B0A .
+1B0B .
+1B0C .
+1B0D .
+1B0E .
+1B0F .
+1B10 .
+1B11 .
+1B12 .
+1B13 .
+1B14 .
+1B15 .
+1B16 .
+1B17 .
+1B18 .
+1B19 .
+1B1A .
+1B1B .
+1B1C .
+1B1D .
+1B1E .
+1B1F .
+1B20 .
+1B21 .
+1B22 .
+1B23 .
+1B24 .
+1B25 .
+1B26 .
+1B27 .
+1B28 .
+1B29 .
+1B2A .
+1B2B .
+1B2C .
+1B2D .
+1B2E .
+1B2F .
+1B30 .
+1B31 .
+1B32 .
+1B33 .
+1B45 .
+1B46 .
+1B47 .
+1B48 .
+1B49 .
+1B4A .
+1B4B .
+1B83 .
+1B84 .
+1B85 .
+1B86 .
+1B87 .
+1B88 .
+1B89 .
+1B8A .
+1B8B .
+1B8C .
+1B8D .
+1B8E .
+1B8F .
+1B90 .
+1B91 .
+1B92 .
+1B93 .
+1B94 .
+1B95 .
+1B96 .
+1B97 .
+1B98 .
+1B99 .
+1B9A .
+1B9B .
+1B9C .
+1B9D .
+1B9E .
+1B9F .
+1BA0 .
+1BAE .
+1BAF .
+1BBA .
+1BBB .
+1BBC .
+1BBD .
+1BBE .
+1BBF .
+1BC0 .
+1BC1 .
+1BC2 .
+1BC3 .
+1BC4 .
+1BC5 .
+1BC6 .
+1BC7 .
+1BC8 .
+1BC9 .
+1BCA .
+1BCB .
+1BCC .
+1BCD .
+1BCE .
+1BCF .
+1BD0 .
+1BD1 .
+1BD2 .
+1BD3 .
+1BD4 .
+1BD5 .
+1BD6 .
+1BD7 .
+1BD8 .
+1BD9 .
+1BDA .
+1BDB .
+1BDC .
+1BDD .
+1BDE .
+1BDF .
+1BE0 .
+1BE1 .
+1BE2 .
+1BE3 .
+1BE4 .
+1BE5 .
+1C00 .
+1C01 .
+1C02 .
+1C03 .
+1C04 .
+1C05 .
+1C06 .
+1C07 .
+1C08 .
+1C09 .
+1C0A .
+1C0B .
+1C0C .
+1C0D .
+1C0E .
+1C0F .
+1C10 .
+1C11 .
+1C12 .
+1C13 .
+1C14 .
+1C15 .
+1C16 .
+1C17 .
+1C18 .
+1C19 .
+1C1A .
+1C1B .
+1C1C .
+1C1D .
+1C1E .
+1C1F .
+1C20 .
+1C21 .
+1C22 .
+1C23 .
+1C4D .
+1C4E .
+1C4F .
+1C5A .
+1C5B .
+1C5C .
+1C5D .
+1C5E .
+1C5F .
+1C60 .
+1C61 .
+1C62 .
+1C63 .
+1C64 .
+1C65 .
+1C66 .
+1C67 .
+1C68 .
+1C69 .
+1C6A .
+1C6B .
+1C6C .
+1C6D .
+1C6E .
+1C6F .
+1C70 .
+1C71 .
+1C72 .
+1C73 .
+1C74 .
+1C75 .
+1C76 .
+1C77 .
+1C78 .
+1C79 .
+1C7A .
+1C7B .
+1C7C .
+1C7D .
+1CE9 .
+1CEA .
+1CEB .
+1CEC .
+1CEE .
+1CEF .
+1CF0 .
+1CF1 .
+1CF5 .
+1CF6 .
+1D00 .
+1D01 .
+1D02 .
+1D03 .
+1D04 .
+1D05 .
+1D06 .
+1D07 .
+1D08 .
+1D09 .
+1D0A .
+1D0B .
+1D0C .
+1D0D .
+1D0E .
+1D0F .
+1D10 .
+1D11 .
+1D12 .
+1D13 .
+1D14 .
+1D15 .
+1D16 .
+1D17 .
+1D18 .
+1D19 .
+1D1A .
+1D1B .
+1D1C .
+1D1D .
+1D1E .
+1D1F .
+1D20 .
+1D21 .
+1D22 .
+1D23 .
+1D24 .
+1D25 .
+1D26 .
+1D27 .
+1D28 .
+1D29 .
+1D2A .
+1D2B .
+1D2C .
+1D2D .
+1D2E .
+1D2F .
+1D30 .
+1D31 .
+1D32 .
+1D33 .
+1D34 .
+1D35 .
+1D36 .
+1D37 .
+1D38 .
+1D39 .
+1D3A .
+1D3B .
+1D3C .
+1D3D .
+1D3E .
+1D3F .
+1D40 .
+1D41 .
+1D42 .
+1D43 .
+1D44 .
+1D45 .
+1D46 .
+1D47 .
+1D48 .
+1D49 .
+1D4A .
+1D4B .
+1D4C .
+1D4D .
+1D4E .
+1D4F .
+1D50 .
+1D51 .
+1D52 .
+1D53 .
+1D54 .
+1D55 .
+1D56 .
+1D57 .
+1D58 .
+1D59 .
+1D5A .
+1D5B .
+1D5C .
+1D5D .
+1D5E .
+1D5F .
+1D60 .
+1D61 .
+1D62 .
+1D63 .
+1D64 .
+1D65 .
+1D66 .
+1D67 .
+1D68 .
+1D69 .
+1D6A .
+1D6B .
+1D6C .
+1D6D .
+1D6E .
+1D6F .
+1D70 .
+1D71 .
+1D72 .
+1D73 .
+1D74 .
+1D75 .
+1D76 .
+1D77 .
+1D78 .
+1D79 A77D
+1D7A .
+1D7B .
+1D7C .
+1D7D 2C63
+1D7E .
+1D7F .
+1D80 .
+1D81 .
+1D82 .
+1D83 .
+1D84 .
+1D85 .
+1D86 .
+1D87 .
+1D88 .
+1D89 .
+1D8A .
+1D8B .
+1D8C .
+1D8D .
+1D8E .
+1D8F .
+1D90 .
+1D91 .
+1D92 .
+1D93 .
+1D94 .
+1D95 .
+1D96 .
+1D97 .
+1D98 .
+1D99 .
+1D9A .
+1D9B .
+1D9C .
+1D9D .
+1D9E .
+1D9F .
+1DA0 .
+1DA1 .
+1DA2 .
+1DA3 .
+1DA4 .
+1DA5 .
+1DA6 .
+1DA7 .
+1DA8 .
+1DA9 .
+1DAA .
+1DAB .
+1DAC .
+1DAD .
+1DAE .
+1DAF .
+1DB0 .
+1DB1 .
+1DB2 .
+1DB3 .
+1DB4 .
+1DB5 .
+1DB6 .
+1DB7 .
+1DB8 .
+1DB9 .
+1DBA .
+1DBB .
+1DBC .
+1DBD .
+1DBE .
+1DBF .
+1E01 1E00
+1E03 1E02
+1E05 1E04
+1E07 1E06
+1E09 1E08
+1E0B 1E0A
+1E0D 1E0C
+1E0F 1E0E
+1E11 1E10
+1E13 1E12
+1E15 1E14
+1E17 1E16
+1E19 1E18
+1E1B 1E1A
+1E1D 1E1C
+1E1F 1E1E
+1E21 1E20
+1E23 1E22
+1E25 1E24
+1E27 1E26
+1E29 1E28
+1E2B 1E2A
+1E2D 1E2C
+1E2F 1E2E
+1E31 1E30
+1E33 1E32
+1E35 1E34
+1E37 1E36
+1E39 1E38
+1E3B 1E3A
+1E3D 1E3C
+1E3F 1E3E
+1E41 1E40
+1E43 1E42
+1E45 1E44
+1E47 1E46
+1E49 1E48
+1E4B 1E4A
+1E4D 1E4C
+1E4F 1E4E
+1E51 1E50
+1E53 1E52
+1E55 1E54
+1E57 1E56
+1E59 1E58
+1E5B 1E5A
+1E5D 1E5C
+1E5F 1E5E
+1E61 1E60
+1E63 1E62
+1E65 1E64
+1E67 1E66
+1E69 1E68
+1E6B 1E6A
+1E6D 1E6C
+1E6F 1E6E
+1E71 1E70
+1E73 1E72
+1E75 1E74
+1E77 1E76
+1E79 1E78
+1E7B 1E7A
+1E7D 1E7C
+1E7F 1E7E
+1E81 1E80
+1E83 1E82
+1E85 1E84
+1E87 1E86
+1E89 1E88
+1E8B 1E8A
+1E8D 1E8C
+1E8F 1E8E
+1E91 1E90
+1E93 1E92
+1E95 1E94
+1E96 .
+1E97 .
+1E98 .
+1E99 .
+1E9A .
+1E9C .
+1E9D .
+1E9F .
+1EA1 1EA0
+1EA3 1EA2
+1EA5 1EA4
+1EA7 1EA6
+1EA9 1EA8
+1EAB 1EAA
+1EAD 1EAC
+1EAF 1EAE
+1EB1 1EB0
+1EB3 1EB2
+1EB5 1EB4
+1EB7 1EB6
+1EB9 1EB8
+1EBB 1EBA
+1EBD 1EBC
+1EBF 1EBE
+1EC1 1EC0
+1EC3 1EC2
+1EC5 1EC4
+1EC7 1EC6
+1EC9 1EC8
+1ECB 1ECA
+1ECD 1ECC
+1ECF 1ECE
+1ED1 1ED0
+1ED3 1ED2
+1ED5 1ED4
+1ED7 1ED6
+1ED9 1ED8
+1EDB 1EDA
+1EDD 1EDC
+1EDF 1EDE
+1EE1 1EE0
+1EE3 1EE2
+1EE5 1EE4
+1EE7 1EE6
+1EE9 1EE8
+1EEB 1EEA
+1EED 1EEC
+1EEF 1EEE
+1EF1 1EF0
+1EF3 1EF2
+1EF5 1EF4
+1EF7 1EF6
+1EF9 1EF8
+1EFB 1EFA
+1EFD 1EFC
+1EFF 1EFE
+1F00 1F08
+1F01 1F09
+1F02 1F0A
+1F03 1F0B
+1F04 1F0C
+1F05 1F0D
+1F06 1F0E
+1F07 1F0F
+1F10 1F18
+1F11 1F19
+1F12 1F1A
+1F13 1F1B
+1F14 1F1C
+1F15 1F1D
+1F20 1F28
+1F21 1F29
+1F22 1F2A
+1F23 1F2B
+1F24 1F2C
+1F25 1F2D
+1F26 1F2E
+1F27 1F2F
+1F30 1F38
+1F31 1F39
+1F32 1F3A
+1F33 1F3B
+1F34 1F3C
+1F35 1F3D
+1F36 1F3E
+1F37 1F3F
+1F40 1F48
+1F41 1F49
+1F42 1F4A
+1F43 1F4B
+1F44 1F4C
+1F45 1F4D
+1F50 .
+1F51 1F59
+1F52 .
+1F53 1F5B
+1F54 .
+1F55 1F5D
+1F56 .
+1F57 1F5F
+1F60 1F68
+1F61 1F69
+1F62 1F6A
+1F63 1F6B
+1F64 1F6C
+1F65 1F6D
+1F66 1F6E
+1F67 1F6F
+1F70 1FBA
+1F71 1FBB
+1F72 1FC8
+1F73 1FC9
+1F74 1FCA
+1F75 1FCB
+1F76 1FDA
+1F77 1FDB
+1F78 1FF8
+1F79 1FF9
+1F7A 1FEA
+1F7B 1FEB
+1F7C 1FFA
+1F7D 1FFB
+1F80 1F88
+1F81 1F89
+1F82 1F8A
+1F83 1F8B
+1F84 1F8C
+1F85 1F8D
+1F86 1F8E
+1F87 1F8F
+1F90 1F98
+1F91 1F99
+1F92 1F9A
+1F93 1F9B
+1F94 1F9C
+1F95 1F9D
+1F96 1F9E
+1F97 1F9F
+1FA0 1FA8
+1FA1 1FA9
+1FA2 1FAA
+1FA3 1FAB
+1FA4 1FAC
+1FA5 1FAD
+1FA6 1FAE
+1FA7 1FAF
+1FB0 1FB8
+1FB1 1FB9
+1FB2 .
+1FB3 1FBC
+1FB4 .
+1FB6 .
+1FB7 .
+1FC2 .
+1FC3 1FCC
+1FC4 .
+1FC6 .
+1FC7 .
+1FD0 1FD8
+1FD1 1FD9
+1FD2 .
+1FD3 .
+1FD6 .
+1FD7 .
+1FE0 1FE8
+1FE1 1FE9
+1FE2 .
+1FE3 .
+1FE4 .
+1FE5 1FEC
+1FE6 .
+1FE7 .
+1FF2 .
+1FF3 1FFC
+1FF4 .
+1FF6 .
+1FF7 .
+2071 .
+207F .
+2090 .
+2091 .
+2092 .
+2093 .
+2094 .
+2095 .
+2096 .
+2097 .
+2098 .
+2099 .
+209A .
+209B .
+209C .
+2102 .
+2107 .
+210A .
+210B .
+210C .
+210D .
+210E .
+210F .
+2110 .
+2111 .
+2112 .
+2113 .
+2115 .
+2119 .
+211A .
+211B .
+211C .
+211D .
+2124 .
+2128 .
+212C .
+212D .
+212F .
+2130 .
+2131 .
+214E 2132
+2133 .
+2134 .
+2135 .
+2136 .
+2137 .
+2138 .
+2139 .
+213C .
+213D .
+213E .
+213F .
+2145 .
+2146 .
+2147 .
+2148 .
+2149 .
+2184 2183
+2C30 2C00
+2C31 2C01
+2C32 2C02
+2C33 2C03
+2C34 2C04
+2C35 2C05
+2C36 2C06
+2C37 2C07
+2C38 2C08
+2C39 2C09
+2C3A 2C0A
+2C3B 2C0B
+2C3C 2C0C
+2C3D 2C0D
+2C3E 2C0E
+2C3F 2C0F
+2C40 2C10
+2C41 2C11
+2C42 2C12
+2C43 2C13
+2C44 2C14
+2C45 2C15
+2C46 2C16
+2C47 2C17
+2C48 2C18
+2C49 2C19
+2C4A 2C1A
+2C4B 2C1B
+2C4C 2C1C
+2C4D 2C1D
+2C4E 2C1E
+2C4F 2C1F
+2C50 2C20
+2C51 2C21
+2C52 2C22
+2C53 2C23
+2C54 2C24
+2C55 2C25
+2C56 2C26
+2C57 2C27
+2C58 2C28
+2C59 2C29
+2C5A 2C2A
+2C5B 2C2B
+2C5C 2C2C
+2C5D 2C2D
+2C5E 2C2E
+2C61 2C60
+2C68 2C67
+2C6A 2C69
+2C6C 2C6B
+2C71 .
+2C73 2C72
+2C74 .
+2C76 2C75
+2C77 .
+2C78 .
+2C79 .
+2C7A .
+2C7B .
+2C7C .
+2C7D .
+2C81 2C80
+2C83 2C82
+2C85 2C84
+2C87 2C86
+2C89 2C88
+2C8B 2C8A
+2C8D 2C8C
+2C8F 2C8E
+2C91 2C90
+2C93 2C92
+2C95 2C94
+2C97 2C96
+2C99 2C98
+2C9B 2C9A
+2C9D 2C9C
+2C9F 2C9E
+2CA1 2CA0
+2CA3 2CA2
+2CA5 2CA4
+2CA7 2CA6
+2CA9 2CA8
+2CAB 2CAA
+2CAD 2CAC
+2CAF 2CAE
+2CB1 2CB0
+2CB3 2CB2
+2CB5 2CB4
+2CB7 2CB6
+2CB9 2CB8
+2CBB 2CBA
+2CBD 2CBC
+2CBF 2CBE
+2CC1 2CC0
+2CC3 2CC2
+2CC5 2CC4
+2CC7 2CC6
+2CC9 2CC8
+2CCB 2CCA
+2CCD 2CCC
+2CCF 2CCE
+2CD1 2CD0
+2CD3 2CD2
+2CD5 2CD4
+2CD7 2CD6
+2CD9 2CD8
+2CDB 2CDA
+2CDD 2CDC
+2CDF 2CDE
+2CE1 2CE0
+2CE3 2CE2
+2CE4 .
+2CEC 2CEB
+2CEE 2CED
+2CF3 2CF2
+2D30 .
+2D31 .
+2D32 .
+2D33 .
+2D34 .
+2D35 .
+2D36 .
+2D37 .
+2D38 .
+2D39 .
+2D3A .
+2D3B .
+2D3C .
+2D3D .
+2D3E .
+2D3F .
+2D40 .
+2D41 .
+2D42 .
+2D43 .
+2D44 .
+2D45 .
+2D46 .
+2D47 .
+2D48 .
+2D49 .
+2D4A .
+2D4B .
+2D4C .
+2D4D .
+2D4E .
+2D4F .
+2D50 .
+2D51 .
+2D52 .
+2D53 .
+2D54 .
+2D55 .
+2D56 .
+2D57 .
+2D58 .
+2D59 .
+2D5A .
+2D5B .
+2D5C .
+2D5D .
+2D5E .
+2D5F .
+2D60 .
+2D61 .
+2D62 .
+2D63 .
+2D64 .
+2D65 .
+2D66 .
+2D67 .
+2D6F .
+2D80 .
+2D81 .
+2D82 .
+2D83 .
+2D84 .
+2D85 .
+2D86 .
+2D87 .
+2D88 .
+2D89 .
+2D8A .
+2D8B .
+2D8C .
+2D8D .
+2D8E .
+2D8F .
+2D90 .
+2D91 .
+2D92 .
+2D93 .
+2D94 .
+2D95 .
+2D96 .
+2DA0 .
+2DA1 .
+2DA2 .
+2DA3 .
+2DA4 .
+2DA5 .
+2DA6 .
+2DA8 .
+2DA9 .
+2DAA .
+2DAB .
+2DAC .
+2DAD .
+2DAE .
+2DB0 .
+2DB1 .
+2DB2 .
+2DB3 .
+2DB4 .
+2DB5 .
+2DB6 .
+2DB8 .
+2DB9 .
+2DBA .
+2DBB .
+2DBC .
+2DBD .
+2DBE .
+2DC0 .
+2DC1 .
+2DC2 .
+2DC3 .
+2DC4 .
+2DC5 .
+2DC6 .
+2DC8 .
+2DC9 .
+2DCA .
+2DCB .
+2DCC .
+2DCD .
+2DCE .
+2DD0 .
+2DD1 .
+2DD2 .
+2DD3 .
+2DD4 .
+2DD5 .
+2DD6 .
+2DD8 .
+2DD9 .
+2DDA .
+2DDB .
+2DDC .
+2DDD .
+2DDE .
+2E2F .
+3005 .
+3006 .
+3031 .
+3032 .
+3033 .
+3034 .
+3035 .
+303B .
+303C .
+3041 .
+3042 .
+3043 .
+3044 .
+3045 .
+3046 .
+3047 .
+3048 .
+3049 .
+304A .
+304B .
+304C .
+304D .
+304E .
+304F .
+3050 .
+3051 .
+3052 .
+3053 .
+3054 .
+3055 .
+3056 .
+3057 .
+3058 .
+3059 .
+305A .
+305B .
+305C .
+305D .
+305E .
+305F .
+3060 .
+3061 .
+3062 .
+3063 .
+3064 .
+3065 .
+3066 .
+3067 .
+3068 .
+3069 .
+306A .
+306B .
+306C .
+306D .
+306E .
+306F .
+3070 .
+3071 .
+3072 .
+3073 .
+3074 .
+3075 .
+3076 .
+3077 .
+3078 .
+3079 .
+307A .
+307B .
+307C .
+307D .
+307E .
+307F .
+3080 .
+3081 .
+3082 .
+3083 .
+3084 .
+3085 .
+3086 .
+3087 .
+3088 .
+3089 .
+308A .
+308B .
+308C .
+308D .
+308E .
+308F .
+3090 .
+3091 .
+3092 .
+3093 .
+3094 .
+3095 .
+3096 .
+309D .
+309E .
+309F .
+30A1 .
+30A2 .
+30A3 .
+30A4 .
+30A5 .
+30A6 .
+30A7 .
+30A8 .
+30A9 .
+30AA .
+30AB .
+30AC .
+30AD .
+30AE .
+30AF .
+30B0 .
+30B1 .
+30B2 .
+30B3 .
+30B4 .
+30B5 .
+30B6 .
+30B7 .
+30B8 .
+30B9 .
+30BA .
+30BB .
+30BC .
+30BD .
+30BE .
+30BF .
+30C0 .
+30C1 .
+30C2 .
+30C3 .
+30C4 .
+30C5 .
+30C6 .
+30C7 .
+30C8 .
+30C9 .
+30CA .
+30CB .
+30CC .
+30CD .
+30CE .
+30CF .
+30D0 .
+30D1 .
+30D2 .
+30D3 .
+30D4 .
+30D5 .
+30D6 .
+30D7 .
+30D8 .
+30D9 .
+30DA .
+30DB .
+30DC .
+30DD .
+30DE .
+30DF .
+30E0 .
+30E1 .
+30E2 .
+30E3 .
+30E4 .
+30E5 .
+30E6 .
+30E7 .
+30E8 .
+30E9 .
+30EA .
+30EB .
+30EC .
+30ED .
+30EE .
+30EF .
+30F0 .
+30F1 .
+30F2 .
+30F3 .
+30F4 .
+30F5 .
+30F6 .
+30F7 .
+30F8 .
+30F9 .
+30FA .
+30FC .
+30FD .
+30FE .
+30FF .
+3105 .
+3106 .
+3107 .
+3108 .
+3109 .
+310A .
+310B .
+310C .
+310D .
+310E .
+310F .
+3110 .
+3111 .
+3112 .
+3113 .
+3114 .
+3115 .
+3116 .
+3117 .
+3118 .
+3119 .
+311A .
+311B .
+311C .
+311D .
+311E .
+311F .
+3120 .
+3121 .
+3122 .
+3123 .
+3124 .
+3125 .
+3126 .
+3127 .
+3128 .
+3129 .
+312A .
+312B .
+312C .
+312D .
+3131 .
+3132 .
+3133 .
+3134 .
+3135 .
+3136 .
+3137 .
+3138 .
+3139 .
+313A .
+313B .
+313C .
+313D .
+313E .
+313F .
+3140 .
+3141 .
+3142 .
+3143 .
+3144 .
+3145 .
+3146 .
+3147 .
+3148 .
+3149 .
+314A .
+314B .
+314C .
+314D .
+314E .
+314F .
+3150 .
+3151 .
+3152 .
+3153 .
+3154 .
+3155 .
+3156 .
+3157 .
+3158 .
+3159 .
+315A .
+315B .
+315C .
+315D .
+315E .
+315F .
+3160 .
+3161 .
+3162 .
+3163 .
+3164 .
+3165 .
+3166 .
+3167 .
+3168 .
+3169 .
+316A .
+316B .
+316C .
+316D .
+316E .
+316F .
+3170 .
+3171 .
+3172 .
+3173 .
+3174 .
+3175 .
+3176 .
+3177 .
+3178 .
+3179 .
+317A .
+317B .
+317C .
+317D .
+317E .
+317F .
+3180 .
+3181 .
+3182 .
+3183 .
+3184 .
+3185 .
+3186 .
+3187 .
+3188 .
+3189 .
+318A .
+318B .
+318C .
+318D .
+318E .
+31A0 .
+31A1 .
+31A2 .
+31A3 .
+31A4 .
+31A5 .
+31A6 .
+31A7 .
+31A8 .
+31A9 .
+31AA .
+31AB .
+31AC .
+31AD .
+31AE .
+31AF .
+31B0 .
+31B1 .
+31B2 .
+31B3 .
+31B4 .
+31B5 .
+31B6 .
+31B7 .
+31B8 .
+31B9 .
+31BA .
+31F0 .
+31F1 .
+31F2 .
+31F3 .
+31F4 .
+31F5 .
+31F6 .
+31F7 .
+31F8 .
+31F9 .
+31FA .
+31FB .
+31FC .
+31FD .
+31FE .
+31FF .
+A000 .
+A001 .
+A002 .
+A003 .
+A004 .
+A005 .
+A006 .
+A007 .
+A008 .
+A009 .
+A00A .
+A00B .
+A00C .
+A00D .
+A00E .
+A00F .
+A010 .
+A011 .
+A012 .
+A013 .
+A014 .
+A015 .
+A016 .
+A017 .
+A018 .
+A019 .
+A01A .
+A01B .
+A01C .
+A01D .
+A01E .
+A01F .
+A020 .
+A021 .
+A022 .
+A023 .
+A024 .
+A025 .
+A026 .
+A027 .
+A028 .
+A029 .
+A02A .
+A02B .
+A02C .
+A02D .
+A02E .
+A02F .
+A030 .
+A031 .
+A032 .
+A033 .
+A034 .
+A035 .
+A036 .
+A037 .
+A038 .
+A039 .
+A03A .
+A03B .
+A03C .
+A03D .
+A03E .
+A03F .
+A040 .
+A041 .
+A042 .
+A043 .
+A044 .
+A045 .
+A046 .
+A047 .
+A048 .
+A049 .
+A04A .
+A04B .
+A04C .
+A04D .
+A04E .
+A04F .
+A050 .
+A051 .
+A052 .
+A053 .
+A054 .
+A055 .
+A056 .
+A057 .
+A058 .
+A059 .
+A05A .
+A05B .
+A05C .
+A05D .
+A05E .
+A05F .
+A060 .
+A061 .
+A062 .
+A063 .
+A064 .
+A065 .
+A066 .
+A067 .
+A068 .
+A069 .
+A06A .
+A06B .
+A06C .
+A06D .
+A06E .
+A06F .
+A070 .
+A071 .
+A072 .
+A073 .
+A074 .
+A075 .
+A076 .
+A077 .
+A078 .
+A079 .
+A07A .
+A07B .
+A07C .
+A07D .
+A07E .
+A07F .
+A080 .
+A081 .
+A082 .
+A083 .
+A084 .
+A085 .
+A086 .
+A087 .
+A088 .
+A089 .
+A08A .
+A08B .
+A08C .
+A08D .
+A08E .
+A08F .
+A090 .
+A091 .
+A092 .
+A093 .
+A094 .
+A095 .
+A096 .
+A097 .
+A098 .
+A099 .
+A09A .
+A09B .
+A09C .
+A09D .
+A09E .
+A09F .
+A0A0 .
+A0A1 .
+A0A2 .
+A0A3 .
+A0A4 .
+A0A5 .
+A0A6 .
+A0A7 .
+A0A8 .
+A0A9 .
+A0AA .
+A0AB .
+A0AC .
+A0AD .
+A0AE .
+A0AF .
+A0B0 .
+A0B1 .
+A0B2 .
+A0B3 .
+A0B4 .
+A0B5 .
+A0B6 .
+A0B7 .
+A0B8 .
+A0B9 .
+A0BA .
+A0BB .
+A0BC .
+A0BD .
+A0BE .
+A0BF .
+A0C0 .
+A0C1 .
+A0C2 .
+A0C3 .
+A0C4 .
+A0C5 .
+A0C6 .
+A0C7 .
+A0C8 .
+A0C9 .
+A0CA .
+A0CB .
+A0CC .
+A0CD .
+A0CE .
+A0CF .
+A0D0 .
+A0D1 .
+A0D2 .
+A0D3 .
+A0D4 .
+A0D5 .
+A0D6 .
+A0D7 .
+A0D8 .
+A0D9 .
+A0DA .
+A0DB .
+A0DC .
+A0DD .
+A0DE .
+A0DF .
+A0E0 .
+A0E1 .
+A0E2 .
+A0E3 .
+A0E4 .
+A0E5 .
+A0E6 .
+A0E7 .
+A0E8 .
+A0E9 .
+A0EA .
+A0EB .
+A0EC .
+A0ED .
+A0EE .
+A0EF .
+A0F0 .
+A0F1 .
+A0F2 .
+A0F3 .
+A0F4 .
+A0F5 .
+A0F6 .
+A0F7 .
+A0F8 .
+A0F9 .
+A0FA .
+A0FB .
+A0FC .
+A0FD .
+A0FE .
+A0FF .
+A100 .
+A101 .
+A102 .
+A103 .
+A104 .
+A105 .
+A106 .
+A107 .
+A108 .
+A109 .
+A10A .
+A10B .
+A10C .
+A10D .
+A10E .
+A10F .
+A110 .
+A111 .
+A112 .
+A113 .
+A114 .
+A115 .
+A116 .
+A117 .
+A118 .
+A119 .
+A11A .
+A11B .
+A11C .
+A11D .
+A11E .
+A11F .
+A120 .
+A121 .
+A122 .
+A123 .
+A124 .
+A125 .
+A126 .
+A127 .
+A128 .
+A129 .
+A12A .
+A12B .
+A12C .
+A12D .
+A12E .
+A12F .
+A130 .
+A131 .
+A132 .
+A133 .
+A134 .
+A135 .
+A136 .
+A137 .
+A138 .
+A139 .
+A13A .
+A13B .
+A13C .
+A13D .
+A13E .
+A13F .
+A140 .
+A141 .
+A142 .
+A143 .
+A144 .
+A145 .
+A146 .
+A147 .
+A148 .
+A149 .
+A14A .
+A14B .
+A14C .
+A14D .
+A14E .
+A14F .
+A150 .
+A151 .
+A152 .
+A153 .
+A154 .
+A155 .
+A156 .
+A157 .
+A158 .
+A159 .
+A15A .
+A15B .
+A15C .
+A15D .
+A15E .
+A15F .
+A160 .
+A161 .
+A162 .
+A163 .
+A164 .
+A165 .
+A166 .
+A167 .
+A168 .
+A169 .
+A16A .
+A16B .
+A16C .
+A16D .
+A16E .
+A16F .
+A170 .
+A171 .
+A172 .
+A173 .
+A174 .
+A175 .
+A176 .
+A177 .
+A178 .
+A179 .
+A17A .
+A17B .
+A17C .
+A17D .
+A17E .
+A17F .
+A180 .
+A181 .
+A182 .
+A183 .
+A184 .
+A185 .
+A186 .
+A187 .
+A188 .
+A189 .
+A18A .
+A18B .
+A18C .
+A18D .
+A18E .
+A18F .
+A190 .
+A191 .
+A192 .
+A193 .
+A194 .
+A195 .
+A196 .
+A197 .
+A198 .
+A199 .
+A19A .
+A19B .
+A19C .
+A19D .
+A19E .
+A19F .
+A1A0 .
+A1A1 .
+A1A2 .
+A1A3 .
+A1A4 .
+A1A5 .
+A1A6 .
+A1A7 .
+A1A8 .
+A1A9 .
+A1AA .
+A1AB .
+A1AC .
+A1AD .
+A1AE .
+A1AF .
+A1B0 .
+A1B1 .
+A1B2 .
+A1B3 .
+A1B4 .
+A1B5 .
+A1B6 .
+A1B7 .
+A1B8 .
+A1B9 .
+A1BA .
+A1BB .
+A1BC .
+A1BD .
+A1BE .
+A1BF .
+A1C0 .
+A1C1 .
+A1C2 .
+A1C3 .
+A1C4 .
+A1C5 .
+A1C6 .
+A1C7 .
+A1C8 .
+A1C9 .
+A1CA .
+A1CB .
+A1CC .
+A1CD .
+A1CE .
+A1CF .
+A1D0 .
+A1D1 .
+A1D2 .
+A1D3 .
+A1D4 .
+A1D5 .
+A1D6 .
+A1D7 .
+A1D8 .
+A1D9 .
+A1DA .
+A1DB .
+A1DC .
+A1DD .
+A1DE .
+A1DF .
+A1E0 .
+A1E1 .
+A1E2 .
+A1E3 .
+A1E4 .
+A1E5 .
+A1E6 .
+A1E7 .
+A1E8 .
+A1E9 .
+A1EA .
+A1EB .
+A1EC .
+A1ED .
+A1EE .
+A1EF .
+A1F0 .
+A1F1 .
+A1F2 .
+A1F3 .
+A1F4 .
+A1F5 .
+A1F6 .
+A1F7 .
+A1F8 .
+A1F9 .
+A1FA .
+A1FB .
+A1FC .
+A1FD .
+A1FE .
+A1FF .
+A200 .
+A201 .
+A202 .
+A203 .
+A204 .
+A205 .
+A206 .
+A207 .
+A208 .
+A209 .
+A20A .
+A20B .
+A20C .
+A20D .
+A20E .
+A20F .
+A210 .
+A211 .
+A212 .
+A213 .
+A214 .
+A215 .
+A216 .
+A217 .
+A218 .
+A219 .
+A21A .
+A21B .
+A21C .
+A21D .
+A21E .
+A21F .
+A220 .
+A221 .
+A222 .
+A223 .
+A224 .
+A225 .
+A226 .
+A227 .
+A228 .
+A229 .
+A22A .
+A22B .
+A22C .
+A22D .
+A22E .
+A22F .
+A230 .
+A231 .
+A232 .
+A233 .
+A234 .
+A235 .
+A236 .
+A237 .
+A238 .
+A239 .
+A23A .
+A23B .
+A23C .
+A23D .
+A23E .
+A23F .
+A240 .
+A241 .
+A242 .
+A243 .
+A244 .
+A245 .
+A246 .
+A247 .
+A248 .
+A249 .
+A24A .
+A24B .
+A24C .
+A24D .
+A24E .
+A24F .
+A250 .
+A251 .
+A252 .
+A253 .
+A254 .
+A255 .
+A256 .
+A257 .
+A258 .
+A259 .
+A25A .
+A25B .
+A25C .
+A25D .
+A25E .
+A25F .
+A260 .
+A261 .
+A262 .
+A263 .
+A264 .
+A265 .
+A266 .
+A267 .
+A268 .
+A269 .
+A26A .
+A26B .
+A26C .
+A26D .
+A26E .
+A26F .
+A270 .
+A271 .
+A272 .
+A273 .
+A274 .
+A275 .
+A276 .
+A277 .
+A278 .
+A279 .
+A27A .
+A27B .
+A27C .
+A27D .
+A27E .
+A27F .
+A280 .
+A281 .
+A282 .
+A283 .
+A284 .
+A285 .
+A286 .
+A287 .
+A288 .
+A289 .
+A28A .
+A28B .
+A28C .
+A28D .
+A28E .
+A28F .
+A290 .
+A291 .
+A292 .
+A293 .
+A294 .
+A295 .
+A296 .
+A297 .
+A298 .
+A299 .
+A29A .
+A29B .
+A29C .
+A29D .
+A29E .
+A29F .
+A2A0 .
+A2A1 .
+A2A2 .
+A2A3 .
+A2A4 .
+A2A5 .
+A2A6 .
+A2A7 .
+A2A8 .
+A2A9 .
+A2AA .
+A2AB .
+A2AC .
+A2AD .
+A2AE .
+A2AF .
+A2B0 .
+A2B1 .
+A2B2 .
+A2B3 .
+A2B4 .
+A2B5 .
+A2B6 .
+A2B7 .
+A2B8 .
+A2B9 .
+A2BA .
+A2BB .
+A2BC .
+A2BD .
+A2BE .
+A2BF .
+A2C0 .
+A2C1 .
+A2C2 .
+A2C3 .
+A2C4 .
+A2C5 .
+A2C6 .
+A2C7 .
+A2C8 .
+A2C9 .
+A2CA .
+A2CB .
+A2CC .
+A2CD .
+A2CE .
+A2CF .
+A2D0 .
+A2D1 .
+A2D2 .
+A2D3 .
+A2D4 .
+A2D5 .
+A2D6 .
+A2D7 .
+A2D8 .
+A2D9 .
+A2DA .
+A2DB .
+A2DC .
+A2DD .
+A2DE .
+A2DF .
+A2E0 .
+A2E1 .
+A2E2 .
+A2E3 .
+A2E4 .
+A2E5 .
+A2E6 .
+A2E7 .
+A2E8 .
+A2E9 .
+A2EA .
+A2EB .
+A2EC .
+A2ED .
+A2EE .
+A2EF .
+A2F0 .
+A2F1 .
+A2F2 .
+A2F3 .
+A2F4 .
+A2F5 .
+A2F6 .
+A2F7 .
+A2F8 .
+A2F9 .
+A2FA .
+A2FB .
+A2FC .
+A2FD .
+A2FE .
+A2FF .
+A300 .
+A301 .
+A302 .
+A303 .
+A304 .
+A305 .
+A306 .
+A307 .
+A308 .
+A309 .
+A30A .
+A30B .
+A30C .
+A30D .
+A30E .
+A30F .
+A310 .
+A311 .
+A312 .
+A313 .
+A314 .
+A315 .
+A316 .
+A317 .
+A318 .
+A319 .
+A31A .
+A31B .
+A31C .
+A31D .
+A31E .
+A31F .
+A320 .
+A321 .
+A322 .
+A323 .
+A324 .
+A325 .
+A326 .
+A327 .
+A328 .
+A329 .
+A32A .
+A32B .
+A32C .
+A32D .
+A32E .
+A32F .
+A330 .
+A331 .
+A332 .
+A333 .
+A334 .
+A335 .
+A336 .
+A337 .
+A338 .
+A339 .
+A33A .
+A33B .
+A33C .
+A33D .
+A33E .
+A33F .
+A340 .
+A341 .
+A342 .
+A343 .
+A344 .
+A345 .
+A346 .
+A347 .
+A348 .
+A349 .
+A34A .
+A34B .
+A34C .
+A34D .
+A34E .
+A34F .
+A350 .
+A351 .
+A352 .
+A353 .
+A354 .
+A355 .
+A356 .
+A357 .
+A358 .
+A359 .
+A35A .
+A35B .
+A35C .
+A35D .
+A35E .
+A35F .
+A360 .
+A361 .
+A362 .
+A363 .
+A364 .
+A365 .
+A366 .
+A367 .
+A368 .
+A369 .
+A36A .
+A36B .
+A36C .
+A36D .
+A36E .
+A36F .
+A370 .
+A371 .
+A372 .
+A373 .
+A374 .
+A375 .
+A376 .
+A377 .
+A378 .
+A379 .
+A37A .
+A37B .
+A37C .
+A37D .
+A37E .
+A37F .
+A380 .
+A381 .
+A382 .
+A383 .
+A384 .
+A385 .
+A386 .
+A387 .
+A388 .
+A389 .
+A38A .
+A38B .
+A38C .
+A38D .
+A38E .
+A38F .
+A390 .
+A391 .
+A392 .
+A393 .
+A394 .
+A395 .
+A396 .
+A397 .
+A398 .
+A399 .
+A39A .
+A39B .
+A39C .
+A39D .
+A39E .
+A39F .
+A3A0 .
+A3A1 .
+A3A2 .
+A3A3 .
+A3A4 .
+A3A5 .
+A3A6 .
+A3A7 .
+A3A8 .
+A3A9 .
+A3AA .
+A3AB .
+A3AC .
+A3AD .
+A3AE .
+A3AF .
+A3B0 .
+A3B1 .
+A3B2 .
+A3B3 .
+A3B4 .
+A3B5 .
+A3B6 .
+A3B7 .
+A3B8 .
+A3B9 .
+A3BA .
+A3BB .
+A3BC .
+A3BD .
+A3BE .
+A3BF .
+A3C0 .
+A3C1 .
+A3C2 .
+A3C3 .
+A3C4 .
+A3C5 .
+A3C6 .
+A3C7 .
+A3C8 .
+A3C9 .
+A3CA .
+A3CB .
+A3CC .
+A3CD .
+A3CE .
+A3CF .
+A3D0 .
+A3D1 .
+A3D2 .
+A3D3 .
+A3D4 .
+A3D5 .
+A3D6 .
+A3D7 .
+A3D8 .
+A3D9 .
+A3DA .
+A3DB .
+A3DC .
+A3DD .
+A3DE .
+A3DF .
+A3E0 .
+A3E1 .
+A3E2 .
+A3E3 .
+A3E4 .
+A3E5 .
+A3E6 .
+A3E7 .
+A3E8 .
+A3E9 .
+A3EA .
+A3EB .
+A3EC .
+A3ED .
+A3EE .
+A3EF .
+A3F0 .
+A3F1 .
+A3F2 .
+A3F3 .
+A3F4 .
+A3F5 .
+A3F6 .
+A3F7 .
+A3F8 .
+A3F9 .
+A3FA .
+A3FB .
+A3FC .
+A3FD .
+A3FE .
+A3FF .
+A400 .
+A401 .
+A402 .
+A403 .
+A404 .
+A405 .
+A406 .
+A407 .
+A408 .
+A409 .
+A40A .
+A40B .
+A40C .
+A40D .
+A40E .
+A40F .
+A410 .
+A411 .
+A412 .
+A413 .
+A414 .
+A415 .
+A416 .
+A417 .
+A418 .
+A419 .
+A41A .
+A41B .
+A41C .
+A41D .
+A41E .
+A41F .
+A420 .
+A421 .
+A422 .
+A423 .
+A424 .
+A425 .
+A426 .
+A427 .
+A428 .
+A429 .
+A42A .
+A42B .
+A42C .
+A42D .
+A42E .
+A42F .
+A430 .
+A431 .
+A432 .
+A433 .
+A434 .
+A435 .
+A436 .
+A437 .
+A438 .
+A439 .
+A43A .
+A43B .
+A43C .
+A43D .
+A43E .
+A43F .
+A440 .
+A441 .
+A442 .
+A443 .
+A444 .
+A445 .
+A446 .
+A447 .
+A448 .
+A449 .
+A44A .
+A44B .
+A44C .
+A44D .
+A44E .
+A44F .
+A450 .
+A451 .
+A452 .
+A453 .
+A454 .
+A455 .
+A456 .
+A457 .
+A458 .
+A459 .
+A45A .
+A45B .
+A45C .
+A45D .
+A45E .
+A45F .
+A460 .
+A461 .
+A462 .
+A463 .
+A464 .
+A465 .
+A466 .
+A467 .
+A468 .
+A469 .
+A46A .
+A46B .
+A46C .
+A46D .
+A46E .
+A46F .
+A470 .
+A471 .
+A472 .
+A473 .
+A474 .
+A475 .
+A476 .
+A477 .
+A478 .
+A479 .
+A47A .
+A47B .
+A47C .
+A47D .
+A47E .
+A47F .
+A480 .
+A481 .
+A482 .
+A483 .
+A484 .
+A485 .
+A486 .
+A487 .
+A488 .
+A489 .
+A48A .
+A48B .
+A48C .
+A4D0 .
+A4D1 .
+A4D2 .
+A4D3 .
+A4D4 .
+A4D5 .
+A4D6 .
+A4D7 .
+A4D8 .
+A4D9 .
+A4DA .
+A4DB .
+A4DC .
+A4DD .
+A4DE .
+A4DF .
+A4E0 .
+A4E1 .
+A4E2 .
+A4E3 .
+A4E4 .
+A4E5 .
+A4E6 .
+A4E7 .
+A4E8 .
+A4E9 .
+A4EA .
+A4EB .
+A4EC .
+A4ED .
+A4EE .
+A4EF .
+A4F0 .
+A4F1 .
+A4F2 .
+A4F3 .
+A4F4 .
+A4F5 .
+A4F6 .
+A4F7 .
+A4F8 .
+A4F9 .
+A4FA .
+A4FB .
+A4FC .
+A4FD .
+A500 .
+A501 .
+A502 .
+A503 .
+A504 .
+A505 .
+A506 .
+A507 .
+A508 .
+A509 .
+A50A .
+A50B .
+A50C .
+A50D .
+A50E .
+A50F .
+A510 .
+A511 .
+A512 .
+A513 .
+A514 .
+A515 .
+A516 .
+A517 .
+A518 .
+A519 .
+A51A .
+A51B .
+A51C .
+A51D .
+A51E .
+A51F .
+A520 .
+A521 .
+A522 .
+A523 .
+A524 .
+A525 .
+A526 .
+A527 .
+A528 .
+A529 .
+A52A .
+A52B .
+A52C .
+A52D .
+A52E .
+A52F .
+A530 .
+A531 .
+A532 .
+A533 .
+A534 .
+A535 .
+A536 .
+A537 .
+A538 .
+A539 .
+A53A .
+A53B .
+A53C .
+A53D .
+A53E .
+A53F .
+A540 .
+A541 .
+A542 .
+A543 .
+A544 .
+A545 .
+A546 .
+A547 .
+A548 .
+A549 .
+A54A .
+A54B .
+A54C .
+A54D .
+A54E .
+A54F .
+A550 .
+A551 .
+A552 .
+A553 .
+A554 .
+A555 .
+A556 .
+A557 .
+A558 .
+A559 .
+A55A .
+A55B .
+A55C .
+A55D .
+A55E .
+A55F .
+A560 .
+A561 .
+A562 .
+A563 .
+A564 .
+A565 .
+A566 .
+A567 .
+A568 .
+A569 .
+A56A .
+A56B .
+A56C .
+A56D .
+A56E .
+A56F .
+A570 .
+A571 .
+A572 .
+A573 .
+A574 .
+A575 .
+A576 .
+A577 .
+A578 .
+A579 .
+A57A .
+A57B .
+A57C .
+A57D .
+A57E .
+A57F .
+A580 .
+A581 .
+A582 .
+A583 .
+A584 .
+A585 .
+A586 .
+A587 .
+A588 .
+A589 .
+A58A .
+A58B .
+A58C .
+A58D .
+A58E .
+A58F .
+A590 .
+A591 .
+A592 .
+A593 .
+A594 .
+A595 .
+A596 .
+A597 .
+A598 .
+A599 .
+A59A .
+A59B .
+A59C .
+A59D .
+A59E .
+A59F .
+A5A0 .
+A5A1 .
+A5A2 .
+A5A3 .
+A5A4 .
+A5A5 .
+A5A6 .
+A5A7 .
+A5A8 .
+A5A9 .
+A5AA .
+A5AB .
+A5AC .
+A5AD .
+A5AE .
+A5AF .
+A5B0 .
+A5B1 .
+A5B2 .
+A5B3 .
+A5B4 .
+A5B5 .
+A5B6 .
+A5B7 .
+A5B8 .
+A5B9 .
+A5BA .
+A5BB .
+A5BC .
+A5BD .
+A5BE .
+A5BF .
+A5C0 .
+A5C1 .
+A5C2 .
+A5C3 .
+A5C4 .
+A5C5 .
+A5C6 .
+A5C7 .
+A5C8 .
+A5C9 .
+A5CA .
+A5CB .
+A5CC .
+A5CD .
+A5CE .
+A5CF .
+A5D0 .
+A5D1 .
+A5D2 .
+A5D3 .
+A5D4 .
+A5D5 .
+A5D6 .
+A5D7 .
+A5D8 .
+A5D9 .
+A5DA .
+A5DB .
+A5DC .
+A5DD .
+A5DE .
+A5DF .
+A5E0 .
+A5E1 .
+A5E2 .
+A5E3 .
+A5E4 .
+A5E5 .
+A5E6 .
+A5E7 .
+A5E8 .
+A5E9 .
+A5EA .
+A5EB .
+A5EC .
+A5ED .
+A5EE .
+A5EF .
+A5F0 .
+A5F1 .
+A5F2 .
+A5F3 .
+A5F4 .
+A5F5 .
+A5F6 .
+A5F7 .
+A5F8 .
+A5F9 .
+A5FA .
+A5FB .
+A5FC .
+A5FD .
+A5FE .
+A5FF .
+A600 .
+A601 .
+A602 .
+A603 .
+A604 .
+A605 .
+A606 .
+A607 .
+A608 .
+A609 .
+A60A .
+A60B .
+A60C .
+A610 .
+A611 .
+A612 .
+A613 .
+A614 .
+A615 .
+A616 .
+A617 .
+A618 .
+A619 .
+A61A .
+A61B .
+A61C .
+A61D .
+A61E .
+A61F .
+A62A .
+A62B .
+A641 A640
+A643 A642
+A645 A644
+A647 A646
+A649 A648
+A64B A64A
+A64D A64C
+A64F A64E
+A651 A650
+A653 A652
+A655 A654
+A657 A656
+A659 A658
+A65B A65A
+A65D A65C
+A65F A65E
+A661 A660
+A663 A662
+A665 A664
+A667 A666
+A669 A668
+A66B A66A
+A66D A66C
+A66E .
+A67F .
+A681 A680
+A683 A682
+A685 A684
+A687 A686
+A689 A688
+A68B A68A
+A68D A68C
+A68F A68E
+A691 A690
+A693 A692
+A695 A694
+A697 A696
+A6A0 .
+A6A1 .
+A6A2 .
+A6A3 .
+A6A4 .
+A6A5 .
+A6A6 .
+A6A7 .
+A6A8 .
+A6A9 .
+A6AA .
+A6AB .
+A6AC .
+A6AD .
+A6AE .
+A6AF .
+A6B0 .
+A6B1 .
+A6B2 .
+A6B3 .
+A6B4 .
+A6B5 .
+A6B6 .
+A6B7 .
+A6B8 .
+A6B9 .
+A6BA .
+A6BB .
+A6BC .
+A6BD .
+A6BE .
+A6BF .
+A6C0 .
+A6C1 .
+A6C2 .
+A6C3 .
+A6C4 .
+A6C5 .
+A6C6 .
+A6C7 .
+A6C8 .
+A6C9 .
+A6CA .
+A6CB .
+A6CC .
+A6CD .
+A6CE .
+A6CF .
+A6D0 .
+A6D1 .
+A6D2 .
+A6D3 .
+A6D4 .
+A6D5 .
+A6D6 .
+A6D7 .
+A6D8 .
+A6D9 .
+A6DA .
+A6DB .
+A6DC .
+A6DD .
+A6DE .
+A6DF .
+A6E0 .
+A6E1 .
+A6E2 .
+A6E3 .
+A6E4 .
+A6E5 .
+A717 .
+A718 .
+A719 .
+A71A .
+A71B .
+A71C .
+A71D .
+A71E .
+A71F .
+A723 A722
+A725 A724
+A727 A726
+A729 A728
+A72B A72A
+A72D A72C
+A72F A72E
+A730 .
+A731 .
+A733 A732
+A735 A734
+A737 A736
+A739 A738
+A73B A73A
+A73D A73C
+A73F A73E
+A741 A740
+A743 A742
+A745 A744
+A747 A746
+A749 A748
+A74B A74A
+A74D A74C
+A74F A74E
+A751 A750
+A753 A752
+A755 A754
+A757 A756
+A759 A758
+A75B A75A
+A75D A75C
+A75F A75E
+A761 A760
+A763 A762
+A765 A764
+A767 A766
+A769 A768
+A76B A76A
+A76D A76C
+A76F A76E
+A770 .
+A771 .
+A772 .
+A773 .
+A774 .
+A775 .
+A776 .
+A777 .
+A778 .
+A77A A779
+A77C A77B
+A77F A77E
+A781 A780
+A783 A782
+A785 A784
+A787 A786
+A788 .
+A78C A78B
+A78E .
+A791 A790
+A793 A792
+A7A1 A7A0
+A7A3 A7A2
+A7A5 A7A4
+A7A7 A7A6
+A7A9 A7A8
+A7F8 .
+A7F9 .
+A7FA .
+A7FB .
+A7FC .
+A7FD .
+A7FE .
+A7FF .
+A800 .
+A801 .
+A803 .
+A804 .
+A805 .
+A807 .
+A808 .
+A809 .
+A80A .
+A80C .
+A80D .
+A80E .
+A80F .
+A810 .
+A811 .
+A812 .
+A813 .
+A814 .
+A815 .
+A816 .
+A817 .
+A818 .
+A819 .
+A81A .
+A81B .
+A81C .
+A81D .
+A81E .
+A81F .
+A820 .
+A821 .
+A822 .
+A840 .
+A841 .
+A842 .
+A843 .
+A844 .
+A845 .
+A846 .
+A847 .
+A848 .
+A849 .
+A84A .
+A84B .
+A84C .
+A84D .
+A84E .
+A84F .
+A850 .
+A851 .
+A852 .
+A853 .
+A854 .
+A855 .
+A856 .
+A857 .
+A858 .
+A859 .
+A85A .
+A85B .
+A85C .
+A85D .
+A85E .
+A85F .
+A860 .
+A861 .
+A862 .
+A863 .
+A864 .
+A865 .
+A866 .
+A867 .
+A868 .
+A869 .
+A86A .
+A86B .
+A86C .
+A86D .
+A86E .
+A86F .
+A870 .
+A871 .
+A872 .
+A873 .
+A882 .
+A883 .
+A884 .
+A885 .
+A886 .
+A887 .
+A888 .
+A889 .
+A88A .
+A88B .
+A88C .
+A88D .
+A88E .
+A88F .
+A890 .
+A891 .
+A892 .
+A893 .
+A894 .
+A895 .
+A896 .
+A897 .
+A898 .
+A899 .
+A89A .
+A89B .
+A89C .
+A89D .
+A89E .
+A89F .
+A8A0 .
+A8A1 .
+A8A2 .
+A8A3 .
+A8A4 .
+A8A5 .
+A8A6 .
+A8A7 .
+A8A8 .
+A8A9 .
+A8AA .
+A8AB .
+A8AC .
+A8AD .
+A8AE .
+A8AF .
+A8B0 .
+A8B1 .
+A8B2 .
+A8B3 .
+A8F2 .
+A8F3 .
+A8F4 .
+A8F5 .
+A8F6 .
+A8F7 .
+A8FB .
+A90A .
+A90B .
+A90C .
+A90D .
+A90E .
+A90F .
+A910 .
+A911 .
+A912 .
+A913 .
+A914 .
+A915 .
+A916 .
+A917 .
+A918 .
+A919 .
+A91A .
+A91B .
+A91C .
+A91D .
+A91E .
+A91F .
+A920 .
+A921 .
+A922 .
+A923 .
+A924 .
+A925 .
+A930 .
+A931 .
+A932 .
+A933 .
+A934 .
+A935 .
+A936 .
+A937 .
+A938 .
+A939 .
+A93A .
+A93B .
+A93C .
+A93D .
+A93E .
+A93F .
+A940 .
+A941 .
+A942 .
+A943 .
+A944 .
+A945 .
+A946 .
+A960 .
+A961 .
+A962 .
+A963 .
+A964 .
+A965 .
+A966 .
+A967 .
+A968 .
+A969 .
+A96A .
+A96B .
+A96C .
+A96D .
+A96E .
+A96F .
+A970 .
+A971 .
+A972 .
+A973 .
+A974 .
+A975 .
+A976 .
+A977 .
+A978 .
+A979 .
+A97A .
+A97B .
+A97C .
+A984 .
+A985 .
+A986 .
+A987 .
+A988 .
+A989 .
+A98A .
+A98B .
+A98C .
+A98D .
+A98E .
+A98F .
+A990 .
+A991 .
+A992 .
+A993 .
+A994 .
+A995 .
+A996 .
+A997 .
+A998 .
+A999 .
+A99A .
+A99B .
+A99C .
+A99D .
+A99E .
+A99F .
+A9A0 .
+A9A1 .
+A9A2 .
+A9A3 .
+A9A4 .
+A9A5 .
+A9A6 .
+A9A7 .
+A9A8 .
+A9A9 .
+A9AA .
+A9AB .
+A9AC .
+A9AD .
+A9AE .
+A9AF .
+A9B0 .
+A9B1 .
+A9B2 .
+A9CF .
+AA00 .
+AA01 .
+AA02 .
+AA03 .
+AA04 .
+AA05 .
+AA06 .
+AA07 .
+AA08 .
+AA09 .
+AA0A .
+AA0B .
+AA0C .
+AA0D .
+AA0E .
+AA0F .
+AA10 .
+AA11 .
+AA12 .
+AA13 .
+AA14 .
+AA15 .
+AA16 .
+AA17 .
+AA18 .
+AA19 .
+AA1A .
+AA1B .
+AA1C .
+AA1D .
+AA1E .
+AA1F .
+AA20 .
+AA21 .
+AA22 .
+AA23 .
+AA24 .
+AA25 .
+AA26 .
+AA27 .
+AA28 .
+AA40 .
+AA41 .
+AA42 .
+AA44 .
+AA45 .
+AA46 .
+AA47 .
+AA48 .
+AA49 .
+AA4A .
+AA4B .
+AA60 .
+AA61 .
+AA62 .
+AA63 .
+AA64 .
+AA65 .
+AA66 .
+AA67 .
+AA68 .
+AA69 .
+AA6A .
+AA6B .
+AA6C .
+AA6D .
+AA6E .
+AA6F .
+AA70 .
+AA71 .
+AA72 .
+AA73 .
+AA74 .
+AA75 .
+AA76 .
+AA7A .
+AA80 .
+AA81 .
+AA82 .
+AA83 .
+AA84 .
+AA85 .
+AA86 .
+AA87 .
+AA88 .
+AA89 .
+AA8A .
+AA8B .
+AA8C .
+AA8D .
+AA8E .
+AA8F .
+AA90 .
+AA91 .
+AA92 .
+AA93 .
+AA94 .
+AA95 .
+AA96 .
+AA97 .
+AA98 .
+AA99 .
+AA9A .
+AA9B .
+AA9C .
+AA9D .
+AA9E .
+AA9F .
+AAA0 .
+AAA1 .
+AAA2 .
+AAA3 .
+AAA4 .
+AAA5 .
+AAA6 .
+AAA7 .
+AAA8 .
+AAA9 .
+AAAA .
+AAAB .
+AAAC .
+AAAD .
+AAAE .
+AAAF .
+AAB1 .
+AAB5 .
+AAB6 .
+AAB9 .
+AABA .
+AABB .
+AABC .
+AABD .
+AAC0 .
+AAC2 .
+AADB .
+AADC .
+AADD .
+AAE0 .
+AAE1 .
+AAE2 .
+AAE3 .
+AAE4 .
+AAE5 .
+AAE6 .
+AAE7 .
+AAE8 .
+AAE9 .
+AAEA .
+AAF2 .
+AAF3 .
+AAF4 .
+AB01 .
+AB02 .
+AB03 .
+AB04 .
+AB05 .
+AB06 .
+AB09 .
+AB0A .
+AB0B .
+AB0C .
+AB0D .
+AB0E .
+AB11 .
+AB12 .
+AB13 .
+AB14 .
+AB15 .
+AB16 .
+AB20 .
+AB21 .
+AB22 .
+AB23 .
+AB24 .
+AB25 .
+AB26 .
+AB28 .
+AB29 .
+AB2A .
+AB2B .
+AB2C .
+AB2D .
+AB2E .
+ABC0 .
+ABC1 .
+ABC2 .
+ABC3 .
+ABC4 .
+ABC5 .
+ABC6 .
+ABC7 .
+ABC8 .
+ABC9 .
+ABCA .
+ABCB .
+ABCC .
+ABCD .
+ABCE .
+ABCF .
+ABD0 .
+ABD1 .
+ABD2 .
+ABD3 .
+ABD4 .
+ABD5 .
+ABD6 .
+ABD7 .
+ABD8 .
+ABD9 .
+ABDA .
+ABDB .
+ABDC .
+ABDD .
+ABDE .
+ABDF .
+ABE0 .
+ABE1 .
+ABE2 .
+D7B0 .
+D7B1 .
+D7B2 .
+D7B3 .
+D7B4 .
+D7B5 .
+D7B6 .
+D7B7 .
+D7B8 .
+D7B9 .
+D7BA .
+D7BB .
+D7BC .
+D7BD .
+D7BE .
+D7BF .
+D7C0 .
+D7C1 .
+D7C2 .
+D7C3 .
+D7C4 .
+D7C5 .
+D7C6 .
+D7CB .
+D7CC .
+D7CD .
+D7CE .
+D7CF .
+D7D0 .
+D7D1 .
+D7D2 .
+D7D3 .
+D7D4 .
+D7D5 .
+D7D6 .
+D7D7 .
+D7D8 .
+D7D9 .
+D7DA .
+D7DB .
+D7DC .
+D7DD .
+D7DE .
+D7DF .
+D7E0 .
+D7E1 .
+D7E2 .
+D7E3 .
+D7E4 .
+D7E5 .
+D7E6 .
+D7E7 .
+D7E8 .
+D7E9 .
+D7EA .
+D7EB .
+D7EC .
+D7ED .
+D7EE .
+D7EF .
+D7F0 .
+D7F1 .
+D7F2 .
+D7F3 .
+D7F4 .
+D7F5 .
+D7F6 .
+D7F7 .
+D7F8 .
+D7F9 .
+D7FA .
+D7FB .
+F900 .
+F901 .
+F902 .
+F903 .
+F904 .
+F905 .
+F906 .
+F907 .
+F908 .
+F909 .
+F90A .
+F90B .
+F90C .
+F90D .
+F90E .
+F90F .
+F910 .
+F911 .
+F912 .
+F913 .
+F914 .
+F915 .
+F916 .
+F917 .
+F918 .
+F919 .
+F91A .
+F91B .
+F91C .
+F91D .
+F91E .
+F91F .
+F920 .
+F921 .
+F922 .
+F923 .
+F924 .
+F925 .
+F926 .
+F927 .
+F928 .
+F929 .
+F92A .
+F92B .
+F92C .
+F92D .
+F92E .
+F92F .
+F930 .
+F931 .
+F932 .
+F933 .
+F934 .
+F935 .
+F936 .
+F937 .
+F938 .
+F939 .
+F93A .
+F93B .
+F93C .
+F93D .
+F93E .
+F93F .
+F940 .
+F941 .
+F942 .
+F943 .
+F944 .
+F945 .
+F946 .
+F947 .
+F948 .
+F949 .
+F94A .
+F94B .
+F94C .
+F94D .
+F94E .
+F94F .
+F950 .
+F951 .
+F952 .
+F953 .
+F954 .
+F955 .
+F956 .
+F957 .
+F958 .
+F959 .
+F95A .
+F95B .
+F95C .
+F95D .
+F95E .
+F95F .
+F960 .
+F961 .
+F962 .
+F963 .
+F964 .
+F965 .
+F966 .
+F967 .
+F968 .
+F969 .
+F96A .
+F96B .
+F96C .
+F96D .
+F96E .
+F96F .
+F970 .
+F971 .
+F972 .
+F973 .
+F974 .
+F975 .
+F976 .
+F977 .
+F978 .
+F979 .
+F97A .
+F97B .
+F97C .
+F97D .
+F97E .
+F97F .
+F980 .
+F981 .
+F982 .
+F983 .
+F984 .
+F985 .
+F986 .
+F987 .
+F988 .
+F989 .
+F98A .
+F98B .
+F98C .
+F98D .
+F98E .
+F98F .
+F990 .
+F991 .
+F992 .
+F993 .
+F994 .
+F995 .
+F996 .
+F997 .
+F998 .
+F999 .
+F99A .
+F99B .
+F99C .
+F99D .
+F99E .
+F99F .
+F9A0 .
+F9A1 .
+F9A2 .
+F9A3 .
+F9A4 .
+F9A5 .
+F9A6 .
+F9A7 .
+F9A8 .
+F9A9 .
+F9AA .
+F9AB .
+F9AC .
+F9AD .
+F9AE .
+F9AF .
+F9B0 .
+F9B1 .
+F9B2 .
+F9B3 .
+F9B4 .
+F9B5 .
+F9B6 .
+F9B7 .
+F9B8 .
+F9B9 .
+F9BA .
+F9BB .
+F9BC .
+F9BD .
+F9BE .
+F9BF .
+F9C0 .
+F9C1 .
+F9C2 .
+F9C3 .
+F9C4 .
+F9C5 .
+F9C6 .
+F9C7 .
+F9C8 .
+F9C9 .
+F9CA .
+F9CB .
+F9CC .
+F9CD .
+F9CE .
+F9CF .
+F9D0 .
+F9D1 .
+F9D2 .
+F9D3 .
+F9D4 .
+F9D5 .
+F9D6 .
+F9D7 .
+F9D8 .
+F9D9 .
+F9DA .
+F9DB .
+F9DC .
+F9DD .
+F9DE .
+F9DF .
+F9E0 .
+F9E1 .
+F9E2 .
+F9E3 .
+F9E4 .
+F9E5 .
+F9E6 .
+F9E7 .
+F9E8 .
+F9E9 .
+F9EA .
+F9EB .
+F9EC .
+F9ED .
+F9EE .
+F9EF .
+F9F0 .
+F9F1 .
+F9F2 .
+F9F3 .
+F9F4 .
+F9F5 .
+F9F6 .
+F9F7 .
+F9F8 .
+F9F9 .
+F9FA .
+F9FB .
+F9FC .
+F9FD .
+F9FE .
+F9FF .
+FA00 .
+FA01 .
+FA02 .
+FA03 .
+FA04 .
+FA05 .
+FA06 .
+FA07 .
+FA08 .
+FA09 .
+FA0A .
+FA0B .
+FA0C .
+FA0D .
+FA0E .
+FA0F .
+FA10 .
+FA11 .
+FA12 .
+FA13 .
+FA14 .
+FA15 .
+FA16 .
+FA17 .
+FA18 .
+FA19 .
+FA1A .
+FA1B .
+FA1C .
+FA1D .
+FA1E .
+FA1F .
+FA20 .
+FA21 .
+FA22 .
+FA23 .
+FA24 .
+FA25 .
+FA26 .
+FA27 .
+FA28 .
+FA29 .
+FA2A .
+FA2B .
+FA2C .
+FA2D .
+FA2E .
+FA2F .
+FA30 .
+FA31 .
+FA32 .
+FA33 .
+FA34 .
+FA35 .
+FA36 .
+FA37 .
+FA38 .
+FA39 .
+FA3A .
+FA3B .
+FA3C .
+FA3D .
+FA3E .
+FA3F .
+FA40 .
+FA41 .
+FA42 .
+FA43 .
+FA44 .
+FA45 .
+FA46 .
+FA47 .
+FA48 .
+FA49 .
+FA4A .
+FA4B .
+FA4C .
+FA4D .
+FA4E .
+FA4F .
+FA50 .
+FA51 .
+FA52 .
+FA53 .
+FA54 .
+FA55 .
+FA56 .
+FA57 .
+FA58 .
+FA59 .
+FA5A .
+FA5B .
+FA5C .
+FA5D .
+FA5E .
+FA5F .
+FA60 .
+FA61 .
+FA62 .
+FA63 .
+FA64 .
+FA65 .
+FA66 .
+FA67 .
+FA68 .
+FA69 .
+FA6A .
+FA6B .
+FA6C .
+FA6D .
+FA70 .
+FA71 .
+FA72 .
+FA73 .
+FA74 .
+FA75 .
+FA76 .
+FA77 .
+FA78 .
+FA79 .
+FA7A .
+FA7B .
+FA7C .
+FA7D .
+FA7E .
+FA7F .
+FA80 .
+FA81 .
+FA82 .
+FA83 .
+FA84 .
+FA85 .
+FA86 .
+FA87 .
+FA88 .
+FA89 .
+FA8A .
+FA8B .
+FA8C .
+FA8D .
+FA8E .
+FA8F .
+FA90 .
+FA91 .
+FA92 .
+FA93 .
+FA94 .
+FA95 .
+FA96 .
+FA97 .
+FA98 .
+FA99 .
+FA9A .
+FA9B .
+FA9C .
+FA9D .
+FA9E .
+FA9F .
+FAA0 .
+FAA1 .
+FAA2 .
+FAA3 .
+FAA4 .
+FAA5 .
+FAA6 .
+FAA7 .
+FAA8 .
+FAA9 .
+FAAA .
+FAAB .
+FAAC .
+FAAD .
+FAAE .
+FAAF .
+FAB0 .
+FAB1 .
+FAB2 .
+FAB3 .
+FAB4 .
+FAB5 .
+FAB6 .
+FAB7 .
+FAB8 .
+FAB9 .
+FABA .
+FABB .
+FABC .
+FABD .
+FABE .
+FABF .
+FAC0 .
+FAC1 .
+FAC2 .
+FAC3 .
+FAC4 .
+FAC5 .
+FAC6 .
+FAC7 .
+FAC8 .
+FAC9 .
+FACA .
+FACB .
+FACC .
+FACD .
+FACE .
+FACF .
+FAD0 .
+FAD1 .
+FAD2 .
+FAD3 .
+FAD4 .
+FAD5 .
+FAD6 .
+FAD7 .
+FAD8 .
+FAD9 .
+FB00 .
+FB01 .
+FB02 .
+FB03 .
+FB04 .
+FB05 .
+FB06 .
+FB13 .
+FB14 .
+FB15 .
+FB16 .
+FB17 .
+FB1D .
+FB1F .
+FB20 .
+FB21 .
+FB22 .
+FB23 .
+FB24 .
+FB25 .
+FB26 .
+FB27 .
+FB28 .
+FB2A .
+FB2B .
+FB2C .
+FB2D .
+FB2E .
+FB2F .
+FB30 .
+FB31 .
+FB32 .
+FB33 .
+FB34 .
+FB35 .
+FB36 .
+FB38 .
+FB39 .
+FB3A .
+FB3B .
+FB3C .
+FB3E .
+FB40 .
+FB41 .
+FB43 .
+FB44 .
+FB46 .
+FB47 .
+FB48 .
+FB49 .
+FB4A .
+FB4B .
+FB4C .
+FB4D .
+FB4E .
+FB4F .
+FB50 .
+FB51 .
+FB52 .
+FB53 .
+FB54 .
+FB55 .
+FB56 .
+FB57 .
+FB58 .
+FB59 .
+FB5A .
+FB5B .
+FB5C .
+FB5D .
+FB5E .
+FB5F .
+FB60 .
+FB61 .
+FB62 .
+FB63 .
+FB64 .
+FB65 .
+FB66 .
+FB67 .
+FB68 .
+FB69 .
+FB6A .
+FB6B .
+FB6C .
+FB6D .
+FB6E .
+FB6F .
+FB70 .
+FB71 .
+FB72 .
+FB73 .
+FB74 .
+FB75 .
+FB76 .
+FB77 .
+FB78 .
+FB79 .
+FB7A .
+FB7B .
+FB7C .
+FB7D .
+FB7E .
+FB7F .
+FB80 .
+FB81 .
+FB82 .
+FB83 .
+FB84 .
+FB85 .
+FB86 .
+FB87 .
+FB88 .
+FB89 .
+FB8A .
+FB8B .
+FB8C .
+FB8D .
+FB8E .
+FB8F .
+FB90 .
+FB91 .
+FB92 .
+FB93 .
+FB94 .
+FB95 .
+FB96 .
+FB97 .
+FB98 .
+FB99 .
+FB9A .
+FB9B .
+FB9C .
+FB9D .
+FB9E .
+FB9F .
+FBA0 .
+FBA1 .
+FBA2 .
+FBA3 .
+FBA4 .
+FBA5 .
+FBA6 .
+FBA7 .
+FBA8 .
+FBA9 .
+FBAA .
+FBAB .
+FBAC .
+FBAD .
+FBAE .
+FBAF .
+FBB0 .
+FBB1 .
+FBD3 .
+FBD4 .
+FBD5 .
+FBD6 .
+FBD7 .
+FBD8 .
+FBD9 .
+FBDA .
+FBDB .
+FBDC .
+FBDD .
+FBDE .
+FBDF .
+FBE0 .
+FBE1 .
+FBE2 .
+FBE3 .
+FBE4 .
+FBE5 .
+FBE6 .
+FBE7 .
+FBE8 .
+FBE9 .
+FBEA .
+FBEB .
+FBEC .
+FBED .
+FBEE .
+FBEF .
+FBF0 .
+FBF1 .
+FBF2 .
+FBF3 .
+FBF4 .
+FBF5 .
+FBF6 .
+FBF7 .
+FBF8 .
+FBF9 .
+FBFA .
+FBFB .
+FBFC .
+FBFD .
+FBFE .
+FBFF .
+FC00 .
+FC01 .
+FC02 .
+FC03 .
+FC04 .
+FC05 .
+FC06 .
+FC07 .
+FC08 .
+FC09 .
+FC0A .
+FC0B .
+FC0C .
+FC0D .
+FC0E .
+FC0F .
+FC10 .
+FC11 .
+FC12 .
+FC13 .
+FC14 .
+FC15 .
+FC16 .
+FC17 .
+FC18 .
+FC19 .
+FC1A .
+FC1B .
+FC1C .
+FC1D .
+FC1E .
+FC1F .
+FC20 .
+FC21 .
+FC22 .
+FC23 .
+FC24 .
+FC25 .
+FC26 .
+FC27 .
+FC28 .
+FC29 .
+FC2A .
+FC2B .
+FC2C .
+FC2D .
+FC2E .
+FC2F .
+FC30 .
+FC31 .
+FC32 .
+FC33 .
+FC34 .
+FC35 .
+FC36 .
+FC37 .
+FC38 .
+FC39 .
+FC3A .
+FC3B .
+FC3C .
+FC3D .
+FC3E .
+FC3F .
+FC40 .
+FC41 .
+FC42 .
+FC43 .
+FC44 .
+FC45 .
+FC46 .
+FC47 .
+FC48 .
+FC49 .
+FC4A .
+FC4B .
+FC4C .
+FC4D .
+FC4E .
+FC4F .
+FC50 .
+FC51 .
+FC52 .
+FC53 .
+FC54 .
+FC55 .
+FC56 .
+FC57 .
+FC58 .
+FC59 .
+FC5A .
+FC5B .
+FC5C .
+FC5D .
+FC5E .
+FC5F .
+FC60 .
+FC61 .
+FC62 .
+FC63 .
+FC64 .
+FC65 .
+FC66 .
+FC67 .
+FC68 .
+FC69 .
+FC6A .
+FC6B .
+FC6C .
+FC6D .
+FC6E .
+FC6F .
+FC70 .
+FC71 .
+FC72 .
+FC73 .
+FC74 .
+FC75 .
+FC76 .
+FC77 .
+FC78 .
+FC79 .
+FC7A .
+FC7B .
+FC7C .
+FC7D .
+FC7E .
+FC7F .
+FC80 .
+FC81 .
+FC82 .
+FC83 .
+FC84 .
+FC85 .
+FC86 .
+FC87 .
+FC88 .
+FC89 .
+FC8A .
+FC8B .
+FC8C .
+FC8D .
+FC8E .
+FC8F .
+FC90 .
+FC91 .
+FC92 .
+FC93 .
+FC94 .
+FC95 .
+FC96 .
+FC97 .
+FC98 .
+FC99 .
+FC9A .
+FC9B .
+FC9C .
+FC9D .
+FC9E .
+FC9F .
+FCA0 .
+FCA1 .
+FCA2 .
+FCA3 .
+FCA4 .
+FCA5 .
+FCA6 .
+FCA7 .
+FCA8 .
+FCA9 .
+FCAA .
+FCAB .
+FCAC .
+FCAD .
+FCAE .
+FCAF .
+FCB0 .
+FCB1 .
+FCB2 .
+FCB3 .
+FCB4 .
+FCB5 .
+FCB6 .
+FCB7 .
+FCB8 .
+FCB9 .
+FCBA .
+FCBB .
+FCBC .
+FCBD .
+FCBE .
+FCBF .
+FCC0 .
+FCC1 .
+FCC2 .
+FCC3 .
+FCC4 .
+FCC5 .
+FCC6 .
+FCC7 .
+FCC8 .
+FCC9 .
+FCCA .
+FCCB .
+FCCC .
+FCCD .
+FCCE .
+FCCF .
+FCD0 .
+FCD1 .
+FCD2 .
+FCD3 .
+FCD4 .
+FCD5 .
+FCD6 .
+FCD7 .
+FCD8 .
+FCD9 .
+FCDA .
+FCDB .
+FCDC .
+FCDD .
+FCDE .
+FCDF .
+FCE0 .
+FCE1 .
+FCE2 .
+FCE3 .
+FCE4 .
+FCE5 .
+FCE6 .
+FCE7 .
+FCE8 .
+FCE9 .
+FCEA .
+FCEB .
+FCEC .
+FCED .
+FCEE .
+FCEF .
+FCF0 .
+FCF1 .
+FCF2 .
+FCF3 .
+FCF4 .
+FCF5 .
+FCF6 .
+FCF7 .
+FCF8 .
+FCF9 .
+FCFA .
+FCFB .
+FCFC .
+FCFD .
+FCFE .
+FCFF .
+FD00 .
+FD01 .
+FD02 .
+FD03 .
+FD04 .
+FD05 .
+FD06 .
+FD07 .
+FD08 .
+FD09 .
+FD0A .
+FD0B .
+FD0C .
+FD0D .
+FD0E .
+FD0F .
+FD10 .
+FD11 .
+FD12 .
+FD13 .
+FD14 .
+FD15 .
+FD16 .
+FD17 .
+FD18 .
+FD19 .
+FD1A .
+FD1B .
+FD1C .
+FD1D .
+FD1E .
+FD1F .
+FD20 .
+FD21 .
+FD22 .
+FD23 .
+FD24 .
+FD25 .
+FD26 .
+FD27 .
+FD28 .
+FD29 .
+FD2A .
+FD2B .
+FD2C .
+FD2D .
+FD2E .
+FD2F .
+FD30 .
+FD31 .
+FD32 .
+FD33 .
+FD34 .
+FD35 .
+FD36 .
+FD37 .
+FD38 .
+FD39 .
+FD3A .
+FD3B .
+FD3C .
+FD3D .
+FD50 .
+FD51 .
+FD52 .
+FD53 .
+FD54 .
+FD55 .
+FD56 .
+FD57 .
+FD58 .
+FD59 .
+FD5A .
+FD5B .
+FD5C .
+FD5D .
+FD5E .
+FD5F .
+FD60 .
+FD61 .
+FD62 .
+FD63 .
+FD64 .
+FD65 .
+FD66 .
+FD67 .
+FD68 .
+FD69 .
+FD6A .
+FD6B .
+FD6C .
+FD6D .
+FD6E .
+FD6F .
+FD70 .
+FD71 .
+FD72 .
+FD73 .
+FD74 .
+FD75 .
+FD76 .
+FD77 .
+FD78 .
+FD79 .
+FD7A .
+FD7B .
+FD7C .
+FD7D .
+FD7E .
+FD7F .
+FD80 .
+FD81 .
+FD82 .
+FD83 .
+FD84 .
+FD85 .
+FD86 .
+FD87 .
+FD88 .
+FD89 .
+FD8A .
+FD8B .
+FD8C .
+FD8D .
+FD8E .
+FD8F .
+FD92 .
+FD93 .
+FD94 .
+FD95 .
+FD96 .
+FD97 .
+FD98 .
+FD99 .
+FD9A .
+FD9B .
+FD9C .
+FD9D .
+FD9E .
+FD9F .
+FDA0 .
+FDA1 .
+FDA2 .
+FDA3 .
+FDA4 .
+FDA5 .
+FDA6 .
+FDA7 .
+FDA8 .
+FDA9 .
+FDAA .
+FDAB .
+FDAC .
+FDAD .
+FDAE .
+FDAF .
+FDB0 .
+FDB1 .
+FDB2 .
+FDB3 .
+FDB4 .
+FDB5 .
+FDB6 .
+FDB7 .
+FDB8 .
+FDB9 .
+FDBA .
+FDBB .
+FDBC .
+FDBD .
+FDBE .
+FDBF .
+FDC0 .
+FDC1 .
+FDC2 .
+FDC3 .
+FDC4 .
+FDC5 .
+FDC6 .
+FDC7 .
+FDF0 .
+FDF1 .
+FDF2 .
+FDF3 .
+FDF4 .
+FDF5 .
+FDF6 .
+FDF7 .
+FDF8 .
+FDF9 .
+FDFA .
+FDFB .
+FE70 .
+FE71 .
+FE72 .
+FE73 .
+FE74 .
+FE76 .
+FE77 .
+FE78 .
+FE79 .
+FE7A .
+FE7B .
+FE7C .
+FE7D .
+FE7E .
+FE7F .
+FE80 .
+FE81 .
+FE82 .
+FE83 .
+FE84 .
+FE85 .
+FE86 .
+FE87 .
+FE88 .
+FE89 .
+FE8A .
+FE8B .
+FE8C .
+FE8D .
+FE8E .
+FE8F .
+FE90 .
+FE91 .
+FE92 .
+FE93 .
+FE94 .
+FE95 .
+FE96 .
+FE97 .
+FE98 .
+FE99 .
+FE9A .
+FE9B .
+FE9C .
+FE9D .
+FE9E .
+FE9F .
+FEA0 .
+FEA1 .
+FEA2 .
+FEA3 .
+FEA4 .
+FEA5 .
+FEA6 .
+FEA7 .
+FEA8 .
+FEA9 .
+FEAA .
+FEAB .
+FEAC .
+FEAD .
+FEAE .
+FEAF .
+FEB0 .
+FEB1 .
+FEB2 .
+FEB3 .
+FEB4 .
+FEB5 .
+FEB6 .
+FEB7 .
+FEB8 .
+FEB9 .
+FEBA .
+FEBB .
+FEBC .
+FEBD .
+FEBE .
+FEBF .
+FEC0 .
+FEC1 .
+FEC2 .
+FEC3 .
+FEC4 .
+FEC5 .
+FEC6 .
+FEC7 .
+FEC8 .
+FEC9 .
+FECA .
+FECB .
+FECC .
+FECD .
+FECE .
+FECF .
+FED0 .
+FED1 .
+FED2 .
+FED3 .
+FED4 .
+FED5 .
+FED6 .
+FED7 .
+FED8 .
+FED9 .
+FEDA .
+FEDB .
+FEDC .
+FEDD .
+FEDE .
+FEDF .
+FEE0 .
+FEE1 .
+FEE2 .
+FEE3 .
+FEE4 .
+FEE5 .
+FEE6 .
+FEE7 .
+FEE8 .
+FEE9 .
+FEEA .
+FEEB .
+FEEC .
+FEED .
+FEEE .
+FEEF .
+FEF0 .
+FEF1 .
+FEF2 .
+FEF3 .
+FEF4 .
+FEF5 .
+FEF6 .
+FEF7 .
+FEF8 .
+FEF9 .
+FEFA .
+FEFB .
+FEFC .
+FF41 FF21
+FF42 FF22
+FF43 FF23
+FF44 FF24
+FF45 FF25
+FF46 FF26
+FF47 FF27
+FF48 FF28
+FF49 FF29
+FF4A FF2A
+FF4B FF2B
+FF4C FF2C
+FF4D FF2D
+FF4E FF2E
+FF4F FF2F
+FF50 FF30
+FF51 FF31
+FF52 FF32
+FF53 FF33
+FF54 FF34
+FF55 FF35
+FF56 FF36
+FF57 FF37
+FF58 FF38
+FF59 FF39
+FF5A FF3A
+FF66 .
+FF67 .
+FF68 .
+FF69 .
+FF6A .
+FF6B .
+FF6C .
+FF6D .
+FF6E .
+FF6F .
+FF70 .
+FF71 .
+FF72 .
+FF73 .
+FF74 .
+FF75 .
+FF76 .
+FF77 .
+FF78 .
+FF79 .
+FF7A .
+FF7B .
+FF7C .
+FF7D .
+FF7E .
+FF7F .
+FF80 .
+FF81 .
+FF82 .
+FF83 .
+FF84 .
+FF85 .
+FF86 .
+FF87 .
+FF88 .
+FF89 .
+FF8A .
+FF8B .
+FF8C .
+FF8D .
+FF8E .
+FF8F .
+FF90 .
+FF91 .
+FF92 .
+FF93 .
+FF94 .
+FF95 .
+FF96 .
+FF97 .
+FF98 .
+FF99 .
+FF9A .
+FF9B .
+FF9C .
+FF9D .
+FF9E .
+FF9F .
+FFA0 .
+FFA1 .
+FFA2 .
+FFA3 .
+FFA4 .
+FFA5 .
+FFA6 .
+FFA7 .
+FFA8 .
+FFA9 .
+FFAA .
+FFAB .
+FFAC .
+FFAD .
+FFAE .
+FFAF .
+FFB0 .
+FFB1 .
+FFB2 .
+FFB3 .
+FFB4 .
+FFB5 .
+FFB6 .
+FFB7 .
+FFB8 .
+FFB9 .
+FFBA .
+FFBB .
+FFBC .
+FFBD .
+FFBE .
+FFC2 .
+FFC3 .
+FFC4 .
+FFC5 .
+FFC6 .
+FFC7 .
+FFCA .
+FFCB .
+FFCC .
+FFCD .
+FFCE .
+FFCF .
+FFD2 .
+FFD3 .
+FFD4 .
+FFD5 .
+FFD6 .
+FFD7 .
+FFDA .
+FFDB .
+FFDC .
+10000 .
+10001 .
+10002 .
+10003 .
+10004 .
+10005 .
+10006 .
+10007 .
+10008 .
+10009 .
+1000A .
+1000B .
+1000D .
+1000E .
+1000F .
+10010 .
+10011 .
+10012 .
+10013 .
+10014 .
+10015 .
+10016 .
+10017 .
+10018 .
+10019 .
+1001A .
+1001B .
+1001C .
+1001D .
+1001E .
+1001F .
+10020 .
+10021 .
+10022 .
+10023 .
+10024 .
+10025 .
+10026 .
+10028 .
+10029 .
+1002A .
+1002B .
+1002C .
+1002D .
+1002E .
+1002F .
+10030 .
+10031 .
+10032 .
+10033 .
+10034 .
+10035 .
+10036 .
+10037 .
+10038 .
+10039 .
+1003A .
+1003C .
+1003D .
+1003F .
+10040 .
+10041 .
+10042 .
+10043 .
+10044 .
+10045 .
+10046 .
+10047 .
+10048 .
+10049 .
+1004A .
+1004B .
+1004C .
+1004D .
+10050 .
+10051 .
+10052 .
+10053 .
+10054 .
+10055 .
+10056 .
+10057 .
+10058 .
+10059 .
+1005A .
+1005B .
+1005C .
+1005D .
+10080 .
+10081 .
+10082 .
+10083 .
+10084 .
+10085 .
+10086 .
+10087 .
+10088 .
+10089 .
+1008A .
+1008B .
+1008C .
+1008D .
+1008E .
+1008F .
+10090 .
+10091 .
+10092 .
+10093 .
+10094 .
+10095 .
+10096 .
+10097 .
+10098 .
+10099 .
+1009A .
+1009B .
+1009C .
+1009D .
+1009E .
+1009F .
+100A0 .
+100A1 .
+100A2 .
+100A3 .
+100A4 .
+100A5 .
+100A6 .
+100A7 .
+100A8 .
+100A9 .
+100AA .
+100AB .
+100AC .
+100AD .
+100AE .
+100AF .
+100B0 .
+100B1 .
+100B2 .
+100B3 .
+100B4 .
+100B5 .
+100B6 .
+100B7 .
+100B8 .
+100B9 .
+100BA .
+100BB .
+100BC .
+100BD .
+100BE .
+100BF .
+100C0 .
+100C1 .
+100C2 .
+100C3 .
+100C4 .
+100C5 .
+100C6 .
+100C7 .
+100C8 .
+100C9 .
+100CA .
+100CB .
+100CC .
+100CD .
+100CE .
+100CF .
+100D0 .
+100D1 .
+100D2 .
+100D3 .
+100D4 .
+100D5 .
+100D6 .
+100D7 .
+100D8 .
+100D9 .
+100DA .
+100DB .
+100DC .
+100DD .
+100DE .
+100DF .
+100E0 .
+100E1 .
+100E2 .
+100E3 .
+100E4 .
+100E5 .
+100E6 .
+100E7 .
+100E8 .
+100E9 .
+100EA .
+100EB .
+100EC .
+100ED .
+100EE .
+100EF .
+100F0 .
+100F1 .
+100F2 .
+100F3 .
+100F4 .
+100F5 .
+100F6 .
+100F7 .
+100F8 .
+100F9 .
+100FA .
+10280 .
+10281 .
+10282 .
+10283 .
+10284 .
+10285 .
+10286 .
+10287 .
+10288 .
+10289 .
+1028A .
+1028B .
+1028C .
+1028D .
+1028E .
+1028F .
+10290 .
+10291 .
+10292 .
+10293 .
+10294 .
+10295 .
+10296 .
+10297 .
+10298 .
+10299 .
+1029A .
+1029B .
+1029C .
+102A0 .
+102A1 .
+102A2 .
+102A3 .
+102A4 .
+102A5 .
+102A6 .
+102A7 .
+102A8 .
+102A9 .
+102AA .
+102AB .
+102AC .
+102AD .
+102AE .
+102AF .
+102B0 .
+102B1 .
+102B2 .
+102B3 .
+102B4 .
+102B5 .
+102B6 .
+102B7 .
+102B8 .
+102B9 .
+102BA .
+102BB .
+102BC .
+102BD .
+102BE .
+102BF .
+102C0 .
+102C1 .
+102C2 .
+102C3 .
+102C4 .
+102C5 .
+102C6 .
+102C7 .
+102C8 .
+102C9 .
+102CA .
+102CB .
+102CC .
+102CD .
+102CE .
+102CF .
+102D0 .
+10300 .
+10301 .
+10302 .
+10303 .
+10304 .
+10305 .
+10306 .
+10307 .
+10308 .
+10309 .
+1030A .
+1030B .
+1030C .
+1030D .
+1030E .
+1030F .
+10310 .
+10311 .
+10312 .
+10313 .
+10314 .
+10315 .
+10316 .
+10317 .
+10318 .
+10319 .
+1031A .
+1031B .
+1031C .
+1031D .
+1031E .
+10330 .
+10331 .
+10332 .
+10333 .
+10334 .
+10335 .
+10336 .
+10337 .
+10338 .
+10339 .
+1033A .
+1033B .
+1033C .
+1033D .
+1033E .
+1033F .
+10340 .
+10342 .
+10343 .
+10344 .
+10345 .
+10346 .
+10347 .
+10348 .
+10349 .
+10380 .
+10381 .
+10382 .
+10383 .
+10384 .
+10385 .
+10386 .
+10387 .
+10388 .
+10389 .
+1038A .
+1038B .
+1038C .
+1038D .
+1038E .
+1038F .
+10390 .
+10391 .
+10392 .
+10393 .
+10394 .
+10395 .
+10396 .
+10397 .
+10398 .
+10399 .
+1039A .
+1039B .
+1039C .
+1039D .
+103A0 .
+103A1 .
+103A2 .
+103A3 .
+103A4 .
+103A5 .
+103A6 .
+103A7 .
+103A8 .
+103A9 .
+103AA .
+103AB .
+103AC .
+103AD .
+103AE .
+103AF .
+103B0 .
+103B1 .
+103B2 .
+103B3 .
+103B4 .
+103B5 .
+103B6 .
+103B7 .
+103B8 .
+103B9 .
+103BA .
+103BB .
+103BC .
+103BD .
+103BE .
+103BF .
+103C0 .
+103C1 .
+103C2 .
+103C3 .
+103C8 .
+103C9 .
+103CA .
+103CB .
+103CC .
+103CD .
+103CE .
+103CF .
+10428 10400
+10429 10401
+1042A 10402
+1042B 10403
+1042C 10404
+1042D 10405
+1042E 10406
+1042F 10407
+10430 10408
+10431 10409
+10432 1040A
+10433 1040B
+10434 1040C
+10435 1040D
+10436 1040E
+10437 1040F
+10438 10410
+10439 10411
+1043A 10412
+1043B 10413
+1043C 10414
+1043D 10415
+1043E 10416
+1043F 10417
+10440 10418
+10441 10419
+10442 1041A
+10443 1041B
+10444 1041C
+10445 1041D
+10446 1041E
+10447 1041F
+10448 10420
+10449 10421
+1044A 10422
+1044B 10423
+1044C 10424
+1044D 10425
+1044E 10426
+1044F 10427
+10450 .
+10451 .
+10452 .
+10453 .
+10454 .
+10455 .
+10456 .
+10457 .
+10458 .
+10459 .
+1045A .
+1045B .
+1045C .
+1045D .
+1045E .
+1045F .
+10460 .
+10461 .
+10462 .
+10463 .
+10464 .
+10465 .
+10466 .
+10467 .
+10468 .
+10469 .
+1046A .
+1046B .
+1046C .
+1046D .
+1046E .
+1046F .
+10470 .
+10471 .
+10472 .
+10473 .
+10474 .
+10475 .
+10476 .
+10477 .
+10478 .
+10479 .
+1047A .
+1047B .
+1047C .
+1047D .
+1047E .
+1047F .
+10480 .
+10481 .
+10482 .
+10483 .
+10484 .
+10485 .
+10486 .
+10487 .
+10488 .
+10489 .
+1048A .
+1048B .
+1048C .
+1048D .
+1048E .
+1048F .
+10490 .
+10491 .
+10492 .
+10493 .
+10494 .
+10495 .
+10496 .
+10497 .
+10498 .
+10499 .
+1049A .
+1049B .
+1049C .
+1049D .
+10800 .
+10801 .
+10802 .
+10803 .
+10804 .
+10805 .
+10808 .
+1080A .
+1080B .
+1080C .
+1080D .
+1080E .
+1080F .
+10810 .
+10811 .
+10812 .
+10813 .
+10814 .
+10815 .
+10816 .
+10817 .
+10818 .
+10819 .
+1081A .
+1081B .
+1081C .
+1081D .
+1081E .
+1081F .
+10820 .
+10821 .
+10822 .
+10823 .
+10824 .
+10825 .
+10826 .
+10827 .
+10828 .
+10829 .
+1082A .
+1082B .
+1082C .
+1082D .
+1082E .
+1082F .
+10830 .
+10831 .
+10832 .
+10833 .
+10834 .
+10835 .
+10837 .
+10838 .
+1083C .
+1083F .
+10840 .
+10841 .
+10842 .
+10843 .
+10844 .
+10845 .
+10846 .
+10847 .
+10848 .
+10849 .
+1084A .
+1084B .
+1084C .
+1084D .
+1084E .
+1084F .
+10850 .
+10851 .
+10852 .
+10853 .
+10854 .
+10855 .
+10900 .
+10901 .
+10902 .
+10903 .
+10904 .
+10905 .
+10906 .
+10907 .
+10908 .
+10909 .
+1090A .
+1090B .
+1090C .
+1090D .
+1090E .
+1090F .
+10910 .
+10911 .
+10912 .
+10913 .
+10914 .
+10915 .
+10920 .
+10921 .
+10922 .
+10923 .
+10924 .
+10925 .
+10926 .
+10927 .
+10928 .
+10929 .
+1092A .
+1092B .
+1092C .
+1092D .
+1092E .
+1092F .
+10930 .
+10931 .
+10932 .
+10933 .
+10934 .
+10935 .
+10936 .
+10937 .
+10938 .
+10939 .
+10980 .
+10981 .
+10982 .
+10983 .
+10984 .
+10985 .
+10986 .
+10987 .
+10988 .
+10989 .
+1098A .
+1098B .
+1098C .
+1098D .
+1098E .
+1098F .
+10990 .
+10991 .
+10992 .
+10993 .
+10994 .
+10995 .
+10996 .
+10997 .
+10998 .
+10999 .
+1099A .
+1099B .
+1099C .
+1099D .
+1099E .
+1099F .
+109A0 .
+109A1 .
+109A2 .
+109A3 .
+109A4 .
+109A5 .
+109A6 .
+109A7 .
+109A8 .
+109A9 .
+109AA .
+109AB .
+109AC .
+109AD .
+109AE .
+109AF .
+109B0 .
+109B1 .
+109B2 .
+109B3 .
+109B4 .
+109B5 .
+109B6 .
+109B7 .
+109BE .
+109BF .
+10A00 .
+10A10 .
+10A11 .
+10A12 .
+10A13 .
+10A15 .
+10A16 .
+10A17 .
+10A19 .
+10A1A .
+10A1B .
+10A1C .
+10A1D .
+10A1E .
+10A1F .
+10A20 .
+10A21 .
+10A22 .
+10A23 .
+10A24 .
+10A25 .
+10A26 .
+10A27 .
+10A28 .
+10A29 .
+10A2A .
+10A2B .
+10A2C .
+10A2D .
+10A2E .
+10A2F .
+10A30 .
+10A31 .
+10A32 .
+10A33 .
+10A60 .
+10A61 .
+10A62 .
+10A63 .
+10A64 .
+10A65 .
+10A66 .
+10A67 .
+10A68 .
+10A69 .
+10A6A .
+10A6B .
+10A6C .
+10A6D .
+10A6E .
+10A6F .
+10A70 .
+10A71 .
+10A72 .
+10A73 .
+10A74 .
+10A75 .
+10A76 .
+10A77 .
+10A78 .
+10A79 .
+10A7A .
+10A7B .
+10A7C .
+10B00 .
+10B01 .
+10B02 .
+10B03 .
+10B04 .
+10B05 .
+10B06 .
+10B07 .
+10B08 .
+10B09 .
+10B0A .
+10B0B .
+10B0C .
+10B0D .
+10B0E .
+10B0F .
+10B10 .
+10B11 .
+10B12 .
+10B13 .
+10B14 .
+10B15 .
+10B16 .
+10B17 .
+10B18 .
+10B19 .
+10B1A .
+10B1B .
+10B1C .
+10B1D .
+10B1E .
+10B1F .
+10B20 .
+10B21 .
+10B22 .
+10B23 .
+10B24 .
+10B25 .
+10B26 .
+10B27 .
+10B28 .
+10B29 .
+10B2A .
+10B2B .
+10B2C .
+10B2D .
+10B2E .
+10B2F .
+10B30 .
+10B31 .
+10B32 .
+10B33 .
+10B34 .
+10B35 .
+10B40 .
+10B41 .
+10B42 .
+10B43 .
+10B44 .
+10B45 .
+10B46 .
+10B47 .
+10B48 .
+10B49 .
+10B4A .
+10B4B .
+10B4C .
+10B4D .
+10B4E .
+10B4F .
+10B50 .
+10B51 .
+10B52 .
+10B53 .
+10B54 .
+10B55 .
+10B60 .
+10B61 .
+10B62 .
+10B63 .
+10B64 .
+10B65 .
+10B66 .
+10B67 .
+10B68 .
+10B69 .
+10B6A .
+10B6B .
+10B6C .
+10B6D .
+10B6E .
+10B6F .
+10B70 .
+10B71 .
+10B72 .
+10C00 .
+10C01 .
+10C02 .
+10C03 .
+10C04 .
+10C05 .
+10C06 .
+10C07 .
+10C08 .
+10C09 .
+10C0A .
+10C0B .
+10C0C .
+10C0D .
+10C0E .
+10C0F .
+10C10 .
+10C11 .
+10C12 .
+10C13 .
+10C14 .
+10C15 .
+10C16 .
+10C17 .
+10C18 .
+10C19 .
+10C1A .
+10C1B .
+10C1C .
+10C1D .
+10C1E .
+10C1F .
+10C20 .
+10C21 .
+10C22 .
+10C23 .
+10C24 .
+10C25 .
+10C26 .
+10C27 .
+10C28 .
+10C29 .
+10C2A .
+10C2B .
+10C2C .
+10C2D .
+10C2E .
+10C2F .
+10C30 .
+10C31 .
+10C32 .
+10C33 .
+10C34 .
+10C35 .
+10C36 .
+10C37 .
+10C38 .
+10C39 .
+10C3A .
+10C3B .
+10C3C .
+10C3D .
+10C3E .
+10C3F .
+10C40 .
+10C41 .
+10C42 .
+10C43 .
+10C44 .
+10C45 .
+10C46 .
+10C47 .
+10C48 .
+11003 .
+11004 .
+11005 .
+11006 .
+11007 .
+11008 .
+11009 .
+1100A .
+1100B .
+1100C .
+1100D .
+1100E .
+1100F .
+11010 .
+11011 .
+11012 .
+11013 .
+11014 .
+11015 .
+11016 .
+11017 .
+11018 .
+11019 .
+1101A .
+1101B .
+1101C .
+1101D .
+1101E .
+1101F .
+11020 .
+11021 .
+11022 .
+11023 .
+11024 .
+11025 .
+11026 .
+11027 .
+11028 .
+11029 .
+1102A .
+1102B .
+1102C .
+1102D .
+1102E .
+1102F .
+11030 .
+11031 .
+11032 .
+11033 .
+11034 .
+11035 .
+11036 .
+11037 .
+11083 .
+11084 .
+11085 .
+11086 .
+11087 .
+11088 .
+11089 .
+1108A .
+1108B .
+1108C .
+1108D .
+1108E .
+1108F .
+11090 .
+11091 .
+11092 .
+11093 .
+11094 .
+11095 .
+11096 .
+11097 .
+11098 .
+11099 .
+1109A .
+1109B .
+1109C .
+1109D .
+1109E .
+1109F .
+110A0 .
+110A1 .
+110A2 .
+110A3 .
+110A4 .
+110A5 .
+110A6 .
+110A7 .
+110A8 .
+110A9 .
+110AA .
+110AB .
+110AC .
+110AD .
+110AE .
+110AF .
+110D0 .
+110D1 .
+110D2 .
+110D3 .
+110D4 .
+110D5 .
+110D6 .
+110D7 .
+110D8 .
+110D9 .
+110DA .
+110DB .
+110DC .
+110DD .
+110DE .
+110DF .
+110E0 .
+110E1 .
+110E2 .
+110E3 .
+110E4 .
+110E5 .
+110E6 .
+110E7 .
+110E8 .
+11103 .
+11104 .
+11105 .
+11106 .
+11107 .
+11108 .
+11109 .
+1110A .
+1110B .
+1110C .
+1110D .
+1110E .
+1110F .
+11110 .
+11111 .
+11112 .
+11113 .
+11114 .
+11115 .
+11116 .
+11117 .
+11118 .
+11119 .
+1111A .
+1111B .
+1111C .
+1111D .
+1111E .
+1111F .
+11120 .
+11121 .
+11122 .
+11123 .
+11124 .
+11125 .
+11126 .
+11183 .
+11184 .
+11185 .
+11186 .
+11187 .
+11188 .
+11189 .
+1118A .
+1118B .
+1118C .
+1118D .
+1118E .
+1118F .
+11190 .
+11191 .
+11192 .
+11193 .
+11194 .
+11195 .
+11196 .
+11197 .
+11198 .
+11199 .
+1119A .
+1119B .
+1119C .
+1119D .
+1119E .
+1119F .
+111A0 .
+111A1 .
+111A2 .
+111A3 .
+111A4 .
+111A5 .
+111A6 .
+111A7 .
+111A8 .
+111A9 .
+111AA .
+111AB .
+111AC .
+111AD .
+111AE .
+111AF .
+111B0 .
+111B1 .
+111B2 .
+111C1 .
+111C2 .
+111C3 .
+111C4 .
+11680 .
+11681 .
+11682 .
+11683 .
+11684 .
+11685 .
+11686 .
+11687 .
+11688 .
+11689 .
+1168A .
+1168B .
+1168C .
+1168D .
+1168E .
+1168F .
+11690 .
+11691 .
+11692 .
+11693 .
+11694 .
+11695 .
+11696 .
+11697 .
+11698 .
+11699 .
+1169A .
+1169B .
+1169C .
+1169D .
+1169E .
+1169F .
+116A0 .
+116A1 .
+116A2 .
+116A3 .
+116A4 .
+116A5 .
+116A6 .
+116A7 .
+116A8 .
+116A9 .
+116AA .
+12000 .
+12001 .
+12002 .
+12003 .
+12004 .
+12005 .
+12006 .
+12007 .
+12008 .
+12009 .
+1200A .
+1200B .
+1200C .
+1200D .
+1200E .
+1200F .
+12010 .
+12011 .
+12012 .
+12013 .
+12014 .
+12015 .
+12016 .
+12017 .
+12018 .
+12019 .
+1201A .
+1201B .
+1201C .
+1201D .
+1201E .
+1201F .
+12020 .
+12021 .
+12022 .
+12023 .
+12024 .
+12025 .
+12026 .
+12027 .
+12028 .
+12029 .
+1202A .
+1202B .
+1202C .
+1202D .
+1202E .
+1202F .
+12030 .
+12031 .
+12032 .
+12033 .
+12034 .
+12035 .
+12036 .
+12037 .
+12038 .
+12039 .
+1203A .
+1203B .
+1203C .
+1203D .
+1203E .
+1203F .
+12040 .
+12041 .
+12042 .
+12043 .
+12044 .
+12045 .
+12046 .
+12047 .
+12048 .
+12049 .
+1204A .
+1204B .
+1204C .
+1204D .
+1204E .
+1204F .
+12050 .
+12051 .
+12052 .
+12053 .
+12054 .
+12055 .
+12056 .
+12057 .
+12058 .
+12059 .
+1205A .
+1205B .
+1205C .
+1205D .
+1205E .
+1205F .
+12060 .
+12061 .
+12062 .
+12063 .
+12064 .
+12065 .
+12066 .
+12067 .
+12068 .
+12069 .
+1206A .
+1206B .
+1206C .
+1206D .
+1206E .
+1206F .
+12070 .
+12071 .
+12072 .
+12073 .
+12074 .
+12075 .
+12076 .
+12077 .
+12078 .
+12079 .
+1207A .
+1207B .
+1207C .
+1207D .
+1207E .
+1207F .
+12080 .
+12081 .
+12082 .
+12083 .
+12084 .
+12085 .
+12086 .
+12087 .
+12088 .
+12089 .
+1208A .
+1208B .
+1208C .
+1208D .
+1208E .
+1208F .
+12090 .
+12091 .
+12092 .
+12093 .
+12094 .
+12095 .
+12096 .
+12097 .
+12098 .
+12099 .
+1209A .
+1209B .
+1209C .
+1209D .
+1209E .
+1209F .
+120A0 .
+120A1 .
+120A2 .
+120A3 .
+120A4 .
+120A5 .
+120A6 .
+120A7 .
+120A8 .
+120A9 .
+120AA .
+120AB .
+120AC .
+120AD .
+120AE .
+120AF .
+120B0 .
+120B1 .
+120B2 .
+120B3 .
+120B4 .
+120B5 .
+120B6 .
+120B7 .
+120B8 .
+120B9 .
+120BA .
+120BB .
+120BC .
+120BD .
+120BE .
+120BF .
+120C0 .
+120C1 .
+120C2 .
+120C3 .
+120C4 .
+120C5 .
+120C6 .
+120C7 .
+120C8 .
+120C9 .
+120CA .
+120CB .
+120CC .
+120CD .
+120CE .
+120CF .
+120D0 .
+120D1 .
+120D2 .
+120D3 .
+120D4 .
+120D5 .
+120D6 .
+120D7 .
+120D8 .
+120D9 .
+120DA .
+120DB .
+120DC .
+120DD .
+120DE .
+120DF .
+120E0 .
+120E1 .
+120E2 .
+120E3 .
+120E4 .
+120E5 .
+120E6 .
+120E7 .
+120E8 .
+120E9 .
+120EA .
+120EB .
+120EC .
+120ED .
+120EE .
+120EF .
+120F0 .
+120F1 .
+120F2 .
+120F3 .
+120F4 .
+120F5 .
+120F6 .
+120F7 .
+120F8 .
+120F9 .
+120FA .
+120FB .
+120FC .
+120FD .
+120FE .
+120FF .
+12100 .
+12101 .
+12102 .
+12103 .
+12104 .
+12105 .
+12106 .
+12107 .
+12108 .
+12109 .
+1210A .
+1210B .
+1210C .
+1210D .
+1210E .
+1210F .
+12110 .
+12111 .
+12112 .
+12113 .
+12114 .
+12115 .
+12116 .
+12117 .
+12118 .
+12119 .
+1211A .
+1211B .
+1211C .
+1211D .
+1211E .
+1211F .
+12120 .
+12121 .
+12122 .
+12123 .
+12124 .
+12125 .
+12126 .
+12127 .
+12128 .
+12129 .
+1212A .
+1212B .
+1212C .
+1212D .
+1212E .
+1212F .
+12130 .
+12131 .
+12132 .
+12133 .
+12134 .
+12135 .
+12136 .
+12137 .
+12138 .
+12139 .
+1213A .
+1213B .
+1213C .
+1213D .
+1213E .
+1213F .
+12140 .
+12141 .
+12142 .
+12143 .
+12144 .
+12145 .
+12146 .
+12147 .
+12148 .
+12149 .
+1214A .
+1214B .
+1214C .
+1214D .
+1214E .
+1214F .
+12150 .
+12151 .
+12152 .
+12153 .
+12154 .
+12155 .
+12156 .
+12157 .
+12158 .
+12159 .
+1215A .
+1215B .
+1215C .
+1215D .
+1215E .
+1215F .
+12160 .
+12161 .
+12162 .
+12163 .
+12164 .
+12165 .
+12166 .
+12167 .
+12168 .
+12169 .
+1216A .
+1216B .
+1216C .
+1216D .
+1216E .
+1216F .
+12170 .
+12171 .
+12172 .
+12173 .
+12174 .
+12175 .
+12176 .
+12177 .
+12178 .
+12179 .
+1217A .
+1217B .
+1217C .
+1217D .
+1217E .
+1217F .
+12180 .
+12181 .
+12182 .
+12183 .
+12184 .
+12185 .
+12186 .
+12187 .
+12188 .
+12189 .
+1218A .
+1218B .
+1218C .
+1218D .
+1218E .
+1218F .
+12190 .
+12191 .
+12192 .
+12193 .
+12194 .
+12195 .
+12196 .
+12197 .
+12198 .
+12199 .
+1219A .
+1219B .
+1219C .
+1219D .
+1219E .
+1219F .
+121A0 .
+121A1 .
+121A2 .
+121A3 .
+121A4 .
+121A5 .
+121A6 .
+121A7 .
+121A8 .
+121A9 .
+121AA .
+121AB .
+121AC .
+121AD .
+121AE .
+121AF .
+121B0 .
+121B1 .
+121B2 .
+121B3 .
+121B4 .
+121B5 .
+121B6 .
+121B7 .
+121B8 .
+121B9 .
+121BA .
+121BB .
+121BC .
+121BD .
+121BE .
+121BF .
+121C0 .
+121C1 .
+121C2 .
+121C3 .
+121C4 .
+121C5 .
+121C6 .
+121C7 .
+121C8 .
+121C9 .
+121CA .
+121CB .
+121CC .
+121CD .
+121CE .
+121CF .
+121D0 .
+121D1 .
+121D2 .
+121D3 .
+121D4 .
+121D5 .
+121D6 .
+121D7 .
+121D8 .
+121D9 .
+121DA .
+121DB .
+121DC .
+121DD .
+121DE .
+121DF .
+121E0 .
+121E1 .
+121E2 .
+121E3 .
+121E4 .
+121E5 .
+121E6 .
+121E7 .
+121E8 .
+121E9 .
+121EA .
+121EB .
+121EC .
+121ED .
+121EE .
+121EF .
+121F0 .
+121F1 .
+121F2 .
+121F3 .
+121F4 .
+121F5 .
+121F6 .
+121F7 .
+121F8 .
+121F9 .
+121FA .
+121FB .
+121FC .
+121FD .
+121FE .
+121FF .
+12200 .
+12201 .
+12202 .
+12203 .
+12204 .
+12205 .
+12206 .
+12207 .
+12208 .
+12209 .
+1220A .
+1220B .
+1220C .
+1220D .
+1220E .
+1220F .
+12210 .
+12211 .
+12212 .
+12213 .
+12214 .
+12215 .
+12216 .
+12217 .
+12218 .
+12219 .
+1221A .
+1221B .
+1221C .
+1221D .
+1221E .
+1221F .
+12220 .
+12221 .
+12222 .
+12223 .
+12224 .
+12225 .
+12226 .
+12227 .
+12228 .
+12229 .
+1222A .
+1222B .
+1222C .
+1222D .
+1222E .
+1222F .
+12230 .
+12231 .
+12232 .
+12233 .
+12234 .
+12235 .
+12236 .
+12237 .
+12238 .
+12239 .
+1223A .
+1223B .
+1223C .
+1223D .
+1223E .
+1223F .
+12240 .
+12241 .
+12242 .
+12243 .
+12244 .
+12245 .
+12246 .
+12247 .
+12248 .
+12249 .
+1224A .
+1224B .
+1224C .
+1224D .
+1224E .
+1224F .
+12250 .
+12251 .
+12252 .
+12253 .
+12254 .
+12255 .
+12256 .
+12257 .
+12258 .
+12259 .
+1225A .
+1225B .
+1225C .
+1225D .
+1225E .
+1225F .
+12260 .
+12261 .
+12262 .
+12263 .
+12264 .
+12265 .
+12266 .
+12267 .
+12268 .
+12269 .
+1226A .
+1226B .
+1226C .
+1226D .
+1226E .
+1226F .
+12270 .
+12271 .
+12272 .
+12273 .
+12274 .
+12275 .
+12276 .
+12277 .
+12278 .
+12279 .
+1227A .
+1227B .
+1227C .
+1227D .
+1227E .
+1227F .
+12280 .
+12281 .
+12282 .
+12283 .
+12284 .
+12285 .
+12286 .
+12287 .
+12288 .
+12289 .
+1228A .
+1228B .
+1228C .
+1228D .
+1228E .
+1228F .
+12290 .
+12291 .
+12292 .
+12293 .
+12294 .
+12295 .
+12296 .
+12297 .
+12298 .
+12299 .
+1229A .
+1229B .
+1229C .
+1229D .
+1229E .
+1229F .
+122A0 .
+122A1 .
+122A2 .
+122A3 .
+122A4 .
+122A5 .
+122A6 .
+122A7 .
+122A8 .
+122A9 .
+122AA .
+122AB .
+122AC .
+122AD .
+122AE .
+122AF .
+122B0 .
+122B1 .
+122B2 .
+122B3 .
+122B4 .
+122B5 .
+122B6 .
+122B7 .
+122B8 .
+122B9 .
+122BA .
+122BB .
+122BC .
+122BD .
+122BE .
+122BF .
+122C0 .
+122C1 .
+122C2 .
+122C3 .
+122C4 .
+122C5 .
+122C6 .
+122C7 .
+122C8 .
+122C9 .
+122CA .
+122CB .
+122CC .
+122CD .
+122CE .
+122CF .
+122D0 .
+122D1 .
+122D2 .
+122D3 .
+122D4 .
+122D5 .
+122D6 .
+122D7 .
+122D8 .
+122D9 .
+122DA .
+122DB .
+122DC .
+122DD .
+122DE .
+122DF .
+122E0 .
+122E1 .
+122E2 .
+122E3 .
+122E4 .
+122E5 .
+122E6 .
+122E7 .
+122E8 .
+122E9 .
+122EA .
+122EB .
+122EC .
+122ED .
+122EE .
+122EF .
+122F0 .
+122F1 .
+122F2 .
+122F3 .
+122F4 .
+122F5 .
+122F6 .
+122F7 .
+122F8 .
+122F9 .
+122FA .
+122FB .
+122FC .
+122FD .
+122FE .
+122FF .
+12300 .
+12301 .
+12302 .
+12303 .
+12304 .
+12305 .
+12306 .
+12307 .
+12308 .
+12309 .
+1230A .
+1230B .
+1230C .
+1230D .
+1230E .
+1230F .
+12310 .
+12311 .
+12312 .
+12313 .
+12314 .
+12315 .
+12316 .
+12317 .
+12318 .
+12319 .
+1231A .
+1231B .
+1231C .
+1231D .
+1231E .
+1231F .
+12320 .
+12321 .
+12322 .
+12323 .
+12324 .
+12325 .
+12326 .
+12327 .
+12328 .
+12329 .
+1232A .
+1232B .
+1232C .
+1232D .
+1232E .
+1232F .
+12330 .
+12331 .
+12332 .
+12333 .
+12334 .
+12335 .
+12336 .
+12337 .
+12338 .
+12339 .
+1233A .
+1233B .
+1233C .
+1233D .
+1233E .
+1233F .
+12340 .
+12341 .
+12342 .
+12343 .
+12344 .
+12345 .
+12346 .
+12347 .
+12348 .
+12349 .
+1234A .
+1234B .
+1234C .
+1234D .
+1234E .
+1234F .
+12350 .
+12351 .
+12352 .
+12353 .
+12354 .
+12355 .
+12356 .
+12357 .
+12358 .
+12359 .
+1235A .
+1235B .
+1235C .
+1235D .
+1235E .
+1235F .
+12360 .
+12361 .
+12362 .
+12363 .
+12364 .
+12365 .
+12366 .
+12367 .
+12368 .
+12369 .
+1236A .
+1236B .
+1236C .
+1236D .
+1236E .
+13000 .
+13001 .
+13002 .
+13003 .
+13004 .
+13005 .
+13006 .
+13007 .
+13008 .
+13009 .
+1300A .
+1300B .
+1300C .
+1300D .
+1300E .
+1300F .
+13010 .
+13011 .
+13012 .
+13013 .
+13014 .
+13015 .
+13016 .
+13017 .
+13018 .
+13019 .
+1301A .
+1301B .
+1301C .
+1301D .
+1301E .
+1301F .
+13020 .
+13021 .
+13022 .
+13023 .
+13024 .
+13025 .
+13026 .
+13027 .
+13028 .
+13029 .
+1302A .
+1302B .
+1302C .
+1302D .
+1302E .
+1302F .
+13030 .
+13031 .
+13032 .
+13033 .
+13034 .
+13035 .
+13036 .
+13037 .
+13038 .
+13039 .
+1303A .
+1303B .
+1303C .
+1303D .
+1303E .
+1303F .
+13040 .
+13041 .
+13042 .
+13043 .
+13044 .
+13045 .
+13046 .
+13047 .
+13048 .
+13049 .
+1304A .
+1304B .
+1304C .
+1304D .
+1304E .
+1304F .
+13050 .
+13051 .
+13052 .
+13053 .
+13054 .
+13055 .
+13056 .
+13057 .
+13058 .
+13059 .
+1305A .
+1305B .
+1305C .
+1305D .
+1305E .
+1305F .
+13060 .
+13061 .
+13062 .
+13063 .
+13064 .
+13065 .
+13066 .
+13067 .
+13068 .
+13069 .
+1306A .
+1306B .
+1306C .
+1306D .
+1306E .
+1306F .
+13070 .
+13071 .
+13072 .
+13073 .
+13074 .
+13075 .
+13076 .
+13077 .
+13078 .
+13079 .
+1307A .
+1307B .
+1307C .
+1307D .
+1307E .
+1307F .
+13080 .
+13081 .
+13082 .
+13083 .
+13084 .
+13085 .
+13086 .
+13087 .
+13088 .
+13089 .
+1308A .
+1308B .
+1308C .
+1308D .
+1308E .
+1308F .
+13090 .
+13091 .
+13092 .
+13093 .
+13094 .
+13095 .
+13096 .
+13097 .
+13098 .
+13099 .
+1309A .
+1309B .
+1309C .
+1309D .
+1309E .
+1309F .
+130A0 .
+130A1 .
+130A2 .
+130A3 .
+130A4 .
+130A5 .
+130A6 .
+130A7 .
+130A8 .
+130A9 .
+130AA .
+130AB .
+130AC .
+130AD .
+130AE .
+130AF .
+130B0 .
+130B1 .
+130B2 .
+130B3 .
+130B4 .
+130B5 .
+130B6 .
+130B7 .
+130B8 .
+130B9 .
+130BA .
+130BB .
+130BC .
+130BD .
+130BE .
+130BF .
+130C0 .
+130C1 .
+130C2 .
+130C3 .
+130C4 .
+130C5 .
+130C6 .
+130C7 .
+130C8 .
+130C9 .
+130CA .
+130CB .
+130CC .
+130CD .
+130CE .
+130CF .
+130D0 .
+130D1 .
+130D2 .
+130D3 .
+130D4 .
+130D5 .
+130D6 .
+130D7 .
+130D8 .
+130D9 .
+130DA .
+130DB .
+130DC .
+130DD .
+130DE .
+130DF .
+130E0 .
+130E1 .
+130E2 .
+130E3 .
+130E4 .
+130E5 .
+130E6 .
+130E7 .
+130E8 .
+130E9 .
+130EA .
+130EB .
+130EC .
+130ED .
+130EE .
+130EF .
+130F0 .
+130F1 .
+130F2 .
+130F3 .
+130F4 .
+130F5 .
+130F6 .
+130F7 .
+130F8 .
+130F9 .
+130FA .
+130FB .
+130FC .
+130FD .
+130FE .
+130FF .
+13100 .
+13101 .
+13102 .
+13103 .
+13104 .
+13105 .
+13106 .
+13107 .
+13108 .
+13109 .
+1310A .
+1310B .
+1310C .
+1310D .
+1310E .
+1310F .
+13110 .
+13111 .
+13112 .
+13113 .
+13114 .
+13115 .
+13116 .
+13117 .
+13118 .
+13119 .
+1311A .
+1311B .
+1311C .
+1311D .
+1311E .
+1311F .
+13120 .
+13121 .
+13122 .
+13123 .
+13124 .
+13125 .
+13126 .
+13127 .
+13128 .
+13129 .
+1312A .
+1312B .
+1312C .
+1312D .
+1312E .
+1312F .
+13130 .
+13131 .
+13132 .
+13133 .
+13134 .
+13135 .
+13136 .
+13137 .
+13138 .
+13139 .
+1313A .
+1313B .
+1313C .
+1313D .
+1313E .
+1313F .
+13140 .
+13141 .
+13142 .
+13143 .
+13144 .
+13145 .
+13146 .
+13147 .
+13148 .
+13149 .
+1314A .
+1314B .
+1314C .
+1314D .
+1314E .
+1314F .
+13150 .
+13151 .
+13152 .
+13153 .
+13154 .
+13155 .
+13156 .
+13157 .
+13158 .
+13159 .
+1315A .
+1315B .
+1315C .
+1315D .
+1315E .
+1315F .
+13160 .
+13161 .
+13162 .
+13163 .
+13164 .
+13165 .
+13166 .
+13167 .
+13168 .
+13169 .
+1316A .
+1316B .
+1316C .
+1316D .
+1316E .
+1316F .
+13170 .
+13171 .
+13172 .
+13173 .
+13174 .
+13175 .
+13176 .
+13177 .
+13178 .
+13179 .
+1317A .
+1317B .
+1317C .
+1317D .
+1317E .
+1317F .
+13180 .
+13181 .
+13182 .
+13183 .
+13184 .
+13185 .
+13186 .
+13187 .
+13188 .
+13189 .
+1318A .
+1318B .
+1318C .
+1318D .
+1318E .
+1318F .
+13190 .
+13191 .
+13192 .
+13193 .
+13194 .
+13195 .
+13196 .
+13197 .
+13198 .
+13199 .
+1319A .
+1319B .
+1319C .
+1319D .
+1319E .
+1319F .
+131A0 .
+131A1 .
+131A2 .
+131A3 .
+131A4 .
+131A5 .
+131A6 .
+131A7 .
+131A8 .
+131A9 .
+131AA .
+131AB .
+131AC .
+131AD .
+131AE .
+131AF .
+131B0 .
+131B1 .
+131B2 .
+131B3 .
+131B4 .
+131B5 .
+131B6 .
+131B7 .
+131B8 .
+131B9 .
+131BA .
+131BB .
+131BC .
+131BD .
+131BE .
+131BF .
+131C0 .
+131C1 .
+131C2 .
+131C3 .
+131C4 .
+131C5 .
+131C6 .
+131C7 .
+131C8 .
+131C9 .
+131CA .
+131CB .
+131CC .
+131CD .
+131CE .
+131CF .
+131D0 .
+131D1 .
+131D2 .
+131D3 .
+131D4 .
+131D5 .
+131D6 .
+131D7 .
+131D8 .
+131D9 .
+131DA .
+131DB .
+131DC .
+131DD .
+131DE .
+131DF .
+131E0 .
+131E1 .
+131E2 .
+131E3 .
+131E4 .
+131E5 .
+131E6 .
+131E7 .
+131E8 .
+131E9 .
+131EA .
+131EB .
+131EC .
+131ED .
+131EE .
+131EF .
+131F0 .
+131F1 .
+131F2 .
+131F3 .
+131F4 .
+131F5 .
+131F6 .
+131F7 .
+131F8 .
+131F9 .
+131FA .
+131FB .
+131FC .
+131FD .
+131FE .
+131FF .
+13200 .
+13201 .
+13202 .
+13203 .
+13204 .
+13205 .
+13206 .
+13207 .
+13208 .
+13209 .
+1320A .
+1320B .
+1320C .
+1320D .
+1320E .
+1320F .
+13210 .
+13211 .
+13212 .
+13213 .
+13214 .
+13215 .
+13216 .
+13217 .
+13218 .
+13219 .
+1321A .
+1321B .
+1321C .
+1321D .
+1321E .
+1321F .
+13220 .
+13221 .
+13222 .
+13223 .
+13224 .
+13225 .
+13226 .
+13227 .
+13228 .
+13229 .
+1322A .
+1322B .
+1322C .
+1322D .
+1322E .
+1322F .
+13230 .
+13231 .
+13232 .
+13233 .
+13234 .
+13235 .
+13236 .
+13237 .
+13238 .
+13239 .
+1323A .
+1323B .
+1323C .
+1323D .
+1323E .
+1323F .
+13240 .
+13241 .
+13242 .
+13243 .
+13244 .
+13245 .
+13246 .
+13247 .
+13248 .
+13249 .
+1324A .
+1324B .
+1324C .
+1324D .
+1324E .
+1324F .
+13250 .
+13251 .
+13252 .
+13253 .
+13254 .
+13255 .
+13256 .
+13257 .
+13258 .
+13259 .
+1325A .
+1325B .
+1325C .
+1325D .
+1325E .
+1325F .
+13260 .
+13261 .
+13262 .
+13263 .
+13264 .
+13265 .
+13266 .
+13267 .
+13268 .
+13269 .
+1326A .
+1326B .
+1326C .
+1326D .
+1326E .
+1326F .
+13270 .
+13271 .
+13272 .
+13273 .
+13274 .
+13275 .
+13276 .
+13277 .
+13278 .
+13279 .
+1327A .
+1327B .
+1327C .
+1327D .
+1327E .
+1327F .
+13280 .
+13281 .
+13282 .
+13283 .
+13284 .
+13285 .
+13286 .
+13287 .
+13288 .
+13289 .
+1328A .
+1328B .
+1328C .
+1328D .
+1328E .
+1328F .
+13290 .
+13291 .
+13292 .
+13293 .
+13294 .
+13295 .
+13296 .
+13297 .
+13298 .
+13299 .
+1329A .
+1329B .
+1329C .
+1329D .
+1329E .
+1329F .
+132A0 .
+132A1 .
+132A2 .
+132A3 .
+132A4 .
+132A5 .
+132A6 .
+132A7 .
+132A8 .
+132A9 .
+132AA .
+132AB .
+132AC .
+132AD .
+132AE .
+132AF .
+132B0 .
+132B1 .
+132B2 .
+132B3 .
+132B4 .
+132B5 .
+132B6 .
+132B7 .
+132B8 .
+132B9 .
+132BA .
+132BB .
+132BC .
+132BD .
+132BE .
+132BF .
+132C0 .
+132C1 .
+132C2 .
+132C3 .
+132C4 .
+132C5 .
+132C6 .
+132C7 .
+132C8 .
+132C9 .
+132CA .
+132CB .
+132CC .
+132CD .
+132CE .
+132CF .
+132D0 .
+132D1 .
+132D2 .
+132D3 .
+132D4 .
+132D5 .
+132D6 .
+132D7 .
+132D8 .
+132D9 .
+132DA .
+132DB .
+132DC .
+132DD .
+132DE .
+132DF .
+132E0 .
+132E1 .
+132E2 .
+132E3 .
+132E4 .
+132E5 .
+132E6 .
+132E7 .
+132E8 .
+132E9 .
+132EA .
+132EB .
+132EC .
+132ED .
+132EE .
+132EF .
+132F0 .
+132F1 .
+132F2 .
+132F3 .
+132F4 .
+132F5 .
+132F6 .
+132F7 .
+132F8 .
+132F9 .
+132FA .
+132FB .
+132FC .
+132FD .
+132FE .
+132FF .
+13300 .
+13301 .
+13302 .
+13303 .
+13304 .
+13305 .
+13306 .
+13307 .
+13308 .
+13309 .
+1330A .
+1330B .
+1330C .
+1330D .
+1330E .
+1330F .
+13310 .
+13311 .
+13312 .
+13313 .
+13314 .
+13315 .
+13316 .
+13317 .
+13318 .
+13319 .
+1331A .
+1331B .
+1331C .
+1331D .
+1331E .
+1331F .
+13320 .
+13321 .
+13322 .
+13323 .
+13324 .
+13325 .
+13326 .
+13327 .
+13328 .
+13329 .
+1332A .
+1332B .
+1332C .
+1332D .
+1332E .
+1332F .
+13330 .
+13331 .
+13332 .
+13333 .
+13334 .
+13335 .
+13336 .
+13337 .
+13338 .
+13339 .
+1333A .
+1333B .
+1333C .
+1333D .
+1333E .
+1333F .
+13340 .
+13341 .
+13342 .
+13343 .
+13344 .
+13345 .
+13346 .
+13347 .
+13348 .
+13349 .
+1334A .
+1334B .
+1334C .
+1334D .
+1334E .
+1334F .
+13350 .
+13351 .
+13352 .
+13353 .
+13354 .
+13355 .
+13356 .
+13357 .
+13358 .
+13359 .
+1335A .
+1335B .
+1335C .
+1335D .
+1335E .
+1335F .
+13360 .
+13361 .
+13362 .
+13363 .
+13364 .
+13365 .
+13366 .
+13367 .
+13368 .
+13369 .
+1336A .
+1336B .
+1336C .
+1336D .
+1336E .
+1336F .
+13370 .
+13371 .
+13372 .
+13373 .
+13374 .
+13375 .
+13376 .
+13377 .
+13378 .
+13379 .
+1337A .
+1337B .
+1337C .
+1337D .
+1337E .
+1337F .
+13380 .
+13381 .
+13382 .
+13383 .
+13384 .
+13385 .
+13386 .
+13387 .
+13388 .
+13389 .
+1338A .
+1338B .
+1338C .
+1338D .
+1338E .
+1338F .
+13390 .
+13391 .
+13392 .
+13393 .
+13394 .
+13395 .
+13396 .
+13397 .
+13398 .
+13399 .
+1339A .
+1339B .
+1339C .
+1339D .
+1339E .
+1339F .
+133A0 .
+133A1 .
+133A2 .
+133A3 .
+133A4 .
+133A5 .
+133A6 .
+133A7 .
+133A8 .
+133A9 .
+133AA .
+133AB .
+133AC .
+133AD .
+133AE .
+133AF .
+133B0 .
+133B1 .
+133B2 .
+133B3 .
+133B4 .
+133B5 .
+133B6 .
+133B7 .
+133B8 .
+133B9 .
+133BA .
+133BB .
+133BC .
+133BD .
+133BE .
+133BF .
+133C0 .
+133C1 .
+133C2 .
+133C3 .
+133C4 .
+133C5 .
+133C6 .
+133C7 .
+133C8 .
+133C9 .
+133CA .
+133CB .
+133CC .
+133CD .
+133CE .
+133CF .
+133D0 .
+133D1 .
+133D2 .
+133D3 .
+133D4 .
+133D5 .
+133D6 .
+133D7 .
+133D8 .
+133D9 .
+133DA .
+133DB .
+133DC .
+133DD .
+133DE .
+133DF .
+133E0 .
+133E1 .
+133E2 .
+133E3 .
+133E4 .
+133E5 .
+133E6 .
+133E7 .
+133E8 .
+133E9 .
+133EA .
+133EB .
+133EC .
+133ED .
+133EE .
+133EF .
+133F0 .
+133F1 .
+133F2 .
+133F3 .
+133F4 .
+133F5 .
+133F6 .
+133F7 .
+133F8 .
+133F9 .
+133FA .
+133FB .
+133FC .
+133FD .
+133FE .
+133FF .
+13400 .
+13401 .
+13402 .
+13403 .
+13404 .
+13405 .
+13406 .
+13407 .
+13408 .
+13409 .
+1340A .
+1340B .
+1340C .
+1340D .
+1340E .
+1340F .
+13410 .
+13411 .
+13412 .
+13413 .
+13414 .
+13415 .
+13416 .
+13417 .
+13418 .
+13419 .
+1341A .
+1341B .
+1341C .
+1341D .
+1341E .
+1341F .
+13420 .
+13421 .
+13422 .
+13423 .
+13424 .
+13425 .
+13426 .
+13427 .
+13428 .
+13429 .
+1342A .
+1342B .
+1342C .
+1342D .
+1342E .
+16800 .
+16801 .
+16802 .
+16803 .
+16804 .
+16805 .
+16806 .
+16807 .
+16808 .
+16809 .
+1680A .
+1680B .
+1680C .
+1680D .
+1680E .
+1680F .
+16810 .
+16811 .
+16812 .
+16813 .
+16814 .
+16815 .
+16816 .
+16817 .
+16818 .
+16819 .
+1681A .
+1681B .
+1681C .
+1681D .
+1681E .
+1681F .
+16820 .
+16821 .
+16822 .
+16823 .
+16824 .
+16825 .
+16826 .
+16827 .
+16828 .
+16829 .
+1682A .
+1682B .
+1682C .
+1682D .
+1682E .
+1682F .
+16830 .
+16831 .
+16832 .
+16833 .
+16834 .
+16835 .
+16836 .
+16837 .
+16838 .
+16839 .
+1683A .
+1683B .
+1683C .
+1683D .
+1683E .
+1683F .
+16840 .
+16841 .
+16842 .
+16843 .
+16844 .
+16845 .
+16846 .
+16847 .
+16848 .
+16849 .
+1684A .
+1684B .
+1684C .
+1684D .
+1684E .
+1684F .
+16850 .
+16851 .
+16852 .
+16853 .
+16854 .
+16855 .
+16856 .
+16857 .
+16858 .
+16859 .
+1685A .
+1685B .
+1685C .
+1685D .
+1685E .
+1685F .
+16860 .
+16861 .
+16862 .
+16863 .
+16864 .
+16865 .
+16866 .
+16867 .
+16868 .
+16869 .
+1686A .
+1686B .
+1686C .
+1686D .
+1686E .
+1686F .
+16870 .
+16871 .
+16872 .
+16873 .
+16874 .
+16875 .
+16876 .
+16877 .
+16878 .
+16879 .
+1687A .
+1687B .
+1687C .
+1687D .
+1687E .
+1687F .
+16880 .
+16881 .
+16882 .
+16883 .
+16884 .
+16885 .
+16886 .
+16887 .
+16888 .
+16889 .
+1688A .
+1688B .
+1688C .
+1688D .
+1688E .
+1688F .
+16890 .
+16891 .
+16892 .
+16893 .
+16894 .
+16895 .
+16896 .
+16897 .
+16898 .
+16899 .
+1689A .
+1689B .
+1689C .
+1689D .
+1689E .
+1689F .
+168A0 .
+168A1 .
+168A2 .
+168A3 .
+168A4 .
+168A5 .
+168A6 .
+168A7 .
+168A8 .
+168A9 .
+168AA .
+168AB .
+168AC .
+168AD .
+168AE .
+168AF .
+168B0 .
+168B1 .
+168B2 .
+168B3 .
+168B4 .
+168B5 .
+168B6 .
+168B7 .
+168B8 .
+168B9 .
+168BA .
+168BB .
+168BC .
+168BD .
+168BE .
+168BF .
+168C0 .
+168C1 .
+168C2 .
+168C3 .
+168C4 .
+168C5 .
+168C6 .
+168C7 .
+168C8 .
+168C9 .
+168CA .
+168CB .
+168CC .
+168CD .
+168CE .
+168CF .
+168D0 .
+168D1 .
+168D2 .
+168D3 .
+168D4 .
+168D5 .
+168D6 .
+168D7 .
+168D8 .
+168D9 .
+168DA .
+168DB .
+168DC .
+168DD .
+168DE .
+168DF .
+168E0 .
+168E1 .
+168E2 .
+168E3 .
+168E4 .
+168E5 .
+168E6 .
+168E7 .
+168E8 .
+168E9 .
+168EA .
+168EB .
+168EC .
+168ED .
+168EE .
+168EF .
+168F0 .
+168F1 .
+168F2 .
+168F3 .
+168F4 .
+168F5 .
+168F6 .
+168F7 .
+168F8 .
+168F9 .
+168FA .
+168FB .
+168FC .
+168FD .
+168FE .
+168FF .
+16900 .
+16901 .
+16902 .
+16903 .
+16904 .
+16905 .
+16906 .
+16907 .
+16908 .
+16909 .
+1690A .
+1690B .
+1690C .
+1690D .
+1690E .
+1690F .
+16910 .
+16911 .
+16912 .
+16913 .
+16914 .
+16915 .
+16916 .
+16917 .
+16918 .
+16919 .
+1691A .
+1691B .
+1691C .
+1691D .
+1691E .
+1691F .
+16920 .
+16921 .
+16922 .
+16923 .
+16924 .
+16925 .
+16926 .
+16927 .
+16928 .
+16929 .
+1692A .
+1692B .
+1692C .
+1692D .
+1692E .
+1692F .
+16930 .
+16931 .
+16932 .
+16933 .
+16934 .
+16935 .
+16936 .
+16937 .
+16938 .
+16939 .
+1693A .
+1693B .
+1693C .
+1693D .
+1693E .
+1693F .
+16940 .
+16941 .
+16942 .
+16943 .
+16944 .
+16945 .
+16946 .
+16947 .
+16948 .
+16949 .
+1694A .
+1694B .
+1694C .
+1694D .
+1694E .
+1694F .
+16950 .
+16951 .
+16952 .
+16953 .
+16954 .
+16955 .
+16956 .
+16957 .
+16958 .
+16959 .
+1695A .
+1695B .
+1695C .
+1695D .
+1695E .
+1695F .
+16960 .
+16961 .
+16962 .
+16963 .
+16964 .
+16965 .
+16966 .
+16967 .
+16968 .
+16969 .
+1696A .
+1696B .
+1696C .
+1696D .
+1696E .
+1696F .
+16970 .
+16971 .
+16972 .
+16973 .
+16974 .
+16975 .
+16976 .
+16977 .
+16978 .
+16979 .
+1697A .
+1697B .
+1697C .
+1697D .
+1697E .
+1697F .
+16980 .
+16981 .
+16982 .
+16983 .
+16984 .
+16985 .
+16986 .
+16987 .
+16988 .
+16989 .
+1698A .
+1698B .
+1698C .
+1698D .
+1698E .
+1698F .
+16990 .
+16991 .
+16992 .
+16993 .
+16994 .
+16995 .
+16996 .
+16997 .
+16998 .
+16999 .
+1699A .
+1699B .
+1699C .
+1699D .
+1699E .
+1699F .
+169A0 .
+169A1 .
+169A2 .
+169A3 .
+169A4 .
+169A5 .
+169A6 .
+169A7 .
+169A8 .
+169A9 .
+169AA .
+169AB .
+169AC .
+169AD .
+169AE .
+169AF .
+169B0 .
+169B1 .
+169B2 .
+169B3 .
+169B4 .
+169B5 .
+169B6 .
+169B7 .
+169B8 .
+169B9 .
+169BA .
+169BB .
+169BC .
+169BD .
+169BE .
+169BF .
+169C0 .
+169C1 .
+169C2 .
+169C3 .
+169C4 .
+169C5 .
+169C6 .
+169C7 .
+169C8 .
+169C9 .
+169CA .
+169CB .
+169CC .
+169CD .
+169CE .
+169CF .
+169D0 .
+169D1 .
+169D2 .
+169D3 .
+169D4 .
+169D5 .
+169D6 .
+169D7 .
+169D8 .
+169D9 .
+169DA .
+169DB .
+169DC .
+169DD .
+169DE .
+169DF .
+169E0 .
+169E1 .
+169E2 .
+169E3 .
+169E4 .
+169E5 .
+169E6 .
+169E7 .
+169E8 .
+169E9 .
+169EA .
+169EB .
+169EC .
+169ED .
+169EE .
+169EF .
+169F0 .
+169F1 .
+169F2 .
+169F3 .
+169F4 .
+169F5 .
+169F6 .
+169F7 .
+169F8 .
+169F9 .
+169FA .
+169FB .
+169FC .
+169FD .
+169FE .
+169FF .
+16A00 .
+16A01 .
+16A02 .
+16A03 .
+16A04 .
+16A05 .
+16A06 .
+16A07 .
+16A08 .
+16A09 .
+16A0A .
+16A0B .
+16A0C .
+16A0D .
+16A0E .
+16A0F .
+16A10 .
+16A11 .
+16A12 .
+16A13 .
+16A14 .
+16A15 .
+16A16 .
+16A17 .
+16A18 .
+16A19 .
+16A1A .
+16A1B .
+16A1C .
+16A1D .
+16A1E .
+16A1F .
+16A20 .
+16A21 .
+16A22 .
+16A23 .
+16A24 .
+16A25 .
+16A26 .
+16A27 .
+16A28 .
+16A29 .
+16A2A .
+16A2B .
+16A2C .
+16A2D .
+16A2E .
+16A2F .
+16A30 .
+16A31 .
+16A32 .
+16A33 .
+16A34 .
+16A35 .
+16A36 .
+16A37 .
+16A38 .
+16F00 .
+16F01 .
+16F02 .
+16F03 .
+16F04 .
+16F05 .
+16F06 .
+16F07 .
+16F08 .
+16F09 .
+16F0A .
+16F0B .
+16F0C .
+16F0D .
+16F0E .
+16F0F .
+16F10 .
+16F11 .
+16F12 .
+16F13 .
+16F14 .
+16F15 .
+16F16 .
+16F17 .
+16F18 .
+16F19 .
+16F1A .
+16F1B .
+16F1C .
+16F1D .
+16F1E .
+16F1F .
+16F20 .
+16F21 .
+16F22 .
+16F23 .
+16F24 .
+16F25 .
+16F26 .
+16F27 .
+16F28 .
+16F29 .
+16F2A .
+16F2B .
+16F2C .
+16F2D .
+16F2E .
+16F2F .
+16F30 .
+16F31 .
+16F32 .
+16F33 .
+16F34 .
+16F35 .
+16F36 .
+16F37 .
+16F38 .
+16F39 .
+16F3A .
+16F3B .
+16F3C .
+16F3D .
+16F3E .
+16F3F .
+16F40 .
+16F41 .
+16F42 .
+16F43 .
+16F44 .
+16F50 .
+16F93 .
+16F94 .
+16F95 .
+16F96 .
+16F97 .
+16F98 .
+16F99 .
+16F9A .
+16F9B .
+16F9C .
+16F9D .
+16F9E .
+16F9F .
+1B000 .
+1B001 .
+1D400 .
+1D401 .
+1D402 .
+1D403 .
+1D404 .
+1D405 .
+1D406 .
+1D407 .
+1D408 .
+1D409 .
+1D40A .
+1D40B .
+1D40C .
+1D40D .
+1D40E .
+1D40F .
+1D410 .
+1D411 .
+1D412 .
+1D413 .
+1D414 .
+1D415 .
+1D416 .
+1D417 .
+1D418 .
+1D419 .
+1D41A .
+1D41B .
+1D41C .
+1D41D .
+1D41E .
+1D41F .
+1D420 .
+1D421 .
+1D422 .
+1D423 .
+1D424 .
+1D425 .
+1D426 .
+1D427 .
+1D428 .
+1D429 .
+1D42A .
+1D42B .
+1D42C .
+1D42D .
+1D42E .
+1D42F .
+1D430 .
+1D431 .
+1D432 .
+1D433 .
+1D434 .
+1D435 .
+1D436 .
+1D437 .
+1D438 .
+1D439 .
+1D43A .
+1D43B .
+1D43C .
+1D43D .
+1D43E .
+1D43F .
+1D440 .
+1D441 .
+1D442 .
+1D443 .
+1D444 .
+1D445 .
+1D446 .
+1D447 .
+1D448 .
+1D449 .
+1D44A .
+1D44B .
+1D44C .
+1D44D .
+1D44E .
+1D44F .
+1D450 .
+1D451 .
+1D452 .
+1D453 .
+1D454 .
+1D456 .
+1D457 .
+1D458 .
+1D459 .
+1D45A .
+1D45B .
+1D45C .
+1D45D .
+1D45E .
+1D45F .
+1D460 .
+1D461 .
+1D462 .
+1D463 .
+1D464 .
+1D465 .
+1D466 .
+1D467 .
+1D468 .
+1D469 .
+1D46A .
+1D46B .
+1D46C .
+1D46D .
+1D46E .
+1D46F .
+1D470 .
+1D471 .
+1D472 .
+1D473 .
+1D474 .
+1D475 .
+1D476 .
+1D477 .
+1D478 .
+1D479 .
+1D47A .
+1D47B .
+1D47C .
+1D47D .
+1D47E .
+1D47F .
+1D480 .
+1D481 .
+1D482 .
+1D483 .
+1D484 .
+1D485 .
+1D486 .
+1D487 .
+1D488 .
+1D489 .
+1D48A .
+1D48B .
+1D48C .
+1D48D .
+1D48E .
+1D48F .
+1D490 .
+1D491 .
+1D492 .
+1D493 .
+1D494 .
+1D495 .
+1D496 .
+1D497 .
+1D498 .
+1D499 .
+1D49A .
+1D49B .
+1D49C .
+1D49E .
+1D49F .
+1D4A2 .
+1D4A5 .
+1D4A6 .
+1D4A9 .
+1D4AA .
+1D4AB .
+1D4AC .
+1D4AE .
+1D4AF .
+1D4B0 .
+1D4B1 .
+1D4B2 .
+1D4B3 .
+1D4B4 .
+1D4B5 .
+1D4B6 .
+1D4B7 .
+1D4B8 .
+1D4B9 .
+1D4BB .
+1D4BD .
+1D4BE .
+1D4BF .
+1D4C0 .
+1D4C1 .
+1D4C2 .
+1D4C3 .
+1D4C5 .
+1D4C6 .
+1D4C7 .
+1D4C8 .
+1D4C9 .
+1D4CA .
+1D4CB .
+1D4CC .
+1D4CD .
+1D4CE .
+1D4CF .
+1D4D0 .
+1D4D1 .
+1D4D2 .
+1D4D3 .
+1D4D4 .
+1D4D5 .
+1D4D6 .
+1D4D7 .
+1D4D8 .
+1D4D9 .
+1D4DA .
+1D4DB .
+1D4DC .
+1D4DD .
+1D4DE .
+1D4DF .
+1D4E0 .
+1D4E1 .
+1D4E2 .
+1D4E3 .
+1D4E4 .
+1D4E5 .
+1D4E6 .
+1D4E7 .
+1D4E8 .
+1D4E9 .
+1D4EA .
+1D4EB .
+1D4EC .
+1D4ED .
+1D4EE .
+1D4EF .
+1D4F0 .
+1D4F1 .
+1D4F2 .
+1D4F3 .
+1D4F4 .
+1D4F5 .
+1D4F6 .
+1D4F7 .
+1D4F8 .
+1D4F9 .
+1D4FA .
+1D4FB .
+1D4FC .
+1D4FD .
+1D4FE .
+1D4FF .
+1D500 .
+1D501 .
+1D502 .
+1D503 .
+1D504 .
+1D505 .
+1D507 .
+1D508 .
+1D509 .
+1D50A .
+1D50D .
+1D50E .
+1D50F .
+1D510 .
+1D511 .
+1D512 .
+1D513 .
+1D514 .
+1D516 .
+1D517 .
+1D518 .
+1D519 .
+1D51A .
+1D51B .
+1D51C .
+1D51E .
+1D51F .
+1D520 .
+1D521 .
+1D522 .
+1D523 .
+1D524 .
+1D525 .
+1D526 .
+1D527 .
+1D528 .
+1D529 .
+1D52A .
+1D52B .
+1D52C .
+1D52D .
+1D52E .
+1D52F .
+1D530 .
+1D531 .
+1D532 .
+1D533 .
+1D534 .
+1D535 .
+1D536 .
+1D537 .
+1D538 .
+1D539 .
+1D53B .
+1D53C .
+1D53D .
+1D53E .
+1D540 .
+1D541 .
+1D542 .
+1D543 .
+1D544 .
+1D546 .
+1D54A .
+1D54B .
+1D54C .
+1D54D .
+1D54E .
+1D54F .
+1D550 .
+1D552 .
+1D553 .
+1D554 .
+1D555 .
+1D556 .
+1D557 .
+1D558 .
+1D559 .
+1D55A .
+1D55B .
+1D55C .
+1D55D .
+1D55E .
+1D55F .
+1D560 .
+1D561 .
+1D562 .
+1D563 .
+1D564 .
+1D565 .
+1D566 .
+1D567 .
+1D568 .
+1D569 .
+1D56A .
+1D56B .
+1D56C .
+1D56D .
+1D56E .
+1D56F .
+1D570 .
+1D571 .
+1D572 .
+1D573 .
+1D574 .
+1D575 .
+1D576 .
+1D577 .
+1D578 .
+1D579 .
+1D57A .
+1D57B .
+1D57C .
+1D57D .
+1D57E .
+1D57F .
+1D580 .
+1D581 .
+1D582 .
+1D583 .
+1D584 .
+1D585 .
+1D586 .
+1D587 .
+1D588 .
+1D589 .
+1D58A .
+1D58B .
+1D58C .
+1D58D .
+1D58E .
+1D58F .
+1D590 .
+1D591 .
+1D592 .
+1D593 .
+1D594 .
+1D595 .
+1D596 .
+1D597 .
+1D598 .
+1D599 .
+1D59A .
+1D59B .
+1D59C .
+1D59D .
+1D59E .
+1D59F .
+1D5A0 .
+1D5A1 .
+1D5A2 .
+1D5A3 .
+1D5A4 .
+1D5A5 .
+1D5A6 .
+1D5A7 .
+1D5A8 .
+1D5A9 .
+1D5AA .
+1D5AB .
+1D5AC .
+1D5AD .
+1D5AE .
+1D5AF .
+1D5B0 .
+1D5B1 .
+1D5B2 .
+1D5B3 .
+1D5B4 .
+1D5B5 .
+1D5B6 .
+1D5B7 .
+1D5B8 .
+1D5B9 .
+1D5BA .
+1D5BB .
+1D5BC .
+1D5BD .
+1D5BE .
+1D5BF .
+1D5C0 .
+1D5C1 .
+1D5C2 .
+1D5C3 .
+1D5C4 .
+1D5C5 .
+1D5C6 .
+1D5C7 .
+1D5C8 .
+1D5C9 .
+1D5CA .
+1D5CB .
+1D5CC .
+1D5CD .
+1D5CE .
+1D5CF .
+1D5D0 .
+1D5D1 .
+1D5D2 .
+1D5D3 .
+1D5D4 .
+1D5D5 .
+1D5D6 .
+1D5D7 .
+1D5D8 .
+1D5D9 .
+1D5DA .
+1D5DB .
+1D5DC .
+1D5DD .
+1D5DE .
+1D5DF .
+1D5E0 .
+1D5E1 .
+1D5E2 .
+1D5E3 .
+1D5E4 .
+1D5E5 .
+1D5E6 .
+1D5E7 .
+1D5E8 .
+1D5E9 .
+1D5EA .
+1D5EB .
+1D5EC .
+1D5ED .
+1D5EE .
+1D5EF .
+1D5F0 .
+1D5F1 .
+1D5F2 .
+1D5F3 .
+1D5F4 .
+1D5F5 .
+1D5F6 .
+1D5F7 .
+1D5F8 .
+1D5F9 .
+1D5FA .
+1D5FB .
+1D5FC .
+1D5FD .
+1D5FE .
+1D5FF .
+1D600 .
+1D601 .
+1D602 .
+1D603 .
+1D604 .
+1D605 .
+1D606 .
+1D607 .
+1D608 .
+1D609 .
+1D60A .
+1D60B .
+1D60C .
+1D60D .
+1D60E .
+1D60F .
+1D610 .
+1D611 .
+1D612 .
+1D613 .
+1D614 .
+1D615 .
+1D616 .
+1D617 .
+1D618 .
+1D619 .
+1D61A .
+1D61B .
+1D61C .
+1D61D .
+1D61E .
+1D61F .
+1D620 .
+1D621 .
+1D622 .
+1D623 .
+1D624 .
+1D625 .
+1D626 .
+1D627 .
+1D628 .
+1D629 .
+1D62A .
+1D62B .
+1D62C .
+1D62D .
+1D62E .
+1D62F .
+1D630 .
+1D631 .
+1D632 .
+1D633 .
+1D634 .
+1D635 .
+1D636 .
+1D637 .
+1D638 .
+1D639 .
+1D63A .
+1D63B .
+1D63C .
+1D63D .
+1D63E .
+1D63F .
+1D640 .
+1D641 .
+1D642 .
+1D643 .
+1D644 .
+1D645 .
+1D646 .
+1D647 .
+1D648 .
+1D649 .
+1D64A .
+1D64B .
+1D64C .
+1D64D .
+1D64E .
+1D64F .
+1D650 .
+1D651 .
+1D652 .
+1D653 .
+1D654 .
+1D655 .
+1D656 .
+1D657 .
+1D658 .
+1D659 .
+1D65A .
+1D65B .
+1D65C .
+1D65D .
+1D65E .
+1D65F .
+1D660 .
+1D661 .
+1D662 .
+1D663 .
+1D664 .
+1D665 .
+1D666 .
+1D667 .
+1D668 .
+1D669 .
+1D66A .
+1D66B .
+1D66C .
+1D66D .
+1D66E .
+1D66F .
+1D670 .
+1D671 .
+1D672 .
+1D673 .
+1D674 .
+1D675 .
+1D676 .
+1D677 .
+1D678 .
+1D679 .
+1D67A .
+1D67B .
+1D67C .
+1D67D .
+1D67E .
+1D67F .
+1D680 .
+1D681 .
+1D682 .
+1D683 .
+1D684 .
+1D685 .
+1D686 .
+1D687 .
+1D688 .
+1D689 .
+1D68A .
+1D68B .
+1D68C .
+1D68D .
+1D68E .
+1D68F .
+1D690 .
+1D691 .
+1D692 .
+1D693 .
+1D694 .
+1D695 .
+1D696 .
+1D697 .
+1D698 .
+1D699 .
+1D69A .
+1D69B .
+1D69C .
+1D69D .
+1D69E .
+1D69F .
+1D6A0 .
+1D6A1 .
+1D6A2 .
+1D6A3 .
+1D6A4 .
+1D6A5 .
+1D6A8 .
+1D6A9 .
+1D6AA .
+1D6AB .
+1D6AC .
+1D6AD .
+1D6AE .
+1D6AF .
+1D6B0 .
+1D6B1 .
+1D6B2 .
+1D6B3 .
+1D6B4 .
+1D6B5 .
+1D6B6 .
+1D6B7 .
+1D6B8 .
+1D6B9 .
+1D6BA .
+1D6BB .
+1D6BC .
+1D6BD .
+1D6BE .
+1D6BF .
+1D6C0 .
+1D6C2 .
+1D6C3 .
+1D6C4 .
+1D6C5 .
+1D6C6 .
+1D6C7 .
+1D6C8 .
+1D6C9 .
+1D6CA .
+1D6CB .
+1D6CC .
+1D6CD .
+1D6CE .
+1D6CF .
+1D6D0 .
+1D6D1 .
+1D6D2 .
+1D6D3 .
+1D6D4 .
+1D6D5 .
+1D6D6 .
+1D6D7 .
+1D6D8 .
+1D6D9 .
+1D6DA .
+1D6DC .
+1D6DD .
+1D6DE .
+1D6DF .
+1D6E0 .
+1D6E1 .
+1D6E2 .
+1D6E3 .
+1D6E4 .
+1D6E5 .
+1D6E6 .
+1D6E7 .
+1D6E8 .
+1D6E9 .
+1D6EA .
+1D6EB .
+1D6EC .
+1D6ED .
+1D6EE .
+1D6EF .
+1D6F0 .
+1D6F1 .
+1D6F2 .
+1D6F3 .
+1D6F4 .
+1D6F5 .
+1D6F6 .
+1D6F7 .
+1D6F8 .
+1D6F9 .
+1D6FA .
+1D6FC .
+1D6FD .
+1D6FE .
+1D6FF .
+1D700 .
+1D701 .
+1D702 .
+1D703 .
+1D704 .
+1D705 .
+1D706 .
+1D707 .
+1D708 .
+1D709 .
+1D70A .
+1D70B .
+1D70C .
+1D70D .
+1D70E .
+1D70F .
+1D710 .
+1D711 .
+1D712 .
+1D713 .
+1D714 .
+1D716 .
+1D717 .
+1D718 .
+1D719 .
+1D71A .
+1D71B .
+1D71C .
+1D71D .
+1D71E .
+1D71F .
+1D720 .
+1D721 .
+1D722 .
+1D723 .
+1D724 .
+1D725 .
+1D726 .
+1D727 .
+1D728 .
+1D729 .
+1D72A .
+1D72B .
+1D72C .
+1D72D .
+1D72E .
+1D72F .
+1D730 .
+1D731 .
+1D732 .
+1D733 .
+1D734 .
+1D736 .
+1D737 .
+1D738 .
+1D739 .
+1D73A .
+1D73B .
+1D73C .
+1D73D .
+1D73E .
+1D73F .
+1D740 .
+1D741 .
+1D742 .
+1D743 .
+1D744 .
+1D745 .
+1D746 .
+1D747 .
+1D748 .
+1D749 .
+1D74A .
+1D74B .
+1D74C .
+1D74D .
+1D74E .
+1D750 .
+1D751 .
+1D752 .
+1D753 .
+1D754 .
+1D755 .
+1D756 .
+1D757 .
+1D758 .
+1D759 .
+1D75A .
+1D75B .
+1D75C .
+1D75D .
+1D75E .
+1D75F .
+1D760 .
+1D761 .
+1D762 .
+1D763 .
+1D764 .
+1D765 .
+1D766 .
+1D767 .
+1D768 .
+1D769 .
+1D76A .
+1D76B .
+1D76C .
+1D76D .
+1D76E .
+1D770 .
+1D771 .
+1D772 .
+1D773 .
+1D774 .
+1D775 .
+1D776 .
+1D777 .
+1D778 .
+1D779 .
+1D77A .
+1D77B .
+1D77C .
+1D77D .
+1D77E .
+1D77F .
+1D780 .
+1D781 .
+1D782 .
+1D783 .
+1D784 .
+1D785 .
+1D786 .
+1D787 .
+1D788 .
+1D78A .
+1D78B .
+1D78C .
+1D78D .
+1D78E .
+1D78F .
+1D790 .
+1D791 .
+1D792 .
+1D793 .
+1D794 .
+1D795 .
+1D796 .
+1D797 .
+1D798 .
+1D799 .
+1D79A .
+1D79B .
+1D79C .
+1D79D .
+1D79E .
+1D79F .
+1D7A0 .
+1D7A1 .
+1D7A2 .
+1D7A3 .
+1D7A4 .
+1D7A5 .
+1D7A6 .
+1D7A7 .
+1D7A8 .
+1D7AA .
+1D7AB .
+1D7AC .
+1D7AD .
+1D7AE .
+1D7AF .
+1D7B0 .
+1D7B1 .
+1D7B2 .
+1D7B3 .
+1D7B4 .
+1D7B5 .
+1D7B6 .
+1D7B7 .
+1D7B8 .
+1D7B9 .
+1D7BA .
+1D7BB .
+1D7BC .
+1D7BD .
+1D7BE .
+1D7BF .
+1D7C0 .
+1D7C1 .
+1D7C2 .
+1D7C4 .
+1D7C5 .
+1D7C6 .
+1D7C7 .
+1D7C8 .
+1D7C9 .
+1D7CA .
+1D7CB .
+1EE00 .
+1EE01 .
+1EE02 .
+1EE03 .
+1EE05 .
+1EE06 .
+1EE07 .
+1EE08 .
+1EE09 .
+1EE0A .
+1EE0B .
+1EE0C .
+1EE0D .
+1EE0E .
+1EE0F .
+1EE10 .
+1EE11 .
+1EE12 .
+1EE13 .
+1EE14 .
+1EE15 .
+1EE16 .
+1EE17 .
+1EE18 .
+1EE19 .
+1EE1A .
+1EE1B .
+1EE1C .
+1EE1D .
+1EE1E .
+1EE1F .
+1EE21 .
+1EE22 .
+1EE24 .
+1EE27 .
+1EE29 .
+1EE2A .
+1EE2B .
+1EE2C .
+1EE2D .
+1EE2E .
+1EE2F .
+1EE30 .
+1EE31 .
+1EE32 .
+1EE34 .
+1EE35 .
+1EE36 .
+1EE37 .
+1EE39 .
+1EE3B .
+1EE42 .
+1EE47 .
+1EE49 .
+1EE4B .
+1EE4D .
+1EE4E .
+1EE4F .
+1EE51 .
+1EE52 .
+1EE54 .
+1EE57 .
+1EE59 .
+1EE5B .
+1EE5D .
+1EE5F .
+1EE61 .
+1EE62 .
+1EE64 .
+1EE67 .
+1EE68 .
+1EE69 .
+1EE6A .
+1EE6C .
+1EE6D .
+1EE6E .
+1EE6F .
+1EE70 .
+1EE71 .
+1EE72 .
+1EE74 .
+1EE75 .
+1EE76 .
+1EE77 .
+1EE79 .
+1EE7A .
+1EE7B .
+1EE7C .
+1EE7E .
+1EE80 .
+1EE81 .
+1EE82 .
+1EE83 .
+1EE84 .
+1EE85 .
+1EE86 .
+1EE87 .
+1EE88 .
+1EE89 .
+1EE8B .
+1EE8C .
+1EE8D .
+1EE8E .
+1EE8F .
+1EE90 .
+1EE91 .
+1EE92 .
+1EE93 .
+1EE94 .
+1EE95 .
+1EE96 .
+1EE97 .
+1EE98 .
+1EE99 .
+1EE9A .
+1EE9B .
+1EEA1 .
+1EEA2 .
+1EEA3 .
+1EEA5 .
+1EEA6 .
+1EEA7 .
+1EEA8 .
+1EEA9 .
+1EEAB .
+1EEAC .
+1EEAD .
+1EEAE .
+1EEAF .
+1EEB0 .
+1EEB1 .
+1EEB2 .
+1EEB3 .
+1EEB4 .
+1EEB5 .
+1EEB6 .
+1EEB7 .
+1EEB8 .
+1EEB9 .
+1EEBA .
+1EEBB .
+2F800 .
+2F801 .
+2F802 .
+2F803 .
+2F804 .
+2F805 .
+2F806 .
+2F807 .
+2F808 .
+2F809 .
+2F80A .
+2F80B .
+2F80C .
+2F80D .
+2F80E .
+2F80F .
+2F810 .
+2F811 .
+2F812 .
+2F813 .
+2F814 .
+2F815 .
+2F816 .
+2F817 .
+2F818 .
+2F819 .
+2F81A .
+2F81B .
+2F81C .
+2F81D .
+2F81E .
+2F81F .
+2F820 .
+2F821 .
+2F822 .
+2F823 .
+2F824 .
+2F825 .
+2F826 .
+2F827 .
+2F828 .
+2F829 .
+2F82A .
+2F82B .
+2F82C .
+2F82D .
+2F82E .
+2F82F .
+2F830 .
+2F831 .
+2F832 .
+2F833 .
+2F834 .
+2F835 .
+2F836 .
+2F837 .
+2F838 .
+2F839 .
+2F83A .
+2F83B .
+2F83C .
+2F83D .
+2F83E .
+2F83F .
+2F840 .
+2F841 .
+2F842 .
+2F843 .
+2F844 .
+2F845 .
+2F846 .
+2F847 .
+2F848 .
+2F849 .
+2F84A .
+2F84B .
+2F84C .
+2F84D .
+2F84E .
+2F84F .
+2F850 .
+2F851 .
+2F852 .
+2F853 .
+2F854 .
+2F855 .
+2F856 .
+2F857 .
+2F858 .
+2F859 .
+2F85A .
+2F85B .
+2F85C .
+2F85D .
+2F85E .
+2F85F .
+2F860 .
+2F861 .
+2F862 .
+2F863 .
+2F864 .
+2F865 .
+2F866 .
+2F867 .
+2F868 .
+2F869 .
+2F86A .
+2F86B .
+2F86C .
+2F86D .
+2F86E .
+2F86F .
+2F870 .
+2F871 .
+2F872 .
+2F873 .
+2F874 .
+2F875 .
+2F876 .
+2F877 .
+2F878 .
+2F879 .
+2F87A .
+2F87B .
+2F87C .
+2F87D .
+2F87E .
+2F87F .
+2F880 .
+2F881 .
+2F882 .
+2F883 .
+2F884 .
+2F885 .
+2F886 .
+2F887 .
+2F888 .
+2F889 .
+2F88A .
+2F88B .
+2F88C .
+2F88D .
+2F88E .
+2F88F .
+2F890 .
+2F891 .
+2F892 .
+2F893 .
+2F894 .
+2F895 .
+2F896 .
+2F897 .
+2F898 .
+2F899 .
+2F89A .
+2F89B .
+2F89C .
+2F89D .
+2F89E .
+2F89F .
+2F8A0 .
+2F8A1 .
+2F8A2 .
+2F8A3 .
+2F8A4 .
+2F8A5 .
+2F8A6 .
+2F8A7 .
+2F8A8 .
+2F8A9 .
+2F8AA .
+2F8AB .
+2F8AC .
+2F8AD .
+2F8AE .
+2F8AF .
+2F8B0 .
+2F8B1 .
+2F8B2 .
+2F8B3 .
+2F8B4 .
+2F8B5 .
+2F8B6 .
+2F8B7 .
+2F8B8 .
+2F8B9 .
+2F8BA .
+2F8BB .
+2F8BC .
+2F8BD .
+2F8BE .
+2F8BF .
+2F8C0 .
+2F8C1 .
+2F8C2 .
+2F8C3 .
+2F8C4 .
+2F8C5 .
+2F8C6 .
+2F8C7 .
+2F8C8 .
+2F8C9 .
+2F8CA .
+2F8CB .
+2F8CC .
+2F8CD .
+2F8CE .
+2F8CF .
+2F8D0 .
+2F8D1 .
+2F8D2 .
+2F8D3 .
+2F8D4 .
+2F8D5 .
+2F8D6 .
+2F8D7 .
+2F8D8 .
+2F8D9 .
+2F8DA .
+2F8DB .
+2F8DC .
+2F8DD .
+2F8DE .
+2F8DF .
+2F8E0 .
+2F8E1 .
+2F8E2 .
+2F8E3 .
+2F8E4 .
+2F8E5 .
+2F8E6 .
+2F8E7 .
+2F8E8 .
+2F8E9 .
+2F8EA .
+2F8EB .
+2F8EC .
+2F8ED .
+2F8EE .
+2F8EF .
+2F8F0 .
+2F8F1 .
+2F8F2 .
+2F8F3 .
+2F8F4 .
+2F8F5 .
+2F8F6 .
+2F8F7 .
+2F8F8 .
+2F8F9 .
+2F8FA .
+2F8FB .
+2F8FC .
+2F8FD .
+2F8FE .
+2F8FF .
+2F900 .
+2F901 .
+2F902 .
+2F903 .
+2F904 .
+2F905 .
+2F906 .
+2F907 .
+2F908 .
+2F909 .
+2F90A .
+2F90B .
+2F90C .
+2F90D .
+2F90E .
+2F90F .
+2F910 .
+2F911 .
+2F912 .
+2F913 .
+2F914 .
+2F915 .
+2F916 .
+2F917 .
+2F918 .
+2F919 .
+2F91A .
+2F91B .
+2F91C .
+2F91D .
+2F91E .
+2F91F .
+2F920 .
+2F921 .
+2F922 .
+2F923 .
+2F924 .
+2F925 .
+2F926 .
+2F927 .
+2F928 .
+2F929 .
+2F92A .
+2F92B .
+2F92C .
+2F92D .
+2F92E .
+2F92F .
+2F930 .
+2F931 .
+2F932 .
+2F933 .
+2F934 .
+2F935 .
+2F936 .
+2F937 .
+2F938 .
+2F939 .
+2F93A .
+2F93B .
+2F93C .
+2F93D .
+2F93E .
+2F93F .
+2F940 .
+2F941 .
+2F942 .
+2F943 .
+2F944 .
+2F945 .
+2F946 .
+2F947 .
+2F948 .
+2F949 .
+2F94A .
+2F94B .
+2F94C .
+2F94D .
+2F94E .
+2F94F .
+2F950 .
+2F951 .
+2F952 .
+2F953 .
+2F954 .
+2F955 .
+2F956 .
+2F957 .
+2F958 .
+2F959 .
+2F95A .
+2F95B .
+2F95C .
+2F95D .
+2F95E .
+2F95F .
+2F960 .
+2F961 .
+2F962 .
+2F963 .
+2F964 .
+2F965 .
+2F966 .
+2F967 .
+2F968 .
+2F969 .
+2F96A .
+2F96B .
+2F96C .
+2F96D .
+2F96E .
+2F96F .
+2F970 .
+2F971 .
+2F972 .
+2F973 .
+2F974 .
+2F975 .
+2F976 .
+2F977 .
+2F978 .
+2F979 .
+2F97A .
+2F97B .
+2F97C .
+2F97D .
+2F97E .
+2F97F .
+2F980 .
+2F981 .
+2F982 .
+2F983 .
+2F984 .
+2F985 .
+2F986 .
+2F987 .
+2F988 .
+2F989 .
+2F98A .
+2F98B .
+2F98C .
+2F98D .
+2F98E .
+2F98F .
+2F990 .
+2F991 .
+2F992 .
+2F993 .
+2F994 .
+2F995 .
+2F996 .
+2F997 .
+2F998 .
+2F999 .
+2F99A .
+2F99B .
+2F99C .
+2F99D .
+2F99E .
+2F99F .
+2F9A0 .
+2F9A1 .
+2F9A2 .
+2F9A3 .
+2F9A4 .
+2F9A5 .
+2F9A6 .
+2F9A7 .
+2F9A8 .
+2F9A9 .
+2F9AA .
+2F9AB .
+2F9AC .
+2F9AD .
+2F9AE .
+2F9AF .
+2F9B0 .
+2F9B1 .
+2F9B2 .
+2F9B3 .
+2F9B4 .
+2F9B5 .
+2F9B6 .
+2F9B7 .
+2F9B8 .
+2F9B9 .
+2F9BA .
+2F9BB .
+2F9BC .
+2F9BD .
+2F9BE .
+2F9BF .
+2F9C0 .
+2F9C1 .
+2F9C2 .
+2F9C3 .
+2F9C4 .
+2F9C5 .
+2F9C6 .
+2F9C7 .
+2F9C8 .
+2F9C9 .
+2F9CA .
+2F9CB .
+2F9CC .
+2F9CD .
+2F9CE .
+2F9CF .
+2F9D0 .
+2F9D1 .
+2F9D2 .
+2F9D3 .
+2F9D4 .
+2F9D5 .
+2F9D6 .
+2F9D7 .
+2F9D8 .
+2F9D9 .
+2F9DA .
+2F9DB .
+2F9DC .
+2F9DD .
+2F9DE .
+2F9DF .
+2F9E0 .
+2F9E1 .
+2F9E2 .
+2F9E3 .
+2F9E4 .
+2F9E5 .
+2F9E6 .
+2F9E7 .
+2F9E8 .
+2F9E9 .
+2F9EA .
+2F9EB .
+2F9EC .
+2F9ED .
+2F9EE .
+2F9EF .
+2F9F0 .
+2F9F1 .
+2F9F2 .
+2F9F3 .
+2F9F4 .
+2F9F5 .
+2F9F6 .
+2F9F7 .
+2F9F8 .
+2F9F9 .
+2F9FA .
+2F9FB .
+2F9FC .
+2F9FD .
+2F9FE .
+2F9FF .
+2FA00 .
+2FA01 .
+2FA02 .
+2FA03 .
+2FA04 .
+2FA05 .
+2FA06 .
+2FA07 .
+2FA08 .
+2FA09 .
+2FA0A .
+2FA0B .
+2FA0C .
+2FA0D .
+2FA0E .
+2FA0F .
+2FA10 .
+2FA11 .
+2FA12 .
+2FA13 .
+2FA14 .
+2FA15 .
+2FA16 .
+2FA17 .
+2FA18 .
+2FA19 .
+2FA1A .
+2FA1B .
+2FA1C .
+2FA1D .
+2170 2160
+2171 2161
+2172 2162
+2173 2163
+2174 2164
+2175 2165
+2176 2166
+2177 2167
+2178 2168
+2179 2169
+217A 216A
+217B 216B
+217C 216C
+217D 216D
+217E 216E
+217F 216F
+24D0 24B6
+24D1 24B7
+24D2 24B8
+24D3 24B9
+24D4 24BA
+24D5 24BB
+24D6 24BC
+24D7 24BD
+24D8 24BE
+24D9 24BF
+24DA 24C0
+24DB 24C1
+24DC 24C2
+24DD 24C3
+24DE 24C4
+24DF 24C5
+24E0 24C6
+24E1 24C7
+24E2 24C8
+24E3 24C9
+24E4 24CA
+24E5 24CB
+24E6 24CC
+24E7 24CD
+24E8 24CE
+24E9 24CF
+0300 .
+0301 .
+0302 .
+0303 .
+0304 .
+0305 .
+0306 .
+0307 .
+0308 .
+0309 .
+030A .
+030B .
+030C .
+030D .
+030E .
+030F .
+0310 .
+0311 .
+0312 .
+0313 .
+0314 .
+0315 .
+0316 .
+0317 .
+0318 .
+0319 .
+031A .
+031B .
+031C .
+031D .
+031E .
+031F .
+0320 .
+0321 .
+0322 .
+0323 .
+0324 .
+0325 .
+0326 .
+0327 .
+0328 .
+0329 .
+032A .
+032B .
+032C .
+032D .
+032E .
+032F .
+0330 .
+0331 .
+0332 .
+0333 .
+0334 .
+0335 .
+0336 .
+0337 .
+0338 .
+0339 .
+033A .
+033B .
+033C .
+033D .
+033E .
+033F .
+0340 .
+0341 .
+0342 .
+0343 .
+0344 .
+0345 .
+0346 .
+0347 .
+0348 .
+0349 .
+034A .
+034B .
+034C .
+034D .
+034E .
+034F .
+0350 .
+0351 .
+0352 .
+0353 .
+0354 .
+0355 .
+0356 .
+0357 .
+0358 .
+0359 .
+035A .
+035B .
+035C .
+035D .
+035E .
+035F .
+0360 .
+0361 .
+0362 .
+0363 .
+0364 .
+0365 .
+0366 .
+0367 .
+0368 .
+0369 .
+036A .
+036B .
+036C .
+036D .
+036E .
+036F .
+0483 .
+0484 .
+0485 .
+0486 .
+0487 .
+0488 .
+0489 .
+0591 .
+0592 .
+0593 .
+0594 .
+0595 .
+0596 .
+0597 .
+0598 .
+0599 .
+059A .
+059B .
+059C .
+059D .
+059E .
+059F .
+05A0 .
+05A1 .
+05A2 .
+05A3 .
+05A4 .
+05A5 .
+05A6 .
+05A7 .
+05A8 .
+05A9 .
+05AA .
+05AB .
+05AC .
+05AD .
+05AE .
+05AF .
+05B0 .
+05B1 .
+05B2 .
+05B3 .
+05B4 .
+05B5 .
+05B6 .
+05B7 .
+05B8 .
+05B9 .
+05BA .
+05BB .
+05BC .
+05BD .
+05BF .
+05C1 .
+05C2 .
+05C4 .
+05C5 .
+05C7 .
+0610 .
+0611 .
+0612 .
+0613 .
+0614 .
+0615 .
+0616 .
+0617 .
+0618 .
+0619 .
+061A .
+064B .
+064C .
+064D .
+064E .
+064F .
+0650 .
+0651 .
+0652 .
+0653 .
+0654 .
+0655 .
+0656 .
+0657 .
+0658 .
+0659 .
+065A .
+065B .
+065C .
+065D .
+065E .
+065F .
+0670 .
+06D6 .
+06D7 .
+06D8 .
+06D9 .
+06DA .
+06DB .
+06DC .
+06DF .
+06E0 .
+06E1 .
+06E2 .
+06E3 .
+06E4 .
+06E7 .
+06E8 .
+06EA .
+06EB .
+06EC .
+06ED .
+0711 .
+0730 .
+0731 .
+0732 .
+0733 .
+0734 .
+0735 .
+0736 .
+0737 .
+0738 .
+0739 .
+073A .
+073B .
+073C .
+073D .
+073E .
+073F .
+0740 .
+0741 .
+0742 .
+0743 .
+0744 .
+0745 .
+0746 .
+0747 .
+0748 .
+0749 .
+074A .
+07A6 .
+07A7 .
+07A8 .
+07A9 .
+07AA .
+07AB .
+07AC .
+07AD .
+07AE .
+07AF .
+07B0 .
+07EB .
+07EC .
+07ED .
+07EE .
+07EF .
+07F0 .
+07F1 .
+07F2 .
+07F3 .
+0816 .
+0817 .
+0818 .
+0819 .
+081B .
+081C .
+081D .
+081E .
+081F .
+0820 .
+0821 .
+0822 .
+0823 .
+0825 .
+0826 .
+0827 .
+0829 .
+082A .
+082B .
+082C .
+082D .
+0859 .
+085A .
+085B .
+08E4 .
+08E5 .
+08E6 .
+08E7 .
+08E8 .
+08E9 .
+08EA .
+08EB .
+08EC .
+08ED .
+08EE .
+08EF .
+08F0 .
+08F1 .
+08F2 .
+08F3 .
+08F4 .
+08F5 .
+08F6 .
+08F7 .
+08F8 .
+08F9 .
+08FA .
+08FB .
+08FC .
+08FD .
+08FE .
+0900 .
+0901 .
+0902 .
+0903 .
+093A .
+093B .
+093C .
+093E .
+093F .
+0940 .
+0941 .
+0942 .
+0943 .
+0944 .
+0945 .
+0946 .
+0947 .
+0948 .
+0949 .
+094A .
+094B .
+094C .
+094D .
+094E .
+094F .
+0951 .
+0952 .
+0953 .
+0954 .
+0955 .
+0956 .
+0957 .
+0962 .
+0963 .
+0981 .
+0982 .
+0983 .
+09BC .
+09BE .
+09BF .
+09C0 .
+09C1 .
+09C2 .
+09C3 .
+09C4 .
+09C7 .
+09C8 .
+09CB .
+09CC .
+09CD .
+09D7 .
+09E2 .
+09E3 .
+0A01 .
+0A02 .
+0A03 .
+0A3C .
+0A3E .
+0A3F .
+0A40 .
+0A41 .
+0A42 .
+0A47 .
+0A48 .
+0A4B .
+0A4C .
+0A4D .
+0A51 .
+0A70 .
+0A71 .
+0A75 .
+0A81 .
+0A82 .
+0A83 .
+0ABC .
+0ABE .
+0ABF .
+0AC0 .
+0AC1 .
+0AC2 .
+0AC3 .
+0AC4 .
+0AC5 .
+0AC7 .
+0AC8 .
+0AC9 .
+0ACB .
+0ACC .
+0ACD .
+0AE2 .
+0AE3 .
+0B01 .
+0B02 .
+0B03 .
+0B3C .
+0B3E .
+0B3F .
+0B40 .
+0B41 .
+0B42 .
+0B43 .
+0B44 .
+0B47 .
+0B48 .
+0B4B .
+0B4C .
+0B4D .
+0B56 .
+0B57 .
+0B62 .
+0B63 .
+0B82 .
+0BBE .
+0BBF .
+0BC0 .
+0BC1 .
+0BC2 .
+0BC6 .
+0BC7 .
+0BC8 .
+0BCA .
+0BCB .
+0BCC .
+0BCD .
+0BD7 .
+0C01 .
+0C02 .
+0C03 .
+0C3E .
+0C3F .
+0C40 .
+0C41 .
+0C42 .
+0C43 .
+0C44 .
+0C46 .
+0C47 .
+0C48 .
+0C4A .
+0C4B .
+0C4C .
+0C4D .
+0C55 .
+0C56 .
+0C62 .
+0C63 .
+0C82 .
+0C83 .
+0CBC .
+0CBE .
+0CBF .
+0CC0 .
+0CC1 .
+0CC2 .
+0CC3 .
+0CC4 .
+0CC6 .
+0CC7 .
+0CC8 .
+0CCA .
+0CCB .
+0CCC .
+0CCD .
+0CD5 .
+0CD6 .
+0CE2 .
+0CE3 .
+0D02 .
+0D03 .
+0D3E .
+0D3F .
+0D40 .
+0D41 .
+0D42 .
+0D43 .
+0D44 .
+0D46 .
+0D47 .
+0D48 .
+0D4A .
+0D4B .
+0D4C .
+0D4D .
+0D57 .
+0D62 .
+0D63 .
+0D82 .
+0D83 .
+0DCA .
+0DCF .
+0DD0 .
+0DD1 .
+0DD2 .
+0DD3 .
+0DD4 .
+0DD6 .
+0DD8 .
+0DD9 .
+0DDA .
+0DDB .
+0DDC .
+0DDD .
+0DDE .
+0DDF .
+0DF2 .
+0DF3 .
+0E31 .
+0E34 .
+0E35 .
+0E36 .
+0E37 .
+0E38 .
+0E39 .
+0E3A .
+0E47 .
+0E48 .
+0E49 .
+0E4A .
+0E4B .
+0E4C .
+0E4D .
+0E4E .
+0EB1 .
+0EB4 .
+0EB5 .
+0EB6 .
+0EB7 .
+0EB8 .
+0EB9 .
+0EBB .
+0EBC .
+0EC8 .
+0EC9 .
+0ECA .
+0ECB .
+0ECC .
+0ECD .
+0F18 .
+0F19 .
+0F35 .
+0F37 .
+0F39 .
+0F3E .
+0F3F .
+0F71 .
+0F72 .
+0F73 .
+0F74 .
+0F75 .
+0F76 .
+0F77 .
+0F78 .
+0F79 .
+0F7A .
+0F7B .
+0F7C .
+0F7D .
+0F7E .
+0F7F .
+0F80 .
+0F81 .
+0F82 .
+0F83 .
+0F84 .
+0F86 .
+0F87 .
+0F8D .
+0F8E .
+0F8F .
+0F90 .
+0F91 .
+0F92 .
+0F93 .
+0F94 .
+0F95 .
+0F96 .
+0F97 .
+0F99 .
+0F9A .
+0F9B .
+0F9C .
+0F9D .
+0F9E .
+0F9F .
+0FA0 .
+0FA1 .
+0FA2 .
+0FA3 .
+0FA4 .
+0FA5 .
+0FA6 .
+0FA7 .
+0FA8 .
+0FA9 .
+0FAA .
+0FAB .
+0FAC .
+0FAD .
+0FAE .
+0FAF .
+0FB0 .
+0FB1 .
+0FB2 .
+0FB3 .
+0FB4 .
+0FB5 .
+0FB6 .
+0FB7 .
+0FB8 .
+0FB9 .
+0FBA .
+0FBB .
+0FBC .
+0FC6 .
+102B .
+102C .
+102D .
+102E .
+102F .
+1030 .
+1031 .
+1032 .
+1033 .
+1034 .
+1035 .
+1036 .
+1037 .
+1038 .
+1039 .
+103A .
+103B .
+103C .
+103D .
+103E .
+1056 .
+1057 .
+1058 .
+1059 .
+105E .
+105F .
+1060 .
+1062 .
+1063 .
+1064 .
+1067 .
+1068 .
+1069 .
+106A .
+106B .
+106C .
+106D .
+1071 .
+1072 .
+1073 .
+1074 .
+1082 .
+1083 .
+1084 .
+1085 .
+1086 .
+1087 .
+1088 .
+1089 .
+108A .
+108B .
+108C .
+108D .
+108F .
+109A .
+109B .
+109C .
+109D .
+135D .
+135E .
+135F .
+1712 .
+1713 .
+1714 .
+1732 .
+1733 .
+1734 .
+1752 .
+1753 .
+1772 .
+1773 .
+17B4 .
+17B5 .
+17B6 .
+17B7 .
+17B8 .
+17B9 .
+17BA .
+17BB .
+17BC .
+17BD .
+17BE .
+17BF .
+17C0 .
+17C1 .
+17C2 .
+17C3 .
+17C4 .
+17C5 .
+17C6 .
+17C7 .
+17C8 .
+17C9 .
+17CA .
+17CB .
+17CC .
+17CD .
+17CE .
+17CF .
+17D0 .
+17D1 .
+17D2 .
+17D3 .
+17DD .
+180B .
+180C .
+180D .
+18A9 .
+1920 .
+1921 .
+1922 .
+1923 .
+1924 .
+1925 .
+1926 .
+1927 .
+1928 .
+1929 .
+192A .
+192B .
+1930 .
+1931 .
+1932 .
+1933 .
+1934 .
+1935 .
+1936 .
+1937 .
+1938 .
+1939 .
+193A .
+193B .
+19B0 .
+19B1 .
+19B2 .
+19B3 .
+19B4 .
+19B5 .
+19B6 .
+19B7 .
+19B8 .
+19B9 .
+19BA .
+19BB .
+19BC .
+19BD .
+19BE .
+19BF .
+19C0 .
+19C8 .
+19C9 .
+1A17 .
+1A18 .
+1A19 .
+1A1A .
+1A1B .
+1A55 .
+1A56 .
+1A57 .
+1A58 .
+1A59 .
+1A5A .
+1A5B .
+1A5C .
+1A5D .
+1A5E .
+1A60 .
+1A61 .
+1A62 .
+1A63 .
+1A64 .
+1A65 .
+1A66 .
+1A67 .
+1A68 .
+1A69 .
+1A6A .
+1A6B .
+1A6C .
+1A6D .
+1A6E .
+1A6F .
+1A70 .
+1A71 .
+1A72 .
+1A73 .
+1A74 .
+1A75 .
+1A76 .
+1A77 .
+1A78 .
+1A79 .
+1A7A .
+1A7B .
+1A7C .
+1A7F .
+1B00 .
+1B01 .
+1B02 .
+1B03 .
+1B04 .
+1B34 .
+1B35 .
+1B36 .
+1B37 .
+1B38 .
+1B39 .
+1B3A .
+1B3B .
+1B3C .
+1B3D .
+1B3E .
+1B3F .
+1B40 .
+1B41 .
+1B42 .
+1B43 .
+1B44 .
+1B6B .
+1B6C .
+1B6D .
+1B6E .
+1B6F .
+1B70 .
+1B71 .
+1B72 .
+1B73 .
+1B80 .
+1B81 .
+1B82 .
+1BA1 .
+1BA2 .
+1BA3 .
+1BA4 .
+1BA5 .
+1BA6 .
+1BA7 .
+1BA8 .
+1BA9 .
+1BAA .
+1BAB .
+1BAC .
+1BAD .
+1BE6 .
+1BE7 .
+1BE8 .
+1BE9 .
+1BEA .
+1BEB .
+1BEC .
+1BED .
+1BEE .
+1BEF .
+1BF0 .
+1BF1 .
+1BF2 .
+1BF3 .
+1C24 .
+1C25 .
+1C26 .
+1C27 .
+1C28 .
+1C29 .
+1C2A .
+1C2B .
+1C2C .
+1C2D .
+1C2E .
+1C2F .
+1C30 .
+1C31 .
+1C32 .
+1C33 .
+1C34 .
+1C35 .
+1C36 .
+1C37 .
+1CD0 .
+1CD1 .
+1CD2 .
+1CD4 .
+1CD5 .
+1CD6 .
+1CD7 .
+1CD8 .
+1CD9 .
+1CDA .
+1CDB .
+1CDC .
+1CDD .
+1CDE .
+1CDF .
+1CE0 .
+1CE1 .
+1CE2 .
+1CE3 .
+1CE4 .
+1CE5 .
+1CE6 .
+1CE7 .
+1CE8 .
+1CED .
+1CF2 .
+1CF3 .
+1CF4 .
+1DC0 .
+1DC1 .
+1DC2 .
+1DC3 .
+1DC4 .
+1DC5 .
+1DC6 .
+1DC7 .
+1DC8 .
+1DC9 .
+1DCA .
+1DCB .
+1DCC .
+1DCD .
+1DCE .
+1DCF .
+1DD0 .
+1DD1 .
+1DD2 .
+1DD3 .
+1DD4 .
+1DD5 .
+1DD6 .
+1DD7 .
+1DD8 .
+1DD9 .
+1DDA .
+1DDB .
+1DDC .
+1DDD .
+1DDE .
+1DDF .
+1DE0 .
+1DE1 .
+1DE2 .
+1DE3 .
+1DE4 .
+1DE5 .
+1DE6 .
+1DFC .
+1DFD .
+1DFE .
+1DFF .
+20D0 .
+20D1 .
+20D2 .
+20D3 .
+20D4 .
+20D5 .
+20D6 .
+20D7 .
+20D8 .
+20D9 .
+20DA .
+20DB .
+20DC .
+20DD .
+20DE .
+20DF .
+20E0 .
+20E1 .
+20E2 .
+20E3 .
+20E4 .
+20E5 .
+20E6 .
+20E7 .
+20E8 .
+20E9 .
+20EA .
+20EB .
+20EC .
+20ED .
+20EE .
+20EF .
+20F0 .
+2CEF .
+2CF0 .
+2CF1 .
+2D7F .
+2DE0 .
+2DE1 .
+2DE2 .
+2DE3 .
+2DE4 .
+2DE5 .
+2DE6 .
+2DE7 .
+2DE8 .
+2DE9 .
+2DEA .
+2DEB .
+2DEC .
+2DED .
+2DEE .
+2DEF .
+2DF0 .
+2DF1 .
+2DF2 .
+2DF3 .
+2DF4 .
+2DF5 .
+2DF6 .
+2DF7 .
+2DF8 .
+2DF9 .
+2DFA .
+2DFB .
+2DFC .
+2DFD .
+2DFE .
+2DFF .
+302A .
+302B .
+302C .
+302D .
+302E .
+302F .
+3099 .
+309A .
+A66F .
+A670 .
+A671 .
+A672 .
+A674 .
+A675 .
+A676 .
+A677 .
+A678 .
+A679 .
+A67A .
+A67B .
+A67C .
+A67D .
+A69F .
+A6F0 .
+A6F1 .
+A802 .
+A806 .
+A80B .
+A823 .
+A824 .
+A825 .
+A826 .
+A827 .
+A880 .
+A881 .
+A8B4 .
+A8B5 .
+A8B6 .
+A8B7 .
+A8B8 .
+A8B9 .
+A8BA .
+A8BB .
+A8BC .
+A8BD .
+A8BE .
+A8BF .
+A8C0 .
+A8C1 .
+A8C2 .
+A8C3 .
+A8C4 .
+A8E0 .
+A8E1 .
+A8E2 .
+A8E3 .
+A8E4 .
+A8E5 .
+A8E6 .
+A8E7 .
+A8E8 .
+A8E9 .
+A8EA .
+A8EB .
+A8EC .
+A8ED .
+A8EE .
+A8EF .
+A8F0 .
+A8F1 .
+A926 .
+A927 .
+A928 .
+A929 .
+A92A .
+A92B .
+A92C .
+A92D .
+A947 .
+A948 .
+A949 .
+A94A .
+A94B .
+A94C .
+A94D .
+A94E .
+A94F .
+A950 .
+A951 .
+A952 .
+A953 .
+A980 .
+A981 .
+A982 .
+A983 .
+A9B3 .
+A9B4 .
+A9B5 .
+A9B6 .
+A9B7 .
+A9B8 .
+A9B9 .
+A9BA .
+A9BB .
+A9BC .
+A9BD .
+A9BE .
+A9BF .
+A9C0 .
+AA29 .
+AA2A .
+AA2B .
+AA2C .
+AA2D .
+AA2E .
+AA2F .
+AA30 .
+AA31 .
+AA32 .
+AA33 .
+AA34 .
+AA35 .
+AA36 .
+AA43 .
+AA4C .
+AA4D .
+AA7B .
+AAB0 .
+AAB2 .
+AAB3 .
+AAB4 .
+AAB7 .
+AAB8 .
+AABE .
+AABF .
+AAC1 .
+AAEB .
+AAEC .
+AAED .
+AAEE .
+AAEF .
+AAF5 .
+AAF6 .
+ABE3 .
+ABE4 .
+ABE5 .
+ABE6 .
+ABE7 .
+ABE8 .
+ABE9 .
+ABEA .
+ABEC .
+ABED .
+FB1E .
+FE00 .
+FE01 .
+FE02 .
+FE03 .
+FE04 .
+FE05 .
+FE06 .
+FE07 .
+FE08 .
+FE09 .
+FE0A .
+FE0B .
+FE0C .
+FE0D .
+FE0E .
+FE0F .
+FE20 .
+FE21 .
+FE22 .
+FE23 .
+FE24 .
+FE25 .
+FE26 .
+101FD .
+10A01 .
+10A02 .
+10A03 .
+10A05 .
+10A06 .
+10A0C .
+10A0D .
+10A0E .
+10A0F .
+10A38 .
+10A39 .
+10A3A .
+10A3F .
+11000 .
+11001 .
+11002 .
+11038 .
+11039 .
+1103A .
+1103B .
+1103C .
+1103D .
+1103E .
+1103F .
+11040 .
+11041 .
+11042 .
+11043 .
+11044 .
+11045 .
+11046 .
+11080 .
+11081 .
+11082 .
+110B0 .
+110B1 .
+110B2 .
+110B3 .
+110B4 .
+110B5 .
+110B6 .
+110B7 .
+110B8 .
+110B9 .
+110BA .
+11100 .
+11101 .
+11102 .
+11127 .
+11128 .
+11129 .
+1112A .
+1112B .
+1112C .
+1112D .
+1112E .
+1112F .
+11130 .
+11131 .
+11132 .
+11133 .
+11134 .
+11180 .
+11181 .
+11182 .
+111B3 .
+111B4 .
+111B5 .
+111B6 .
+111B7 .
+111B8 .
+111B9 .
+111BA .
+111BB .
+111BC .
+111BD .
+111BE .
+111BF .
+111C0 .
+116AB .
+116AC .
+116AD .
+116AE .
+116AF .
+116B0 .
+116B1 .
+116B2 .
+116B3 .
+116B4 .
+116B5 .
+116B6 .
+116B7 .
+16F51 .
+16F52 .
+16F53 .
+16F54 .
+16F55 .
+16F56 .
+16F57 .
+16F58 .
+16F59 .
+16F5A .
+16F5B .
+16F5C .
+16F5D .
+16F5E .
+16F5F .
+16F60 .
+16F61 .
+16F62 .
+16F63 .
+16F64 .
+16F65 .
+16F66 .
+16F67 .
+16F68 .
+16F69 .
+16F6A .
+16F6B .
+16F6C .
+16F6D .
+16F6E .
+16F6F .
+16F70 .
+16F71 .
+16F72 .
+16F73 .
+16F74 .
+16F75 .
+16F76 .
+16F77 .
+16F78 .
+16F79 .
+16F7A .
+16F7B .
+16F7C .
+16F7D .
+16F7E .
+16F8F .
+16F90 .
+16F91 .
+16F92 .
+1D165 .
+1D166 .
+1D167 .
+1D168 .
+1D169 .
+1D16D .
+1D16E .
+1D16F .
+1D170 .
+1D171 .
+1D172 .
+1D17B .
+1D17C .
+1D17D .
+1D17E .
+1D17F .
+1D180 .
+1D181 .
+1D182 .
+1D185 .
+1D186 .
+1D187 .
+1D188 .
+1D189 .
+1D18A .
+1D18B .
+1D1AA .
+1D1AB .
+1D1AC .
+1D1AD .
+1D242 .
+1D243 .
+1D244 .
+E0100 .
+E0101 .
+E0102 .
+E0103 .
+E0104 .
+E0105 .
+E0106 .
+E0107 .
+E0108 .
+E0109 .
+E010A .
+E010B .
+E010C .
+E010D .
+E010E .
+E010F .
+E0110 .
+E0111 .
+E0112 .
+E0113 .
+E0114 .
+E0115 .
+E0116 .
+E0117 .
+E0118 .
+E0119 .
+E011A .
+E011B .
+E011C .
+E011D .
+E011E .
+E011F .
+E0120 .
+E0121 .
+E0122 .
+E0123 .
+E0124 .
+E0125 .
+E0126 .
+E0127 .
+E0128 .
+E0129 .
+E012A .
+E012B .
+E012C .
+E012D .
+E012E .
+E012F .
+E0130 .
+E0131 .
+E0132 .
+E0133 .
+E0134 .
+E0135 .
+E0136 .
+E0137 .
+E0138 .
+E0139 .
+E013A .
+E013B .
+E013C .
+E013D .
+E013E .
+E013F .
+E0140 .
+E0141 .
+E0142 .
+E0143 .
+E0144 .
+E0145 .
+E0146 .
+E0147 .
+E0148 .
+E0149 .
+E014A .
+E014B .
+E014C .
+E014D .
+E014E .
+E014F .
+E0150 .
+E0151 .
+E0152 .
+E0153 .
+E0154 .
+E0155 .
+E0156 .
+E0157 .
+E0158 .
+E0159 .
+E015A .
+E015B .
+E015C .
+E015D .
+E015E .
+E015F .
+E0160 .
+E0161 .
+E0162 .
+E0163 .
+E0164 .
+E0165 .
+E0166 .
+E0167 .
+E0168 .
+E0169 .
+E016A .
+E016B .
+E016C .
+E016D .
+E016E .
+E016F .
+E0170 .
+E0171 .
+E0172 .
+E0173 .
+E0174 .
+E0175 .
+E0176 .
+E0177 .
+E0178 .
+E0179 .
+E017A .
+E017B .
+E017C .
+E017D .
+E017E .
+E017F .
+E0180 .
+E0181 .
+E0182 .
+E0183 .
+E0184 .
+E0185 .
+E0186 .
+E0187 .
+E0188 .
+E0189 .
+E018A .
+E018B .
+E018C .
+E018D .
+E018E .
+E018F .
+E0190 .
+E0191 .
+E0192 .
+E0193 .
+E0194 .
+E0195 .
+E0196 .
+E0197 .
+E0198 .
+E0199 .
+E019A .
+E019B .
+E019C .
+E019D .
+E019E .
+E019F .
+E01A0 .
+E01A1 .
+E01A2 .
+E01A3 .
+E01A4 .
+E01A5 .
+E01A6 .
+E01A7 .
+E01A8 .
+E01A9 .
+E01AA .
+E01AB .
+E01AC .
+E01AD .
+E01AE .
+E01AF .
+E01B0 .
+E01B1 .
+E01B2 .
+E01B3 .
+E01B4 .
+E01B5 .
+E01B6 .
+E01B7 .
+E01B8 .
+E01B9 .
+E01BA .
+E01BB .
+E01BC .
+E01BD .
+E01BE .
+E01BF .
+E01C0 .
+E01C1 .
+E01C2 .
+E01C3 .
+E01C4 .
+E01C5 .
+E01C6 .
+E01C7 .
+E01C8 .
+E01C9 .
+E01CA .
+E01CB .
+E01CC .
+E01CD .
+E01CE .
+E01CF .
+E01D0 .
+E01D1 .
+E01D2 .
+E01D3 .
+E01D4 .
+E01D5 .
+E01D6 .
+E01D7 .
+E01D8 .
+E01D9 .
+E01DA .
+E01DB .
+E01DC .
+E01DD .
+E01DE .
+E01DF .
+E01E0 .
+E01E1 .
+E01E2 .
+E01E3 .
+E01E4 .
+E01E5 .
+E01E6 .
+E01E7 .
+E01E8 .
+E01E9 .
+E01EA .
+E01EB .
+E01EC .
+E01ED .
+E01EE .
+E01EF .
+{} {} \_relax
+\_def\_tmp #1 #2 {\_lccode"#2="#1 \_uccode"#2="#2 }
+\_tmp 0069 0130
+\_tmp 03B8 03F4
+\_tmp 00DF 1E9E
+\_tmp 03C9 2126
+\_tmp 006B 212A
+\_tmp 00E5 212B
+\_def\_tmp #1 #2 {\_lccode"#1="#1 \_uccode"#1="#2 }
+\_tmp 0131 0049
+\_tmp 017F 0053
+\_tmp 03BC 039C
+\_tmp 03C2 03A3
+\_tmp 03D0 0392
+\_tmp 03D1 0398
+\_tmp 03D5 03A6
+\_tmp 03D6 03A0
+\_tmp 03F0 039A
+\_tmp 03F1 03A1
+\_tmp 03F5 0395
+\_tmp 1E9B 1E60
+\_tmp 1FBE 0399
+% end of file
+\_endcode
+
+All codes in unicode table keep information about pairs lowecase-uppercase
+letters or single letter. We need to read such information and set
+appropriate `\lccode` and `\uccode`. The `\catcode` above the code 127
+is not set, i.\,e.\ the `\catocde`=12 for all codes above 127.
+
+The file `uni-lcuc.opm` does this work. It is not much intereting file, only
+first few lines from 15928 lines in total is shown here.
+
+{\everytt={\typosize[8/10]\_let\_printverbline=\_printcodeline \medskip}\ttline=-1
+\def\docfile{uni-lcuc.opm}
+\verbinput (3-30) uni-lcuc.opm
+\vskip-\medskipamount
+\noindent\typosize[8/]\dots etc. (see {\tt\Brown\docfile})
+}


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/uni-lcuc.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/unimath-codes.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/unimath-codes.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/unimath-codes.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,361 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \_ncharrmA {Uni math codes <2020-03-14>} % preloaded on demand by \loadmath
+
+   \_doc -----------------------------
+   The control sequences for `\alpha`, `\beta` etc are redefined here.
+   The `\alpha` expands to the charcter with unicode `"03B1`, this is normal
+   character $α$. You can type it directly in your editor, if you know how
+   to do this.
+   \_cod -----------------------------
+
+\_umathnumB="0391
+\_greekdef \Alpha \Beta \Gamma \Delta \Epsilon \Zeta \Eta \Theta \Iota \Kappa
+   \Lambda \Mu \Nu \Xi \Omicron \Pi \Rho \varTheta \Sigma \Tau \Upsilon \Phi
+   \Chi \Psi \Omega \_relax
+
+\_umathnumB="03B1
+\_greekdef \alpha \beta \gamma \delta \varepsilon \zeta \eta \theta \iota \kappa
+   \lambda \mu \nu \xi \omicron \pi \rho \varsigma \sigma \tau \upsilon
+   \varphi \chi \psi \omega \vardelta \epsilon \vartheta \varkappa \phi
+   \varrho \varpi \_relax
+
+   \_doc -----------------------------
+   The math alphabets are declared here using the \^`\_umathrange` macro.
+   \_cod -----------------------------
+
+\_chardef\_ncharrmA=`A       \_chardef\_ncharrma=`a
+\_chardef\_ncharbfA="1D400   \_chardef\_ncharbfa="1D41A
+\_chardef\_ncharitA="1D434   \_chardef\_ncharita="1D44E
+\_chardef\_ncharbiA="1D468   \_chardef\_ncharbia="1D482
+\_chardef\_ncharclA="1D49C   \_chardef\_ncharcla="1D4B6
+\_chardef\_ncharbcA="1D4D0   \_chardef\_ncharbca="1D4EA
+\_chardef\_ncharfrA="1D504   \_chardef\_ncharfra="1D51E
+\_chardef\_ncharbrA="1D56C   \_chardef\_ncharbra="1D586
+\_chardef\_ncharbbA="1D538   \_chardef\_ncharbba="1D552
+\_chardef\_ncharsnA="1D5A0   \_chardef\_ncharsna="1D5BA
+\_chardef\_ncharbsA="1D5D4   \_chardef\_ncharbsa="1D5EE
+\_chardef\_ncharsiA="1D608   \_chardef\_ncharsia="1D622
+\_chardef\_ncharsxA="1D63C   \_chardef\_ncharsxa="1D656
+\_chardef\_ncharttA="1D670   \_chardef\_nchartta="1D68A
+
+\_protected\_def\_rmvariables     {\_umathrange{A-Z}\_ncharrmA \_umathrange{a-z}\_ncharrma}
+\_protected\_def\_bfvariables     {\_umathrange{A-Z}\_ncharbfA \_umathrange{a-z}\_ncharbfa}
+\_protected\_def\_nitvariables    {\_umathrange{A-Z}\_ncharitA \_umathrange{a-z}\_ncharita}
+\_protected\_def\_bivariables     {\_umathrange{A-Z}\_ncharbiA \_umathrange{a-z}\_ncharbia}
+\_protected\_def\_calvariables    {\_umathrange{A-Z}\_ncharclA \_umathrange{a-z}\_ncharcla}
+\_protected\_def\_bcalvariables   {\_umathrange{A-Z}\_ncharbcA \_umathrange{a-z}\_ncharbca}
+\_protected\_def\_frakvariables   {\_umathrange{A-Z}\_ncharfrA \_umathrange{a-z}\_ncharfra}
+\_protected\_def\_bfrakvariables  {\_umathrange{A-Z}\_ncharbrA \_umathrange{a-z}\_ncharbra}
+\_protected\_def\_bbvariables     {\_umathrange{A-Z}\_ncharbbA \_umathrange{a-z}\_ncharbba}
+\_protected\_def\_sansvariables   {\_umathrange{A-Z}\_ncharsnA \_umathrange{a-z}\_ncharsna}
+\_protected\_def\_bsansvariables  {\_umathrange{A-Z}\_ncharbsA \_umathrange{a-z}\_ncharbsa}
+\_protected\_def\_isansvariables  {\_umathrange{A-Z}\_ncharsiA \_umathrange{a-z}\_ncharsia}
+\_protected\_def\_bisansvariables {\_umathrange{A-Z}\_ncharsxA \_umathrange{a-z}\_ncharsxa}
+\_protected\_def\_ttvariables     {\_umathrange{A-Z}\_ncharttA \_umathrange{a-z}\_nchartta}
+
+\_chardef\_greekrmA="0391   \_chardef\_greekrma="03B1
+\_chardef\_greekbfA="1D6A8  \_chardef\_greekbfa="1D6C2
+\_chardef\_greekitA="1D6E2  \_chardef\_greekita="1D6FC
+\_chardef\_greekbiA="1D71C  \_chardef\_greekbia="1D736
+\_chardef\_greeksnA="1D756  \_chardef\_greeksna="1D770
+\_chardef\_greeksiA="1D790  \_chardef\_greeksia="1D7AA
+
+\_protected\_def\_nitgreek   {\_umathrangeGREEK\_greekrmA \_umathrangegreek\_greekita}
+\_protected\_def\_rmgreek    {\_umathrangeGREEK\_greekrmA \_umathrangegreek\_greekrma}
+\_protected\_def\_bfgreek    {\_umathrangeGREEK\_greekbfA \_umathrangegreek\_greekbfa}
+\_protected\_def\_bigreek    {\_umathrangeGREEK\_greekbfA \_umathrangegreek\_greekbia}
+\_protected\_def\_sansgreek  {\_umathrangeGREEK\_greeksnA \_umathrangegreek\_greeksna}
+\_protected\_def\_isansgreek {\_umathrangeGREEK\_greeksnA \_umathrangegreek\_greeksia}
+
+% Another possibility (slanted capitals in \_nitgreek, \_bigreek, \_isansgreek):
+%\_protected\_def\_nitgreek   {\_umathrangeGREEK\_greekitA \_umathrangegreek\_greekita}
+%\_protected\_def\_rmgreek    {\_umathrangeGREEK\_greekrmA \_umathrangegreek\_greekrma}
+%\_protected\_def\_bfgreek    {\_umathrangeGREEK\_greekbfA \_umathrangegreek\_greekbfa}
+%\_protected\_def\_bigreek    {\_umathrangeGREEK\_greekbiA \_umathrangegreek\_greekbia}
+%\_protected\_def\_sansgreek  {\_umathrangeGREEK\_greeksnA \_umathrangegreek\_greeksna}
+%\_protected\_def\_isansgreek {\_umathrangeGREEK\_greeksiA \_umathrangegreek\_greeksia}
+
+\_chardef\_digitrmO=`0
+\_chardef\_digitbfO="1D7CE
+\_chardef\_digitbbO="1D7D8
+\_chardef\_digitsnO="1D7E2
+\_chardef\_digitbsO="1D7EC
+\_chardef\_digitttO="1D7F6
+
+\_protected\_def\_rmdigits    {\_umathrange{0-9}\_digitrmO}
+\_protected\_def\_bfdigits    {\_umathrange{0-9}\_digitbfO}
+\_protected\_def\_bbdigits    {\_umathrange{0-9}\_digitbbO}
+\_protected\_def\_sansdigits  {\_umathrange{0-9}\_digitsnO}
+\_protected\_def\_bsansdigits {\_umathrange{0-9}\_digitbsO}
+\_protected\_def\_ttdigits    {\_umathrange{0-9}\_digitttO}
+
+   \_doc -----------------------------
+   The  \`\cal`, \`\bbchar`, \`\frak`, \`\script`
+   and
+   the \`\rm`, \`\bf`, \`\it`, \`\bi`, \`\tt` are defined here.
+   Their \"8bit definitions" from the file `math-preload.opm`
+   (section~\ref[math-preload]) are removed.\nl
+   You can redefine them again if you need different behavior (for example
+   you don't want to use sans serif bold in math). What to do:
+   \begtt \advance\hsize by2em
+   \_protected\_def\_bf {\_tryloadbf\_tenbf \_inmath{\_bfvariables\_bfgreek\_bfdigits}}
+   \_protected\_def\_bi {\_tryloadbi\_tenbi \_inmath{\_bivariables\_bigreek\_bfdigits}}
+   \_public \bf \bi ;
+   \endtt
+   \`\_inmath` `{<cmds>}` applies `<cmds>` only in math mode.
+   \_cod -----------------------------
+
+\_protected\_def\_inmath#1{\_relax \_ifmmode#1\_fi} % to keep off \loop processing in text mode
+
+% You can redefine these macros to follow your wishes.
+% For example you need upgright lowercase greek letters, you don't need
+% \bf and \bi behaves as sans serif in math, ...
+
+\_protected\_def\_rm {\_tryloadrm \_tenrm \_inmath{\_rmvariables \_rmdigits}}
+\_protected\_def\_it {\_tryloadit \_tenit \_inmath{\_nitvariables}}
+\_protected\_def\_bf {\_tryloadbf \_tenbf \_inmath{\_bsansvariables \_sansgreek \_bsansdigits}}
+\_protected\_def\_bi {\_tryloadbi \_tenbi \_inmath{\_bisansvariables \_isansgreek \_bsansdigits}}
+\_protected\_def\_tt {\_tryloadtt \_tentt \_inmath{\_ttvariables \_ttdigits}}
+\_protected\_def\_bbchar  {\_bbvariables \_bbdigits}
+\_protected\_def\_cal     {\_calvariables}
+\_protected\_def\_frak    {\_frakvariables}
+\_protected\_def\_misans  {\_isansvariables \_isansgreek \_sansdigits}
+\_protected\_def\_mbisans {\_bisansvariables \_isansgreek \_bsansdigits}
+\_protected\_def\_script  {\_rmvariables \_fam4 }
+
+\_public \rm \it \bf \bi \tt \bbchar \cal \frak \misans \mbisans \script ;
+
+   \_doc -----------------------------
+   Each Unicode slot carries information about math type. This is saved in
+   the file `mathclass.txt` which is copied to `mathclass.opm` The file
+   has the following format:
+   {\vitt{mathclass.opm}\verbinput (70-85) mathclass.opm }
+   We have to read this information and convert it to the `\Umathcode`s. 
+   \_cod -----------------------------
+
+\_begingroup  % \input mathclass.opm  (which is a copy of MathClass.txt):
+   \_def\_p#1;#2{\_edef\_tmp{\_pB#2}\_ifx\_tmp\_empty \_else\_pA#1....\_end#2\_fi}
+   \_def\_pA#1..#2..#3\_end#4{%
+      \_ifx\_relax#2\_relax \_pset{"#1}{#4}\_else
+         \_umathnumA="#1
+         \_loop
+            \_pset{\_umathnumA}{#4}%
+            \_ifnum\_umathnumA<"#2 \_advance\_umathnumA by1
+         \_repeat 
+      \_fi
+   }
+   \_def\_pB#1{\_if#1L1\_fi \_if#1B2\_fi \_if#1V2\_fi \_if#1R3\_fi \_if#1N0\_fi \_if#1U0\_fi
+             \_if#1F0\_fi \_if#1O4\_fi \_if#1C5\_fi \_if#1P6\_fi \_if#1A7\_fi}
+   \_def\_pset#1#2{\_global\_Umathcode#1=\_tmp\_space 1 #1\_relax
+      \_if#2O\_global\_Udelcode#1=1 #1\_relax\_fi
+      \_if#2C\_global\_Udelcode#1=1 #1\_relax\_fi
+      \_if#2F\_global\_Udelcode#1=1 #1\_relax\_fi
+   }
+   \_catcode`#=14
+   \_everypar={\_setbox0=\_lastbox \_par \_p}
+   \_input mathclass.opm
+\_endgroup
+
+   \_doc -----------------------------
+   Each math symbol has its declaration in the file `unicode-math-table.tex`
+   which is copied to `unimath-table.opm`. The file has following format:
+   {\vitt{unimath-table.opm}\verbinput (70-85) unimath-table.opm }
+   We have to read this information and convert it to the Unicode math codes. 
+   \_cod -----------------------------
+
+\_begingroup  % \input unimath-table.opm (it is a copy of unicode-math-table.tex):
+   \_def\UnicodeMathSymbol #1#2#3#4{%
+      \_global\_Umathcharnumdef#2=\_Umathcodenum#1\_relax
+      \_ifx#3\_mathopen   \_gdef#2{\_Udelimiter 4 1 #1 }\_fi
+      \_ifx#3\_mathclose  \_gdef#2{\_Udelimiter 5 1 #1 }\_fi
+      \_ifx#3\_mathaccent \_gdef#2{\_Umathaccent fixed 7 1 #1 }\_fi
+   }
+   \_input unimath-table.opm
+\_endgroup
+
+   \_doc -----------------------------
+   Many special characters must be declared with care...
+   \_cod -----------------------------
+
+\_global\_Udelcode`<=1 "027E8 % these characters have different meaning
+\_global\_Udelcode`>=1 "027E9 % as normal and as delimeter
+
+\_nitgreek \_nitvariables \_rmdigits   % default setting
+
+\_Umathcode `- = 2 1 "2212
+%\_Umathcode`: = 3 1 "3A  % mathclass defines it as 6 1 "3A (punctuation)
+\_let\{=\lbrace \_let\}=\rbrace
+
+\_protected\_def \_sqrt       {\_Uradical 1 "0221A }
+\_protected\_def \_cuberoot   {\_Uradical 1 "0221B }
+\_protected\_def \_fourthroot {\_Uradical 1 "0221C }
+
+\_public \sqrt \cuberoot \fourthroot ;
+
+\_def\_intwithnolimits#1#2 {\_ifx#1\_relax \_else
+   \_ea\_let\_csname\_csstring#1op\_endcsname=#1%
+   \_ea\_def\_ea #1\_ea{\_csname\_csstring#1op\_endcsname \_nolimits}%
+   \_bgroup \_lccode`\~=#2 \_lowercase{\_egroup \_mathcode`~="8000 \_let ~=#1}%       
+   \_ea \_intwithnolimits \_fi
+}
+\_intwithnolimits \int "0222B \iint "0222C \iiint "0222D 
+   \oint "0222E \oiint "0222F \oiiint "02230 
+   \intclockwise "02231 \varointclockwise "02232 \ointctrclockwise "02233 
+   \sumint "02A0B \iiiint "02A0C \intbar "02A0D \intBar "02A0E \fint "02A0F
+   \pointint "02A15 \sqint "02A16 \intlarhk "02A17 \intx "02A18 
+   \intcap "02A19 \intcup "02A1A \upint "02A1B \lowint "02A1C \_relax "0
+
+\_protected\_def \vert  {\_Udelimiter 0 1 "07C }
+\_protected\_def \Vert  {\_Udelimiter 0 1 "02016 }
+\_protected\_def \Vvert {\_Udelimiter 0 1 "02980 }
+
+\_protected\_def \_overbrace    #1{\mathop {\Umathaccent  7 1 "023DE{#1}}\limits}
+\_protected\_def \_underbrace   #1{\mathop {\Umathaccent bottom 7 1 "023DF{#1}}\limits}
+\_protected\_def \_overparen    #1{\mathop {\Umathaccent  7 1 "023DC{#1}}\limits}
+\_protected\_def \_underparen   #1{\mathop {\Umathaccent bottom 7 1 "023DD{#1}}\limits}
+\_protected\_def \_overbracket  #1{\mathop {\Umathaccent  7 1 "023B4{#1}}\limits}
+\_protected\_def \_underbracket #1{\mathop {\Umathaccent bottom 7 1 "023B5{#1}}\limits}
+
+\_public \overbrace \underbrace \overparen \underparen \overbracket \underbracket ;
+
+\_protected\def \widehat            {\Umathaccent 7 1 "00302 }
+\_protected\def \widetilde          {\Umathaccent 7 1 "00303 }
+\_protected\def \overleftharpoon    {\Umathaccent 7 1 "020D0 }
+\_protected\def \overrightharpoon   {\Umathaccent 7 1 "020D1 }
+\_protected\def \overleftarrow      {\Umathaccent 7 1 "020D6 }
+\_protected\def \overrightarrow     {\Umathaccent 7 1 "020D7 }
+\_protected\def \overleftrightarrow {\Umathaccent 7 1 "020E1 }
+
+\_mathchardef\ldotp="612E
+\_let\|=\Vert
+\_mathcode`\_="8000
+
+   \_doc -----------------------------
+   Aliases are declared here. They are names not menitioned in the `unimath-table.opm` file
+   but commonly used in \TeX.
+   \_cod -----------------------------
+
+\_let \setminus=\smallsetminus
+\_let \diamond=\smwhtdiamond
+\_let \bullet=\smblkcircle
+\_let \circ=\vysmwhtcircle
+\_let \bigcirc=\mdlgwhtcircle
+\_let \to=\rightarrow
+\_let \le=\leq
+\_let \ge=\geq
+\_let \neq=\ne
+\_protected\_def \triangle {\mathord{\bigtriangleup}}
+\_let \emptyset=\varnothing
+\_let \hbar=\hslash
+\_let \land=\wedge
+\_let \lor=\vee
+\_let \owns=\ni
+\_let \gets=\leftarrow
+\_let \mathring=\ocirc
+\_let \lnot=\neg
+\_let \longdivision=\longdivisionsign
+\_let \backepsilon=\upbackepsilon
+\_let \eth=\matheth
+\_let \dbkarow=\dbkarrow
+\_let \drbkarow=\drbkarrow
+\_let \hksearow=\hksearrow
+\_let \hkswarow=\hkswarrow
+
+\_let \upalpha=\mupalpha         
+\_let \upbeta=\mupbeta          
+\_let \upgamma=\mupgamma         
+\_let \updelta=\mupdelta         
+\_let \upepsilon=\mupvarepsilon        
+\_let \upvarepsilon=\mupvarepsilon
+\_let \upzeta=\mupzeta          
+\_let \upeta=\mupeta           
+\_let \uptheta=\muptheta        
+\_let \upiota=\mupiota          
+\_let \upkappa=\mupkappa         
+\_let \uplambda=\muplambda        
+\_let \upmu=\mupmu            
+\_let \upnu=\mupnu            
+\_let \upxi=\mupxi            
+\_let \upomicron=\mupomicron       
+\_let \uppi=\muppi            
+\_let \uprho=\muprho
+\_let \upvarrho=\mupvarrho           
+\_let \upvarsigma=\mupvarsigma      
+\_let \upsigma=\mupsigma         
+\_let \uptau=\muptau           
+\_let \upupsilon=\mupupsilon       
+\_let \upvarphi=\mupvarphi        
+\_let \upchi=\mupchi           
+\_let \uppsi=\muppsi           
+\_let \upomega=\mupomega         
+\_let \upvartheta=\mupvartheta      
+\_let \upphi=\mupphi           
+\_let \upvarpi=\mupvarpi         
+
+   \_doc -----------------------------
+   The \^`\not` macro is redefined here.
+   \_cod -----------------------------
+
+\_protected\_def\_not#1{%
+  \_ifcsname _not!\_csstring#1\_endcsname \_csname _not!\_csstring#1\_endcsname
+  \_else \_mathrel{\_mathord{\_rlap{\_kern1pt/}}\_mathord{#1}}%
+  \_fi
+}
+\_def\_negationof #1#2{\_ea\_let \_csname _not!\_csstring#1\_endcsname =#2}
+\_negationof =         \neq   
+\_negationof <         \nless 
+\_negationof >         \ngtr
+\_negationof \gets     \nleftarrow
+\_negationof \simeq    \nsime
+\_negationof \equal    \ne   
+\_negationof \le       \nleq 
+\_negationof \ge       \ngeq 
+\_negationof \greater  \ngtr 
+\_negationof \forksnot \forks
+\_negationof \in       \notin
+
+\_public \not ;
+
+   \_doc -----------------------------
+   Newly declared public control sequences are used in internal macros by
+   \OpTeX/. We need to get new meanings of these control sequences in
+   private name space.
+   \_cod -----------------------------
+
+\_private 
+   \ldotp \cdotp \bullet \triangleleft \trianglerigt \mapstochar \rightarrow 
+   \prime \lhook \rightarrow \leftarrow \rhook \triangleright \triangleleft
+   \Relbar \Rightarrow \relbar \rightarrow \Leftarrow \mapstochar
+   \longrightarrow \Longleftrightarrow \vdots \ddots ;
+
+\_endcode
+
+\secc A few observations
+
+You can combine more fonts in math, if you register them to another
+math families (5, 6, 7, etc.) in the \^`\normalmath` macro.
+
+The default value of \^`\normalmath` shows a combination of base Unicode Math
+font with 8bit Math font at family 4. See definition of the `\script` macro where
+`\fam4` is used. Of course, we need to set `\rmvariables` too, because 8bit font
+accepts only codes less than 255.
+
+XITSmath-bold needs correction: the norm symbol ||x|| is missing here. So, you
+can define: 
+
+\begtt
+\def\_boldmath{%
+   \loadumathfamily 1 {[xitsmath-bold]}{} % Base font
+   \loadmathfamily  4 rsfs                % script
+   \loadumathfamily 5 {[xitsmath-regular]}{}
+   \def\|{\Udelimiter 0 5 "02016 }%       % norm delimiter from family 5
+   \setmathdimens
+}
+\endtt
+
+\_endinput
+
+History:
+2020-04-30  Bug fix: \phi, \varpi etc. were bad encoded
+2020-04-09  Bug fix: \Udelcode`<, \Udelcode`> added


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/unimath-codes.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/unimath-table.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/unimath-table.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/unimath-table.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,2467 @@
+%%^^A%% unicode-math-table.tex -- part of UNICODE-MATH <wspr.io/unicode-math>
+%%^^A%% Source file of the math symbols.
+
+\UnicodeMathSymbol{"00021}{\mathexclam               }{\mathclose}{exclamation mark}%
+\UnicodeMathSymbol{"00023}{\mathoctothorpe           }{\mathord}{number sign}%
+\UnicodeMathSymbol{"00024}{\mathdollar               }{\mathord}{dollar sign}%
+\UnicodeMathSymbol{"00025}{\mathpercent              }{\mathord}{percent sign}%
+\UnicodeMathSymbol{"00026}{\mathampersand            }{\mathord}{ampersand}%
+\UnicodeMathSymbol{"00028}{\lparen                   }{\mathopen}{left parenthesis}%
+\UnicodeMathSymbol{"00029}{\rparen                   }{\mathclose}{right parenthesis}%
+\UnicodeMathSymbol{"0002B}{\mathplus                 }{\mathbin}{plus sign b:}%
+\UnicodeMathSymbol{"0002C}{\mathcomma                }{\mathpunct}{comma}%
+\UnicodeMathSymbol{"0002E}{\mathperiod               }{\mathord}{full stop, period}%
+\UnicodeMathSymbol{"0002F}{\mathslash                }{\mathord}{solidus}%
+\UnicodeMathSymbol{"0003A}{\mathcolon                }{\mathpunct}{colon}%
+\UnicodeMathSymbol{"0003B}{\mathsemicolon            }{\mathpunct}{semicolon p:}%
+\UnicodeMathSymbol{"0003C}{\less                     }{\mathrel}{less-than sign r:}%
+\UnicodeMathSymbol{"0003D}{\equal                    }{\mathrel}{equals sign r:}%
+\UnicodeMathSymbol{"0003E}{\greater                  }{\mathrel}{greater-than sign r:}%
+\UnicodeMathSymbol{"0003F}{\mathquestion             }{\mathord}{question mark}%
+\UnicodeMathSymbol{"00040}{\mathatsign               }{\mathord}{commercial at}%
+\UnicodeMathSymbol{"0005B}{\lbrack                   }{\mathopen}{left square bracket}%
+\UnicodeMathSymbol{"0005C}{\backslash                }{\mathord}{reverse solidus}%
+\UnicodeMathSymbol{"0005D}{\rbrack                   }{\mathclose}{right square bracket}%
+\UnicodeMathSymbol{"0007B}{\lbrace                   }{\mathopen}{left curly bracket}%
+\UnicodeMathSymbol{"0007C}{\vert                     }{\mathfence}{vertical bar}%
+\UnicodeMathSymbol{"0007D}{\rbrace                   }{\mathclose}{right curly bracket}%
+\UnicodeMathSymbol{"000A3}{\mathsterling             }{\mathord}{pound sign}%
+\UnicodeMathSymbol{"000A5}{\mathyen                  }{\mathord}{yen sign}%
+\UnicodeMathSymbol{"000A7}{\mathsection              }{\mathord}{section symbol}%
+\UnicodeMathSymbol{"000AC}{\neg                      }{\mathord}{/neg /lnot not sign}%
+\UnicodeMathSymbol{"000B1}{\pm                       }{\mathbin}{plus-or-minus sign}%
+\UnicodeMathSymbol{"000B6}{\mathparagraph            }{\mathord}{paragraph symbol}%
+\UnicodeMathSymbol{"000B7}{\cdotp                    }{\mathbin}{/centerdot b: middle dot}%
+\UnicodeMathSymbol{"000D7}{\times                    }{\mathbin}{multiply sign}%
+\UnicodeMathSymbol{"000F0}{\matheth                  }{\mathalpha}{eth}%
+\UnicodeMathSymbol{"000F7}{\div                      }{\mathbin}{divide sign}%
+\UnicodeMathSymbol{"001B5}{\Zbar                     }{\mathord}{impedance (latin capital letter z with stroke)}%
+\UnicodeMathSymbol{"00300}{\grave                    }{\mathaccent}{grave accent}%
+\UnicodeMathSymbol{"00301}{\acute                    }{\mathaccent}{acute accent}%
+\UnicodeMathSymbol{"00302}{\hat                      }{\mathaccent}{circumflex accent}%
+\UnicodeMathSymbol{"00302}{\widehat                  }{\mathaccentwide}{circumflex accent}%
+\UnicodeMathSymbol{"00303}{\tilde                    }{\mathaccent}{tilde}%
+\UnicodeMathSymbol{"00303}{\widetilde                }{\mathaccentwide}{tilde}%
+\UnicodeMathSymbol{"00304}{\bar                      }{\mathaccent}{macron}%
+\UnicodeMathSymbol{"00305}{\overbar                  }{\mathaccent}{overbar embellishment}%
+\UnicodeMathSymbol{"00305}{\wideoverbar              }{\mathaccentwide}{stretchy overbar embellishment}%
+\UnicodeMathSymbol{"00306}{\breve                    }{\mathaccent}{breve}%
+\UnicodeMathSymbol{"00306}{\widebreve                }{\mathaccentwide}{stretchy breve}%
+\UnicodeMathSymbol{"00307}{\dot                      }{\mathaccent}{dot above}%
+\UnicodeMathSymbol{"00308}{\ddot                     }{\mathaccent}{dieresis}%
+\UnicodeMathSymbol{"00309}{\ovhook                   }{\mathaccent}{combining hook above}%
+\UnicodeMathSymbol{"0030A}{\ocirc                    }{\mathaccent}{ring}%
+\UnicodeMathSymbol{"0030C}{\check                    }{\mathaccent}{caron}%
+\UnicodeMathSymbol{"0030C}{\widecheck                }{\mathaccentwide}{stretchy caron}%
+\UnicodeMathSymbol{"00310}{\candra                   }{\mathaccent}{candrabindu (non-spacing)}%
+\UnicodeMathSymbol{"00312}{\oturnedcomma             }{\mathaccent}{combining turned comma above}%
+\UnicodeMathSymbol{"00315}{\ocommatopright           }{\mathaccent}{combining comma above right}%
+\UnicodeMathSymbol{"0031A}{\droang                   }{\mathaccent}{left angle above (non-spacing)}%
+\UnicodeMathSymbol{"00330}{\wideutilde               }{\mathbotaccentwide}{under tilde accent (multiple characters and non-spacing)}%
+\UnicodeMathSymbol{"00332}{\mathunderbar             }{\mathbotaccentwide}{combining low line}%
+\UnicodeMathSymbol{"00338}{\notaccent                }{\mathaccentoverlay}{combining long solidus overlay}%
+\UnicodeMathSymbol{"0034D}{\underleftrightarrow      }{\mathbotaccentwide}{underleftrightarrow accent}%
+\UnicodeMathSymbol{"00391}{\mupAlpha                 }{\mathalpha}{capital alpha, greek}%
+\UnicodeMathSymbol{"00392}{\mupBeta                  }{\mathalpha}{capital beta, greek}%
+\UnicodeMathSymbol{"00393}{\mupGamma                 }{\mathalpha}{capital gamma, greek}%
+\UnicodeMathSymbol{"00394}{\mupDelta                 }{\mathalpha}{capital delta, greek}%
+\UnicodeMathSymbol{"00395}{\mupEpsilon               }{\mathalpha}{capital epsilon, greek}%
+\UnicodeMathSymbol{"00396}{\mupZeta                  }{\mathalpha}{capital zeta, greek}%
+\UnicodeMathSymbol{"00397}{\mupEta                   }{\mathalpha}{capital eta, greek}%
+\UnicodeMathSymbol{"00398}{\mupTheta                 }{\mathalpha}{capital theta, greek}%
+\UnicodeMathSymbol{"00399}{\mupIota                  }{\mathalpha}{capital iota, greek}%
+\UnicodeMathSymbol{"0039A}{\mupKappa                 }{\mathalpha}{capital kappa, greek}%
+\UnicodeMathSymbol{"0039B}{\mupLambda                }{\mathalpha}{capital lambda, greek}%
+\UnicodeMathSymbol{"0039C}{\mupMu                    }{\mathalpha}{capital mu, greek}%
+\UnicodeMathSymbol{"0039D}{\mupNu                    }{\mathalpha}{capital nu, greek}%
+\UnicodeMathSymbol{"0039E}{\mupXi                    }{\mathalpha}{capital xi, greek}%
+\UnicodeMathSymbol{"0039F}{\mupOmicron               }{\mathalpha}{capital omicron, greek}%
+\UnicodeMathSymbol{"003A0}{\mupPi                    }{\mathalpha}{capital pi, greek}%
+\UnicodeMathSymbol{"003A1}{\mupRho                   }{\mathalpha}{capital rho, greek}%
+\UnicodeMathSymbol{"003A3}{\mupSigma                 }{\mathalpha}{capital sigma, greek}%
+\UnicodeMathSymbol{"003A4}{\mupTau                   }{\mathalpha}{capital tau, greek}%
+\UnicodeMathSymbol{"003A5}{\mupUpsilon               }{\mathalpha}{capital upsilon, greek}%
+\UnicodeMathSymbol{"003A6}{\mupPhi                   }{\mathalpha}{capital phi, greek}%
+\UnicodeMathSymbol{"003A7}{\mupChi                   }{\mathalpha}{capital chi, greek}%
+\UnicodeMathSymbol{"003A8}{\mupPsi                   }{\mathalpha}{capital psi, greek}%
+\UnicodeMathSymbol{"003A9}{\mupOmega                 }{\mathalpha}{capital omega, greek}%
+\UnicodeMathSymbol{"003B1}{\mupalpha                 }{\mathalpha}{small alpha, greek}%
+\UnicodeMathSymbol{"003B2}{\mupbeta                  }{\mathalpha}{small beta, greek}%
+\UnicodeMathSymbol{"003B3}{\mupgamma                 }{\mathalpha}{small gamma, greek}%
+\UnicodeMathSymbol{"003B4}{\mupdelta                 }{\mathalpha}{small delta, greek}%
+\UnicodeMathSymbol{"003B5}{\mupvarepsilon            }{\mathalpha}{rounded small varepsilon, greek}%
+\UnicodeMathSymbol{"003B6}{\mupzeta                  }{\mathalpha}{small zeta, greek}%
+\UnicodeMathSymbol{"003B7}{\mupeta                   }{\mathalpha}{small eta, greek}%
+\UnicodeMathSymbol{"003B8}{\muptheta                 }{\mathalpha}{straight theta, small theta, greek}%
+\UnicodeMathSymbol{"003B9}{\mupiota                  }{\mathalpha}{small iota, greek}%
+\UnicodeMathSymbol{"003BA}{\mupkappa                 }{\mathalpha}{small kappa, greek}%
+\UnicodeMathSymbol{"003BB}{\muplambda                }{\mathalpha}{small lambda, greek}%
+\UnicodeMathSymbol{"003BC}{\mupmu                    }{\mathalpha}{small mu, greek}%
+\UnicodeMathSymbol{"003BD}{\mupnu                    }{\mathalpha}{small nu, greek}%
+\UnicodeMathSymbol{"003BE}{\mupxi                    }{\mathalpha}{small xi, greek}%
+\UnicodeMathSymbol{"003BF}{\mupomicron               }{\mathalpha}{small omicron, greek}%
+\UnicodeMathSymbol{"003C0}{\muppi                    }{\mathalpha}{small pi, greek}%
+\UnicodeMathSymbol{"003C1}{\muprho                   }{\mathalpha}{small rho, greek}%
+\UnicodeMathSymbol{"003C2}{\mupvarsigma              }{\mathalpha}{terminal sigma, greek}%
+\UnicodeMathSymbol{"003C3}{\mupsigma                 }{\mathalpha}{small sigma, greek}%
+\UnicodeMathSymbol{"003C4}{\muptau                   }{\mathalpha}{small tau, greek}%
+\UnicodeMathSymbol{"003C5}{\mupupsilon               }{\mathalpha}{small upsilon, greek}%
+\UnicodeMathSymbol{"003C6}{\mupvarphi                }{\mathalpha}{curly or open small phi, greek}%
+\UnicodeMathSymbol{"003C7}{\mupchi                   }{\mathalpha}{small chi, greek}%
+\UnicodeMathSymbol{"003C8}{\muppsi                   }{\mathalpha}{small psi, greek}%
+\UnicodeMathSymbol{"003C9}{\mupomega                 }{\mathalpha}{small omega, greek}%
+\UnicodeMathSymbol{"003D1}{\mupvartheta              }{\mathalpha}{/vartheta - curly or open theta}%
+\UnicodeMathSymbol{"003D5}{\mupphi                   }{\mathalpha}{/straightphi - small phi, greek}%
+\UnicodeMathSymbol{"003D6}{\mupvarpi                 }{\mathalpha}{rounded small pi (pomega), greek}%
+\UnicodeMathSymbol{"003DC}{\upDigamma                }{\mathalpha}{capital digamma}%
+\UnicodeMathSymbol{"003DD}{\updigamma                }{\mathalpha}{old greek small letter digamma}%
+\UnicodeMathSymbol{"003F0}{\mupvarkappa              }{\mathalpha}{rounded small kappa, greek}%
+\UnicodeMathSymbol{"003F1}{\mupvarrho                }{\mathalpha}{rounded small rho, greek}%
+\UnicodeMathSymbol{"003F4}{\mupvarTheta              }{\mathalpha}{greek capital theta symbol}%
+\UnicodeMathSymbol{"003F5}{\mupepsilon               }{\mathalpha}{greek lunate varepsilon symbol}%
+\UnicodeMathSymbol{"003F6}{\upbackepsilon            }{\mathord}{greek reversed lunate epsilon symbol}%
+\UnicodeMathSymbol{"02010}{\mathhyphen               }{\mathalpha}{hyphen}%
+\UnicodeMathSymbol{"02015}{\horizbar                 }{\mathord}{horizontal bar}%
+\UnicodeMathSymbol{"02016}{\Vert                     }{\mathfence}{double vertical bar}%
+\UnicodeMathSymbol{"02017}{\twolowline               }{\mathord}{double low line (spacing)}%
+\UnicodeMathSymbol{"02020}{\dagger                   }{\mathbin}{dagger relation}%
+\UnicodeMathSymbol{"02021}{\ddagger                  }{\mathbin}{double dagger relation}%
+\UnicodeMathSymbol{"02022}{\smblkcircle              }{\mathbin}{/bullet b: round bullet, filled}%
+\UnicodeMathSymbol{"02025}{\enleadertwodots          }{\mathord}{double baseline dot (en leader)}%
+\UnicodeMathSymbol{"02026}{\unicodeellipsis          }{\mathord}{ellipsis (horizontal)}%
+\UnicodeMathSymbol{"02032}{\prime                    }{\mathord}{prime or minute, not superscripted}%
+\UnicodeMathSymbol{"02033}{\dprime                   }{\mathord}{double prime or second, not superscripted}%
+\UnicodeMathSymbol{"02034}{\trprime                  }{\mathord}{triple prime (not superscripted)}%
+\UnicodeMathSymbol{"02035}{\backprime                }{\mathord}{reverse prime, not superscripted}%
+\UnicodeMathSymbol{"02036}{\backdprime               }{\mathord}{double reverse prime, not superscripted}%
+\UnicodeMathSymbol{"02037}{\backtrprime              }{\mathord}{triple reverse prime, not superscripted}%
+\UnicodeMathSymbol{"02038}{\caretinsert              }{\mathord}{caret (insertion mark)}%
+\UnicodeMathSymbol{"0203C}{\Exclam                   }{\mathord}{double exclamation mark}%
+\UnicodeMathSymbol{"02040}{\tieconcat                }{\mathbin}{character tie, z notation sequence concatenation}%
+\UnicodeMathSymbol{"02043}{\hyphenbullet             }{\mathord}{rectangle, filled (hyphen bullet)}%
+\UnicodeMathSymbol{"02044}{\fracslash                }{\mathbin}{fraction slash}%
+\UnicodeMathSymbol{"02047}{\Question                 }{\mathord}{double question mark}%
+\UnicodeMathSymbol{"02050}{\closure                  }{\mathrel}{close up}%
+\UnicodeMathSymbol{"02057}{\qprime                   }{\mathord}{quadruple prime, not superscripted}%
+\UnicodeMathSymbol{"020AC}{\euro                     }{\mathord}{euro sign}%
+\UnicodeMathSymbol{"020D0}{\leftharpoonaccent        }{\mathaccent}{combining left harpoon above}%
+\UnicodeMathSymbol{"020D0}{\overleftharpoon          }{\mathaccentwide}{combining left harpoon above}%
+\UnicodeMathSymbol{"020D1}{\rightharpoonaccent       }{\mathaccent}{combining right harpoon above}%
+\UnicodeMathSymbol{"020D1}{\overrightharpoon         }{\mathaccentwide}{combining right harpoon above}%
+\UnicodeMathSymbol{"020D2}{\vertoverlay              }{\mathaccent}{combining long vertical line overlay}%
+\UnicodeMathSymbol{"020D6}{\overleftarrow            }{\mathaccentwide}{combining left arrow above}%
+\UnicodeMathSymbol{"020D7}{\overrightarrow           }{\mathaccentwide}{combining left arrow above}%
+\UnicodeMathSymbol{"020D7}{\vec                      }{\mathaccent}{combining right arrow above}%
+\UnicodeMathSymbol{"020DB}{\dddot                    }{\mathaccent}{combining three dots above}%
+\UnicodeMathSymbol{"020DC}{\ddddot                   }{\mathaccent}{combining four dots above}%
+\UnicodeMathSymbol{"020DD}{\enclosecircle            }{\mathord}{combining enclosing circle}%
+\UnicodeMathSymbol{"020DE}{\enclosesquare            }{\mathord}{combining enclosing square}%
+\UnicodeMathSymbol{"020DF}{\enclosediamond           }{\mathord}{combining enclosing diamond}%
+\UnicodeMathSymbol{"020E1}{\overleftrightarrow       }{\mathaccentwide}{combining left right arrow above}%
+\UnicodeMathSymbol{"020E4}{\enclosetriangle          }{\mathord}{combining enclosing upward pointing triangle}%
+\UnicodeMathSymbol{"020E7}{\annuity                  }{\mathaccent}{combining annuity symbol}%
+\UnicodeMathSymbol{"020E8}{\threeunderdot            }{\mathbotaccent}{combining triple underdot}%
+\UnicodeMathSymbol{"020E9}{\widebridgeabove          }{\mathaccent}{combining wide bridge above}%
+\UnicodeMathSymbol{"020EC}{\underrightharpoondown    }{\mathbotaccentwide}{combining rightwards harpoon with barb downwards}%
+\UnicodeMathSymbol{"020ED}{\underleftharpoondown     }{\mathbotaccentwide}{combining leftwards harpoon with barb downwards}%
+\UnicodeMathSymbol{"020EE}{\underleftarrow           }{\mathbotaccentwide}{combining left arrow below}%
+\UnicodeMathSymbol{"020EF}{\underrightarrow          }{\mathbotaccentwide}{combining right arrow below}%
+\UnicodeMathSymbol{"020F0}{\asteraccent              }{\mathaccent}{combining asterisk above}%
+\UnicodeMathSymbol{"02102}{\BbbC                     }{\mathalpha}{/bbb c, open face c}%
+\UnicodeMathSymbol{"02107}{\Eulerconst               }{\mathord}{euler constant}%
+\UnicodeMathSymbol{"0210A}{\mscrg                    }{\mathalpha}{/scr g, script letter g}%
+\UnicodeMathSymbol{"0210B}{\mscrH                    }{\mathalpha}{hamiltonian (script capital h)}%
+\UnicodeMathSymbol{"0210C}{\mfrakH                   }{\mathalpha}{/frak h, upper case h}%
+\UnicodeMathSymbol{"0210D}{\BbbH                     }{\mathalpha}{/bbb h, open face h}%
+\UnicodeMathSymbol{"0210E}{\Planckconst              }{\mathord}{planck constant}%
+\UnicodeMathSymbol{"0210F}{\hslash                   }{\mathalpha}{/hslash - variant planck's over 2pi}%
+\UnicodeMathSymbol{"02110}{\mscrI                    }{\mathalpha}{/scr i, script letter i}%
+\UnicodeMathSymbol{"02111}{\Im                       }{\mathalpha}{imaginary part}%
+\UnicodeMathSymbol{"02112}{\mscrL                    }{\mathalpha}{lagrangian (script capital l)}%
+\UnicodeMathSymbol{"02113}{\ell                      }{\mathalpha}{cursive small l}%
+\UnicodeMathSymbol{"02115}{\BbbN                     }{\mathalpha}{/bbb n, open face n}%
+\UnicodeMathSymbol{"02118}{\wp                       }{\mathalpha}{weierstrass p}%
+\UnicodeMathSymbol{"02119}{\BbbP                     }{\mathalpha}{/bbb p, open face p}%
+\UnicodeMathSymbol{"0211A}{\BbbQ                     }{\mathalpha}{/bbb q, open face q}%
+\UnicodeMathSymbol{"0211B}{\mscrR                    }{\mathalpha}{/scr r, script letter r}%
+\UnicodeMathSymbol{"0211C}{\Re                       }{\mathalpha}{real part}%
+\UnicodeMathSymbol{"0211D}{\BbbR                     }{\mathalpha}{/bbb r, open face r}%
+\UnicodeMathSymbol{"02124}{\BbbZ                     }{\mathalpha}{/bbb z, open face z}%
+\UnicodeMathSymbol{"02127}{\mho                      }{\mathord}{conductance}%
+\UnicodeMathSymbol{"02128}{\mfrakZ                   }{\mathalpha}{/frak z, upper case z}%
+\UnicodeMathSymbol{"02129}{\turnediota               }{\mathalpha}{turned iota}%
+\UnicodeMathSymbol{"0212B}{\Angstrom                 }{\mathalpha}{angstrom capital a, ring}%
+\UnicodeMathSymbol{"0212C}{\mscrB                    }{\mathalpha}{bernoulli function (script capital b)}%
+\UnicodeMathSymbol{"0212D}{\mfrakC                   }{\mathalpha}{black-letter capital c}%
+\UnicodeMathSymbol{"0212F}{\mscre                    }{\mathalpha}{/scr e, script letter e}%
+\UnicodeMathSymbol{"02130}{\mscrE                    }{\mathalpha}{/scr e, script letter e}%
+\UnicodeMathSymbol{"02131}{\mscrF                    }{\mathalpha}{/scr f, script letter f}%
+\UnicodeMathSymbol{"02132}{\Finv                     }{\mathord}{turned capital f}%
+\UnicodeMathSymbol{"02133}{\mscrM                    }{\mathalpha}{physics m-matrix (script capital m)}%
+\UnicodeMathSymbol{"02134}{\mscro                    }{\mathalpha}{order of (script small o)}%
+\UnicodeMathSymbol{"02135}{\aleph                    }{\mathalpha}{aleph, hebrew}%
+\UnicodeMathSymbol{"02136}{\beth                     }{\mathalpha}{beth, hebrew}%
+\UnicodeMathSymbol{"02137}{\gimel                    }{\mathalpha}{gimel, hebrew}%
+\UnicodeMathSymbol{"02138}{\daleth                   }{\mathalpha}{daleth, hebrew}%
+\UnicodeMathSymbol{"0213C}{\Bbbpi                    }{\mathord}{double-struck small pi}%
+\UnicodeMathSymbol{"0213D}{\Bbbgamma                 }{\mathalpha}{double-struck small gamma}%
+\UnicodeMathSymbol{"0213E}{\BbbGamma                 }{\mathalpha}{double-struck capital gamma}%
+\UnicodeMathSymbol{"0213F}{\BbbPi                    }{\mathalpha}{double-struck capital pi}%
+\UnicodeMathSymbol{"02140}{\Bbbsum                   }{\mathop}{double-struck n-ary summation}%
+\UnicodeMathSymbol{"02141}{\Game                     }{\mathord}{turned sans-serif capital g}%
+\UnicodeMathSymbol{"02142}{\sansLturned              }{\mathord}{turned sans-serif capital l}%
+\UnicodeMathSymbol{"02143}{\sansLmirrored            }{\mathord}{reversed sans-serif capital l}%
+\UnicodeMathSymbol{"02144}{\Yup                      }{\mathord}{turned sans-serif capital y}%
+\UnicodeMathSymbol{"02145}{\mitBbbD                  }{\mathord}{double-struck italic capital d}%
+\UnicodeMathSymbol{"02146}{\mitBbbd                  }{\mathord}{double-struck italic small d}%
+\UnicodeMathSymbol{"02147}{\mitBbbe                  }{\mathord}{double-struck italic small e}%
+\UnicodeMathSymbol{"02148}{\mitBbbi                  }{\mathord}{double-struck italic small i}%
+\UnicodeMathSymbol{"02149}{\mitBbbj                  }{\mathord}{double-struck italic small j}%
+\UnicodeMathSymbol{"0214A}{\PropertyLine             }{\mathord}{property line}%
+\UnicodeMathSymbol{"0214B}{\upand                    }{\mathbin}{turned ampersand}%
+\UnicodeMathSymbol{"02190}{\leftarrow                }{\mathrel}{/leftarrow /gets a: leftward arrow}%
+\UnicodeMathSymbol{"02191}{\uparrow                  }{\mathrel}{upward arrow}%
+\UnicodeMathSymbol{"02192}{\rightarrow               }{\mathrel}{/rightarrow /to a: rightward arrow}%
+\UnicodeMathSymbol{"02193}{\downarrow                }{\mathrel}{downward arrow}%
+\UnicodeMathSymbol{"02194}{\leftrightarrow           }{\mathrel}{left and right arrow}%
+\UnicodeMathSymbol{"02195}{\updownarrow              }{\mathrel}{up and down arrow}%
+\UnicodeMathSymbol{"02196}{\nwarrow                  }{\mathrel}{nw pointing arrow}%
+\UnicodeMathSymbol{"02197}{\nearrow                  }{\mathrel}{ne pointing arrow}%
+\UnicodeMathSymbol{"02198}{\searrow                  }{\mathrel}{se pointing arrow}%
+\UnicodeMathSymbol{"02199}{\swarrow                  }{\mathrel}{sw pointing arrow}%
+\UnicodeMathSymbol{"0219A}{\nleftarrow               }{\mathrel}{not left arrow}%
+\UnicodeMathSymbol{"0219B}{\nrightarrow              }{\mathrel}{not right arrow}%
+\UnicodeMathSymbol{"0219C}{\leftwavearrow            }{\mathrel}{left arrow-wavy}%
+\UnicodeMathSymbol{"0219D}{\rightwavearrow           }{\mathrel}{right arrow-wavy}%
+\UnicodeMathSymbol{"0219E}{\twoheadleftarrow         }{\mathrel}{left two-headed arrow}%
+\UnicodeMathSymbol{"0219F}{\twoheaduparrow           }{\mathrel}{up two-headed arrow}%
+\UnicodeMathSymbol{"021A0}{\twoheadrightarrow        }{\mathrel}{right two-headed arrow}%
+\UnicodeMathSymbol{"021A1}{\twoheaddownarrow         }{\mathrel}{down two-headed arrow}%
+\UnicodeMathSymbol{"021A2}{\leftarrowtail            }{\mathrel}{left arrow-tailed}%
+\UnicodeMathSymbol{"021A3}{\rightarrowtail           }{\mathrel}{right arrow-tailed}%
+\UnicodeMathSymbol{"021A4}{\mapsfrom                 }{\mathrel}{maps to, leftward}%
+\UnicodeMathSymbol{"021A5}{\mapsup                   }{\mathrel}{maps to, upward}%
+\UnicodeMathSymbol{"021A6}{\mapsto                   }{\mathrel}{maps to, rightward}%
+\UnicodeMathSymbol{"021A7}{\mapsdown                 }{\mathrel}{maps to, downward}%
+\UnicodeMathSymbol{"021A8}{\updownarrowbar           }{\mathord}{up down arrow with base (perpendicular)}%
+\UnicodeMathSymbol{"021A9}{\hookleftarrow            }{\mathrel}{left arrow-hooked}%
+\UnicodeMathSymbol{"021AA}{\hookrightarrow           }{\mathrel}{right arrow-hooked}%
+\UnicodeMathSymbol{"021AB}{\looparrowleft            }{\mathrel}{left arrow-looped}%
+\UnicodeMathSymbol{"021AC}{\looparrowright           }{\mathrel}{right arrow-looped}%
+\UnicodeMathSymbol{"021AD}{\leftrightsquigarrow      }{\mathrel}{left and right arr-wavy}%
+\UnicodeMathSymbol{"021AE}{\nleftrightarrow          }{\mathrel}{not left and right arrow}%
+\UnicodeMathSymbol{"021AF}{\downzigzagarrow          }{\mathrel}{downwards zigzag arrow}%
+\UnicodeMathSymbol{"021B0}{\Lsh                      }{\mathrel}{/lsh a:}%
+\UnicodeMathSymbol{"021B1}{\Rsh                      }{\mathrel}{/rsh a:}%
+\UnicodeMathSymbol{"021B2}{\Ldsh                     }{\mathrel}{left down angled arrow}%
+\UnicodeMathSymbol{"021B3}{\Rdsh                     }{\mathrel}{right down angled arrow}%
+\UnicodeMathSymbol{"021B4}{\linefeed                 }{\mathord}{rightwards arrow with corner downwards}%
+\UnicodeMathSymbol{"021B5}{\carriagereturn           }{\mathord}{downwards arrow with corner leftward = carriage return}%
+\UnicodeMathSymbol{"021B6}{\curvearrowleft           }{\mathrel}{left curved arrow}%
+\UnicodeMathSymbol{"021B7}{\curvearrowright          }{\mathrel}{right curved arrow}%
+\UnicodeMathSymbol{"021B8}{\barovernorthwestarrow    }{\mathord}{north west arrow to long bar}%
+\UnicodeMathSymbol{"021B9}{\barleftarrowrightarrowbar}{\mathord}{leftwards arrow to bar over rightwards arrow to bar}%
+\UnicodeMathSymbol{"021BA}{\acwopencirclearrow       }{\mathord}{anticlockwise open circle arrow}%
+\UnicodeMathSymbol{"021BB}{\cwopencirclearrow        }{\mathord}{clockwise open circle arrow}%
+\UnicodeMathSymbol{"021BC}{\leftharpoonup            }{\mathrel}{left harpoon-up}%
+\UnicodeMathSymbol{"021BD}{\leftharpoondown          }{\mathrel}{left harpoon-down}%
+\UnicodeMathSymbol{"021BE}{\upharpoonright           }{\mathrel}{/upharpoonright /restriction a: up harpoon-right}%
+\UnicodeMathSymbol{"021BF}{\upharpoonleft            }{\mathrel}{up harpoon-left}%
+\UnicodeMathSymbol{"021C0}{\rightharpoonup           }{\mathrel}{right harpoon-up}%
+\UnicodeMathSymbol{"021C1}{\rightharpoondown         }{\mathrel}{right harpoon-down}%
+\UnicodeMathSymbol{"021C2}{\downharpoonright         }{\mathrel}{down harpoon-right}%
+\UnicodeMathSymbol{"021C3}{\downharpoonleft          }{\mathrel}{down harpoon-left}%
+\UnicodeMathSymbol{"021C4}{\rightleftarrows          }{\mathrel}{right arrow over left arrow}%
+\UnicodeMathSymbol{"021C5}{\updownarrows             }{\mathrel}{up arrow, down arrow}%
+\UnicodeMathSymbol{"021C6}{\leftrightarrows          }{\mathrel}{left arrow over right arrow}%
+\UnicodeMathSymbol{"021C7}{\leftleftarrows           }{\mathrel}{two left arrows}%
+\UnicodeMathSymbol{"021C8}{\upuparrows               }{\mathrel}{two up arrows}%
+\UnicodeMathSymbol{"021C9}{\rightrightarrows         }{\mathrel}{two right arrows}%
+\UnicodeMathSymbol{"021CA}{\downdownarrows           }{\mathrel}{two down arrows}%
+\UnicodeMathSymbol{"021CB}{\leftrightharpoons        }{\mathrel}{left harpoon over right}%
+\UnicodeMathSymbol{"021CC}{\rightleftharpoons        }{\mathrel}{right harpoon over left}%
+\UnicodeMathSymbol{"021CD}{\nLeftarrow               }{\mathrel}{not implied by}%
+\UnicodeMathSymbol{"021CE}{\nLeftrightarrow          }{\mathrel}{not left and right double arrows}%
+\UnicodeMathSymbol{"021CF}{\nRightarrow              }{\mathrel}{not implies}%
+\UnicodeMathSymbol{"021D0}{\Leftarrow                }{\mathrel}{is implied by}%
+\UnicodeMathSymbol{"021D1}{\Uparrow                  }{\mathrel}{up double arrow}%
+\UnicodeMathSymbol{"021D2}{\Rightarrow               }{\mathrel}{implies}%
+\UnicodeMathSymbol{"021D3}{\Downarrow                }{\mathrel}{down double arrow}%
+\UnicodeMathSymbol{"021D4}{\Leftrightarrow           }{\mathrel}{left and right double arrow}%
+\UnicodeMathSymbol{"021D5}{\Updownarrow              }{\mathrel}{up and down double arrow}%
+\UnicodeMathSymbol{"021D6}{\Nwarrow                  }{\mathrel}{nw pointing double arrow}%
+\UnicodeMathSymbol{"021D7}{\Nearrow                  }{\mathrel}{ne pointing double arrow}%
+\UnicodeMathSymbol{"021D8}{\Searrow                  }{\mathrel}{se pointing double arrow}%
+\UnicodeMathSymbol{"021D9}{\Swarrow                  }{\mathrel}{sw pointing double arrow}%
+\UnicodeMathSymbol{"021DA}{\Lleftarrow               }{\mathrel}{left triple arrow}%
+\UnicodeMathSymbol{"021DB}{\Rrightarrow              }{\mathrel}{right triple arrow}%
+\UnicodeMathSymbol{"021DC}{\leftsquigarrow           }{\mathrel}{leftwards squiggle arrow}%
+\UnicodeMathSymbol{"021DD}{\rightsquigarrow          }{\mathrel}{rightwards squiggle arrow}%
+\UnicodeMathSymbol{"021DE}{\nHuparrow                }{\mathord}{upwards arrow with double stroke}%
+\UnicodeMathSymbol{"021DF}{\nHdownarrow              }{\mathord}{downwards arrow with double stroke}%
+\UnicodeMathSymbol{"021E0}{\leftdasharrow            }{\mathord}{leftwards dashed arrow}%
+\UnicodeMathSymbol{"021E1}{\updasharrow              }{\mathord}{upwards dashed arrow}%
+\UnicodeMathSymbol{"021E2}{\rightdasharrow           }{\mathord}{rightwards dashed arrow}%
+\UnicodeMathSymbol{"021E3}{\downdasharrow            }{\mathord}{downwards dashed arrow}%
+\UnicodeMathSymbol{"021E4}{\barleftarrow             }{\mathrel}{leftwards arrow to bar}%
+\UnicodeMathSymbol{"021E5}{\rightarrowbar            }{\mathrel}{rightwards arrow to bar}%
+\UnicodeMathSymbol{"021E6}{\leftwhitearrow           }{\mathord}{leftwards white arrow}%
+\UnicodeMathSymbol{"021E7}{\upwhitearrow             }{\mathord}{upwards white arrow}%
+\UnicodeMathSymbol{"021E8}{\rightwhitearrow          }{\mathord}{rightwards white arrow}%
+\UnicodeMathSymbol{"021E9}{\downwhitearrow           }{\mathord}{downwards white arrow}%
+\UnicodeMathSymbol{"021EA}{\whitearrowupfrombar      }{\mathord}{upwards white arrow from bar}%
+\UnicodeMathSymbol{"021F4}{\circleonrightarrow       }{\mathrel}{right arrow with small circle}%
+\UnicodeMathSymbol{"021F5}{\downuparrows             }{\mathrel}{downwards arrow leftwards of upwards arrow}%
+\UnicodeMathSymbol{"021F6}{\rightthreearrows         }{\mathrel}{three rightwards arrows}%
+\UnicodeMathSymbol{"021F7}{\nvleftarrow              }{\mathrel}{leftwards arrow with vertical stroke}%
+\UnicodeMathSymbol{"021F8}{\nvrightarrow             }{\mathrel}{rightwards arrow with vertical stroke}%
+\UnicodeMathSymbol{"021F9}{\nvleftrightarrow         }{\mathrel}{left right arrow with vertical stroke}%
+\UnicodeMathSymbol{"021FA}{\nVleftarrow              }{\mathrel}{leftwards arrow with double vertical stroke}%
+\UnicodeMathSymbol{"021FB}{\nVrightarrow             }{\mathrel}{rightwards arrow with double vertical stroke}%
+\UnicodeMathSymbol{"021FC}{\nVleftrightarrow         }{\mathrel}{left right arrow with double vertical stroke}%
+\UnicodeMathSymbol{"021FD}{\leftarrowtriangle        }{\mathrel}{leftwards open-headed arrow}%
+\UnicodeMathSymbol{"021FE}{\rightarrowtriangle       }{\mathrel}{rightwards open-headed arrow}%
+\UnicodeMathSymbol{"021FF}{\leftrightarrowtriangle   }{\mathrel}{left right open-headed arrow}%
+\UnicodeMathSymbol{"02200}{\forall                   }{\mathord}{for all}%
+\UnicodeMathSymbol{"02201}{\complement               }{\mathord}{complement sign}%
+\UnicodeMathSymbol{"02202}{\partial                  }{\mathalpha}{partial differential}%
+\UnicodeMathSymbol{"02203}{\exists                   }{\mathord}{at least one exists}%
+\UnicodeMathSymbol{"02204}{\nexists                  }{\mathord}{negated exists}%
+\UnicodeMathSymbol{"02205}{\varnothing               }{\mathord}{circle, slash}%
+\UnicodeMathSymbol{"02206}{\increment                }{\mathord}{laplacian (delta; nabla\string^2)}%
+\UnicodeMathSymbol{"02207}{\nabla                    }{\mathalpha}{nabla, del, hamilton operator}%
+\UnicodeMathSymbol{"02208}{\in                       }{\mathrel}{set membership, variant}%
+\UnicodeMathSymbol{"02209}{\notin                    }{\mathrel}{negated set membership}%
+\UnicodeMathSymbol{"0220A}{\smallin                  }{\mathrel}{set membership (small set membership)}%
+\UnicodeMathSymbol{"0220B}{\ni                       }{\mathrel}{contains, variant}%
+\UnicodeMathSymbol{"0220C}{\nni                      }{\mathrel}{negated contains, variant}%
+\UnicodeMathSymbol{"0220D}{\smallni                  }{\mathrel}{/ni /owns r: contains (small contains as member)}%
+\UnicodeMathSymbol{"0220E}{\QED                      }{\mathord}{end of proof}%
+\UnicodeMathSymbol{"0220F}{\prod                     }{\mathop}{product operator}%
+\UnicodeMathSymbol{"02210}{\coprod                   }{\mathop}{coproduct operator}%
+\UnicodeMathSymbol{"02211}{\sum                      }{\mathop}{summation operator}%
+\UnicodeMathSymbol{"02212}{\minus                    }{\mathbin}{minus sign}%
+\UnicodeMathSymbol{"02213}{\mp                       }{\mathbin}{minus-or-plus sign}%
+\UnicodeMathSymbol{"02214}{\dotplus                  }{\mathbin}{plus sign, dot above}%
+\UnicodeMathSymbol{"02215}{\divslash                 }{\mathbin}{division slash}%
+\UnicodeMathSymbol{"02216}{\smallsetminus            }{\mathbin}{small set minus (cf. reverse solidus)}%
+\UnicodeMathSymbol{"02217}{\ast                      }{\mathbin}{centered asterisk}%
+\UnicodeMathSymbol{"02218}{\vysmwhtcircle            }{\mathbin}{composite function (small circle)}%
+\UnicodeMathSymbol{"02219}{\vysmblkcircle            }{\mathbin}{bullet operator}%
+\UnicodeMathSymbol{"0221A}{\sqrt                     }{\mathopen}{radical}%
+\UnicodeMathSymbol{"0221A}{\surd                     }{\mathord}{radical}%
+\UnicodeMathSymbol{"0221B}{\cuberoot                 }{\mathopen}{cube root}%
+\UnicodeMathSymbol{"0221C}{\fourthroot               }{\mathopen}{fourth root}%
+\UnicodeMathSymbol{"0221D}{\propto                   }{\mathrel}{is proportional to}%
+\UnicodeMathSymbol{"0221E}{\infty                    }{\mathord}{infinity}%
+\UnicodeMathSymbol{"0221F}{\rightangle               }{\mathord}{right (90 degree) angle}%
+\UnicodeMathSymbol{"02220}{\angle                    }{\mathord}{angle}%
+\UnicodeMathSymbol{"02221}{\measuredangle            }{\mathord}{angle-measured}%
+\UnicodeMathSymbol{"02222}{\sphericalangle           }{\mathord}{angle-spherical}%
+\UnicodeMathSymbol{"02223}{\mid                      }{\mathrel}{/mid r:}%
+\UnicodeMathSymbol{"02224}{\nmid                     }{\mathrel}{negated mid}%
+\UnicodeMathSymbol{"02225}{\parallel                 }{\mathrel}{parallel}%
+\UnicodeMathSymbol{"02226}{\nparallel                }{\mathrel}{not parallel}%
+\UnicodeMathSymbol{"02227}{\wedge                    }{\mathbin}{/wedge /land b: logical and}%
+\UnicodeMathSymbol{"02228}{\vee                      }{\mathbin}{/vee /lor b: logical or}%
+\UnicodeMathSymbol{"02229}{\cap                      }{\mathbin}{intersection}%
+\UnicodeMathSymbol{"0222A}{\cup                      }{\mathbin}{union or logical sum}%
+\UnicodeMathSymbol{"0222B}{\int                      }{\mathop}{integral operator}%
+\UnicodeMathSymbol{"0222C}{\iint                     }{\mathop}{double integral operator}%
+\UnicodeMathSymbol{"0222D}{\iiint                    }{\mathop}{triple integral operator}%
+\UnicodeMathSymbol{"0222E}{\oint                     }{\mathop}{contour integral operator}%
+\UnicodeMathSymbol{"0222F}{\oiint                    }{\mathop}{double contour integral operator}%
+\UnicodeMathSymbol{"02230}{\oiiint                   }{\mathop}{triple contour integral operator}%
+\UnicodeMathSymbol{"02231}{\intclockwise             }{\mathop}{clockwise integral}%
+\UnicodeMathSymbol{"02232}{\varointclockwise         }{\mathop}{contour integral, clockwise}%
+\UnicodeMathSymbol{"02233}{\ointctrclockwise         }{\mathop}{contour integral, anticlockwise}%
+\UnicodeMathSymbol{"02234}{\therefore                }{\mathord}{therefore}%
+\UnicodeMathSymbol{"02235}{\because                  }{\mathord}{because}%
+\UnicodeMathSymbol{"02236}{\mathratio                }{\mathrel}{ratio}%
+\UnicodeMathSymbol{"02237}{\Colon                    }{\mathrel}{two colons}%
+\UnicodeMathSymbol{"02238}{\dotminus                 }{\mathbin}{minus sign, dot above}%
+\UnicodeMathSymbol{"02239}{\dashcolon                }{\mathrel}{excess (-:)}%
+\UnicodeMathSymbol{"0223A}{\dotsminusdots            }{\mathrel}{minus with four dots, geometric properties}%
+\UnicodeMathSymbol{"0223B}{\kernelcontraction        }{\mathrel}{homothetic}%
+\UnicodeMathSymbol{"0223C}{\sim                      }{\mathrel}{similar}%
+\UnicodeMathSymbol{"0223D}{\backsim                  }{\mathrel}{reverse similar}%
+\UnicodeMathSymbol{"0223E}{\invlazys                 }{\mathbin}{most positive [inverted lazy s]}%
+\UnicodeMathSymbol{"0223F}{\sinewave                 }{\mathord}{sine wave}%
+\UnicodeMathSymbol{"02240}{\wr                       }{\mathbin}{wreath product}%
+\UnicodeMathSymbol{"02241}{\nsim                     }{\mathrel}{not similar}%
+\UnicodeMathSymbol{"02242}{\eqsim                    }{\mathrel}{equals, similar}%
+\UnicodeMathSymbol{"02243}{\simeq                    }{\mathrel}{similar, equals}%
+\UnicodeMathSymbol{"02244}{\nsime                    }{\mathrel}{not similar, equals}%
+\UnicodeMathSymbol{"02243}{\sime                     }{\mathrel}{similar, equals (alias)}%
+\UnicodeMathSymbol{"02244}{\nsimeq                   }{\mathrel}{not similar, equals (alias)}%
+\UnicodeMathSymbol{"02245}{\cong                     }{\mathrel}{congruent with}%
+\UnicodeMathSymbol{"02246}{\simneqq                  }{\mathrel}{similar, not equals [vert only for 9573 entity]}%
+\UnicodeMathSymbol{"02247}{\ncong                    }{\mathrel}{not congruent with}%
+\UnicodeMathSymbol{"02248}{\approx                   }{\mathrel}{approximate}%
+\UnicodeMathSymbol{"02249}{\napprox                  }{\mathrel}{not approximate}%
+\UnicodeMathSymbol{"0224A}{\approxeq                 }{\mathrel}{approximate, equals}%
+\UnicodeMathSymbol{"0224B}{\approxident              }{\mathrel}{approximately identical to}%
+\UnicodeMathSymbol{"0224C}{\backcong                 }{\mathrel}{all equal to}%
+\UnicodeMathSymbol{"0224D}{\asymp                    }{\mathrel}{asymptotically equal to}%
+\UnicodeMathSymbol{"0224E}{\Bumpeq                   }{\mathrel}{bumpy equals}%
+\UnicodeMathSymbol{"0224F}{\bumpeq                   }{\mathrel}{bumpy equals, equals}%
+\UnicodeMathSymbol{"02250}{\doteq                    }{\mathrel}{equals, single dot above}%
+\UnicodeMathSymbol{"02251}{\Doteq                    }{\mathrel}{/doteqdot /doteq r: equals, even dots}%
+\UnicodeMathSymbol{"02252}{\fallingdotseq            }{\mathrel}{equals, falling dots}%
+\UnicodeMathSymbol{"02253}{\risingdotseq             }{\mathrel}{equals, rising dots}%
+\UnicodeMathSymbol{"02254}{\coloneq                  }{\mathrel}{colon, equals}%
+\UnicodeMathSymbol{"02255}{\eqcolon                  }{\mathrel}{equals, colon}%
+\UnicodeMathSymbol{"02256}{\eqcirc                   }{\mathrel}{circle on equals sign}%
+\UnicodeMathSymbol{"02257}{\circeq                   }{\mathrel}{circle, equals}%
+\UnicodeMathSymbol{"02258}{\arceq                    }{\mathrel}{arc, equals; corresponds to}%
+\UnicodeMathSymbol{"02259}{\wedgeq                   }{\mathrel}{corresponds to (wedge, equals)}%
+\UnicodeMathSymbol{"0225A}{\veeeq                    }{\mathrel}{logical or, equals}%
+\UnicodeMathSymbol{"0225B}{\stareq                   }{\mathrel}{star equals}%
+\UnicodeMathSymbol{"0225C}{\triangleq                }{\mathrel}{triangle, equals}%
+\UnicodeMathSymbol{"0225D}{\eqdef                    }{\mathrel}{equals by definition}%
+\UnicodeMathSymbol{"0225E}{\measeq                   }{\mathrel}{measured by (m over equals)}%
+\UnicodeMathSymbol{"0225F}{\questeq                  }{\mathrel}{equal with questionmark}%
+\UnicodeMathSymbol{"02260}{\ne                       }{\mathrel}{/ne /neq r: not equal}%
+\UnicodeMathSymbol{"02261}{\equiv                    }{\mathrel}{identical with}%
+\UnicodeMathSymbol{"02262}{\nequiv                   }{\mathrel}{not identical with}%
+\UnicodeMathSymbol{"02263}{\Equiv                    }{\mathrel}{strict equivalence (4 lines)}%
+\UnicodeMathSymbol{"02264}{\leq                      }{\mathrel}{/leq /le r: less-than-or-equal}%
+\UnicodeMathSymbol{"02265}{\geq                      }{\mathrel}{/geq /ge r: greater-than-or-equal}%
+\UnicodeMathSymbol{"02266}{\leqq                     }{\mathrel}{less, double equals}%
+\UnicodeMathSymbol{"02267}{\geqq                     }{\mathrel}{greater, double equals}%
+\UnicodeMathSymbol{"02268}{\lneqq                    }{\mathrel}{less, not double equals}%
+\UnicodeMathSymbol{"02269}{\gneqq                    }{\mathrel}{greater, not double equals}%
+\UnicodeMathSymbol{"0226A}{\ll                       }{\mathrel}{much less than, type 2}%
+\UnicodeMathSymbol{"0226B}{\gg                       }{\mathrel}{much greater than, type 2}%
+\UnicodeMathSymbol{"0226C}{\between                  }{\mathrel}{between}%
+\UnicodeMathSymbol{"0226D}{\nasymp                   }{\mathrel}{not asymptotically equal to}%
+\UnicodeMathSymbol{"0226E}{\nless                    }{\mathrel}{not less-than}%
+\UnicodeMathSymbol{"0226F}{\ngtr                     }{\mathrel}{not greater-than}%
+\UnicodeMathSymbol{"02270}{\nleq                     }{\mathrel}{not less-than-or-equal}%
+\UnicodeMathSymbol{"02271}{\ngeq                     }{\mathrel}{not greater-than-or-equal}%
+\UnicodeMathSymbol{"02272}{\lesssim                  }{\mathrel}{less, similar}%
+\UnicodeMathSymbol{"02273}{\gtrsim                   }{\mathrel}{greater, similar}%
+\UnicodeMathSymbol{"02274}{\nlesssim                 }{\mathrel}{not less, similar}%
+\UnicodeMathSymbol{"02275}{\ngtrsim                  }{\mathrel}{not greater, similar}%
+\UnicodeMathSymbol{"02276}{\lessgtr                  }{\mathrel}{less, greater}%
+\UnicodeMathSymbol{"02277}{\gtrless                  }{\mathrel}{greater, less}%
+\UnicodeMathSymbol{"02278}{\nlessgtr                 }{\mathrel}{not less, greater}%
+\UnicodeMathSymbol{"02279}{\ngtrless                 }{\mathrel}{not greater, less}%
+\UnicodeMathSymbol{"0227A}{\prec                     }{\mathrel}{precedes}%
+\UnicodeMathSymbol{"0227B}{\succ                     }{\mathrel}{succeeds}%
+\UnicodeMathSymbol{"0227C}{\preccurlyeq              }{\mathrel}{precedes, curly equals}%
+\UnicodeMathSymbol{"0227D}{\succcurlyeq              }{\mathrel}{succeeds, curly equals}%
+\UnicodeMathSymbol{"0227E}{\precsim                  }{\mathrel}{precedes, similar}%
+\UnicodeMathSymbol{"0227F}{\succsim                  }{\mathrel}{succeeds, similar}%
+\UnicodeMathSymbol{"02280}{\nprec                    }{\mathrel}{not precedes}%
+\UnicodeMathSymbol{"02281}{\nsucc                    }{\mathrel}{not succeeds}%
+\UnicodeMathSymbol{"02282}{\subset                   }{\mathrel}{subset or is implied by}%
+\UnicodeMathSymbol{"02283}{\supset                   }{\mathrel}{superset or implies}%
+\UnicodeMathSymbol{"02284}{\nsubset                  }{\mathrel}{not subset, variant [slash negation]}%
+\UnicodeMathSymbol{"02285}{\nsupset                  }{\mathrel}{not superset, variant [slash negation]}%
+\UnicodeMathSymbol{"02286}{\subseteq                 }{\mathrel}{subset, equals}%
+\UnicodeMathSymbol{"02287}{\supseteq                 }{\mathrel}{superset, equals}%
+\UnicodeMathSymbol{"02288}{\nsubseteq                }{\mathrel}{not subset, equals}%
+\UnicodeMathSymbol{"02289}{\nsupseteq                }{\mathrel}{not superset, equals}%
+\UnicodeMathSymbol{"0228A}{\subsetneq                }{\mathrel}{subset, not equals}%
+\UnicodeMathSymbol{"0228B}{\supsetneq                }{\mathrel}{superset, not equals}%
+\UnicodeMathSymbol{"0228C}{\cupleftarrow             }{\mathbin}{multiset}%
+\UnicodeMathSymbol{"0228D}{\cupdot                   }{\mathbin}{union, with dot}%
+\UnicodeMathSymbol{"0228E}{\uplus                    }{\mathbin}{plus sign in union}%
+\UnicodeMathSymbol{"0228F}{\sqsubset                 }{\mathrel}{square subset}%
+\UnicodeMathSymbol{"02290}{\sqsupset                 }{\mathrel}{square superset}%
+\UnicodeMathSymbol{"02291}{\sqsubseteq               }{\mathrel}{square subset, equals}%
+\UnicodeMathSymbol{"02292}{\sqsupseteq               }{\mathrel}{square superset, equals}%
+\UnicodeMathSymbol{"02293}{\sqcap                    }{\mathbin}{square intersection}%
+\UnicodeMathSymbol{"02294}{\sqcup                    }{\mathbin}{square union}%
+\UnicodeMathSymbol{"02295}{\oplus                    }{\mathbin}{plus sign in circle}%
+\UnicodeMathSymbol{"02296}{\ominus                   }{\mathbin}{minus sign in circle}%
+\UnicodeMathSymbol{"02297}{\otimes                   }{\mathbin}{multiply sign in circle}%
+\UnicodeMathSymbol{"02298}{\oslash                   }{\mathbin}{solidus in circle}%
+\UnicodeMathSymbol{"02299}{\odot                     }{\mathbin}{middle dot in circle}%
+\UnicodeMathSymbol{"0229A}{\circledcirc              }{\mathbin}{small circle in circle}%
+\UnicodeMathSymbol{"0229B}{\circledast               }{\mathbin}{asterisk in circle}%
+\UnicodeMathSymbol{"0229C}{\circledequal             }{\mathbin}{equal in circle}%
+\UnicodeMathSymbol{"0229D}{\circleddash              }{\mathbin}{hyphen in circle}%
+\UnicodeMathSymbol{"0229E}{\boxplus                  }{\mathbin}{plus sign in box}%
+\UnicodeMathSymbol{"0229F}{\boxminus                 }{\mathbin}{minus sign in box}%
+\UnicodeMathSymbol{"022A0}{\boxtimes                 }{\mathbin}{multiply sign in box}%
+\UnicodeMathSymbol{"022A1}{\boxdot                   }{\mathbin}{/dotsquare /boxdot b: small dot in box}%
+\UnicodeMathSymbol{"022A2}{\vdash                    }{\mathrel}{vertical, dash}%
+\UnicodeMathSymbol{"022A3}{\dashv                    }{\mathrel}{dash, vertical}%
+\UnicodeMathSymbol{"022A4}{\top                      }{\mathord}{top}%
+\UnicodeMathSymbol{"022A5}{\bot                      }{\mathord}{bottom}%
+\UnicodeMathSymbol{"022A6}{\assert                   }{\mathrel}{assertion (vertical, short dash)}%
+\UnicodeMathSymbol{"022A7}{\models                   }{\mathrel}{models (vertical, short double dash)}%
+\UnicodeMathSymbol{"022A8}{\vDash                    }{\mathrel}{vertical, double dash}%
+\UnicodeMathSymbol{"022A9}{\Vdash                    }{\mathrel}{double vertical, dash}%
+\UnicodeMathSymbol{"022AA}{\Vvdash                   }{\mathrel}{triple vertical, dash}%
+\UnicodeMathSymbol{"022AB}{\VDash                    }{\mathrel}{double vert, double dash}%
+\UnicodeMathSymbol{"022AC}{\nvdash                   }{\mathrel}{not vertical, dash}%
+\UnicodeMathSymbol{"022AD}{\nvDash                   }{\mathrel}{not vertical, double dash}%
+\UnicodeMathSymbol{"022AE}{\nVdash                   }{\mathrel}{not double vertical, dash}%
+\UnicodeMathSymbol{"022AF}{\nVDash                   }{\mathrel}{not double vert, double dash}%
+\UnicodeMathSymbol{"022B0}{\prurel                   }{\mathrel}{element precedes under relation}%
+\UnicodeMathSymbol{"022B1}{\scurel                   }{\mathrel}{succeeds under relation}%
+\UnicodeMathSymbol{"022B2}{\vartriangleleft          }{\mathrel}{left triangle, open, variant}%
+\UnicodeMathSymbol{"022B3}{\vartriangleright         }{\mathrel}{right triangle, open, variant}%
+\UnicodeMathSymbol{"022B4}{\trianglelefteq           }{\mathrel}{left triangle, equals}%
+\UnicodeMathSymbol{"022B5}{\trianglerighteq          }{\mathrel}{right triangle, equals}%
+\UnicodeMathSymbol{"022B6}{\origof                   }{\mathrel}{original of}%
+\UnicodeMathSymbol{"022B7}{\imageof                  }{\mathrel}{image of}%
+\UnicodeMathSymbol{"022B8}{\multimap                 }{\mathrel}{/multimap a:}%
+\UnicodeMathSymbol{"022B9}{\hermitmatrix             }{\mathord}{hermitian conjugate matrix}%
+\UnicodeMathSymbol{"022BA}{\intercal                 }{\mathbin}{intercal}%
+\UnicodeMathSymbol{"022BB}{\veebar                   }{\mathbin}{logical or, bar below (large vee); exclusive disjunction}%
+\UnicodeMathSymbol{"022BC}{\barwedge                 }{\mathbin}{bar, wedge (large wedge)}%
+\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 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}%
+\UnicodeMathSymbol{"022C5}{\cdot                     }{\mathbin}{small middle dot}%
+\UnicodeMathSymbol{"022C6}{\star                     }{\mathbin}{small star, filled, low}%
+\UnicodeMathSymbol{"022C7}{\divideontimes            }{\mathbin}{division on times}%
+\UnicodeMathSymbol{"022C8}{\bowtie                   }{\mathrel}{bowtie}%
+\UnicodeMathSymbol{"022C9}{\ltimes                   }{\mathbin}{times sign, left closed}%
+\UnicodeMathSymbol{"022CA}{\rtimes                   }{\mathbin}{times sign, right closed}%
+\UnicodeMathSymbol{"022CB}{\leftthreetimes           }{\mathbin}{left semidirect product}%
+\UnicodeMathSymbol{"022CC}{\rightthreetimes          }{\mathbin}{right semidirect product}%
+\UnicodeMathSymbol{"022CD}{\backsimeq                }{\mathrel}{reverse similar, equals}%
+\UnicodeMathSymbol{"022CE}{\curlyvee                 }{\mathbin}{curly logical or}%
+\UnicodeMathSymbol{"022CF}{\curlywedge               }{\mathbin}{curly logical and}%
+\UnicodeMathSymbol{"022D0}{\Subset                   }{\mathrel}{double subset}%
+\UnicodeMathSymbol{"022D1}{\Supset                   }{\mathrel}{double superset}%
+\UnicodeMathSymbol{"022D2}{\Cap                      }{\mathbin}{/cap /doublecap b: double intersection}%
+\UnicodeMathSymbol{"022D3}{\Cup                      }{\mathbin}{/cup /doublecup b: double union}%
+\UnicodeMathSymbol{"022D4}{\pitchfork                }{\mathrel}{pitchfork}%
+\UnicodeMathSymbol{"022D5}{\equalparallel            }{\mathrel}{parallel, equal; equal or parallel}%
+\UnicodeMathSymbol{"022D6}{\lessdot                  }{\mathrel}{less than, with dot}%
+\UnicodeMathSymbol{"022D7}{\gtrdot                   }{\mathrel}{greater than, with dot}%
+\UnicodeMathSymbol{"022D8}{\lll                      }{\mathrel}{/ll /lll /llless r: triple less-than}%
+\UnicodeMathSymbol{"022D9}{\ggg                      }{\mathrel}{/ggg /gg /gggtr r: triple greater-than}%
+\UnicodeMathSymbol{"022DA}{\lesseqgtr                }{\mathrel}{less, equals, greater}%
+\UnicodeMathSymbol{"022DB}{\gtreqless                }{\mathrel}{greater, equals, less}%
+\UnicodeMathSymbol{"022DC}{\eqless                   }{\mathrel}{equal-or-less}%
+\UnicodeMathSymbol{"022DD}{\eqgtr                    }{\mathrel}{equal-or-greater}%
+\UnicodeMathSymbol{"022DE}{\curlyeqprec              }{\mathrel}{curly equals, precedes}%
+\UnicodeMathSymbol{"022DF}{\curlyeqsucc              }{\mathrel}{curly equals, succeeds}%
+\UnicodeMathSymbol{"022E0}{\npreccurlyeq             }{\mathrel}{not precedes, curly equals}%
+\UnicodeMathSymbol{"022E1}{\nsucccurlyeq             }{\mathrel}{not succeeds, curly equals}%
+\UnicodeMathSymbol{"022E2}{\nsqsubseteq              }{\mathrel}{not, square subset, equals}%
+\UnicodeMathSymbol{"022E3}{\nsqsupseteq              }{\mathrel}{not, square superset, equals}%
+\UnicodeMathSymbol{"022E4}{\sqsubsetneq              }{\mathrel}{square subset, not equals}%
+\UnicodeMathSymbol{"022E5}{\sqsupsetneq              }{\mathrel}{square superset, not equals}%
+\UnicodeMathSymbol{"022E6}{\lnsim                    }{\mathrel}{less, not similar}%
+\UnicodeMathSymbol{"022E7}{\gnsim                    }{\mathrel}{greater, not similar}%
+\UnicodeMathSymbol{"022E8}{\precnsim                 }{\mathrel}{precedes, not similar}%
+\UnicodeMathSymbol{"022E9}{\succnsim                 }{\mathrel}{succeeds, not similar}%
+\UnicodeMathSymbol{"022EA}{\nvartriangleleft         }{\mathrel}{not left triangle}%
+\UnicodeMathSymbol{"022EB}{\nvartriangleright        }{\mathrel}{not right triangle}%
+\UnicodeMathSymbol{"022EC}{\ntrianglelefteq          }{\mathrel}{not left triangle, equals}%
+\UnicodeMathSymbol{"022ED}{\ntrianglerighteq         }{\mathrel}{not right triangle, equals}%
+\UnicodeMathSymbol{"022EE}{\vdots                    }{\mathrel}{vertical ellipsis}%
+\UnicodeMathSymbol{"022EF}{\unicodecdots             }{\mathord}{three dots, centered}%
+\UnicodeMathSymbol{"022F0}{\adots                    }{\mathrel}{three dots, ascending}%
+\UnicodeMathSymbol{"022F1}{\ddots                    }{\mathrel}{three dots, descending}%
+\UnicodeMathSymbol{"022F2}{\disin                    }{\mathrel}{element of with long horizontal stroke}%
+\UnicodeMathSymbol{"022F3}{\varisins                 }{\mathrel}{element of with vertical bar at end of horizontal stroke}%
+\UnicodeMathSymbol{"022F4}{\isins                    }{\mathrel}{small element of with vertical bar at end of horizontal stroke}%
+\UnicodeMathSymbol{"022F5}{\isindot                  }{\mathrel}{element of with dot above}%
+\UnicodeMathSymbol{"022F6}{\varisinobar              }{\mathrel}{element of with overbar}%
+\UnicodeMathSymbol{"022F7}{\isinobar                 }{\mathrel}{small element of with overbar}%
+\UnicodeMathSymbol{"022F8}{\isinvb                   }{\mathrel}{element of with underbar}%
+\UnicodeMathSymbol{"022F9}{\isinE                    }{\mathrel}{element of with two horizontal strokes}%
+\UnicodeMathSymbol{"022FA}{\nisd                     }{\mathrel}{contains with long horizontal stroke}%
+\UnicodeMathSymbol{"022FB}{\varnis                   }{\mathrel}{contains with vertical bar at end of horizontal stroke}%
+\UnicodeMathSymbol{"022FC}{\nis                      }{\mathrel}{small contains with vertical bar at end of horizontal stroke}%
+\UnicodeMathSymbol{"022FD}{\varniobar                }{\mathrel}{contains with overbar}%
+\UnicodeMathSymbol{"022FE}{\niobar                   }{\mathrel}{small contains with overbar}%
+\UnicodeMathSymbol{"022FF}{\bagmember                }{\mathrel}{z notation bag membership}%
+\UnicodeMathSymbol{"02300}{\diameter                 }{\mathord}{diameter sign}%
+\UnicodeMathSymbol{"02302}{\house                    }{\mathord}{house}%
+\UnicodeMathSymbol{"02305}{\varbarwedge              }{\mathbin}{/barwedge b: logical and, bar above [projective (bar over small wedge)]}%
+\UnicodeMathSymbol{"02306}{\vardoublebarwedge        }{\mathbin}{/doublebarwedge b: logical and, double bar above [perspective (double bar over small wedge)]}%
+\UnicodeMathSymbol{"02308}{\lceil                    }{\mathopen}{left ceiling}%
+\UnicodeMathSymbol{"02309}{\rceil                    }{\mathclose}{right ceiling}%
+\UnicodeMathSymbol{"0230A}{\lfloor                   }{\mathopen}{left floor}%
+\UnicodeMathSymbol{"0230B}{\rfloor                   }{\mathclose}{right floor}%
+\UnicodeMathSymbol{"02310}{\invnot                   }{\mathord}{reverse not}%
+\UnicodeMathSymbol{"02311}{\sqlozenge                }{\mathord}{square lozenge}%
+\UnicodeMathSymbol{"02312}{\profline                 }{\mathord}{profile of a line}%
+\UnicodeMathSymbol{"02313}{\profsurf                 }{\mathord}{profile of a surface}%
+\UnicodeMathSymbol{"02317}{\viewdata                 }{\mathord}{viewdata square}%
+\UnicodeMathSymbol{"02319}{\turnednot                }{\mathord}{turned not sign}%
+\UnicodeMathSymbol{"0231C}{\ulcorner                 }{\mathopen}{upper left corner}%
+\UnicodeMathSymbol{"0231D}{\urcorner                 }{\mathclose}{upper right corner}%
+\UnicodeMathSymbol{"0231E}{\llcorner                 }{\mathopen}{lower left corner}%
+\UnicodeMathSymbol{"0231F}{\lrcorner                 }{\mathclose}{lower right corner}%
+\UnicodeMathSymbol{"02320}{\inttop                   }{\mathord}{top half integral}%
+\UnicodeMathSymbol{"02321}{\intbottom                }{\mathord}{bottom half integral}%
+\UnicodeMathSymbol{"02322}{\frown                    }{\mathrel}{down curve}%
+\UnicodeMathSymbol{"02323}{\smile                    }{\mathrel}{up curve}%
+\UnicodeMathSymbol{"0232C}{\varhexagonlrbonds        }{\mathord}{six carbon ring, corner down, double bonds lower right etc}%
+\UnicodeMathSymbol{"02332}{\conictaper               }{\mathord}{conical taper }%
+\UnicodeMathSymbol{"02336}{\topbot                   }{\mathord}{top and bottom}%
+\UnicodeMathSymbol{"0233D}{\obar                     }{\mathbin}{circle with vertical bar}%
+\UnicodeMathSymbol{"0233F}{\APLnotslash              }{\mathrel}{solidus, bar through (apl functional symbol slash bar)}%
+\UnicodeMathSymbol{"02340}{\APLnotbackslash          }{\mathord}{apl functional symbol backslash bar}%
+\UnicodeMathSymbol{"02353}{\APLboxupcaret            }{\mathord}{boxed up caret}%
+\UnicodeMathSymbol{"02370}{\APLboxquestion           }{\mathord}{boxed question mark}%
+\UnicodeMathSymbol{"0237C}{\rangledownzigzagarrow    }{\mathord}{right angle with downwards zigzag arrow}%
+\UnicodeMathSymbol{"02394}{\hexagon                  }{\mathord}{horizontal benzene ring [hexagon flat open]}%
+\UnicodeMathSymbol{"0239B}{\lparenuend               }{\mathord}{left parenthesis upper hook}%
+\UnicodeMathSymbol{"0239C}{\lparenextender           }{\mathord}{left parenthesis extension}%
+\UnicodeMathSymbol{"0239D}{\lparenlend               }{\mathord}{left parenthesis lower hook}%
+\UnicodeMathSymbol{"0239E}{\rparenuend               }{\mathord}{right parenthesis upper hook}%
+\UnicodeMathSymbol{"0239F}{\rparenextender           }{\mathord}{right parenthesis extension}%
+\UnicodeMathSymbol{"023A0}{\rparenlend               }{\mathord}{right parenthesis lower hook}%
+\UnicodeMathSymbol{"023A1}{\lbrackuend               }{\mathord}{left square bracket upper corner}%
+\UnicodeMathSymbol{"023A2}{\lbrackextender           }{\mathord}{left square bracket extension}%
+\UnicodeMathSymbol{"023A3}{\lbracklend               }{\mathord}{left square bracket lower corner}%
+\UnicodeMathSymbol{"023A4}{\rbrackuend               }{\mathord}{right square bracket upper corner}%
+\UnicodeMathSymbol{"023A5}{\rbrackextender           }{\mathord}{right square bracket extension}%
+\UnicodeMathSymbol{"023A6}{\rbracklend               }{\mathord}{right square bracket lower corner}%
+\UnicodeMathSymbol{"023A7}{\lbraceuend               }{\mathord}{left curly bracket upper hook}%
+\UnicodeMathSymbol{"023A8}{\lbracemid                }{\mathord}{left curly bracket middle piece}%
+\UnicodeMathSymbol{"023A9}{\lbracelend               }{\mathord}{left curly bracket lower hook}%
+\UnicodeMathSymbol{"023AA}{\vbraceextender           }{\mathord}{curly bracket extension}%
+\UnicodeMathSymbol{"023AB}{\rbraceuend               }{\mathord}{right curly bracket upper hook}%
+\UnicodeMathSymbol{"023AC}{\rbracemid                }{\mathord}{right curly bracket middle piece}%
+\UnicodeMathSymbol{"023AD}{\rbracelend               }{\mathord}{right curly bracket lower hook}%
+\UnicodeMathSymbol{"023AE}{\intextender              }{\mathord}{integral extension}%
+\UnicodeMathSymbol{"023AF}{\harrowextender           }{\mathord}{horizontal line extension (used to extend arrows)}%
+\UnicodeMathSymbol{"023B0}{\lmoustache               }{\mathopen}{upper left or lower right curly bracket section}%
+\UnicodeMathSymbol{"023B1}{\rmoustache               }{\mathclose}{upper right or lower left curly bracket section}%
+\UnicodeMathSymbol{"023B2}{\sumtop                   }{\mathord}{summation top}%
+\UnicodeMathSymbol{"023B3}{\sumbottom                }{\mathord}{summation bottom}%
+\UnicodeMathSymbol{"023B4}{\overbracket              }{\mathover}{top square bracket}%
+\UnicodeMathSymbol{"023B5}{\underbracket             }{\mathunder}{bottom square bracket}%
+\UnicodeMathSymbol{"023B6}{\bbrktbrk                 }{\mathord}{bottom square bracket over top square bracket}%
+\UnicodeMathSymbol{"023B7}{\sqrtbottom               }{\mathord}{radical symbol bottom}%
+\UnicodeMathSymbol{"023B8}{\lvboxline                }{\mathord}{left vertical box line}%
+\UnicodeMathSymbol{"023B9}{\rvboxline                }{\mathord}{right vertical box line}%
+\UnicodeMathSymbol{"023CE}{\varcarriagereturn        }{\mathord}{return symbol}%
+\UnicodeMathSymbol{"023DC}{\overparen                }{\mathover}{top parenthesis (mathematical use)}%
+\UnicodeMathSymbol{"023DD}{\underparen               }{\mathunder}{bottom parenthesis (mathematical use)}%
+\UnicodeMathSymbol{"023DE}{\overbrace                }{\mathover}{top curly bracket (mathematical use)}%
+\UnicodeMathSymbol{"023DF}{\underbrace               }{\mathunder}{bottom curly bracket (mathematical use)}%
+\UnicodeMathSymbol{"023E0}{\obrbrak                  }{\mathord}{top tortoise shell bracket (mathematical use)}%
+\UnicodeMathSymbol{"023E1}{\ubrbrak                  }{\mathord}{bottom tortoise shell bracket (mathematical use)}%
+\UnicodeMathSymbol{"023E2}{\trapezium                }{\mathord}{white trapezium}%
+\UnicodeMathSymbol{"023E3}{\benzenr                  }{\mathord}{benzene ring with circle}%
+\UnicodeMathSymbol{"023E4}{\strns                    }{\mathord}{straightness}%
+\UnicodeMathSymbol{"023E5}{\fltns                    }{\mathord}{flatness}%
+\UnicodeMathSymbol{"023E6}{\accurrent                }{\mathord}{ac current}%
+\UnicodeMathSymbol{"023E7}{\elinters                 }{\mathord}{electrical intersection}%
+\UnicodeMathSymbol{"02422}{\blanksymbol              }{\mathord}{blank symbol}%
+\UnicodeMathSymbol{"02423}{\mathvisiblespace         }{\mathord}{open box}%
+\UnicodeMathSymbol{"02506}{\bdtriplevdash            }{\mathord}{doubly broken vert}%
+\UnicodeMathSymbol{"02580}{\blockuphalf              }{\mathord}{upper half block}%
+\UnicodeMathSymbol{"02584}{\blocklowhalf             }{\mathord}{lower half block}%
+\UnicodeMathSymbol{"02588}{\blockfull                }{\mathord}{full block}%
+\UnicodeMathSymbol{"0258C}{\blocklefthalf            }{\mathord}{left half block}%
+\UnicodeMathSymbol{"02590}{\blockrighthalf           }{\mathord}{right half block}%
+\UnicodeMathSymbol{"02591}{\blockqtrshaded           }{\mathord}{25\% shaded block}%
+\UnicodeMathSymbol{"02592}{\blockhalfshaded          }{\mathord}{50\% shaded block}%
+\UnicodeMathSymbol{"02593}{\blockthreeqtrshaded      }{\mathord}{75\% shaded block}%
+\UnicodeMathSymbol{"025A0}{\mdlgblksquare            }{\mathord}{square, filled}%
+\UnicodeMathSymbol{"025A1}{\mdlgwhtsquare            }{\mathord}{square, open}%
+\UnicodeMathSymbol{"025A2}{\squoval                  }{\mathord}{white square with rounded corners}%
+\UnicodeMathSymbol{"025A3}{\blackinwhitesquare       }{\mathord}{white square containing black small square}%
+\UnicodeMathSymbol{"025A4}{\squarehfill              }{\mathord}{square, horizontal rule filled}%
+\UnicodeMathSymbol{"025A5}{\squarevfill              }{\mathord}{square, vertical rule filled}%
+\UnicodeMathSymbol{"025A6}{\squarehvfill             }{\mathord}{square with orthogonal crosshatch fill}%
+\UnicodeMathSymbol{"025A7}{\squarenwsefill           }{\mathord}{square, nw-to-se rule filled}%
+\UnicodeMathSymbol{"025A8}{\squareneswfill           }{\mathord}{square, ne-to-sw rule filled}%
+\UnicodeMathSymbol{"025A9}{\squarecrossfill          }{\mathord}{square with diagonal crosshatch fill}%
+\UnicodeMathSymbol{"025AA}{\smblksquare              }{\mathord}{/blacksquare - sq bullet, filled}%
+\UnicodeMathSymbol{"025AB}{\smwhtsquare              }{\mathord}{white small square}%
+\UnicodeMathSymbol{"025AC}{\hrectangleblack          }{\mathord}{black rectangle}%
+\UnicodeMathSymbol{"025AD}{\hrectangle               }{\mathord}{horizontal rectangle, open}%
+\UnicodeMathSymbol{"025AE}{\vrectangleblack          }{\mathord}{black vertical rectangle}%
+\UnicodeMathSymbol{"025AF}{\vrectangle               }{\mathord}{rectangle, white (vertical)}%
+\UnicodeMathSymbol{"025B0}{\parallelogramblack       }{\mathord}{black parallelogram}%
+\UnicodeMathSymbol{"025B1}{\parallelogram            }{\mathord}{parallelogram, open}%
+\UnicodeMathSymbol{"025B2}{\bigblacktriangleup       }{\mathord}{black up-pointing triangle}%
+\UnicodeMathSymbol{"025B3}{\bigtriangleup            }{\mathbin}{big up triangle, open}%
+\UnicodeMathSymbol{"025B4}{\blacktriangle            }{\mathord}{up triangle, filled}%
+\UnicodeMathSymbol{"025B5}{\vartriangle              }{\mathrel}{/triangle - up triangle, open}%
+\UnicodeMathSymbol{"025B6}{\blacktriangleright       }{\mathord}{(large) right triangle, filled}%
+\UnicodeMathSymbol{"025B7}{\triangleright            }{\mathbin}{(large) right triangle, open; z notation range restriction}%
+\UnicodeMathSymbol{"025B8}{\smallblacktriangleright  }{\mathord}{right triangle, filled}%
+\UnicodeMathSymbol{"025B9}{\smalltriangleright       }{\mathord}{right triangle, open}%
+\UnicodeMathSymbol{"025BA}{\blackpointerright        }{\mathord}{black right-pointing pointer}%
+\UnicodeMathSymbol{"025BB}{\whitepointerright        }{\mathord}{white right-pointing pointer}%
+\UnicodeMathSymbol{"025BC}{\bigblacktriangledown     }{\mathord}{big down triangle, filled}%
+\UnicodeMathSymbol{"025BD}{\bigtriangledown          }{\mathord}{big down triangle, open}%
+\UnicodeMathSymbol{"025BE}{\blacktriangledown        }{\mathord}{down triangle, filled}%
+\UnicodeMathSymbol{"025BF}{\triangledown             }{\mathord}{down triangle, open}%
+\UnicodeMathSymbol{"025C0}{\blacktriangleleft        }{\mathord}{(large) left triangle, filled}%
+\UnicodeMathSymbol{"025C1}{\triangleleft             }{\mathbin}{(large) left triangle, open; z notation domain restriction}%
+\UnicodeMathSymbol{"025C2}{\smallblacktriangleleft   }{\mathord}{left triangle, filled}%
+\UnicodeMathSymbol{"025C3}{\smalltriangleleft        }{\mathord}{left triangle, open}%
+\UnicodeMathSymbol{"025C4}{\blackpointerleft         }{\mathord}{black left-pointing pointer}%
+\UnicodeMathSymbol{"025C5}{\whitepointerleft         }{\mathord}{white left-pointing pointer}%
+\UnicodeMathSymbol{"025C6}{\mdlgblkdiamond           }{\mathord}{black diamond}%
+\UnicodeMathSymbol{"025C7}{\mdlgwhtdiamond           }{\mathord}{white diamond; diamond, open}%
+\UnicodeMathSymbol{"025C8}{\blackinwhitediamond      }{\mathord}{white diamond containing black small diamond}%
+\UnicodeMathSymbol{"025C9}{\fisheye                  }{\mathord}{fisheye}%
+\UnicodeMathSymbol{"025CA}{\mdlgwhtlozenge           }{\mathord}{lozenge or total mark}%
+\UnicodeMathSymbol{"025CB}{\mdlgwhtcircle            }{\mathbin}{medium large circle}%
+\UnicodeMathSymbol{"025CC}{\dottedcircle             }{\mathord}{dotted circle}%
+\UnicodeMathSymbol{"025CD}{\circlevertfill           }{\mathord}{circle with vertical fill}%
+\UnicodeMathSymbol{"025CE}{\bullseye                 }{\mathord}{bullseye}%
+\UnicodeMathSymbol{"025CF}{\mdlgblkcircle            }{\mathord}{circle, filled}%
+\UnicodeMathSymbol{"025D0}{\circlelefthalfblack      }{\mathord}{circle, filled left half [harvey ball]}%
+\UnicodeMathSymbol{"025D1}{\circlerighthalfblack     }{\mathord}{circle, filled right half}%
+\UnicodeMathSymbol{"025D2}{\circlebottomhalfblack    }{\mathord}{circle, filled bottom half}%
+\UnicodeMathSymbol{"025D3}{\circletophalfblack       }{\mathord}{circle, filled top half}%
+\UnicodeMathSymbol{"025D4}{\circleurquadblack        }{\mathord}{circle with upper right quadrant black}%
+\UnicodeMathSymbol{"025D5}{\blackcircleulquadwhite   }{\mathord}{circle with all but upper left quadrant black}%
+\UnicodeMathSymbol{"025D6}{\blacklefthalfcircle      }{\mathord}{left half black circle}%
+\UnicodeMathSymbol{"025D7}{\blackrighthalfcircle     }{\mathord}{right half black circle}%
+\UnicodeMathSymbol{"025D8}{\inversebullet            }{\mathord}{inverse bullet }%
+\UnicodeMathSymbol{"025D9}{\inversewhitecircle       }{\mathord}{inverse white circle}%
+\UnicodeMathSymbol{"025DA}{\invwhiteupperhalfcircle  }{\mathord}{upper half inverse white circle}%
+\UnicodeMathSymbol{"025DB}{\invwhitelowerhalfcircle  }{\mathord}{lower half inverse white circle}%
+\UnicodeMathSymbol{"025DC}{\ularc                    }{\mathord}{upper left quadrant circular arc}%
+\UnicodeMathSymbol{"025DD}{\urarc                    }{\mathord}{upper right quadrant circular arc}%
+\UnicodeMathSymbol{"025DE}{\lrarc                    }{\mathord}{lower right quadrant circular arc}%
+\UnicodeMathSymbol{"025DF}{\llarc                    }{\mathord}{lower left quadrant circular arc}%
+\UnicodeMathSymbol{"025E0}{\topsemicircle            }{\mathord}{upper half circle}%
+\UnicodeMathSymbol{"025E1}{\botsemicircle            }{\mathord}{lower half circle}%
+\UnicodeMathSymbol{"025E2}{\lrblacktriangle          }{\mathord}{lower right triangle, filled}%
+\UnicodeMathSymbol{"025E3}{\llblacktriangle          }{\mathord}{lower left triangle, filled}%
+\UnicodeMathSymbol{"025E4}{\ulblacktriangle          }{\mathord}{upper left triangle, filled}%
+\UnicodeMathSymbol{"025E5}{\urblacktriangle          }{\mathord}{upper right triangle, filled}%
+\UnicodeMathSymbol{"025E6}{\smwhtcircle              }{\mathord}{white bullet}%
+\UnicodeMathSymbol{"025E7}{\squareleftblack          }{\mathord}{square, filled left half}%
+\UnicodeMathSymbol{"025E8}{\squarerightblack         }{\mathord}{square, filled right half}%
+\UnicodeMathSymbol{"025E9}{\squareulblack            }{\mathord}{square, filled top left corner}%
+\UnicodeMathSymbol{"025EA}{\squarelrblack            }{\mathord}{square, filled bottom right corner}%
+\UnicodeMathSymbol{"025EB}{\boxbar                   }{\mathbin}{vertical bar in box}%
+\UnicodeMathSymbol{"025EC}{\trianglecdot             }{\mathord}{triangle with centered dot}%
+\UnicodeMathSymbol{"025ED}{\triangleleftblack        }{\mathord}{up-pointing triangle with left half black}%
+\UnicodeMathSymbol{"025EE}{\trianglerightblack       }{\mathord}{up-pointing triangle with right half black}%
+\UnicodeMathSymbol{"025EF}{\lgwhtcircle              }{\mathord}{large circle}%
+\UnicodeMathSymbol{"025F0}{\squareulquad             }{\mathord}{white square with upper left quadrant}%
+\UnicodeMathSymbol{"025F1}{\squarellquad             }{\mathord}{white square with lower left quadrant}%
+\UnicodeMathSymbol{"025F2}{\squarelrquad             }{\mathord}{white square with lower right quadrant}%
+\UnicodeMathSymbol{"025F3}{\squareurquad             }{\mathord}{white square with upper right quadrant}%
+\UnicodeMathSymbol{"025F4}{\circleulquad             }{\mathord}{white circle with upper left quadrant}%
+\UnicodeMathSymbol{"025F5}{\circlellquad             }{\mathord}{white circle with lower left quadrant}%
+\UnicodeMathSymbol{"025F6}{\circlelrquad             }{\mathord}{white circle with lower right quadrant}%
+\UnicodeMathSymbol{"025F7}{\circleurquad             }{\mathord}{white circle with upper right quadrant}%
+\UnicodeMathSymbol{"025F8}{\ultriangle               }{\mathord}{upper left triangle}%
+\UnicodeMathSymbol{"025F9}{\urtriangle               }{\mathord}{upper right triangle}%
+\UnicodeMathSymbol{"025FA}{\lltriangle               }{\mathord}{lower left triangle}%
+\UnicodeMathSymbol{"025FB}{\mdwhtsquare              }{\mathord}{white medium square}%
+\UnicodeMathSymbol{"025FC}{\mdblksquare              }{\mathord}{black medium square}%
+\UnicodeMathSymbol{"025FD}{\mdsmwhtsquare            }{\mathord}{white medium small square}%
+\UnicodeMathSymbol{"025FE}{\mdsmblksquare            }{\mathord}{black medium small square}%
+\UnicodeMathSymbol{"025FF}{\lrtriangle               }{\mathord}{lower right triangle}%
+\UnicodeMathSymbol{"02605}{\bigstar                  }{\mathord}{star, filled}%
+\UnicodeMathSymbol{"02606}{\bigwhitestar             }{\mathord}{star, open}%
+\UnicodeMathSymbol{"02609}{\astrosun                 }{\mathord}{sun}%
+\UnicodeMathSymbol{"02621}{\danger                   }{\mathord}{dangerous bend (caution sign)}%
+\UnicodeMathSymbol{"0263B}{\blacksmiley              }{\mathord}{black smiling face}%
+\UnicodeMathSymbol{"0263C}{\sun                      }{\mathord}{white sun with rays}%
+\UnicodeMathSymbol{"0263D}{\rightmoon                }{\mathord}{first quarter moon}%
+\UnicodeMathSymbol{"0263E}{\leftmoon                 }{\mathord}{last quarter moon}%
+\UnicodeMathSymbol{"02640}{\female                   }{\mathord}{venus, female}%
+\UnicodeMathSymbol{"02642}{\male                     }{\mathord}{mars, male}%
+\UnicodeMathSymbol{"02660}{\spadesuit                }{\mathord}{spades suit symbol}%
+\UnicodeMathSymbol{"02661}{\heartsuit                }{\mathord}{heart suit symbol}%
+\UnicodeMathSymbol{"02662}{\diamondsuit              }{\mathord}{diamond suit symbol}%
+\UnicodeMathSymbol{"02663}{\clubsuit                 }{\mathord}{club suit symbol}%
+\UnicodeMathSymbol{"02664}{\varspadesuit             }{\mathord}{spade, white (card suit)}%
+\UnicodeMathSymbol{"02665}{\varheartsuit             }{\mathord}{filled heart (card suit)}%
+\UnicodeMathSymbol{"02666}{\vardiamondsuit           }{\mathord}{filled diamond (card suit)}%
+\UnicodeMathSymbol{"02667}{\varclubsuit              }{\mathord}{club, white (card suit)}%
+\UnicodeMathSymbol{"02669}{\quarternote              }{\mathord}{music note (sung text sign)}%
+\UnicodeMathSymbol{"0266A}{\eighthnote               }{\mathord}{eighth note}%
+\UnicodeMathSymbol{"0266B}{\twonotes                 }{\mathord}{beamed eighth notes}%
+\UnicodeMathSymbol{"0266D}{\flat                     }{\mathord}{musical flat}%
+\UnicodeMathSymbol{"0266E}{\natural                  }{\mathord}{music natural}%
+\UnicodeMathSymbol{"0266F}{\sharp                    }{\mathord}{musical sharp}%
+\UnicodeMathSymbol{"0267E}{\acidfree                 }{\mathord}{permanent paper sign}%
+\UnicodeMathSymbol{"02680}{\dicei                    }{\mathord}{die face-1}%
+\UnicodeMathSymbol{"02681}{\diceii                   }{\mathord}{die face-2}%
+\UnicodeMathSymbol{"02682}{\diceiii                  }{\mathord}{die face-3}%
+\UnicodeMathSymbol{"02683}{\diceiv                   }{\mathord}{die face-4}%
+\UnicodeMathSymbol{"02684}{\dicev                    }{\mathord}{die face-5}%
+\UnicodeMathSymbol{"02685}{\dicevi                   }{\mathord}{die face-6}%
+\UnicodeMathSymbol{"02686}{\circledrightdot          }{\mathord}{white circle with dot right}%
+\UnicodeMathSymbol{"02687}{\circledtwodots           }{\mathord}{white circle with two dots}%
+\UnicodeMathSymbol{"02688}{\blackcircledrightdot     }{\mathord}{black circle with white dot right}%
+\UnicodeMathSymbol{"02689}{\blackcircledtwodots      }{\mathord}{black circle with two white dots}%
+\UnicodeMathSymbol{"026A5}{\Hermaphrodite            }{\mathord}{male and female sign}%
+\UnicodeMathSymbol{"026AA}{\mdwhtcircle              }{\mathord}{medium white circle}%
+\UnicodeMathSymbol{"026AB}{\mdblkcircle              }{\mathord}{medium black circle}%
+\UnicodeMathSymbol{"026AC}{\mdsmwhtcircle            }{\mathord}{medium small white circle}%
+\UnicodeMathSymbol{"026B2}{\neuter                   }{\mathord}{neuter}%
+\UnicodeMathSymbol{"02713}{\checkmark                }{\mathord}{tick, check mark}%
+\UnicodeMathSymbol{"02720}{\maltese                  }{\mathord}{maltese cross}%
+\UnicodeMathSymbol{"0272A}{\circledstar              }{\mathord}{circled white star}%
+\UnicodeMathSymbol{"02736}{\varstar                  }{\mathord}{six pointed black star}%
+\UnicodeMathSymbol{"0273D}{\dingasterisk             }{\mathord}{heavy teardrop-spoked asterisk}%
+\UnicodeMathSymbol{"02772}{\lbrbrak                  }{\mathopen}{light left tortoise shell bracket ornament}%
+\UnicodeMathSymbol{"02773}{\rbrbrak                  }{\mathclose}{light right tortoise shell bracket ornament}%
+\UnicodeMathSymbol{"0279B}{\draftingarrow            }{\mathord}{right arrow with bold head (drafting)}%
+\UnicodeMathSymbol{"027C0}{\threedangle              }{\mathord}{three dimensional angle}%
+\UnicodeMathSymbol{"027C1}{\whiteinwhitetriangle     }{\mathord}{white triangle containing small white triangle}%
+\UnicodeMathSymbol{"027C2}{\perp                     }{\mathrel}{perpendicular}%
+\UnicodeMathSymbol{"027C3}{\subsetcirc               }{\mathord}{open subset}%
+\UnicodeMathSymbol{"027C4}{\supsetcirc               }{\mathord}{open superset}%
+\UnicodeMathSymbol{"027C5}{\lbag                     }{\mathopen}{left s-shaped bag delimiter}%
+\UnicodeMathSymbol{"027C6}{\rbag                     }{\mathclose}{right s-shaped bag delimiter}%
+\UnicodeMathSymbol{"027C7}{\veedot                   }{\mathbin}{or with dot inside}%
+\UnicodeMathSymbol{"027C8}{\bsolhsub                 }{\mathrel}{reverse solidus preceding subset}%
+\UnicodeMathSymbol{"027C9}{\suphsol                  }{\mathrel}{superset preceding solidus}%
+\UnicodeMathSymbol{"027CC}{\longdivision             }{\mathopen}{long division}%
+\UnicodeMathSymbol{"027D0}{\diamondcdot              }{\mathord}{white diamond with centred dot}%
+\UnicodeMathSymbol{"027D1}{\wedgedot                 }{\mathbin}{and with dot}%
+\UnicodeMathSymbol{"027D2}{\upin                     }{\mathrel}{element of opening upwards}%
+\UnicodeMathSymbol{"027D3}{\pullback                 }{\mathrel}{lower right corner with dot}%
+\UnicodeMathSymbol{"027D4}{\pushout                  }{\mathrel}{upper left corner with dot}%
+\UnicodeMathSymbol{"027D5}{\leftouterjoin            }{\mathop}{left outer join}%
+\UnicodeMathSymbol{"027D6}{\rightouterjoin           }{\mathop}{right outer join}%
+\UnicodeMathSymbol{"027D7}{\fullouterjoin            }{\mathop}{full outer join}%
+\UnicodeMathSymbol{"027D8}{\bigbot                   }{\mathop}{large up tack}%
+\UnicodeMathSymbol{"027D9}{\bigtop                   }{\mathop}{large down tack}%
+\UnicodeMathSymbol{"027DA}{\DashVDash                }{\mathrel}{left and right double turnstile}%
+\UnicodeMathSymbol{"027DB}{\dashVdash                }{\mathrel}{left and right tack}%
+\UnicodeMathSymbol{"027DC}{\multimapinv              }{\mathrel}{left multimap}%
+\UnicodeMathSymbol{"027DD}{\vlongdash                }{\mathrel}{long left tack}%
+\UnicodeMathSymbol{"027DE}{\longdashv                }{\mathrel}{long right tack}%
+\UnicodeMathSymbol{"027DF}{\cirbot                   }{\mathrel}{up tack with circle above}%
+\UnicodeMathSymbol{"027E0}{\lozengeminus             }{\mathbin}{lozenge divided by horizontal rule}%
+\UnicodeMathSymbol{"027E1}{\concavediamond           }{\mathbin}{white concave-sided diamond}%
+\UnicodeMathSymbol{"027E2}{\concavediamondtickleft   }{\mathbin}{white concave-sided diamond with leftwards tick}%
+\UnicodeMathSymbol{"027E3}{\concavediamondtickright  }{\mathbin}{white concave-sided diamond with rightwards tick}%
+\UnicodeMathSymbol{"027E4}{\whitesquaretickleft      }{\mathbin}{white square with leftwards tick}%
+\UnicodeMathSymbol{"027E5}{\whitesquaretickright     }{\mathbin}{white square with rightwards tick}%
+\UnicodeMathSymbol{"027E6}{\lBrack                   }{\mathopen}{mathematical left white square bracket}%
+\UnicodeMathSymbol{"027E7}{\rBrack                   }{\mathclose}{mathematical right white square bracket}%
+\UnicodeMathSymbol{"027E8}{\langle                   }{\mathopen}{mathematical left angle bracket}%
+\UnicodeMathSymbol{"027E9}{\rangle                   }{\mathclose}{mathematical right angle bracket}%
+\UnicodeMathSymbol{"027EA}{\lAngle                   }{\mathopen}{mathematical left double angle bracket}%
+\UnicodeMathSymbol{"027EB}{\rAngle                   }{\mathclose}{mathematical right double angle bracket}%
+\UnicodeMathSymbol{"027EC}{\Lbrbrak                  }{\mathopen}{mathematical left white tortoise shell bracket}%
+\UnicodeMathSymbol{"027ED}{\Rbrbrak                  }{\mathclose}{mathematical right white tortoise shell bracket}%
+\UnicodeMathSymbol{"027EE}{\lgroup                   }{\mathopen}{mathematical left flattened parenthesis}%
+\UnicodeMathSymbol{"027EF}{\rgroup                   }{\mathclose}{mathematical right flattened parenthesis}%
+\UnicodeMathSymbol{"027F0}{\UUparrow                 }{\mathrel}{upwards quadruple arrow}%
+\UnicodeMathSymbol{"027F1}{\DDownarrow               }{\mathrel}{downwards quadruple arrow}%
+\UnicodeMathSymbol{"027F2}{\acwgapcirclearrow        }{\mathrel}{anticlockwise gapped circle arrow}%
+\UnicodeMathSymbol{"027F3}{\cwgapcirclearrow         }{\mathrel}{clockwise gapped circle arrow}%
+\UnicodeMathSymbol{"027F4}{\rightarrowonoplus        }{\mathrel}{right arrow with circled plus}%
+\UnicodeMathSymbol{"027F5}{\longleftarrow            }{\mathrel}{long leftwards arrow}%
+\UnicodeMathSymbol{"027F6}{\longrightarrow           }{\mathrel}{long rightwards arrow}%
+\UnicodeMathSymbol{"027F7}{\longleftrightarrow       }{\mathrel}{long left right arrow}%
+\UnicodeMathSymbol{"027F8}{\Longleftarrow            }{\mathrel}{long leftwards double arrow}%
+\UnicodeMathSymbol{"027F9}{\Longrightarrow           }{\mathrel}{long rightwards double arrow}%
+\UnicodeMathSymbol{"027FA}{\Longleftrightarrow       }{\mathrel}{long left right double arrow}%
+\UnicodeMathSymbol{"027FB}{\longmapsfrom             }{\mathrel}{long leftwards arrow from bar}%
+\UnicodeMathSymbol{"027FC}{\longmapsto               }{\mathrel}{long rightwards arrow from bar}%
+\UnicodeMathSymbol{"027FD}{\Longmapsfrom             }{\mathrel}{long leftwards double arrow from bar}%
+\UnicodeMathSymbol{"027FE}{\Longmapsto               }{\mathrel}{long rightwards double arrow from bar}%
+\UnicodeMathSymbol{"027FF}{\longrightsquigarrow      }{\mathrel}{long rightwards squiggle arrow}%
+\UnicodeMathSymbol{"02900}{\nvtwoheadrightarrow      }{\mathrel}{rightwards two-headed arrow with vertical stroke}%
+\UnicodeMathSymbol{"02901}{\nVtwoheadrightarrow      }{\mathrel}{rightwards two-headed arrow with double vertical stroke}%
+\UnicodeMathSymbol{"02902}{\nvLeftarrow              }{\mathrel}{leftwards double arrow with vertical stroke}%
+\UnicodeMathSymbol{"02903}{\nvRightarrow             }{\mathrel}{rightwards double arrow with vertical stroke}%
+\UnicodeMathSymbol{"02904}{\nvLeftrightarrow         }{\mathrel}{left right double arrow with vertical stroke}%
+\UnicodeMathSymbol{"02905}{\twoheadmapsto            }{\mathrel}{rightwards two-headed arrow from bar}%
+\UnicodeMathSymbol{"02906}{\Mapsfrom                 }{\mathrel}{leftwards double arrow from bar}%
+\UnicodeMathSymbol{"02907}{\Mapsto                   }{\mathrel}{rightwards double arrow from bar}%
+\UnicodeMathSymbol{"02908}{\downarrowbarred          }{\mathrel}{downwards arrow with horizontal stroke}%
+\UnicodeMathSymbol{"02909}{\uparrowbarred            }{\mathrel}{upwards arrow with horizontal stroke}%
+\UnicodeMathSymbol{"0290A}{\Uuparrow                 }{\mathrel}{upwards triple arrow}%
+\UnicodeMathSymbol{"0290B}{\Ddownarrow               }{\mathrel}{downwards triple arrow}%
+\UnicodeMathSymbol{"0290C}{\leftbkarrow              }{\mathrel}{leftwards double dash arrow}%
+\UnicodeMathSymbol{"0290D}{\rightbkarrow             }{\mathrel}{rightwards double dash arrow}%
+\UnicodeMathSymbol{"0290E}{\leftdbkarrow             }{\mathrel}{leftwards triple dash arrow}%
+\UnicodeMathSymbol{"0290F}{\dbkarrow                  }{\mathrel}{rightwards triple dash arrow}%
+\UnicodeMathSymbol{"02910}{\drbkarrow                 }{\mathrel}{rightwards two-headed triple dash arrow}%
+\UnicodeMathSymbol{"02911}{\rightdotarrow            }{\mathrel}{rightwards arrow with dotted stem}%
+\UnicodeMathSymbol{"02912}{\baruparrow               }{\mathrel}{upwards arrow to bar}%
+\UnicodeMathSymbol{"02913}{\downarrowbar             }{\mathrel}{downwards arrow to bar}%
+\UnicodeMathSymbol{"02914}{\nvrightarrowtail         }{\mathrel}{rightwards arrow with tail with vertical stroke}%
+\UnicodeMathSymbol{"02915}{\nVrightarrowtail         }{\mathrel}{rightwards arrow with tail with double vertical stroke}%
+\UnicodeMathSymbol{"02916}{\twoheadrightarrowtail    }{\mathrel}{rightwards two-headed arrow with tail}%
+\UnicodeMathSymbol{"02917}{\nvtwoheadrightarrowtail  }{\mathrel}{rightwards two-headed arrow with tail with vertical stroke}%
+\UnicodeMathSymbol{"02918}{\nVtwoheadrightarrowtail  }{\mathrel}{rightwards two-headed arrow with tail with double vertical stroke}%
+\UnicodeMathSymbol{"02919}{\lefttail                 }{\mathrel}{leftwards arrow-tail}%
+\UnicodeMathSymbol{"0291A}{\righttail                }{\mathrel}{rightwards arrow-tail}%
+\UnicodeMathSymbol{"0291B}{\leftdbltail              }{\mathrel}{leftwards double arrow-tail}%
+\UnicodeMathSymbol{"0291C}{\rightdbltail             }{\mathrel}{rightwards double arrow-tail}%
+\UnicodeMathSymbol{"0291D}{\diamondleftarrow         }{\mathrel}{leftwards arrow to black diamond}%
+\UnicodeMathSymbol{"0291E}{\rightarrowdiamond        }{\mathrel}{rightwards arrow to black diamond}%
+\UnicodeMathSymbol{"0291F}{\diamondleftarrowbar      }{\mathrel}{leftwards arrow from bar to black diamond}%
+\UnicodeMathSymbol{"02920}{\barrightarrowdiamond     }{\mathrel}{rightwards arrow from bar to black diamond}%
+\UnicodeMathSymbol{"02921}{\nwsearrow                }{\mathrel}{north west and south east arrow}%
+\UnicodeMathSymbol{"02922}{\neswarrow                }{\mathrel}{north east and south west arrow}%
+\UnicodeMathSymbol{"02923}{\hknwarrow                }{\mathrel}{north west arrow with hook}%
+\UnicodeMathSymbol{"02924}{\hknearrow                }{\mathrel}{north east arrow with hook}%
+\UnicodeMathSymbol{"02925}{\hksearrow                 }{\mathrel}{south east arrow with hook}%
+\UnicodeMathSymbol{"02926}{\hkswarrow                 }{\mathrel}{south west arrow with hook}%
+\UnicodeMathSymbol{"02927}{\tona                     }{\mathrel}{north west arrow and north east arrow}%
+\UnicodeMathSymbol{"02928}{\toea                     }{\mathrel}{north east arrow and south east arrow}%
+\UnicodeMathSymbol{"02929}{\tosa                     }{\mathrel}{south east arrow and south west arrow}%
+\UnicodeMathSymbol{"0292A}{\towa                     }{\mathrel}{south west arrow and north west arrow}%
+\UnicodeMathSymbol{"0292B}{\rdiagovfdiag             }{\mathord}{rising diagonal crossing falling diagonal}%
+\UnicodeMathSymbol{"0292C}{\fdiagovrdiag             }{\mathord}{falling diagonal crossing rising diagonal}%
+\UnicodeMathSymbol{"0292D}{\seovnearrow              }{\mathord}{south east arrow crossing north east arrow}%
+\UnicodeMathSymbol{"0292E}{\neovsearrow              }{\mathord}{north east arrow crossing south east arrow}%
+\UnicodeMathSymbol{"0292F}{\fdiagovnearrow           }{\mathord}{falling diagonal crossing north east arrow}%
+\UnicodeMathSymbol{"02930}{\rdiagovsearrow           }{\mathord}{rising diagonal crossing south east arrow}%
+\UnicodeMathSymbol{"02931}{\neovnwarrow              }{\mathord}{north east arrow crossing north west arrow}%
+\UnicodeMathSymbol{"02932}{\nwovnearrow              }{\mathord}{north west arrow crossing north east arrow}%
+\UnicodeMathSymbol{"02933}{\rightcurvedarrow         }{\mathrel}{wave arrow pointing directly right}%
+\UnicodeMathSymbol{"02934}{\uprightcurvearrow        }{\mathord}{arrow pointing rightwards then curving upwards}%
+\UnicodeMathSymbol{"02935}{\downrightcurvedarrow     }{\mathord}{arrow pointing rightwards then curving downwards}%
+\UnicodeMathSymbol{"02936}{\leftdowncurvedarrow      }{\mathrel}{arrow pointing downwards then curving leftwards}%
+\UnicodeMathSymbol{"02937}{\rightdowncurvedarrow     }{\mathrel}{arrow pointing downwards then curving rightwards}%
+\UnicodeMathSymbol{"02938}{\cwrightarcarrow          }{\mathrel}{right-side arc clockwise arrow}%
+\UnicodeMathSymbol{"02939}{\acwleftarcarrow          }{\mathrel}{left-side arc anticlockwise arrow}%
+\UnicodeMathSymbol{"0293A}{\acwoverarcarrow          }{\mathrel}{top arc anticlockwise arrow}%
+\UnicodeMathSymbol{"0293B}{\acwunderarcarrow         }{\mathrel}{bottom arc anticlockwise arrow}%
+\UnicodeMathSymbol{"0293C}{\curvearrowrightminus     }{\mathrel}{top arc clockwise arrow with minus}%
+\UnicodeMathSymbol{"0293D}{\curvearrowleftplus       }{\mathrel}{top arc anticlockwise arrow with plus}%
+\UnicodeMathSymbol{"0293E}{\cwundercurvearrow        }{\mathrel}{lower right semicircular clockwise arrow}%
+\UnicodeMathSymbol{"0293F}{\ccwundercurvearrow       }{\mathrel}{lower left semicircular anticlockwise arrow}%
+\UnicodeMathSymbol{"02940}{\acwcirclearrow           }{\mathrel}{anticlockwise closed circle arrow}%
+\UnicodeMathSymbol{"02941}{\cwcirclearrow            }{\mathrel}{clockwise closed circle arrow}%
+\UnicodeMathSymbol{"02942}{\rightarrowshortleftarrow }{\mathrel}{rightwards arrow above short leftwards arrow}%
+\UnicodeMathSymbol{"02943}{\leftarrowshortrightarrow }{\mathrel}{leftwards arrow above short rightwards arrow}%
+\UnicodeMathSymbol{"02944}{\shortrightarrowleftarrow }{\mathrel}{short rightwards arrow above leftwards arrow}%
+\UnicodeMathSymbol{"02945}{\rightarrowplus           }{\mathrel}{rightwards arrow with plus below}%
+\UnicodeMathSymbol{"02946}{\leftarrowplus            }{\mathrel}{leftwards arrow with plus below}%
+\UnicodeMathSymbol{"02947}{\rightarrowx              }{\mathrel}{rightwards arrow through x}%
+\UnicodeMathSymbol{"02948}{\leftrightarrowcircle     }{\mathrel}{left right arrow through small circle}%
+\UnicodeMathSymbol{"02949}{\twoheaduparrowcircle     }{\mathrel}{upwards two-headed arrow from small circle}%
+\UnicodeMathSymbol{"0294A}{\leftrightharpoonupdown   }{\mathrel}{left barb up right barb down harpoon}%
+\UnicodeMathSymbol{"0294B}{\leftrightharpoondownup   }{\mathrel}{left barb down right barb up harpoon}%
+\UnicodeMathSymbol{"0294C}{\updownharpoonrightleft   }{\mathrel}{up barb right down barb left harpoon}%
+\UnicodeMathSymbol{"0294D}{\updownharpoonleftright   }{\mathrel}{up barb left down barb right harpoon}%
+\UnicodeMathSymbol{"0294E}{\leftrightharpoonupup     }{\mathrel}{left barb up right barb up harpoon}%
+\UnicodeMathSymbol{"0294F}{\updownharpoonrightright  }{\mathrel}{up barb right down barb right harpoon}%
+\UnicodeMathSymbol{"02950}{\leftrightharpoondowndown }{\mathrel}{left barb down right barb down harpoon}%
+\UnicodeMathSymbol{"02951}{\updownharpoonleftleft    }{\mathrel}{up barb left down barb left harpoon}%
+\UnicodeMathSymbol{"02952}{\barleftharpoonup         }{\mathrel}{leftwards harpoon with barb up to bar}%
+\UnicodeMathSymbol{"02953}{\rightharpoonupbar        }{\mathrel}{rightwards harpoon with barb up to bar}%
+\UnicodeMathSymbol{"02954}{\barupharpoonright        }{\mathrel}{upwards harpoon with barb right to bar}%
+\UnicodeMathSymbol{"02955}{\downharpoonrightbar      }{\mathrel}{downwards harpoon with barb right to bar}%
+\UnicodeMathSymbol{"02956}{\barleftharpoondown       }{\mathrel}{leftwards harpoon with barb down to bar}%
+\UnicodeMathSymbol{"02957}{\rightharpoondownbar      }{\mathrel}{rightwards harpoon with barb down to bar}%
+\UnicodeMathSymbol{"02958}{\barupharpoonleft         }{\mathrel}{upwards harpoon with barb left to bar}%
+\UnicodeMathSymbol{"02959}{\downharpoonleftbar       }{\mathrel}{downwards harpoon with barb left to bar}%
+\UnicodeMathSymbol{"0295A}{\leftharpoonupbar         }{\mathrel}{leftwards harpoon with barb up from bar}%
+\UnicodeMathSymbol{"0295B}{\barrightharpoonup        }{\mathrel}{rightwards harpoon with barb up from bar}%
+\UnicodeMathSymbol{"0295C}{\upharpoonrightbar        }{\mathrel}{upwards harpoon with barb right from bar}%
+\UnicodeMathSymbol{"0295D}{\bardownharpoonright      }{\mathrel}{downwards harpoon with barb right from bar}%
+\UnicodeMathSymbol{"0295E}{\leftharpoondownbar       }{\mathrel}{leftwards harpoon with barb down from bar}%
+\UnicodeMathSymbol{"0295F}{\barrightharpoondown      }{\mathrel}{rightwards harpoon with barb down from bar}%
+\UnicodeMathSymbol{"02960}{\upharpoonleftbar         }{\mathrel}{upwards harpoon with barb left from bar}%
+\UnicodeMathSymbol{"02961}{\bardownharpoonleft       }{\mathrel}{downwards harpoon with barb left from bar}%
+\UnicodeMathSymbol{"02962}{\leftharpoonsupdown       }{\mathrel}{leftwards harpoon with barb up above leftwards harpoon with barb down}%
+\UnicodeMathSymbol{"02963}{\upharpoonsleftright      }{\mathrel}{upwards harpoon with barb left beside upwards harpoon with barb right}%
+\UnicodeMathSymbol{"02964}{\rightharpoonsupdown      }{\mathrel}{rightwards harpoon with barb up above rightwards harpoon with barb down}%
+\UnicodeMathSymbol{"02965}{\downharpoonsleftright    }{\mathrel}{downwards harpoon with barb left beside downwards harpoon with barb right}%
+\UnicodeMathSymbol{"02966}{\leftrightharpoonsup      }{\mathrel}{leftwards harpoon with barb up above rightwards harpoon with barb up}%
+\UnicodeMathSymbol{"02967}{\leftrightharpoonsdown    }{\mathrel}{leftwards harpoon with barb down above rightwards harpoon with barb down}%
+\UnicodeMathSymbol{"02968}{\rightleftharpoonsup      }{\mathrel}{rightwards harpoon with barb up above leftwards harpoon with barb up}%
+\UnicodeMathSymbol{"02969}{\rightleftharpoonsdown    }{\mathrel}{rightwards harpoon with barb down above leftwards harpoon with barb down}%
+\UnicodeMathSymbol{"0296A}{\leftharpoonupdash        }{\mathrel}{leftwards harpoon with barb up above long dash}%
+\UnicodeMathSymbol{"0296B}{\dashleftharpoondown      }{\mathrel}{leftwards harpoon with barb down below long dash}%
+\UnicodeMathSymbol{"0296C}{\rightharpoonupdash       }{\mathrel}{rightwards harpoon with barb up above long dash}%
+\UnicodeMathSymbol{"0296D}{\dashrightharpoondown     }{\mathrel}{rightwards harpoon with barb down below long dash}%
+\UnicodeMathSymbol{"0296E}{\updownharpoonsleftright  }{\mathrel}{upwards harpoon with barb left beside downwards harpoon with barb right}%
+\UnicodeMathSymbol{"0296F}{\downupharpoonsleftright  }{\mathrel}{downwards harpoon with barb left beside upwards harpoon with barb right}%
+\UnicodeMathSymbol{"02970}{\rightimply               }{\mathrel}{right double arrow with rounded head}%
+\UnicodeMathSymbol{"02971}{\equalrightarrow          }{\mathrel}{equals sign above rightwards arrow}%
+\UnicodeMathSymbol{"02972}{\similarrightarrow        }{\mathrel}{tilde operator above rightwards arrow}%
+\UnicodeMathSymbol{"02973}{\leftarrowsimilar         }{\mathrel}{leftwards arrow above tilde operator}%
+\UnicodeMathSymbol{"02974}{\rightarrowsimilar        }{\mathrel}{rightwards arrow above tilde operator}%
+\UnicodeMathSymbol{"02975}{\rightarrowapprox         }{\mathrel}{rightwards arrow above almost equal to}%
+\UnicodeMathSymbol{"02976}{\ltlarr                   }{\mathrel}{less-than above leftwards arrow}%
+\UnicodeMathSymbol{"02977}{\leftarrowless            }{\mathrel}{leftwards arrow through less-than}%
+\UnicodeMathSymbol{"02978}{\gtrarr                   }{\mathrel}{greater-than above rightwards arrow}%
+\UnicodeMathSymbol{"02979}{\subrarr                  }{\mathrel}{subset above rightwards arrow}%
+\UnicodeMathSymbol{"0297A}{\leftarrowsubset          }{\mathrel}{leftwards arrow through subset}%
+\UnicodeMathSymbol{"0297B}{\suplarr                  }{\mathrel}{superset above leftwards arrow}%
+\UnicodeMathSymbol{"0297C}{\leftfishtail             }{\mathrel}{left fish tail}%
+\UnicodeMathSymbol{"0297D}{\rightfishtail            }{\mathrel}{right fish tail}%
+\UnicodeMathSymbol{"0297E}{\upfishtail               }{\mathrel}{up fish tail}%
+\UnicodeMathSymbol{"0297F}{\downfishtail             }{\mathrel}{down fish tail}%
+\UnicodeMathSymbol{"02980}{\Vvert                    }{\mathfence}{triple vertical bar delimiter}%
+\UnicodeMathSymbol{"02981}{\mdsmblkcircle            }{\mathord}{z notation spot}%
+\UnicodeMathSymbol{"02982}{\typecolon                }{\mathrel}{z notation type colon}%
+\UnicodeMathSymbol{"02983}{\lBrace                   }{\mathopen}{left white curly bracket}%
+\UnicodeMathSymbol{"02984}{\rBrace                   }{\mathclose}{right white curly bracket}%
+\UnicodeMathSymbol{"02985}{\lParen                   }{\mathopen}{left white parenthesis}%
+\UnicodeMathSymbol{"02986}{\rParen                   }{\mathclose}{right white parenthesis}%
+\UnicodeMathSymbol{"02987}{\llparenthesis            }{\mathopen}{z notation left image bracket}%
+\UnicodeMathSymbol{"02988}{\rrparenthesis            }{\mathclose}{z notation right image bracket}%
+\UnicodeMathSymbol{"02989}{\llangle                  }{\mathopen}{z notation left binding bracket}%
+\UnicodeMathSymbol{"0298A}{\rrangle                  }{\mathclose}{z notation right binding bracket}%
+\UnicodeMathSymbol{"0298B}{\lbrackubar               }{\mathopen}{left square bracket with underbar}%
+\UnicodeMathSymbol{"0298C}{\rbrackubar               }{\mathclose}{right square bracket with underbar}%
+\UnicodeMathSymbol{"0298D}{\lbrackultick             }{\mathopen}{left square bracket with tick in top corner}%
+\UnicodeMathSymbol{"0298E}{\rbracklrtick             }{\mathclose}{right square bracket with tick in bottom corner}%
+\UnicodeMathSymbol{"0298F}{\lbracklltick             }{\mathopen}{left square bracket with tick in bottom corner}%
+\UnicodeMathSymbol{"02990}{\rbrackurtick             }{\mathclose}{right square bracket with tick in top corner}%
+\UnicodeMathSymbol{"02991}{\langledot                }{\mathopen}{left angle bracket with dot}%
+\UnicodeMathSymbol{"02992}{\rangledot                }{\mathclose}{right angle bracket with dot}%
+\UnicodeMathSymbol{"02993}{\lparenless               }{\mathopen}{left arc less-than bracket}%
+\UnicodeMathSymbol{"02994}{\rparengtr                }{\mathclose}{right arc greater-than bracket}%
+\UnicodeMathSymbol{"02995}{\Lparengtr                }{\mathopen}{double left arc greater-than bracket}%
+\UnicodeMathSymbol{"02996}{\Rparenless               }{\mathclose}{double right arc less-than bracket}%
+\UnicodeMathSymbol{"02997}{\lblkbrbrak               }{\mathopen}{left black tortoise shell bracket}%
+\UnicodeMathSymbol{"02998}{\rblkbrbrak               }{\mathclose}{right black tortoise shell bracket}%
+\UnicodeMathSymbol{"02999}{\fourvdots                }{\mathord}{dotted fence}%
+\UnicodeMathSymbol{"0299A}{\vzigzag                  }{\mathord}{vertical zigzag line}%
+\UnicodeMathSymbol{"0299B}{\measuredangleleft        }{\mathord}{measured angle opening left}%
+\UnicodeMathSymbol{"0299C}{\rightanglesqr            }{\mathord}{right angle variant with square}%
+\UnicodeMathSymbol{"0299D}{\rightanglemdot           }{\mathord}{measured right angle with dot}%
+\UnicodeMathSymbol{"0299E}{\angles                   }{\mathord}{angle with s inside}%
+\UnicodeMathSymbol{"0299F}{\angdnr                   }{\mathord}{acute angle}%
+\UnicodeMathSymbol{"029A0}{\gtlpar                   }{\mathord}{spherical angle opening left}%
+\UnicodeMathSymbol{"029A1}{\sphericalangleup         }{\mathord}{spherical angle opening up}%
+\UnicodeMathSymbol{"029A2}{\turnangle                }{\mathord}{turned angle}%
+\UnicodeMathSymbol{"029A3}{\revangle                 }{\mathord}{reversed angle}%
+\UnicodeMathSymbol{"029A4}{\angleubar                }{\mathord}{angle with underbar}%
+\UnicodeMathSymbol{"029A5}{\revangleubar             }{\mathord}{reversed angle with underbar}%
+\UnicodeMathSymbol{"029A6}{\wideangledown            }{\mathord}{oblique angle opening up}%
+\UnicodeMathSymbol{"029A7}{\wideangleup              }{\mathord}{oblique angle opening down}%
+\UnicodeMathSymbol{"029A8}{\measanglerutone          }{\mathord}{measured angle with open arm ending in arrow pointing up and right}%
+\UnicodeMathSymbol{"029A9}{\measanglelutonw          }{\mathord}{measured angle with open arm ending in arrow pointing up and left}%
+\UnicodeMathSymbol{"029AA}{\measanglerdtose          }{\mathord}{measured angle with open arm ending in arrow pointing down and right}%
+\UnicodeMathSymbol{"029AB}{\measangleldtosw          }{\mathord}{measured angle with open arm ending in arrow pointing down and left}%
+\UnicodeMathSymbol{"029AC}{\measangleurtone          }{\mathord}{measured angle with open arm ending in arrow pointing right and up}%
+\UnicodeMathSymbol{"029AD}{\measangleultonw          }{\mathord}{measured angle with open arm ending in arrow pointing left and up}%
+\UnicodeMathSymbol{"029AE}{\measangledrtose          }{\mathord}{measured angle with open arm ending in arrow pointing right and down}%
+\UnicodeMathSymbol{"029AF}{\measangledltosw          }{\mathord}{measured angle with open arm ending in arrow pointing left and down}%
+\UnicodeMathSymbol{"029B0}{\revemptyset              }{\mathord}{reversed empty set}%
+\UnicodeMathSymbol{"029B1}{\emptysetobar             }{\mathord}{empty set with overbar}%
+\UnicodeMathSymbol{"029B2}{\emptysetocirc            }{\mathord}{empty set with small circle above}%
+\UnicodeMathSymbol{"029B3}{\emptysetoarr             }{\mathord}{empty set with right arrow above}%
+\UnicodeMathSymbol{"029B4}{\emptysetoarrl            }{\mathord}{empty set with left arrow above}%
+\UnicodeMathSymbol{"029B5}{\circlehbar               }{\mathbin}{circle with horizontal bar}%
+\UnicodeMathSymbol{"029B6}{\circledvert              }{\mathbin}{circled vertical bar}%
+\UnicodeMathSymbol{"029B7}{\circledparallel          }{\mathbin}{circled parallel}%
+\UnicodeMathSymbol{"029B8}{\obslash                  }{\mathbin}{circled reverse solidus}%
+\UnicodeMathSymbol{"029B9}{\operp                    }{\mathbin}{circled perpendicular}%
+\UnicodeMathSymbol{"029BA}{\obot                     }{\mathord}{circle divided by horizontal bar and top half divided by vertical bar}%
+\UnicodeMathSymbol{"029BB}{\olcross                  }{\mathord}{circle with superimposed x}%
+\UnicodeMathSymbol{"029BC}{\odotslashdot             }{\mathord}{circled anticlockwise-rotated division sign}%
+\UnicodeMathSymbol{"029BD}{\uparrowoncircle          }{\mathord}{up arrow through circle}%
+\UnicodeMathSymbol{"029BE}{\circledwhitebullet       }{\mathord}{circled white bullet}%
+\UnicodeMathSymbol{"029BF}{\circledbullet            }{\mathord}{circled bullet}%
+\UnicodeMathSymbol{"029C0}{\olessthan                }{\mathbin}{circled less-than}%
+\UnicodeMathSymbol{"029C1}{\ogreaterthan             }{\mathbin}{circled greater-than}%
+\UnicodeMathSymbol{"029C2}{\cirscir                  }{\mathord}{circle with small circle to the right}%
+\UnicodeMathSymbol{"029C3}{\cirE                     }{\mathord}{circle with two horizontal strokes to the right}%
+\UnicodeMathSymbol{"029C4}{\boxdiag                  }{\mathbin}{squared rising diagonal slash}%
+\UnicodeMathSymbol{"029C5}{\boxbslash                }{\mathbin}{squared falling diagonal slash}%
+\UnicodeMathSymbol{"029C6}{\boxast                   }{\mathbin}{squared asterisk}%
+\UnicodeMathSymbol{"029C7}{\boxcircle                }{\mathbin}{squared small circle}%
+\UnicodeMathSymbol{"029C8}{\boxbox                   }{\mathbin}{squared square}%
+\UnicodeMathSymbol{"029C9}{\boxonbox                 }{\mathord}{two joined squares}%
+\UnicodeMathSymbol{"029CA}{\triangleodot             }{\mathord}{triangle with dot above}%
+\UnicodeMathSymbol{"029CB}{\triangleubar             }{\mathord}{triangle with underbar}%
+\UnicodeMathSymbol{"029CC}{\triangles                }{\mathord}{s in triangle}%
+\UnicodeMathSymbol{"029CD}{\triangleserifs           }{\mathbin}{triangle with serifs at bottom}%
+\UnicodeMathSymbol{"029CE}{\rtriltri                 }{\mathrel}{right triangle above left triangle}%
+\UnicodeMathSymbol{"029CF}{\ltrivb                   }{\mathrel}{left triangle beside vertical bar}%
+\UnicodeMathSymbol{"029D0}{\vbrtri                   }{\mathrel}{vertical bar beside right triangle}%
+\UnicodeMathSymbol{"029D1}{\lfbowtie                 }{\mathrel}{left black bowtie}%
+\UnicodeMathSymbol{"029D2}{\rfbowtie                 }{\mathrel}{right black bowtie}%
+\UnicodeMathSymbol{"029D3}{\fbowtie                  }{\mathrel}{black bowtie}%
+\UnicodeMathSymbol{"029D4}{\lftimes                  }{\mathrel}{left black times}%
+\UnicodeMathSymbol{"029D5}{\rftimes                  }{\mathrel}{right black times}%
+\UnicodeMathSymbol{"029D6}{\hourglass                }{\mathbin}{white hourglass}%
+\UnicodeMathSymbol{"029D7}{\blackhourglass           }{\mathbin}{black hourglass}%
+\UnicodeMathSymbol{"029D8}{\lvzigzag                 }{\mathopen}{left wiggly fence}%
+\UnicodeMathSymbol{"029D9}{\rvzigzag                 }{\mathclose}{right wiggly fence}%
+\UnicodeMathSymbol{"029DA}{\Lvzigzag                 }{\mathopen}{left double wiggly fence}%
+\UnicodeMathSymbol{"029DB}{\Rvzigzag                 }{\mathclose}{right double wiggly fence}%
+\UnicodeMathSymbol{"029DC}{\iinfin                   }{\mathord}{incomplete infinity}%
+\UnicodeMathSymbol{"029DD}{\tieinfty                 }{\mathord}{tie over infinity}%
+\UnicodeMathSymbol{"029DE}{\nvinfty                  }{\mathord}{infinity negated with vertical bar}%
+\UnicodeMathSymbol{"029DF}{\dualmap                  }{\mathrel}{double-ended multimap}%
+\UnicodeMathSymbol{"029E0}{\laplac                   }{\mathord}{square with contoured outline}%
+\UnicodeMathSymbol{"029E1}{\lrtriangleeq             }{\mathrel}{increases as}%
+\UnicodeMathSymbol{"029E2}{\shuffle                  }{\mathbin}{shuffle product}%
+\UnicodeMathSymbol{"029E3}{\eparsl                   }{\mathrel}{equals sign and slanted parallel}%
+\UnicodeMathSymbol{"029E4}{\smeparsl                 }{\mathrel}{equals sign and slanted parallel with tilde above}%
+\UnicodeMathSymbol{"029E5}{\eqvparsl                 }{\mathrel}{identical to and slanted parallel}%
+\UnicodeMathSymbol{"029E6}{\gleichstark              }{\mathrel}{gleich stark}%
+\UnicodeMathSymbol{"029E7}{\thermod                  }{\mathord}{thermodynamic}%
+\UnicodeMathSymbol{"029E8}{\downtriangleleftblack    }{\mathord}{down-pointing triangle with left half black}%
+\UnicodeMathSymbol{"029E9}{\downtrianglerightblack   }{\mathord}{down-pointing triangle with right half black}%
+\UnicodeMathSymbol{"029EA}{\blackdiamonddownarrow    }{\mathord}{black diamond with down arrow}%
+\UnicodeMathSymbol{"029EB}{\mdlgblklozenge           }{\mathbin}{black lozenge}%
+\UnicodeMathSymbol{"029EC}{\circledownarrow          }{\mathord}{white circle with down arrow}%
+\UnicodeMathSymbol{"029ED}{\blackcircledownarrow     }{\mathord}{black circle with down arrow}%
+\UnicodeMathSymbol{"029EE}{\errbarsquare             }{\mathord}{error-barred white square}%
+\UnicodeMathSymbol{"029EF}{\errbarblacksquare        }{\mathord}{error-barred black square}%
+\UnicodeMathSymbol{"029F0}{\errbardiamond            }{\mathord}{error-barred white diamond}%
+\UnicodeMathSymbol{"029F1}{\errbarblackdiamond       }{\mathord}{error-barred black diamond}%
+\UnicodeMathSymbol{"029F2}{\errbarcircle             }{\mathord}{error-barred white circle}%
+\UnicodeMathSymbol{"029F3}{\errbarblackcircle        }{\mathord}{error-barred black circle}%
+\UnicodeMathSymbol{"029F4}{\ruledelayed              }{\mathrel}{rule-delayed}%
+\UnicodeMathSymbol{"029F5}{\setminus                 }{\mathbin}{reverse solidus operator}%
+\UnicodeMathSymbol{"029F6}{\dsol                     }{\mathbin}{solidus with overbar}%
+\UnicodeMathSymbol{"029F7}{\rsolbar                  }{\mathbin}{reverse solidus with horizontal stroke}%
+\UnicodeMathSymbol{"029F8}{\xsol                     }{\mathop}{big solidus}%
+\UnicodeMathSymbol{"029F9}{\xbsol                    }{\mathop}{big reverse solidus}%
+\UnicodeMathSymbol{"029FA}{\doubleplus               }{\mathbin}{double plus}%
+\UnicodeMathSymbol{"029FB}{\tripleplus               }{\mathbin}{triple plus}%
+\UnicodeMathSymbol{"029FC}{\lcurvyangle              }{\mathopen}{left pointing curved angle bracket}%
+\UnicodeMathSymbol{"029FD}{\rcurvyangle              }{\mathclose}{right pointing curved angle bracket}%
+\UnicodeMathSymbol{"029FE}{\tplus                    }{\mathbin}{tiny}%
+\UnicodeMathSymbol{"029FF}{\tminus                   }{\mathbin}{miny}%
+\UnicodeMathSymbol{"02A00}{\bigodot                  }{\mathop}{n-ary circled dot operator}%
+\UnicodeMathSymbol{"02A01}{\bigoplus                 }{\mathop}{n-ary circled plus operator}%
+\UnicodeMathSymbol{"02A02}{\bigotimes                }{\mathop}{n-ary circled times operator}%
+\UnicodeMathSymbol{"02A03}{\bigcupdot                }{\mathop}{n-ary union operator with dot}%
+\UnicodeMathSymbol{"02A04}{\biguplus                 }{\mathop}{n-ary union operator with plus}%
+\UnicodeMathSymbol{"02A05}{\bigsqcap                 }{\mathop}{n-ary square intersection operator}%
+\UnicodeMathSymbol{"02A06}{\bigsqcup                 }{\mathop}{n-ary square union operator}%
+\UnicodeMathSymbol{"02A07}{\conjquant                }{\mathop}{two logical and operator}%
+\UnicodeMathSymbol{"02A08}{\disjquant                }{\mathop}{two logical or operator}%
+\UnicodeMathSymbol{"02A09}{\bigtimes                 }{\mathop}{n-ary times operator}%
+\UnicodeMathSymbol{"02A0A}{\modtwosum                }{\mathop}{modulo two sum}%
+\UnicodeMathSymbol{"02A0B}{\sumint                   }{\mathop}{summation with integral}%
+\UnicodeMathSymbol{"02A0C}{\iiiint                   }{\mathop}{quadruple integral operator}%
+\UnicodeMathSymbol{"02A0D}{\intbar                   }{\mathop}{finite part integral}%
+\UnicodeMathSymbol{"02A0E}{\intBar                   }{\mathop}{integral with double stroke}%
+\UnicodeMathSymbol{"02A0F}{\fint                     }{\mathop}{integral average with slash}%
+\UnicodeMathSymbol{"02A10}{\cirfnint                 }{\mathop}{circulation function}%
+\UnicodeMathSymbol{"02A11}{\awint                    }{\mathop}{anticlockwise integration}%
+\UnicodeMathSymbol{"02A12}{\rppolint                 }{\mathop}{line integration with rectangular path around pole}%
+\UnicodeMathSymbol{"02A13}{\scpolint                 }{\mathop}{line integration with semicircular path around pole}%
+\UnicodeMathSymbol{"02A14}{\npolint                  }{\mathop}{line integration not including the pole}%
+\UnicodeMathSymbol{"02A15}{\pointint                 }{\mathop}{integral around a point operator}%
+\UnicodeMathSymbol{"02A16}{\sqint                    }{\mathop}{quaternion integral operator}%
+\UnicodeMathSymbol{"02A17}{\intlarhk                 }{\mathop}{integral with leftwards arrow with hook}%
+\UnicodeMathSymbol{"02A18}{\intx                     }{\mathop}{integral with times sign}%
+\UnicodeMathSymbol{"02A19}{\intcap                   }{\mathop}{integral with intersection}%
+\UnicodeMathSymbol{"02A1A}{\intcup                   }{\mathop}{integral with union}%
+\UnicodeMathSymbol{"02A1B}{\upint                    }{\mathop}{integral with overbar}%
+\UnicodeMathSymbol{"02A1C}{\lowint                   }{\mathop}{integral with underbar}%
+\UnicodeMathSymbol{"02A1D}{\Join                     }{\mathop}{join}%
+\UnicodeMathSymbol{"02A1E}{\bigtriangleleft          }{\mathop}{large left triangle operator}%
+\UnicodeMathSymbol{"02A1F}{\zcmp                     }{\mathop}{z notation schema composition}%
+\UnicodeMathSymbol{"02A20}{\zpipe                    }{\mathop}{z notation schema piping}%
+\UnicodeMathSymbol{"02A21}{\zproject                 }{\mathop}{z notation schema projection}%
+\UnicodeMathSymbol{"02A22}{\ringplus                 }{\mathbin}{plus sign with small circle above}%
+\UnicodeMathSymbol{"02A23}{\plushat                  }{\mathbin}{plus sign with circumflex accent above}%
+\UnicodeMathSymbol{"02A24}{\simplus                  }{\mathbin}{plus sign with tilde above}%
+\UnicodeMathSymbol{"02A25}{\plusdot                  }{\mathbin}{plus sign with dot below}%
+\UnicodeMathSymbol{"02A26}{\plussim                  }{\mathbin}{plus sign with tilde below}%
+\UnicodeMathSymbol{"02A27}{\plussubtwo               }{\mathbin}{plus sign with subscript two}%
+\UnicodeMathSymbol{"02A28}{\plustrif                 }{\mathbin}{plus sign with black triangle}%
+\UnicodeMathSymbol{"02A29}{\commaminus               }{\mathbin}{minus sign with comma above}%
+\UnicodeMathSymbol{"02A2A}{\minusdot                 }{\mathbin}{minus sign with dot below}%
+\UnicodeMathSymbol{"02A2B}{\minusfdots               }{\mathbin}{minus sign with falling dots}%
+\UnicodeMathSymbol{"02A2C}{\minusrdots               }{\mathbin}{minus sign with rising dots}%
+\UnicodeMathSymbol{"02A2D}{\opluslhrim               }{\mathbin}{plus sign in left half circle}%
+\UnicodeMathSymbol{"02A2E}{\oplusrhrim               }{\mathbin}{plus sign in right half circle}%
+\UnicodeMathSymbol{"02A2F}{\vectimes                 }{\mathbin}{vector or cross product}%
+\UnicodeMathSymbol{"02A30}{\dottimes                 }{\mathbin}{multiplication sign with dot above}%
+\UnicodeMathSymbol{"02A31}{\timesbar                 }{\mathbin}{multiplication sign with underbar}%
+\UnicodeMathSymbol{"02A32}{\btimes                   }{\mathbin}{semidirect product with bottom closed}%
+\UnicodeMathSymbol{"02A33}{\smashtimes               }{\mathbin}{smash product}%
+\UnicodeMathSymbol{"02A34}{\otimeslhrim              }{\mathbin}{multiplication sign in left half circle}%
+\UnicodeMathSymbol{"02A35}{\otimesrhrim              }{\mathbin}{multiplication sign in right half circle}%
+\UnicodeMathSymbol{"02A36}{\otimeshat                }{\mathbin}{circled multiplication sign with circumflex accent}%
+\UnicodeMathSymbol{"02A37}{\Otimes                   }{\mathbin}{multiplication sign in double circle}%
+\UnicodeMathSymbol{"02A38}{\odiv                     }{\mathbin}{circled division sign}%
+\UnicodeMathSymbol{"02A39}{\triangleplus             }{\mathbin}{plus sign in triangle}%
+\UnicodeMathSymbol{"02A3A}{\triangleminus            }{\mathbin}{minus sign in triangle}%
+\UnicodeMathSymbol{"02A3B}{\triangletimes            }{\mathbin}{multiplication sign in triangle}%
+\UnicodeMathSymbol{"02A3C}{\intprod                  }{\mathbin}{interior product}%
+\UnicodeMathSymbol{"02A3D}{\intprodr                 }{\mathbin}{righthand interior product}%
+\UnicodeMathSymbol{"02A3E}{\fcmp                     }{\mathbin}{z notation relational composition}%
+\UnicodeMathSymbol{"02A3F}{\amalg                    }{\mathbin}{amalgamation or coproduct}%
+\UnicodeMathSymbol{"02A40}{\capdot                   }{\mathbin}{intersection with dot}%
+\UnicodeMathSymbol{"02A41}{\uminus                   }{\mathbin}{union with minus sign}%
+\UnicodeMathSymbol{"02A42}{\barcup                   }{\mathbin}{union with overbar}%
+\UnicodeMathSymbol{"02A43}{\barcap                   }{\mathbin}{intersection with overbar}%
+\UnicodeMathSymbol{"02A44}{\capwedge                 }{\mathbin}{intersection with logical and}%
+\UnicodeMathSymbol{"02A45}{\cupvee                   }{\mathbin}{union with logical or}%
+\UnicodeMathSymbol{"02A46}{\cupovercap               }{\mathbin}{union above intersection}%
+\UnicodeMathSymbol{"02A47}{\capovercup               }{\mathbin}{intersection above union}%
+\UnicodeMathSymbol{"02A48}{\cupbarcap                }{\mathbin}{union above bar above intersection}%
+\UnicodeMathSymbol{"02A49}{\capbarcup                }{\mathbin}{intersection above bar above union}%
+\UnicodeMathSymbol{"02A4A}{\twocups                  }{\mathbin}{union beside and joined with union}%
+\UnicodeMathSymbol{"02A4B}{\twocaps                  }{\mathbin}{intersection beside and joined with intersection}%
+\UnicodeMathSymbol{"02A4C}{\closedvarcup             }{\mathbin}{closed union with serifs}%
+\UnicodeMathSymbol{"02A4D}{\closedvarcap             }{\mathbin}{closed intersection with serifs}%
+\UnicodeMathSymbol{"02A4E}{\Sqcap                    }{\mathbin}{double square intersection}%
+\UnicodeMathSymbol{"02A4F}{\Sqcup                    }{\mathbin}{double square union}%
+\UnicodeMathSymbol{"02A50}{\closedvarcupsmashprod    }{\mathbin}{closed union with serifs and smash product}%
+\UnicodeMathSymbol{"02A51}{\wedgeodot                }{\mathbin}{logical and with dot above}%
+\UnicodeMathSymbol{"02A52}{\veeodot                  }{\mathbin}{logical or with dot above}%
+\UnicodeMathSymbol{"02A53}{\Wedge                    }{\mathbin}{double logical and}%
+\UnicodeMathSymbol{"02A54}{\Vee                      }{\mathbin}{double logical or}%
+\UnicodeMathSymbol{"02A55}{\wedgeonwedge             }{\mathbin}{two intersecting logical and}%
+\UnicodeMathSymbol{"02A56}{\veeonvee                 }{\mathbin}{two intersecting logical or}%
+\UnicodeMathSymbol{"02A57}{\bigslopedvee             }{\mathbin}{sloping large or}%
+\UnicodeMathSymbol{"02A58}{\bigslopedwedge           }{\mathbin}{sloping large and}%
+\UnicodeMathSymbol{"02A59}{\veeonwedge               }{\mathrel}{logical or overlapping logical and}%
+\UnicodeMathSymbol{"02A5A}{\wedgemidvert             }{\mathbin}{logical and with middle stem}%
+\UnicodeMathSymbol{"02A5B}{\veemidvert               }{\mathbin}{logical or with middle stem}%
+\UnicodeMathSymbol{"02A5C}{\midbarwedge              }{\mathbin}{ogical and with horizontal dash}%
+\UnicodeMathSymbol{"02A5D}{\midbarvee                }{\mathbin}{logical or with horizontal dash}%
+\UnicodeMathSymbol{"02A5E}{\doublebarwedge           }{\mathbin}{logical and with double overbar}%
+\UnicodeMathSymbol{"02A5F}{\wedgebar                 }{\mathbin}{logical and with underbar}%
+\UnicodeMathSymbol{"02A60}{\wedgedoublebar           }{\mathbin}{logical and with double underbar}%
+\UnicodeMathSymbol{"02A61}{\varveebar                }{\mathbin}{small vee with underbar}%
+\UnicodeMathSymbol{"02A62}{\doublebarvee             }{\mathbin}{logical or with double overbar}%
+\UnicodeMathSymbol{"02A63}{\veedoublebar             }{\mathbin}{logical or with double underbar}%
+\UnicodeMathSymbol{"02A64}{\dsub                     }{\mathbin}{z notation domain antirestriction}%
+\UnicodeMathSymbol{"02A65}{\rsub                     }{\mathbin}{z notation range antirestriction}%
+\UnicodeMathSymbol{"02A66}{\eqdot                    }{\mathrel}{equals sign with dot below}%
+\UnicodeMathSymbol{"02A67}{\dotequiv                 }{\mathrel}{identical with dot above}%
+\UnicodeMathSymbol{"02A68}{\equivVert                }{\mathrel}{triple horizontal bar with double vertical stroke}%
+\UnicodeMathSymbol{"02A69}{\equivVvert               }{\mathrel}{triple horizontal bar with triple vertical stroke}%
+\UnicodeMathSymbol{"02A6A}{\dotsim                   }{\mathrel}{tilde operator with dot above}%
+\UnicodeMathSymbol{"02A6B}{\simrdots                 }{\mathrel}{tilde operator with rising dots}%
+\UnicodeMathSymbol{"02A6C}{\simminussim              }{\mathrel}{similar minus similar}%
+\UnicodeMathSymbol{"02A6D}{\congdot                  }{\mathrel}{congruent with dot above}%
+\UnicodeMathSymbol{"02A6E}{\asteq                    }{\mathrel}{equals with asterisk}%
+\UnicodeMathSymbol{"02A6F}{\hatapprox                }{\mathrel}{almost equal to with circumflex accent}%
+\UnicodeMathSymbol{"02A70}{\approxeqq                }{\mathrel}{approximately equal or equal to}%
+\UnicodeMathSymbol{"02A71}{\eqqplus                  }{\mathbin}{equals sign above plus sign}%
+\UnicodeMathSymbol{"02A72}{\pluseqq                  }{\mathbin}{plus sign above equals sign}%
+\UnicodeMathSymbol{"02A73}{\eqqsim                   }{\mathrel}{equals sign above tilde operator}%
+\UnicodeMathSymbol{"02A74}{\Coloneq                  }{\mathrel}{double colon equal}%
+\UnicodeMathSymbol{"02A75}{\eqeq                     }{\mathrel}{two consecutive equals signs}%
+\UnicodeMathSymbol{"02A76}{\eqeqeq                   }{\mathrel}{three consecutive equals signs}%
+\UnicodeMathSymbol{"02A77}{\ddotseq                  }{\mathrel}{equals sign with two dots above and two dots below}%
+\UnicodeMathSymbol{"02A78}{\equivDD                  }{\mathrel}{equivalent with four dots above}%
+\UnicodeMathSymbol{"02A79}{\ltcir                    }{\mathrel}{less-than with circle inside}%
+\UnicodeMathSymbol{"02A7A}{\gtcir                    }{\mathrel}{greater-than with circle inside}%
+\UnicodeMathSymbol{"02A7B}{\ltquest                  }{\mathrel}{less-than with question mark above}%
+\UnicodeMathSymbol{"02A7C}{\gtquest                  }{\mathrel}{greater-than with question mark above}%
+\UnicodeMathSymbol{"02A7D}{\leqslant                 }{\mathrel}{less-than or slanted equal to}%
+\UnicodeMathSymbol{"02A7E}{\geqslant                 }{\mathrel}{greater-than or slanted equal to}%
+\UnicodeMathSymbol{"02A7F}{\lesdot                   }{\mathrel}{less-than or slanted equal to with dot inside}%
+\UnicodeMathSymbol{"02A80}{\gesdot                   }{\mathrel}{greater-than or slanted equal to with dot inside}%
+\UnicodeMathSymbol{"02A81}{\lesdoto                  }{\mathrel}{less-than or slanted equal to with dot above}%
+\UnicodeMathSymbol{"02A82}{\gesdoto                  }{\mathrel}{greater-than or slanted equal to with dot above}%
+\UnicodeMathSymbol{"02A83}{\lesdotor                 }{\mathrel}{less-than or slanted equal to with dot above right}%
+\UnicodeMathSymbol{"02A84}{\gesdotol                 }{\mathrel}{greater-than or slanted equal to with dot above left}%
+\UnicodeMathSymbol{"02A85}{\lessapprox               }{\mathrel}{less-than or approximate}%
+\UnicodeMathSymbol{"02A86}{\gtrapprox                }{\mathrel}{greater-than or approximate}%
+\UnicodeMathSymbol{"02A87}{\lneq                     }{\mathrel}{less-than and single-line not equal to}%
+\UnicodeMathSymbol{"02A88}{\gneq                     }{\mathrel}{greater-than and single-line not equal to}%
+\UnicodeMathSymbol{"02A89}{\lnapprox                 }{\mathrel}{less-than and not approximate}%
+\UnicodeMathSymbol{"02A8A}{\gnapprox                 }{\mathrel}{greater-than and not approximate}%
+\UnicodeMathSymbol{"02A8B}{\lesseqqgtr               }{\mathrel}{less-than above double-line equal above greater-than}%
+\UnicodeMathSymbol{"02A8C}{\gtreqqless               }{\mathrel}{greater-than above double-line equal above less-than}%
+\UnicodeMathSymbol{"02A8D}{\lsime                    }{\mathrel}{less-than above similar or equal}%
+\UnicodeMathSymbol{"02A8E}{\gsime                    }{\mathrel}{greater-than above similar or equal}%
+\UnicodeMathSymbol{"02A8F}{\lsimg                    }{\mathrel}{less-than above similar above greater-than}%
+\UnicodeMathSymbol{"02A90}{\gsiml                    }{\mathrel}{greater-than above similar above less-than}%
+\UnicodeMathSymbol{"02A91}{\lgE                      }{\mathrel}{less-than above greater-than above double-line equal}%
+\UnicodeMathSymbol{"02A92}{\glE                      }{\mathrel}{greater-than above less-than above double-line equal}%
+\UnicodeMathSymbol{"02A93}{\lesges                   }{\mathrel}{less-than above slanted equal above greater-than above slanted equal}%
+\UnicodeMathSymbol{"02A94}{\gesles                   }{\mathrel}{greater-than above slanted equal above less-than above slanted equal}%
+\UnicodeMathSymbol{"02A95}{\eqslantless              }{\mathrel}{slanted equal to or less-than}%
+\UnicodeMathSymbol{"02A96}{\eqslantgtr               }{\mathrel}{slanted equal to or greater-than}%
+\UnicodeMathSymbol{"02A97}{\elsdot                   }{\mathrel}{slanted equal to or less-than with dot inside}%
+\UnicodeMathSymbol{"02A98}{\egsdot                   }{\mathrel}{slanted equal to or greater-than with dot inside}%
+\UnicodeMathSymbol{"02A99}{\eqqless                  }{\mathrel}{double-line equal to or less-than}%
+\UnicodeMathSymbol{"02A9A}{\eqqgtr                   }{\mathrel}{double-line equal to or greater-than}%
+\UnicodeMathSymbol{"02A9B}{\eqqslantless             }{\mathrel}{double-line slanted equal to or less-than}%
+\UnicodeMathSymbol{"02A9C}{\eqqslantgtr              }{\mathrel}{double-line slanted equal to or greater-than}%
+\UnicodeMathSymbol{"02A9D}{\simless                  }{\mathrel}{similar or less-than}%
+\UnicodeMathSymbol{"02A9E}{\simgtr                   }{\mathrel}{similar or greater-than}%
+\UnicodeMathSymbol{"02A9F}{\simlE                    }{\mathrel}{similar above less-than above equals sign}%
+\UnicodeMathSymbol{"02AA0}{\simgE                    }{\mathrel}{similar above greater-than above equals sign}%
+\UnicodeMathSymbol{"02AA1}{\Lt                       }{\mathrel}{double nested less-than}%
+\UnicodeMathSymbol{"02AA2}{\Gt                       }{\mathrel}{double nested greater-than}%
+\UnicodeMathSymbol{"02AA3}{\partialmeetcontraction   }{\mathrel}{double less-than with underbar}%
+\UnicodeMathSymbol{"02AA4}{\glj                      }{\mathrel}{greater-than overlapping less-than}%
+\UnicodeMathSymbol{"02AA5}{\gla                      }{\mathrel}{greater-than beside less-than}%
+\UnicodeMathSymbol{"02AA6}{\ltcc                     }{\mathrel}{less-than closed by curve}%
+\UnicodeMathSymbol{"02AA7}{\gtcc                     }{\mathrel}{greater-than closed by curve}%
+\UnicodeMathSymbol{"02AA8}{\lescc                    }{\mathrel}{less-than closed by curve above slanted equal}%
+\UnicodeMathSymbol{"02AA9}{\gescc                    }{\mathrel}{greater-than closed by curve above slanted equal}%
+\UnicodeMathSymbol{"02AAA}{\smt                      }{\mathrel}{smaller than}%
+\UnicodeMathSymbol{"02AAB}{\lat                      }{\mathrel}{larger than}%
+\UnicodeMathSymbol{"02AAC}{\smte                     }{\mathrel}{smaller than or equal to}%
+\UnicodeMathSymbol{"02AAD}{\late                     }{\mathrel}{larger than or equal to}%
+\UnicodeMathSymbol{"02AAE}{\bumpeqq                  }{\mathrel}{equals sign with bumpy above}%
+\UnicodeMathSymbol{"02AAF}{\preceq                   }{\mathrel}{precedes above single-line equals sign}%
+\UnicodeMathSymbol{"02AB0}{\succeq                   }{\mathrel}{succeeds above single-line equals sign}%
+\UnicodeMathSymbol{"02AB1}{\precneq                  }{\mathrel}{precedes above single-line not equal to}%
+\UnicodeMathSymbol{"02AB2}{\succneq                  }{\mathrel}{succeeds above single-line not equal to}%
+\UnicodeMathSymbol{"02AB3}{\preceqq                  }{\mathrel}{precedes above equals sign}%
+\UnicodeMathSymbol{"02AB4}{\succeqq                  }{\mathrel}{succeeds above equals sign}%
+\UnicodeMathSymbol{"02AB5}{\precneqq                 }{\mathrel}{precedes above not equal to}%
+\UnicodeMathSymbol{"02AB6}{\succneqq                 }{\mathrel}{succeeds above not equal to}%
+\UnicodeMathSymbol{"02AB7}{\precapprox               }{\mathrel}{precedes above almost equal to}%
+\UnicodeMathSymbol{"02AB8}{\succapprox               }{\mathrel}{succeeds above almost equal to}%
+\UnicodeMathSymbol{"02AB9}{\precnapprox              }{\mathrel}{precedes above not almost equal to}%
+\UnicodeMathSymbol{"02ABA}{\succnapprox              }{\mathrel}{succeeds above not almost equal to}%
+\UnicodeMathSymbol{"02ABB}{\Prec                     }{\mathrel}{double precedes}%
+\UnicodeMathSymbol{"02ABC}{\Succ                     }{\mathrel}{double succeeds}%
+\UnicodeMathSymbol{"02ABD}{\subsetdot                }{\mathrel}{subset with dot}%
+\UnicodeMathSymbol{"02ABE}{\supsetdot                }{\mathrel}{superset with dot}%
+\UnicodeMathSymbol{"02ABF}{\subsetplus               }{\mathrel}{subset with plus sign below}%
+\UnicodeMathSymbol{"02AC0}{\supsetplus               }{\mathrel}{superset with plus sign below}%
+\UnicodeMathSymbol{"02AC1}{\submult                  }{\mathrel}{subset with multiplication sign below}%
+\UnicodeMathSymbol{"02AC2}{\supmult                  }{\mathrel}{superset with multiplication sign below}%
+\UnicodeMathSymbol{"02AC3}{\subedot                  }{\mathrel}{subset of or equal to with dot above}%
+\UnicodeMathSymbol{"02AC4}{\supedot                  }{\mathrel}{superset of or equal to with dot above}%
+\UnicodeMathSymbol{"02AC5}{\subseteqq                }{\mathrel}{subset of above equals sign}%
+\UnicodeMathSymbol{"02AC6}{\supseteqq                }{\mathrel}{superset of above equals sign}%
+\UnicodeMathSymbol{"02AC7}{\subsim                   }{\mathrel}{subset of above tilde operator}%
+\UnicodeMathSymbol{"02AC8}{\supsim                   }{\mathrel}{superset of above tilde operator}%
+\UnicodeMathSymbol{"02AC9}{\subsetapprox             }{\mathrel}{subset of above almost equal to}%
+\UnicodeMathSymbol{"02ACA}{\supsetapprox             }{\mathrel}{superset of above almost equal to}%
+\UnicodeMathSymbol{"02ACB}{\subsetneqq               }{\mathrel}{subset of above not equal to}%
+\UnicodeMathSymbol{"02ACC}{\supsetneqq               }{\mathrel}{superset of above not equal to}%
+\UnicodeMathSymbol{"02ACD}{\lsqhook                  }{\mathrel}{square left open box operator}%
+\UnicodeMathSymbol{"02ACE}{\rsqhook                  }{\mathrel}{square right open box operator}%
+\UnicodeMathSymbol{"02ACF}{\csub                     }{\mathrel}{closed subset}%
+\UnicodeMathSymbol{"02AD0}{\csup                     }{\mathrel}{closed superset}%
+\UnicodeMathSymbol{"02AD1}{\csube                    }{\mathrel}{closed subset or equal to}%
+\UnicodeMathSymbol{"02AD2}{\csupe                    }{\mathrel}{closed superset or equal to}%
+\UnicodeMathSymbol{"02AD3}{\subsup                   }{\mathrel}{subset above superset}%
+\UnicodeMathSymbol{"02AD4}{\supsub                   }{\mathrel}{superset above subset}%
+\UnicodeMathSymbol{"02AD5}{\subsub                   }{\mathrel}{subset above subset}%
+\UnicodeMathSymbol{"02AD6}{\supsup                   }{\mathrel}{superset above superset}%
+\UnicodeMathSymbol{"02AD7}{\suphsub                  }{\mathrel}{superset beside subset}%
+\UnicodeMathSymbol{"02AD8}{\supdsub                  }{\mathrel}{superset beside and joined by dash with subset}%
+\UnicodeMathSymbol{"02AD9}{\forkv                    }{\mathrel}{element of opening downwards}%
+\UnicodeMathSymbol{"02ADA}{\topfork                  }{\mathrel}{pitchfork with tee top}%
+\UnicodeMathSymbol{"02ADB}{\mlcp                     }{\mathrel}{transversal intersection}%
+\UnicodeMathSymbol{"02ADC}{\forks                    }{\mathrel}{forking}%
+\UnicodeMathSymbol{"02ADD}{\forksnot                 }{\mathrel}{nonforking}%
+\UnicodeMathSymbol{"02ADE}{\shortlefttack            }{\mathrel}{short left tack}%
+\UnicodeMathSymbol{"02ADF}{\shortdowntack            }{\mathrel}{short down tack}%
+\UnicodeMathSymbol{"02AE0}{\shortuptack              }{\mathrel}{short up tack}%
+\UnicodeMathSymbol{"02AE1}{\perps                    }{\mathord}{perpendicular with s}%
+\UnicodeMathSymbol{"02AE2}{\vDdash                   }{\mathrel}{vertical bar triple right turnstile}%
+\UnicodeMathSymbol{"02AE3}{\dashV                    }{\mathrel}{double vertical bar left turnstile}%
+\UnicodeMathSymbol{"02AE4}{\Dashv                    }{\mathrel}{vertical bar double left turnstile}%
+\UnicodeMathSymbol{"02AE5}{\DashV                    }{\mathrel}{double vertical bar double left turnstile}%
+\UnicodeMathSymbol{"02AE6}{\varVdash                 }{\mathrel}{long dash from left member of double vertical}%
+\UnicodeMathSymbol{"02AE7}{\Barv                     }{\mathrel}{short down tack with overbar}%
+\UnicodeMathSymbol{"02AE8}{\vBar                     }{\mathrel}{short up tack with underbar}%
+\UnicodeMathSymbol{"02AE9}{\vBarv                    }{\mathrel}{short up tack above short down tack}%
+\UnicodeMathSymbol{"02AEA}{\barV                     }{\mathrel}{double down tack}%
+\UnicodeMathSymbol{"02AEB}{\Vbar                     }{\mathrel}{double up tack}%
+\UnicodeMathSymbol{"02AEC}{\Not                      }{\mathrel}{double stroke not sign}%
+\UnicodeMathSymbol{"02AED}{\bNot                     }{\mathrel}{reversed double stroke not sign}%
+\UnicodeMathSymbol{"02AEE}{\revnmid                  }{\mathrel}{does not divide with reversed negation slash}%
+\UnicodeMathSymbol{"02AEF}{\cirmid                   }{\mathrel}{vertical line with circle above}%
+\UnicodeMathSymbol{"02AF0}{\midcir                   }{\mathrel}{vertical line with circle below}%
+\UnicodeMathSymbol{"02AF1}{\topcir                   }{\mathord}{down tack with circle below}%
+\UnicodeMathSymbol{"02AF2}{\nhpar                    }{\mathrel}{parallel with horizontal stroke}%
+\UnicodeMathSymbol{"02AF3}{\parsim                   }{\mathrel}{parallel with tilde operator}%
+\UnicodeMathSymbol{"02AF4}{\interleave               }{\mathbin}{triple vertical bar binary relation}%
+\UnicodeMathSymbol{"02AF5}{\nhVvert                  }{\mathbin}{triple vertical bar with horizontal stroke}%
+\UnicodeMathSymbol{"02AF6}{\threedotcolon            }{\mathbin}{triple colon operator}%
+\UnicodeMathSymbol{"02AF7}{\lllnest                  }{\mathrel}{stacked very much less-than}%
+\UnicodeMathSymbol{"02AF8}{\gggnest                  }{\mathrel}{stacked very much greater-than}%
+\UnicodeMathSymbol{"02AF9}{\leqqslant                }{\mathrel}{double-line slanted less-than or equal to}%
+\UnicodeMathSymbol{"02AFA}{\geqqslant                }{\mathrel}{double-line slanted greater-than or equal to}%
+\UnicodeMathSymbol{"02AFB}{\trslash                  }{\mathbin}{triple solidus binary relation}%
+\UnicodeMathSymbol{"02AFC}{\biginterleave            }{\mathop}{large triple vertical bar operator}%
+\UnicodeMathSymbol{"02AFD}{\sslash                   }{\mathbin}{double solidus operator}%
+\UnicodeMathSymbol{"02AFE}{\talloblong               }{\mathbin}{white vertical bar}%
+\UnicodeMathSymbol{"02AFF}{\bigtalloblong            }{\mathop}{n-ary white vertical bar}%
+\UnicodeMathSymbol{"02B12}{\squaretopblack           }{\mathord}{square with top half black}%
+\UnicodeMathSymbol{"02B13}{\squarebotblack           }{\mathord}{square with bottom half black}%
+\UnicodeMathSymbol{"02B14}{\squareurblack            }{\mathord}{square with upper right diagonal half black}%
+\UnicodeMathSymbol{"02B15}{\squarellblack            }{\mathord}{square with lower left diagonal half black}%
+\UnicodeMathSymbol{"02B16}{\diamondleftblack         }{\mathord}{diamond with left half black}%
+\UnicodeMathSymbol{"02B17}{\diamondrightblack        }{\mathord}{diamond with right half black}%
+\UnicodeMathSymbol{"02B18}{\diamondtopblack          }{\mathord}{diamond with top half black}%
+\UnicodeMathSymbol{"02B19}{\diamondbotblack          }{\mathord}{diamond with bottom half black}%
+\UnicodeMathSymbol{"02B1A}{\dottedsquare             }{\mathord}{dotted square}%
+\UnicodeMathSymbol{"02B1B}{\lgblksquare              }{\mathord}{black large square}%
+\UnicodeMathSymbol{"02B1C}{\lgwhtsquare              }{\mathord}{white large square}%
+\UnicodeMathSymbol{"02B1D}{\vysmblksquare            }{\mathord}{black very small square}%
+\UnicodeMathSymbol{"02B1E}{\vysmwhtsquare            }{\mathord}{white very small square}%
+\UnicodeMathSymbol{"02B1F}{\pentagonblack            }{\mathord}{black pentagon}%
+\UnicodeMathSymbol{"02B20}{\pentagon                 }{\mathord}{white pentagon}%
+\UnicodeMathSymbol{"02B21}{\varhexagon               }{\mathord}{white hexagon}%
+\UnicodeMathSymbol{"02B22}{\varhexagonblack          }{\mathord}{black hexagon}%
+\UnicodeMathSymbol{"02B23}{\hexagonblack             }{\mathord}{horizontal black hexagon}%
+\UnicodeMathSymbol{"02B24}{\lgblkcircle              }{\mathord}{black large circle}%
+\UnicodeMathSymbol{"02B25}{\mdblkdiamond             }{\mathord}{black medium diamond}%
+\UnicodeMathSymbol{"02B26}{\mdwhtdiamond             }{\mathord}{white medium diamond}%
+\UnicodeMathSymbol{"02B27}{\mdblklozenge             }{\mathord}{black medium lozenge}%
+\UnicodeMathSymbol{"02B28}{\mdwhtlozenge             }{\mathord}{white medium lozenge}%
+\UnicodeMathSymbol{"02B29}{\smblkdiamond             }{\mathord}{black small diamond}%
+\UnicodeMathSymbol{"02B2A}{\smblklozenge             }{\mathord}{black small lozenge}%
+\UnicodeMathSymbol{"02B2B}{\smwhtlozenge             }{\mathord}{white small lozenge}%
+\UnicodeMathSymbol{"02B2C}{\blkhorzoval              }{\mathord}{black horizontal ellipse}%
+\UnicodeMathSymbol{"02B2D}{\whthorzoval              }{\mathord}{white horizontal ellipse}%
+\UnicodeMathSymbol{"02B2E}{\blkvertoval              }{\mathord}{black vertical ellipse}%
+\UnicodeMathSymbol{"02B2F}{\whtvertoval              }{\mathord}{white vertical ellipse}%
+\UnicodeMathSymbol{"02B30}{\circleonleftarrow        }{\mathrel}{left arrow with small circle}%
+\UnicodeMathSymbol{"02B31}{\leftthreearrows          }{\mathrel}{three leftwards arrows}%
+\UnicodeMathSymbol{"02B32}{\leftarrowonoplus         }{\mathrel}{left arrow with circled plus}%
+\UnicodeMathSymbol{"02B33}{\longleftsquigarrow       }{\mathrel}{long leftwards squiggle arrow}%
+\UnicodeMathSymbol{"02B34}{\nvtwoheadleftarrow       }{\mathrel}{leftwards two-headed arrow with vertical stroke}%
+\UnicodeMathSymbol{"02B35}{\nVtwoheadleftarrow       }{\mathrel}{leftwards two-headed arrow with double vertical stroke}%
+\UnicodeMathSymbol{"02B36}{\twoheadmapsfrom          }{\mathrel}{leftwards two-headed arrow from bar}%
+\UnicodeMathSymbol{"02B37}{\twoheadleftdbkarrow      }{\mathrel}{leftwards two-headed triple-dash arrow}%
+\UnicodeMathSymbol{"02B38}{\leftdotarrow             }{\mathrel}{leftwards arrow with dotted stem}%
+\UnicodeMathSymbol{"02B39}{\nvleftarrowtail          }{\mathrel}{leftwards arrow with tail with vertical stroke}%
+\UnicodeMathSymbol{"02B3A}{\nVleftarrowtail          }{\mathrel}{leftwards arrow with tail with double vertical stroke}%
+\UnicodeMathSymbol{"02B3B}{\twoheadleftarrowtail     }{\mathrel}{leftwards two-headed arrow with tail}%
+\UnicodeMathSymbol{"02B3C}{\nvtwoheadleftarrowtail   }{\mathrel}{leftwards two-headed arrow with tail with vertical stroke}%
+\UnicodeMathSymbol{"02B3D}{\nVtwoheadleftarrowtail   }{\mathrel}{leftwards two-headed arrow with tail with double vertical stroke}%
+\UnicodeMathSymbol{"02B3E}{\leftarrowx               }{\mathrel}{leftwards arrow through x}%
+\UnicodeMathSymbol{"02B3F}{\leftcurvedarrow          }{\mathrel}{wave arrow pointing directly left}%
+\UnicodeMathSymbol{"02B40}{\equalleftarrow           }{\mathrel}{equals sign above leftwards arrow}%
+\UnicodeMathSymbol{"02B41}{\bsimilarleftarrow        }{\mathrel}{reverse tilde operator above leftwards arrow}%
+\UnicodeMathSymbol{"02B42}{\leftarrowbackapprox      }{\mathrel}{leftwards arrow above reverse almost equal to}%
+\UnicodeMathSymbol{"02B43}{\rightarrowgtr            }{\mathrel}{rightwards arrow through greater-than}%
+\UnicodeMathSymbol{"02B44}{\rightarrowsupset         }{\mathrel}{rightwards arrow through subset}%
+\UnicodeMathSymbol{"02B45}{\LLeftarrow               }{\mathrel}{leftwards quadruple arrow}%
+\UnicodeMathSymbol{"02B46}{\RRightarrow              }{\mathrel}{rightwards quadruple arrow}%
+\UnicodeMathSymbol{"02B47}{\bsimilarrightarrow       }{\mathrel}{reverse tilde operator above rightwards arrow}%
+\UnicodeMathSymbol{"02B48}{\rightarrowbackapprox     }{\mathrel}{rightwards arrow above reverse almost equal to}%
+\UnicodeMathSymbol{"02B49}{\similarleftarrow         }{\mathrel}{tilde operator above leftwards arrow}%
+\UnicodeMathSymbol{"02B4A}{\leftarrowapprox          }{\mathrel}{leftwards arrow above almost equal to}%
+\UnicodeMathSymbol{"02B4B}{\leftarrowbsimilar        }{\mathrel}{leftwards arrow above reverse tilde operator}%
+\UnicodeMathSymbol{"02B4C}{\rightarrowbsimilar       }{\mathrel}{righttwards arrow above reverse tilde operator}%
+\UnicodeMathSymbol{"02B50}{\medwhitestar             }{\mathord}{white medium star}%
+\UnicodeMathSymbol{"02B51}{\medblackstar             }{\mathord}{black medium star}%
+\UnicodeMathSymbol{"02B52}{\smwhitestar              }{\mathord}{white small star}%
+\UnicodeMathSymbol{"02B53}{\rightpentagonblack       }{\mathord}{black right-pointing pentagon}%
+\UnicodeMathSymbol{"02B54}{\rightpentagon            }{\mathord}{white right-pointing pentagon}%
+\UnicodeMathSymbol{"03012}{\postalmark               }{\mathord}{postal mark}%
+\UnicodeMathSymbol{"03030}{\hzigzag                  }{\mathord}{zigzag}%
+\UnicodeMathSymbol{"1D400}{\mbfA                     }{\mathalpha}{mathematical bold capital a}%
+\UnicodeMathSymbol{"1D401}{\mbfB                     }{\mathalpha}{mathematical bold capital b}%
+\UnicodeMathSymbol{"1D402}{\mbfC                     }{\mathalpha}{mathematical bold capital c}%
+\UnicodeMathSymbol{"1D403}{\mbfD                     }{\mathalpha}{mathematical bold capital d}%
+\UnicodeMathSymbol{"1D404}{\mbfE                     }{\mathalpha}{mathematical bold capital e}%
+\UnicodeMathSymbol{"1D405}{\mbfF                     }{\mathalpha}{mathematical bold capital f}%
+\UnicodeMathSymbol{"1D406}{\mbfG                     }{\mathalpha}{mathematical bold capital g}%
+\UnicodeMathSymbol{"1D407}{\mbfH                     }{\mathalpha}{mathematical bold capital h}%
+\UnicodeMathSymbol{"1D408}{\mbfI                     }{\mathalpha}{mathematical bold capital i}%
+\UnicodeMathSymbol{"1D409}{\mbfJ                     }{\mathalpha}{mathematical bold capital j}%
+\UnicodeMathSymbol{"1D40A}{\mbfK                     }{\mathalpha}{mathematical bold capital k}%
+\UnicodeMathSymbol{"1D40B}{\mbfL                     }{\mathalpha}{mathematical bold capital l}%
+\UnicodeMathSymbol{"1D40C}{\mbfM                     }{\mathalpha}{mathematical bold capital m}%
+\UnicodeMathSymbol{"1D40D}{\mbfN                     }{\mathalpha}{mathematical bold capital n}%
+\UnicodeMathSymbol{"1D40E}{\mbfO                     }{\mathalpha}{mathematical bold capital o}%
+\UnicodeMathSymbol{"1D40F}{\mbfP                     }{\mathalpha}{mathematical bold capital p}%
+\UnicodeMathSymbol{"1D410}{\mbfQ                     }{\mathalpha}{mathematical bold capital q}%
+\UnicodeMathSymbol{"1D411}{\mbfR                     }{\mathalpha}{mathematical bold capital r}%
+\UnicodeMathSymbol{"1D412}{\mbfS                     }{\mathalpha}{mathematical bold capital s}%
+\UnicodeMathSymbol{"1D413}{\mbfT                     }{\mathalpha}{mathematical bold capital t}%
+\UnicodeMathSymbol{"1D414}{\mbfU                     }{\mathalpha}{mathematical bold capital u}%
+\UnicodeMathSymbol{"1D415}{\mbfV                     }{\mathalpha}{mathematical bold capital v}%
+\UnicodeMathSymbol{"1D416}{\mbfW                     }{\mathalpha}{mathematical bold capital w}%
+\UnicodeMathSymbol{"1D417}{\mbfX                     }{\mathalpha}{mathematical bold capital x}%
+\UnicodeMathSymbol{"1D418}{\mbfY                     }{\mathalpha}{mathematical bold capital y}%
+\UnicodeMathSymbol{"1D419}{\mbfZ                     }{\mathalpha}{mathematical bold capital z}%
+\UnicodeMathSymbol{"1D41A}{\mbfa                     }{\mathalpha}{mathematical bold small a}%
+\UnicodeMathSymbol{"1D41B}{\mbfb                     }{\mathalpha}{mathematical bold small b}%
+\UnicodeMathSymbol{"1D41C}{\mbfc                     }{\mathalpha}{mathematical bold small c}%
+\UnicodeMathSymbol{"1D41D}{\mbfd                     }{\mathalpha}{mathematical bold small d}%
+\UnicodeMathSymbol{"1D41E}{\mbfe                     }{\mathalpha}{mathematical bold small e}%
+\UnicodeMathSymbol{"1D41F}{\mbff                     }{\mathalpha}{mathematical bold small f}%
+\UnicodeMathSymbol{"1D420}{\mbfg                     }{\mathalpha}{mathematical bold small g}%
+\UnicodeMathSymbol{"1D421}{\mbfh                     }{\mathalpha}{mathematical bold small h}%
+\UnicodeMathSymbol{"1D422}{\mbfi                     }{\mathalpha}{mathematical bold small i}%
+\UnicodeMathSymbol{"1D423}{\mbfj                     }{\mathalpha}{mathematical bold small j}%
+\UnicodeMathSymbol{"1D424}{\mbfk                     }{\mathalpha}{mathematical bold small k}%
+\UnicodeMathSymbol{"1D425}{\mbfl                     }{\mathalpha}{mathematical bold small l}%
+\UnicodeMathSymbol{"1D426}{\mbfm                     }{\mathalpha}{mathematical bold small m}%
+\UnicodeMathSymbol{"1D427}{\mbfn                     }{\mathalpha}{mathematical bold small n}%
+\UnicodeMathSymbol{"1D428}{\mbfo                     }{\mathalpha}{mathematical bold small o}%
+\UnicodeMathSymbol{"1D429}{\mbfp                     }{\mathalpha}{mathematical bold small p}%
+\UnicodeMathSymbol{"1D42A}{\mbfq                     }{\mathalpha}{mathematical bold small q}%
+\UnicodeMathSymbol{"1D42B}{\mbfr                     }{\mathalpha}{mathematical bold small r}%
+\UnicodeMathSymbol{"1D42C}{\mbfs                     }{\mathalpha}{mathematical bold small s}%
+\UnicodeMathSymbol{"1D42D}{\mbft                     }{\mathalpha}{mathematical bold small t}%
+\UnicodeMathSymbol{"1D42E}{\mbfu                     }{\mathalpha}{mathematical bold small u}%
+\UnicodeMathSymbol{"1D42F}{\mbfv                     }{\mathalpha}{mathematical bold small v}%
+\UnicodeMathSymbol{"1D430}{\mbfw                     }{\mathalpha}{mathematical bold small w}%
+\UnicodeMathSymbol{"1D431}{\mbfx                     }{\mathalpha}{mathematical bold small x}%
+\UnicodeMathSymbol{"1D432}{\mbfy                     }{\mathalpha}{mathematical bold small y}%
+\UnicodeMathSymbol{"1D433}{\mbfz                     }{\mathalpha}{mathematical bold small z}%
+\UnicodeMathSymbol{"1D434}{\mitA                     }{\mathalpha}{mathematical italic capital a}%
+\UnicodeMathSymbol{"1D435}{\mitB                     }{\mathalpha}{mathematical italic capital b}%
+\UnicodeMathSymbol{"1D436}{\mitC                     }{\mathalpha}{mathematical italic capital c}%
+\UnicodeMathSymbol{"1D437}{\mitD                     }{\mathalpha}{mathematical italic capital d}%
+\UnicodeMathSymbol{"1D438}{\mitE                     }{\mathalpha}{mathematical italic capital e}%
+\UnicodeMathSymbol{"1D439}{\mitF                     }{\mathalpha}{mathematical italic capital f}%
+\UnicodeMathSymbol{"1D43A}{\mitG                     }{\mathalpha}{mathematical italic capital g}%
+\UnicodeMathSymbol{"1D43B}{\mitH                     }{\mathalpha}{mathematical italic capital h}%
+\UnicodeMathSymbol{"1D43C}{\mitI                     }{\mathalpha}{mathematical italic capital i}%
+\UnicodeMathSymbol{"1D43D}{\mitJ                     }{\mathalpha}{mathematical italic capital j}%
+\UnicodeMathSymbol{"1D43E}{\mitK                     }{\mathalpha}{mathematical italic capital k}%
+\UnicodeMathSymbol{"1D43F}{\mitL                     }{\mathalpha}{mathematical italic capital l}%
+\UnicodeMathSymbol{"1D440}{\mitM                     }{\mathalpha}{mathematical italic capital m}%
+\UnicodeMathSymbol{"1D441}{\mitN                     }{\mathalpha}{mathematical italic capital n}%
+\UnicodeMathSymbol{"1D442}{\mitO                     }{\mathalpha}{mathematical italic capital o}%
+\UnicodeMathSymbol{"1D443}{\mitP                     }{\mathalpha}{mathematical italic capital p}%
+\UnicodeMathSymbol{"1D444}{\mitQ                     }{\mathalpha}{mathematical italic capital q}%
+\UnicodeMathSymbol{"1D445}{\mitR                     }{\mathalpha}{mathematical italic capital r}%
+\UnicodeMathSymbol{"1D446}{\mitS                     }{\mathalpha}{mathematical italic capital s}%
+\UnicodeMathSymbol{"1D447}{\mitT                     }{\mathalpha}{mathematical italic capital t}%
+\UnicodeMathSymbol{"1D448}{\mitU                     }{\mathalpha}{mathematical italic capital u}%
+\UnicodeMathSymbol{"1D449}{\mitV                     }{\mathalpha}{mathematical italic capital v}%
+\UnicodeMathSymbol{"1D44A}{\mitW                     }{\mathalpha}{mathematical italic capital w}%
+\UnicodeMathSymbol{"1D44B}{\mitX                     }{\mathalpha}{mathematical italic capital x}%
+\UnicodeMathSymbol{"1D44C}{\mitY                     }{\mathalpha}{mathematical italic capital y}%
+\UnicodeMathSymbol{"1D44D}{\mitZ                     }{\mathalpha}{mathematical italic capital z}%
+\UnicodeMathSymbol{"1D44E}{\mita                     }{\mathalpha}{mathematical italic small a}%
+\UnicodeMathSymbol{"1D44F}{\mitb                     }{\mathalpha}{mathematical italic small b}%
+\UnicodeMathSymbol{"1D450}{\mitc                     }{\mathalpha}{mathematical italic small c}%
+\UnicodeMathSymbol{"1D451}{\mitd                     }{\mathalpha}{mathematical italic small d}%
+\UnicodeMathSymbol{"1D452}{\mite                     }{\mathalpha}{mathematical italic small e}%
+\UnicodeMathSymbol{"1D453}{\mitf                     }{\mathalpha}{mathematical italic small f}%
+\UnicodeMathSymbol{"1D454}{\mitg                     }{\mathalpha}{mathematical italic small g}%
+\UnicodeMathSymbol{"1D456}{\miti                     }{\mathalpha}{mathematical italic small i}%
+\UnicodeMathSymbol{"1D457}{\mitj                     }{\mathalpha}{mathematical italic small j}%
+\UnicodeMathSymbol{"1D458}{\mitk                     }{\mathalpha}{mathematical italic small k}%
+\UnicodeMathSymbol{"1D459}{\mitl                     }{\mathalpha}{mathematical italic small l}%
+\UnicodeMathSymbol{"1D45A}{\mitm                     }{\mathalpha}{mathematical italic small m}%
+\UnicodeMathSymbol{"1D45B}{\mitn                     }{\mathalpha}{mathematical italic small n}%
+\UnicodeMathSymbol{"1D45C}{\mito                     }{\mathalpha}{mathematical italic small o}%
+\UnicodeMathSymbol{"1D45D}{\mitp                     }{\mathalpha}{mathematical italic small p}%
+\UnicodeMathSymbol{"1D45E}{\mitq                     }{\mathalpha}{mathematical italic small q}%
+\UnicodeMathSymbol{"1D45F}{\mitr                     }{\mathalpha}{mathematical italic small r}%
+\UnicodeMathSymbol{"1D460}{\mits                     }{\mathalpha}{mathematical italic small s}%
+\UnicodeMathSymbol{"1D461}{\mitt                     }{\mathalpha}{mathematical italic small t}%
+\UnicodeMathSymbol{"1D462}{\mitu                     }{\mathalpha}{mathematical italic small u}%
+\UnicodeMathSymbol{"1D463}{\mitv                     }{\mathalpha}{mathematical italic small v}%
+\UnicodeMathSymbol{"1D464}{\mitw                     }{\mathalpha}{mathematical italic small w}%
+\UnicodeMathSymbol{"1D465}{\mitx                     }{\mathalpha}{mathematical italic small x}%
+\UnicodeMathSymbol{"1D466}{\mity                     }{\mathalpha}{mathematical italic small y}%
+\UnicodeMathSymbol{"1D467}{\mitz                     }{\mathalpha}{mathematical italic small z}%
+\UnicodeMathSymbol{"1D468}{\mbfitA                   }{\mathalpha}{mathematical bold italic capital a}%
+\UnicodeMathSymbol{"1D469}{\mbfitB                   }{\mathalpha}{mathematical bold italic capital b}%
+\UnicodeMathSymbol{"1D46A}{\mbfitC                   }{\mathalpha}{mathematical bold italic capital c}%
+\UnicodeMathSymbol{"1D46B}{\mbfitD                   }{\mathalpha}{mathematical bold italic capital d}%
+\UnicodeMathSymbol{"1D46C}{\mbfitE                   }{\mathalpha}{mathematical bold italic capital e}%
+\UnicodeMathSymbol{"1D46D}{\mbfitF                   }{\mathalpha}{mathematical bold italic capital f}%
+\UnicodeMathSymbol{"1D46E}{\mbfitG                   }{\mathalpha}{mathematical bold italic capital g}%
+\UnicodeMathSymbol{"1D46F}{\mbfitH                   }{\mathalpha}{mathematical bold italic capital h}%
+\UnicodeMathSymbol{"1D470}{\mbfitI                   }{\mathalpha}{mathematical bold italic capital i}%
+\UnicodeMathSymbol{"1D471}{\mbfitJ                   }{\mathalpha}{mathematical bold italic capital j}%
+\UnicodeMathSymbol{"1D472}{\mbfitK                   }{\mathalpha}{mathematical bold italic capital k}%
+\UnicodeMathSymbol{"1D473}{\mbfitL                   }{\mathalpha}{mathematical bold italic capital l}%
+\UnicodeMathSymbol{"1D474}{\mbfitM                   }{\mathalpha}{mathematical bold italic capital m}%
+\UnicodeMathSymbol{"1D475}{\mbfitN                   }{\mathalpha}{mathematical bold italic capital n}%
+\UnicodeMathSymbol{"1D476}{\mbfitO                   }{\mathalpha}{mathematical bold italic capital o}%
+\UnicodeMathSymbol{"1D477}{\mbfitP                   }{\mathalpha}{mathematical bold italic capital p}%
+\UnicodeMathSymbol{"1D478}{\mbfitQ                   }{\mathalpha}{mathematical bold italic capital q}%
+\UnicodeMathSymbol{"1D479}{\mbfitR                   }{\mathalpha}{mathematical bold italic capital r}%
+\UnicodeMathSymbol{"1D47A}{\mbfitS                   }{\mathalpha}{mathematical bold italic capital s}%
+\UnicodeMathSymbol{"1D47B}{\mbfitT                   }{\mathalpha}{mathematical bold italic capital t}%
+\UnicodeMathSymbol{"1D47C}{\mbfitU                   }{\mathalpha}{mathematical bold italic capital u}%
+\UnicodeMathSymbol{"1D47D}{\mbfitV                   }{\mathalpha}{mathematical bold italic capital v}%
+\UnicodeMathSymbol{"1D47E}{\mbfitW                   }{\mathalpha}{mathematical bold italic capital w}%
+\UnicodeMathSymbol{"1D47F}{\mbfitX                   }{\mathalpha}{mathematical bold italic capital x}%
+\UnicodeMathSymbol{"1D480}{\mbfitY                   }{\mathalpha}{mathematical bold italic capital y}%
+\UnicodeMathSymbol{"1D481}{\mbfitZ                   }{\mathalpha}{mathematical bold italic capital z}%
+\UnicodeMathSymbol{"1D482}{\mbfita                   }{\mathalpha}{mathematical bold italic small a}%
+\UnicodeMathSymbol{"1D483}{\mbfitb                   }{\mathalpha}{mathematical bold italic small b}%
+\UnicodeMathSymbol{"1D484}{\mbfitc                   }{\mathalpha}{mathematical bold italic small c}%
+\UnicodeMathSymbol{"1D485}{\mbfitd                   }{\mathalpha}{mathematical bold italic small d}%
+\UnicodeMathSymbol{"1D486}{\mbfite                   }{\mathalpha}{mathematical bold italic small e}%
+\UnicodeMathSymbol{"1D487}{\mbfitf                   }{\mathalpha}{mathematical bold italic small f}%
+\UnicodeMathSymbol{"1D488}{\mbfitg                   }{\mathalpha}{mathematical bold italic small g}%
+\UnicodeMathSymbol{"1D489}{\mbfith                   }{\mathalpha}{mathematical bold italic small h}%
+\UnicodeMathSymbol{"1D48A}{\mbfiti                   }{\mathalpha}{mathematical bold italic small i}%
+\UnicodeMathSymbol{"1D48B}{\mbfitj                   }{\mathalpha}{mathematical bold italic small j}%
+\UnicodeMathSymbol{"1D48C}{\mbfitk                   }{\mathalpha}{mathematical bold italic small k}%
+\UnicodeMathSymbol{"1D48D}{\mbfitl                   }{\mathalpha}{mathematical bold italic small l}%
+\UnicodeMathSymbol{"1D48E}{\mbfitm                   }{\mathalpha}{mathematical bold italic small m}%
+\UnicodeMathSymbol{"1D48F}{\mbfitn                   }{\mathalpha}{mathematical bold italic small n}%
+\UnicodeMathSymbol{"1D490}{\mbfito                   }{\mathalpha}{mathematical bold italic small o}%
+\UnicodeMathSymbol{"1D491}{\mbfitp                   }{\mathalpha}{mathematical bold italic small p}%
+\UnicodeMathSymbol{"1D492}{\mbfitq                   }{\mathalpha}{mathematical bold italic small q}%
+\UnicodeMathSymbol{"1D493}{\mbfitr                   }{\mathalpha}{mathematical bold italic small r}%
+\UnicodeMathSymbol{"1D494}{\mbfits                   }{\mathalpha}{mathematical bold italic small s}%
+\UnicodeMathSymbol{"1D495}{\mbfitt                   }{\mathalpha}{mathematical bold italic small t}%
+\UnicodeMathSymbol{"1D496}{\mbfitu                   }{\mathalpha}{mathematical bold italic small u}%
+\UnicodeMathSymbol{"1D497}{\mbfitv                   }{\mathalpha}{mathematical bold italic small v}%
+\UnicodeMathSymbol{"1D498}{\mbfitw                   }{\mathalpha}{mathematical bold italic small w}%
+\UnicodeMathSymbol{"1D499}{\mbfitx                   }{\mathalpha}{mathematical bold italic small x}%
+\UnicodeMathSymbol{"1D49A}{\mbfity                   }{\mathalpha}{mathematical bold italic small y}%
+\UnicodeMathSymbol{"1D49B}{\mbfitz                   }{\mathalpha}{mathematical bold italic small z}%
+\UnicodeMathSymbol{"1D49C}{\mscrA                    }{\mathalpha}{mathematical script capital a}%
+\UnicodeMathSymbol{"1D49E}{\mscrC                    }{\mathalpha}{mathematical script capital c}%
+\UnicodeMathSymbol{"1D49F}{\mscrD                    }{\mathalpha}{mathematical script capital d}%
+\UnicodeMathSymbol{"1D4A2}{\mscrG                    }{\mathalpha}{mathematical script capital g}%
+\UnicodeMathSymbol{"1D4A5}{\mscrJ                    }{\mathalpha}{mathematical script capital j}%
+\UnicodeMathSymbol{"1D4A6}{\mscrK                    }{\mathalpha}{mathematical script capital k}%
+\UnicodeMathSymbol{"1D4A9}{\mscrN                    }{\mathalpha}{mathematical script capital n}%
+\UnicodeMathSymbol{"1D4AA}{\mscrO                    }{\mathalpha}{mathematical script capital o}%
+\UnicodeMathSymbol{"1D4AB}{\mscrP                    }{\mathalpha}{mathematical script capital p}%
+\UnicodeMathSymbol{"1D4AC}{\mscrQ                    }{\mathalpha}{mathematical script capital q}%
+\UnicodeMathSymbol{"1D4AE}{\mscrS                    }{\mathalpha}{mathematical script capital s}%
+\UnicodeMathSymbol{"1D4AF}{\mscrT                    }{\mathalpha}{mathematical script capital t}%
+\UnicodeMathSymbol{"1D4B0}{\mscrU                    }{\mathalpha}{mathematical script capital u}%
+\UnicodeMathSymbol{"1D4B1}{\mscrV                    }{\mathalpha}{mathematical script capital v}%
+\UnicodeMathSymbol{"1D4B2}{\mscrW                    }{\mathalpha}{mathematical script capital w}%
+\UnicodeMathSymbol{"1D4B3}{\mscrX                    }{\mathalpha}{mathematical script capital x}%
+\UnicodeMathSymbol{"1D4B4}{\mscrY                    }{\mathalpha}{mathematical script capital y}%
+\UnicodeMathSymbol{"1D4B5}{\mscrZ                    }{\mathalpha}{mathematical script capital z}%
+\UnicodeMathSymbol{"1D4B6}{\mscra                    }{\mathalpha}{mathematical script small a}%
+\UnicodeMathSymbol{"1D4B7}{\mscrb                    }{\mathalpha}{mathematical script small b}%
+\UnicodeMathSymbol{"1D4B8}{\mscrc                    }{\mathalpha}{mathematical script small c}%
+\UnicodeMathSymbol{"1D4B9}{\mscrd                    }{\mathalpha}{mathematical script small d}%
+\UnicodeMathSymbol{"1D4BB}{\mscrf                    }{\mathalpha}{mathematical script small f}%
+\UnicodeMathSymbol{"1D4BD}{\mscrh                    }{\mathalpha}{mathematical script small h}%
+\UnicodeMathSymbol{"1D4BE}{\mscri                    }{\mathalpha}{mathematical script small i}%
+\UnicodeMathSymbol{"1D4BF}{\mscrj                    }{\mathalpha}{mathematical script small j}%
+\UnicodeMathSymbol{"1D4C0}{\mscrk                    }{\mathalpha}{mathematical script small k}%
+\UnicodeMathSymbol{"1D4C1}{\mscrl                    }{\mathalpha}{mathematical script small l}%
+\UnicodeMathSymbol{"1D4C2}{\mscrm                    }{\mathalpha}{mathematical script small m}%
+\UnicodeMathSymbol{"1D4C3}{\mscrn                    }{\mathalpha}{mathematical script small n}%
+\UnicodeMathSymbol{"1D4C5}{\mscrp                    }{\mathalpha}{mathematical script small p}%
+\UnicodeMathSymbol{"1D4C6}{\mscrq                    }{\mathalpha}{mathematical script small q}%
+\UnicodeMathSymbol{"1D4C7}{\mscrr                    }{\mathalpha}{mathematical script small r}%
+\UnicodeMathSymbol{"1D4C8}{\mscrs                    }{\mathalpha}{mathematical script small s}%
+\UnicodeMathSymbol{"1D4C9}{\mscrt                    }{\mathalpha}{mathematical script small t}%
+\UnicodeMathSymbol{"1D4CA}{\mscru                    }{\mathalpha}{mathematical script small u}%
+\UnicodeMathSymbol{"1D4CB}{\mscrv                    }{\mathalpha}{mathematical script small v}%
+\UnicodeMathSymbol{"1D4CC}{\mscrw                    }{\mathalpha}{mathematical script small w}%
+\UnicodeMathSymbol{"1D4CD}{\mscrx                    }{\mathalpha}{mathematical script small x}%
+\UnicodeMathSymbol{"1D4CE}{\mscry                    }{\mathalpha}{mathematical script small y}%
+\UnicodeMathSymbol{"1D4CF}{\mscrz                    }{\mathalpha}{mathematical script small z}%
+\UnicodeMathSymbol{"1D4D0}{\mbfscrA                  }{\mathalpha}{mathematical bold script capital a}%
+\UnicodeMathSymbol{"1D4D1}{\mbfscrB                  }{\mathalpha}{mathematical bold script capital b}%
+\UnicodeMathSymbol{"1D4D2}{\mbfscrC                  }{\mathalpha}{mathematical bold script capital c}%
+\UnicodeMathSymbol{"1D4D3}{\mbfscrD                  }{\mathalpha}{mathematical bold script capital d}%
+\UnicodeMathSymbol{"1D4D4}{\mbfscrE                  }{\mathalpha}{mathematical bold script capital e}%
+\UnicodeMathSymbol{"1D4D5}{\mbfscrF                  }{\mathalpha}{mathematical bold script capital f}%
+\UnicodeMathSymbol{"1D4D6}{\mbfscrG                  }{\mathalpha}{mathematical bold script capital g}%
+\UnicodeMathSymbol{"1D4D7}{\mbfscrH                  }{\mathalpha}{mathematical bold script capital h}%
+\UnicodeMathSymbol{"1D4D8}{\mbfscrI                  }{\mathalpha}{mathematical bold script capital i}%
+\UnicodeMathSymbol{"1D4D9}{\mbfscrJ                  }{\mathalpha}{mathematical bold script capital j}%
+\UnicodeMathSymbol{"1D4DA}{\mbfscrK                  }{\mathalpha}{mathematical bold script capital k}%
+\UnicodeMathSymbol{"1D4DB}{\mbfscrL                  }{\mathalpha}{mathematical bold script capital l}%
+\UnicodeMathSymbol{"1D4DC}{\mbfscrM                  }{\mathalpha}{mathematical bold script capital m}%
+\UnicodeMathSymbol{"1D4DD}{\mbfscrN                  }{\mathalpha}{mathematical bold script capital n}%
+\UnicodeMathSymbol{"1D4DE}{\mbfscrO                  }{\mathalpha}{mathematical bold script capital o}%
+\UnicodeMathSymbol{"1D4DF}{\mbfscrP                  }{\mathalpha}{mathematical bold script capital p}%
+\UnicodeMathSymbol{"1D4E0}{\mbfscrQ                  }{\mathalpha}{mathematical bold script capital q}%
+\UnicodeMathSymbol{"1D4E1}{\mbfscrR                  }{\mathalpha}{mathematical bold script capital r}%
+\UnicodeMathSymbol{"1D4E2}{\mbfscrS                  }{\mathalpha}{mathematical bold script capital s}%
+\UnicodeMathSymbol{"1D4E3}{\mbfscrT                  }{\mathalpha}{mathematical bold script capital t}%
+\UnicodeMathSymbol{"1D4E4}{\mbfscrU                  }{\mathalpha}{mathematical bold script capital u}%
+\UnicodeMathSymbol{"1D4E5}{\mbfscrV                  }{\mathalpha}{mathematical bold script capital v}%
+\UnicodeMathSymbol{"1D4E6}{\mbfscrW                  }{\mathalpha}{mathematical bold script capital w}%
+\UnicodeMathSymbol{"1D4E7}{\mbfscrX                  }{\mathalpha}{mathematical bold script capital x}%
+\UnicodeMathSymbol{"1D4E8}{\mbfscrY                  }{\mathalpha}{mathematical bold script capital y}%
+\UnicodeMathSymbol{"1D4E9}{\mbfscrZ                  }{\mathalpha}{mathematical bold script capital z}%
+\UnicodeMathSymbol{"1D4EA}{\mbfscra                  }{\mathalpha}{mathematical bold script small a}%
+\UnicodeMathSymbol{"1D4EB}{\mbfscrb                  }{\mathalpha}{mathematical bold script small b}%
+\UnicodeMathSymbol{"1D4EC}{\mbfscrc                  }{\mathalpha}{mathematical bold script small c}%
+\UnicodeMathSymbol{"1D4ED}{\mbfscrd                  }{\mathalpha}{mathematical bold script small d}%
+\UnicodeMathSymbol{"1D4EE}{\mbfscre                  }{\mathalpha}{mathematical bold script small e}%
+\UnicodeMathSymbol{"1D4EF}{\mbfscrf                  }{\mathalpha}{mathematical bold script small f}%
+\UnicodeMathSymbol{"1D4F0}{\mbfscrg                  }{\mathalpha}{mathematical bold script small g}%
+\UnicodeMathSymbol{"1D4F1}{\mbfscrh                  }{\mathalpha}{mathematical bold script small h}%
+\UnicodeMathSymbol{"1D4F2}{\mbfscri                  }{\mathalpha}{mathematical bold script small i}%
+\UnicodeMathSymbol{"1D4F3}{\mbfscrj                  }{\mathalpha}{mathematical bold script small j}%
+\UnicodeMathSymbol{"1D4F4}{\mbfscrk                  }{\mathalpha}{mathematical bold script small k}%
+\UnicodeMathSymbol{"1D4F5}{\mbfscrl                  }{\mathalpha}{mathematical bold script small l}%
+\UnicodeMathSymbol{"1D4F6}{\mbfscrm                  }{\mathalpha}{mathematical bold script small m}%
+\UnicodeMathSymbol{"1D4F7}{\mbfscrn                  }{\mathalpha}{mathematical bold script small n}%
+\UnicodeMathSymbol{"1D4F8}{\mbfscro                  }{\mathalpha}{mathematical bold script small o}%
+\UnicodeMathSymbol{"1D4F9}{\mbfscrp                  }{\mathalpha}{mathematical bold script small p}%
+\UnicodeMathSymbol{"1D4FA}{\mbfscrq                  }{\mathalpha}{mathematical bold script small q}%
+\UnicodeMathSymbol{"1D4FB}{\mbfscrr                  }{\mathalpha}{mathematical bold script small r}%
+\UnicodeMathSymbol{"1D4FC}{\mbfscrs                  }{\mathalpha}{mathematical bold script small s}%
+\UnicodeMathSymbol{"1D4FD}{\mbfscrt                  }{\mathalpha}{mathematical bold script small t}%
+\UnicodeMathSymbol{"1D4FE}{\mbfscru                  }{\mathalpha}{mathematical bold script small u}%
+\UnicodeMathSymbol{"1D4FF}{\mbfscrv                  }{\mathalpha}{mathematical bold script small v}%
+\UnicodeMathSymbol{"1D500}{\mbfscrw                  }{\mathalpha}{mathematical bold script small w}%
+\UnicodeMathSymbol{"1D501}{\mbfscrx                  }{\mathalpha}{mathematical bold script small x}%
+\UnicodeMathSymbol{"1D502}{\mbfscry                  }{\mathalpha}{mathematical bold script small y}%
+\UnicodeMathSymbol{"1D503}{\mbfscrz                  }{\mathalpha}{mathematical bold script small z}%
+\UnicodeMathSymbol{"1D504}{\mfrakA                   }{\mathalpha}{mathematical fraktur capital a}%
+\UnicodeMathSymbol{"1D505}{\mfrakB                   }{\mathalpha}{mathematical fraktur capital b}%
+\UnicodeMathSymbol{"1D507}{\mfrakD                   }{\mathalpha}{mathematical fraktur capital d}%
+\UnicodeMathSymbol{"1D508}{\mfrakE                   }{\mathalpha}{mathematical fraktur capital e}%
+\UnicodeMathSymbol{"1D509}{\mfrakF                   }{\mathalpha}{mathematical fraktur capital f}%
+\UnicodeMathSymbol{"1D50A}{\mfrakG                   }{\mathalpha}{mathematical fraktur capital g}%
+\UnicodeMathSymbol{"1D50D}{\mfrakJ                   }{\mathalpha}{mathematical fraktur capital j}%
+\UnicodeMathSymbol{"1D50E}{\mfrakK                   }{\mathalpha}{mathematical fraktur capital k}%
+\UnicodeMathSymbol{"1D50F}{\mfrakL                   }{\mathalpha}{mathematical fraktur capital l}%
+\UnicodeMathSymbol{"1D510}{\mfrakM                   }{\mathalpha}{mathematical fraktur capital m}%
+\UnicodeMathSymbol{"1D511}{\mfrakN                   }{\mathalpha}{mathematical fraktur capital n}%
+\UnicodeMathSymbol{"1D512}{\mfrakO                   }{\mathalpha}{mathematical fraktur capital o}%
+\UnicodeMathSymbol{"1D513}{\mfrakP                   }{\mathalpha}{mathematical fraktur capital p}%
+\UnicodeMathSymbol{"1D514}{\mfrakQ                   }{\mathalpha}{mathematical fraktur capital q}%
+\UnicodeMathSymbol{"1D516}{\mfrakS                   }{\mathalpha}{mathematical fraktur capital s}%
+\UnicodeMathSymbol{"1D517}{\mfrakT                   }{\mathalpha}{mathematical fraktur capital t}%
+\UnicodeMathSymbol{"1D518}{\mfrakU                   }{\mathalpha}{mathematical fraktur capital u}%
+\UnicodeMathSymbol{"1D519}{\mfrakV                   }{\mathalpha}{mathematical fraktur capital v}%
+\UnicodeMathSymbol{"1D51A}{\mfrakW                   }{\mathalpha}{mathematical fraktur capital w}%
+\UnicodeMathSymbol{"1D51B}{\mfrakX                   }{\mathalpha}{mathematical fraktur capital x}%
+\UnicodeMathSymbol{"1D51C}{\mfrakY                   }{\mathalpha}{mathematical fraktur capital y}%
+\UnicodeMathSymbol{"1D51E}{\mfraka                   }{\mathalpha}{mathematical fraktur small a}%
+\UnicodeMathSymbol{"1D51F}{\mfrakb                   }{\mathalpha}{mathematical fraktur small b}%
+\UnicodeMathSymbol{"1D520}{\mfrakc                   }{\mathalpha}{mathematical fraktur small c}%
+\UnicodeMathSymbol{"1D521}{\mfrakd                   }{\mathalpha}{mathematical fraktur small d}%
+\UnicodeMathSymbol{"1D522}{\mfrake                   }{\mathalpha}{mathematical fraktur small e}%
+\UnicodeMathSymbol{"1D523}{\mfrakf                   }{\mathalpha}{mathematical fraktur small f}%
+\UnicodeMathSymbol{"1D524}{\mfrakg                   }{\mathalpha}{mathematical fraktur small g}%
+\UnicodeMathSymbol{"1D525}{\mfrakh                   }{\mathalpha}{mathematical fraktur small h}%
+\UnicodeMathSymbol{"1D526}{\mfraki                   }{\mathalpha}{mathematical fraktur small i}%
+\UnicodeMathSymbol{"1D527}{\mfrakj                   }{\mathalpha}{mathematical fraktur small j}%
+\UnicodeMathSymbol{"1D528}{\mfrakk                   }{\mathalpha}{mathematical fraktur small k}%
+\UnicodeMathSymbol{"1D529}{\mfrakl                   }{\mathalpha}{mathematical fraktur small l}%
+\UnicodeMathSymbol{"1D52A}{\mfrakm                   }{\mathalpha}{mathematical fraktur small m}%
+\UnicodeMathSymbol{"1D52B}{\mfrakn                   }{\mathalpha}{mathematical fraktur small n}%
+\UnicodeMathSymbol{"1D52C}{\mfrako                   }{\mathalpha}{mathematical fraktur small o}%
+\UnicodeMathSymbol{"1D52D}{\mfrakp                   }{\mathalpha}{mathematical fraktur small p}%
+\UnicodeMathSymbol{"1D52E}{\mfrakq                   }{\mathalpha}{mathematical fraktur small q}%
+\UnicodeMathSymbol{"1D52F}{\mfrakr                   }{\mathalpha}{mathematical fraktur small r}%
+\UnicodeMathSymbol{"1D530}{\mfraks                   }{\mathalpha}{mathematical fraktur small s}%
+\UnicodeMathSymbol{"1D531}{\mfrakt                   }{\mathalpha}{mathematical fraktur small t}%
+\UnicodeMathSymbol{"1D532}{\mfraku                   }{\mathalpha}{mathematical fraktur small u}%
+\UnicodeMathSymbol{"1D533}{\mfrakv                   }{\mathalpha}{mathematical fraktur small v}%
+\UnicodeMathSymbol{"1D534}{\mfrakw                   }{\mathalpha}{mathematical fraktur small w}%
+\UnicodeMathSymbol{"1D535}{\mfrakx                   }{\mathalpha}{mathematical fraktur small x}%
+\UnicodeMathSymbol{"1D536}{\mfraky                   }{\mathalpha}{mathematical fraktur small y}%
+\UnicodeMathSymbol{"1D537}{\mfrakz                   }{\mathalpha}{mathematical fraktur small z}%
+\UnicodeMathSymbol{"1D538}{\BbbA                     }{\mathalpha}{mathematical double-struck capital a}%
+\UnicodeMathSymbol{"1D539}{\BbbB                     }{\mathalpha}{mathematical double-struck capital b}%
+\UnicodeMathSymbol{"1D53B}{\BbbD                     }{\mathalpha}{mathematical double-struck capital d}%
+\UnicodeMathSymbol{"1D53C}{\BbbE                     }{\mathalpha}{mathematical double-struck capital e}%
+\UnicodeMathSymbol{"1D53D}{\BbbF                     }{\mathalpha}{mathematical double-struck capital f}%
+\UnicodeMathSymbol{"1D53E}{\BbbG                     }{\mathalpha}{mathematical double-struck capital g}%
+\UnicodeMathSymbol{"1D540}{\BbbI                     }{\mathalpha}{mathematical double-struck capital i}%
+\UnicodeMathSymbol{"1D541}{\BbbJ                     }{\mathalpha}{mathematical double-struck capital j}%
+\UnicodeMathSymbol{"1D542}{\BbbK                     }{\mathalpha}{mathematical double-struck capital k}%
+\UnicodeMathSymbol{"1D543}{\BbbL                     }{\mathalpha}{mathematical double-struck capital l}%
+\UnicodeMathSymbol{"1D544}{\BbbM                     }{\mathalpha}{mathematical double-struck capital m}%
+\UnicodeMathSymbol{"1D546}{\BbbO                     }{\mathalpha}{mathematical double-struck capital o}%
+\UnicodeMathSymbol{"1D54A}{\BbbS                     }{\mathalpha}{mathematical double-struck capital s}%
+\UnicodeMathSymbol{"1D54B}{\BbbT                     }{\mathalpha}{mathematical double-struck capital t}%
+\UnicodeMathSymbol{"1D54C}{\BbbU                     }{\mathalpha}{mathematical double-struck capital u}%
+\UnicodeMathSymbol{"1D54D}{\BbbV                     }{\mathalpha}{mathematical double-struck capital v}%
+\UnicodeMathSymbol{"1D54E}{\BbbW                     }{\mathalpha}{mathematical double-struck capital w}%
+\UnicodeMathSymbol{"1D54F}{\BbbX                     }{\mathalpha}{mathematical double-struck capital x}%
+\UnicodeMathSymbol{"1D550}{\BbbY                     }{\mathalpha}{mathematical double-struck capital y}%
+\UnicodeMathSymbol{"1D552}{\Bbba                     }{\mathalpha}{mathematical double-struck small a}%
+\UnicodeMathSymbol{"1D553}{\Bbbb                     }{\mathalpha}{mathematical double-struck small b}%
+\UnicodeMathSymbol{"1D554}{\Bbbc                     }{\mathalpha}{mathematical double-struck small c}%
+\UnicodeMathSymbol{"1D555}{\Bbbd                     }{\mathalpha}{mathematical double-struck small d}%
+\UnicodeMathSymbol{"1D556}{\Bbbe                     }{\mathalpha}{mathematical double-struck small e}%
+\UnicodeMathSymbol{"1D557}{\Bbbf                     }{\mathalpha}{mathematical double-struck small f}%
+\UnicodeMathSymbol{"1D558}{\Bbbg                     }{\mathalpha}{mathematical double-struck small g}%
+\UnicodeMathSymbol{"1D559}{\Bbbh                     }{\mathalpha}{mathematical double-struck small h}%
+\UnicodeMathSymbol{"1D55A}{\Bbbi                     }{\mathalpha}{mathematical double-struck small i}%
+\UnicodeMathSymbol{"1D55B}{\Bbbj                     }{\mathalpha}{mathematical double-struck small j}%
+\UnicodeMathSymbol{"1D55C}{\Bbbk                     }{\mathalpha}{mathematical double-struck small k}%
+\UnicodeMathSymbol{"1D55D}{\Bbbl                     }{\mathalpha}{mathematical double-struck small l}%
+\UnicodeMathSymbol{"1D55E}{\Bbbm                     }{\mathalpha}{mathematical double-struck small m}%
+\UnicodeMathSymbol{"1D55F}{\Bbbn                     }{\mathalpha}{mathematical double-struck small n}%
+\UnicodeMathSymbol{"1D560}{\Bbbo                     }{\mathalpha}{mathematical double-struck small o}%
+\UnicodeMathSymbol{"1D561}{\Bbbp                     }{\mathalpha}{mathematical double-struck small p}%
+\UnicodeMathSymbol{"1D562}{\Bbbq                     }{\mathalpha}{mathematical double-struck small q}%
+\UnicodeMathSymbol{"1D563}{\Bbbr                     }{\mathalpha}{mathematical double-struck small r}%
+\UnicodeMathSymbol{"1D564}{\Bbbs                     }{\mathalpha}{mathematical double-struck small s}%
+\UnicodeMathSymbol{"1D565}{\Bbbt                     }{\mathalpha}{mathematical double-struck small t}%
+\UnicodeMathSymbol{"1D566}{\Bbbu                     }{\mathalpha}{mathematical double-struck small u}%
+\UnicodeMathSymbol{"1D567}{\Bbbv                     }{\mathalpha}{mathematical double-struck small v}%
+\UnicodeMathSymbol{"1D568}{\Bbbw                     }{\mathalpha}{mathematical double-struck small w}%
+\UnicodeMathSymbol{"1D569}{\Bbbx                     }{\mathalpha}{mathematical double-struck small x}%
+\UnicodeMathSymbol{"1D56A}{\Bbby                     }{\mathalpha}{mathematical double-struck small y}%
+\UnicodeMathSymbol{"1D56B}{\Bbbz                     }{\mathalpha}{mathematical double-struck small z}%
+\UnicodeMathSymbol{"1D56C}{\mbffrakA                 }{\mathalpha}{mathematical bold fraktur capital a}%
+\UnicodeMathSymbol{"1D56D}{\mbffrakB                 }{\mathalpha}{mathematical bold fraktur capital b}%
+\UnicodeMathSymbol{"1D56E}{\mbffrakC                 }{\mathalpha}{mathematical bold fraktur capital c}%
+\UnicodeMathSymbol{"1D56F}{\mbffrakD                 }{\mathalpha}{mathematical bold fraktur capital d}%
+\UnicodeMathSymbol{"1D570}{\mbffrakE                 }{\mathalpha}{mathematical bold fraktur capital e}%
+\UnicodeMathSymbol{"1D571}{\mbffrakF                 }{\mathalpha}{mathematical bold fraktur capital f}%
+\UnicodeMathSymbol{"1D572}{\mbffrakG                 }{\mathalpha}{mathematical bold fraktur capital g}%
+\UnicodeMathSymbol{"1D573}{\mbffrakH                 }{\mathalpha}{mathematical bold fraktur capital h}%
+\UnicodeMathSymbol{"1D574}{\mbffrakI                 }{\mathalpha}{mathematical bold fraktur capital i}%
+\UnicodeMathSymbol{"1D575}{\mbffrakJ                 }{\mathalpha}{mathematical bold fraktur capital j}%
+\UnicodeMathSymbol{"1D576}{\mbffrakK                 }{\mathalpha}{mathematical bold fraktur capital k}%
+\UnicodeMathSymbol{"1D577}{\mbffrakL                 }{\mathalpha}{mathematical bold fraktur capital l}%
+\UnicodeMathSymbol{"1D578}{\mbffrakM                 }{\mathalpha}{mathematical bold fraktur capital m}%
+\UnicodeMathSymbol{"1D579}{\mbffrakN                 }{\mathalpha}{mathematical bold fraktur capital n}%
+\UnicodeMathSymbol{"1D57A}{\mbffrakO                 }{\mathalpha}{mathematical bold fraktur capital o}%
+\UnicodeMathSymbol{"1D57B}{\mbffrakP                 }{\mathalpha}{mathematical bold fraktur capital p}%
+\UnicodeMathSymbol{"1D57C}{\mbffrakQ                 }{\mathalpha}{mathematical bold fraktur capital q}%
+\UnicodeMathSymbol{"1D57D}{\mbffrakR                 }{\mathalpha}{mathematical bold fraktur capital r}%
+\UnicodeMathSymbol{"1D57E}{\mbffrakS                 }{\mathalpha}{mathematical bold fraktur capital s}%
+\UnicodeMathSymbol{"1D57F}{\mbffrakT                 }{\mathalpha}{mathematical bold fraktur capital t}%
+\UnicodeMathSymbol{"1D580}{\mbffrakU                 }{\mathalpha}{mathematical bold fraktur capital u}%
+\UnicodeMathSymbol{"1D581}{\mbffrakV                 }{\mathalpha}{mathematical bold fraktur capital v}%
+\UnicodeMathSymbol{"1D582}{\mbffrakW                 }{\mathalpha}{mathematical bold fraktur capital w}%
+\UnicodeMathSymbol{"1D583}{\mbffrakX                 }{\mathalpha}{mathematical bold fraktur capital x}%
+\UnicodeMathSymbol{"1D584}{\mbffrakY                 }{\mathalpha}{mathematical bold fraktur capital y}%
+\UnicodeMathSymbol{"1D585}{\mbffrakZ                 }{\mathalpha}{mathematical bold fraktur capital z}%
+\UnicodeMathSymbol{"1D586}{\mbffraka                 }{\mathalpha}{mathematical bold fraktur small a}%
+\UnicodeMathSymbol{"1D587}{\mbffrakb                 }{\mathalpha}{mathematical bold fraktur small b}%
+\UnicodeMathSymbol{"1D588}{\mbffrakc                 }{\mathalpha}{mathematical bold fraktur small c}%
+\UnicodeMathSymbol{"1D589}{\mbffrakd                 }{\mathalpha}{mathematical bold fraktur small d}%
+\UnicodeMathSymbol{"1D58A}{\mbffrake                 }{\mathalpha}{mathematical bold fraktur small e}%
+\UnicodeMathSymbol{"1D58B}{\mbffrakf                 }{\mathalpha}{mathematical bold fraktur small f}%
+\UnicodeMathSymbol{"1D58C}{\mbffrakg                 }{\mathalpha}{mathematical bold fraktur small g}%
+\UnicodeMathSymbol{"1D58D}{\mbffrakh                 }{\mathalpha}{mathematical bold fraktur small h}%
+\UnicodeMathSymbol{"1D58E}{\mbffraki                 }{\mathalpha}{mathematical bold fraktur small i}%
+\UnicodeMathSymbol{"1D58F}{\mbffrakj                 }{\mathalpha}{mathematical bold fraktur small j}%
+\UnicodeMathSymbol{"1D590}{\mbffrakk                 }{\mathalpha}{mathematical bold fraktur small k}%
+\UnicodeMathSymbol{"1D591}{\mbffrakl                 }{\mathalpha}{mathematical bold fraktur small l}%
+\UnicodeMathSymbol{"1D592}{\mbffrakm                 }{\mathalpha}{mathematical bold fraktur small m}%
+\UnicodeMathSymbol{"1D593}{\mbffrakn                 }{\mathalpha}{mathematical bold fraktur small n}%
+\UnicodeMathSymbol{"1D594}{\mbffrako                 }{\mathalpha}{mathematical bold fraktur small o}%
+\UnicodeMathSymbol{"1D595}{\mbffrakp                 }{\mathalpha}{mathematical bold fraktur small p}%
+\UnicodeMathSymbol{"1D596}{\mbffrakq                 }{\mathalpha}{mathematical bold fraktur small q}%
+\UnicodeMathSymbol{"1D597}{\mbffrakr                 }{\mathalpha}{mathematical bold fraktur small r}%
+\UnicodeMathSymbol{"1D598}{\mbffraks                 }{\mathalpha}{mathematical bold fraktur small s}%
+\UnicodeMathSymbol{"1D599}{\mbffrakt                 }{\mathalpha}{mathematical bold fraktur small t}%
+\UnicodeMathSymbol{"1D59A}{\mbffraku                 }{\mathalpha}{mathematical bold fraktur small u}%
+\UnicodeMathSymbol{"1D59B}{\mbffrakv                 }{\mathalpha}{mathematical bold fraktur small v}%
+\UnicodeMathSymbol{"1D59C}{\mbffrakw                 }{\mathalpha}{mathematical bold fraktur small w}%
+\UnicodeMathSymbol{"1D59D}{\mbffrakx                 }{\mathalpha}{mathematical bold fraktur small x}%
+\UnicodeMathSymbol{"1D59E}{\mbffraky                 }{\mathalpha}{mathematical bold fraktur small y}%
+\UnicodeMathSymbol{"1D59F}{\mbffrakz                 }{\mathalpha}{mathematical bold fraktur small z}%
+\UnicodeMathSymbol{"1D5A0}{\msansA                   }{\mathalpha}{mathematical sans-serif capital a}%
+\UnicodeMathSymbol{"1D5A1}{\msansB                   }{\mathalpha}{mathematical sans-serif capital b}%
+\UnicodeMathSymbol{"1D5A2}{\msansC                   }{\mathalpha}{mathematical sans-serif capital c}%
+\UnicodeMathSymbol{"1D5A3}{\msansD                   }{\mathalpha}{mathematical sans-serif capital d}%
+\UnicodeMathSymbol{"1D5A4}{\msansE                   }{\mathalpha}{mathematical sans-serif capital e}%
+\UnicodeMathSymbol{"1D5A5}{\msansF                   }{\mathalpha}{mathematical sans-serif capital f}%
+\UnicodeMathSymbol{"1D5A6}{\msansG                   }{\mathalpha}{mathematical sans-serif capital g}%
+\UnicodeMathSymbol{"1D5A7}{\msansH                   }{\mathalpha}{mathematical sans-serif capital h}%
+\UnicodeMathSymbol{"1D5A8}{\msansI                   }{\mathalpha}{mathematical sans-serif capital i}%
+\UnicodeMathSymbol{"1D5A9}{\msansJ                   }{\mathalpha}{mathematical sans-serif capital j}%
+\UnicodeMathSymbol{"1D5AA}{\msansK                   }{\mathalpha}{mathematical sans-serif capital k}%
+\UnicodeMathSymbol{"1D5AB}{\msansL                   }{\mathalpha}{mathematical sans-serif capital l}%
+\UnicodeMathSymbol{"1D5AC}{\msansM                   }{\mathalpha}{mathematical sans-serif capital m}%
+\UnicodeMathSymbol{"1D5AD}{\msansN                   }{\mathalpha}{mathematical sans-serif capital n}%
+\UnicodeMathSymbol{"1D5AE}{\msansO                   }{\mathalpha}{mathematical sans-serif capital o}%
+\UnicodeMathSymbol{"1D5AF}{\msansP                   }{\mathalpha}{mathematical sans-serif capital p}%
+\UnicodeMathSymbol{"1D5B0}{\msansQ                   }{\mathalpha}{mathematical sans-serif capital q}%
+\UnicodeMathSymbol{"1D5B1}{\msansR                   }{\mathalpha}{mathematical sans-serif capital r}%
+\UnicodeMathSymbol{"1D5B2}{\msansS                   }{\mathalpha}{mathematical sans-serif capital s}%
+\UnicodeMathSymbol{"1D5B3}{\msansT                   }{\mathalpha}{mathematical sans-serif capital t}%
+\UnicodeMathSymbol{"1D5B4}{\msansU                   }{\mathalpha}{mathematical sans-serif capital u}%
+\UnicodeMathSymbol{"1D5B5}{\msansV                   }{\mathalpha}{mathematical sans-serif capital v}%
+\UnicodeMathSymbol{"1D5B6}{\msansW                   }{\mathalpha}{mathematical sans-serif capital w}%
+\UnicodeMathSymbol{"1D5B7}{\msansX                   }{\mathalpha}{mathematical sans-serif capital x}%
+\UnicodeMathSymbol{"1D5B8}{\msansY                   }{\mathalpha}{mathematical sans-serif capital y}%
+\UnicodeMathSymbol{"1D5B9}{\msansZ                   }{\mathalpha}{mathematical sans-serif capital z}%
+\UnicodeMathSymbol{"1D5BA}{\msansa                   }{\mathalpha}{mathematical sans-serif small a}%
+\UnicodeMathSymbol{"1D5BB}{\msansb                   }{\mathalpha}{mathematical sans-serif small b}%
+\UnicodeMathSymbol{"1D5BC}{\msansc                   }{\mathalpha}{mathematical sans-serif small c}%
+\UnicodeMathSymbol{"1D5BD}{\msansd                   }{\mathalpha}{mathematical sans-serif small d}%
+\UnicodeMathSymbol{"1D5BE}{\msanse                   }{\mathalpha}{mathematical sans-serif small e}%
+\UnicodeMathSymbol{"1D5BF}{\msansf                   }{\mathalpha}{mathematical sans-serif small f}%
+\UnicodeMathSymbol{"1D5C0}{\msansg                   }{\mathalpha}{mathematical sans-serif small g}%
+\UnicodeMathSymbol{"1D5C1}{\msansh                   }{\mathalpha}{mathematical sans-serif small h}%
+\UnicodeMathSymbol{"1D5C2}{\msansi                   }{\mathalpha}{mathematical sans-serif small i}%
+\UnicodeMathSymbol{"1D5C3}{\msansj                   }{\mathalpha}{mathematical sans-serif small j}%
+\UnicodeMathSymbol{"1D5C4}{\msansk                   }{\mathalpha}{mathematical sans-serif small k}%
+\UnicodeMathSymbol{"1D5C5}{\msansl                   }{\mathalpha}{mathematical sans-serif small l}%
+\UnicodeMathSymbol{"1D5C6}{\msansm                   }{\mathalpha}{mathematical sans-serif small m}%
+\UnicodeMathSymbol{"1D5C7}{\msansn                   }{\mathalpha}{mathematical sans-serif small n}%
+\UnicodeMathSymbol{"1D5C8}{\msanso                   }{\mathalpha}{mathematical sans-serif small o}%
+\UnicodeMathSymbol{"1D5C9}{\msansp                   }{\mathalpha}{mathematical sans-serif small p}%
+\UnicodeMathSymbol{"1D5CA}{\msansq                   }{\mathalpha}{mathematical sans-serif small q}%
+\UnicodeMathSymbol{"1D5CB}{\msansr                   }{\mathalpha}{mathematical sans-serif small r}%
+\UnicodeMathSymbol{"1D5CC}{\msanss                   }{\mathalpha}{mathematical sans-serif small s}%
+\UnicodeMathSymbol{"1D5CD}{\msanst                   }{\mathalpha}{mathematical sans-serif small t}%
+\UnicodeMathSymbol{"1D5CE}{\msansu                   }{\mathalpha}{mathematical sans-serif small u}%
+\UnicodeMathSymbol{"1D5CF}{\msansv                   }{\mathalpha}{mathematical sans-serif small v}%
+\UnicodeMathSymbol{"1D5D0}{\msansw                   }{\mathalpha}{mathematical sans-serif small w}%
+\UnicodeMathSymbol{"1D5D1}{\msansx                   }{\mathalpha}{mathematical sans-serif small x}%
+\UnicodeMathSymbol{"1D5D2}{\msansy                   }{\mathalpha}{mathematical sans-serif small y}%
+\UnicodeMathSymbol{"1D5D3}{\msansz                   }{\mathalpha}{mathematical sans-serif small z}%
+\UnicodeMathSymbol{"1D5D4}{\mbfsansA                 }{\mathalpha}{mathematical sans-serif bold capital a}%
+\UnicodeMathSymbol{"1D5D5}{\mbfsansB                 }{\mathalpha}{mathematical sans-serif bold capital b}%
+\UnicodeMathSymbol{"1D5D6}{\mbfsansC                 }{\mathalpha}{mathematical sans-serif bold capital c}%
+\UnicodeMathSymbol{"1D5D7}{\mbfsansD                 }{\mathalpha}{mathematical sans-serif bold capital d}%
+\UnicodeMathSymbol{"1D5D8}{\mbfsansE                 }{\mathalpha}{mathematical sans-serif bold capital e}%
+\UnicodeMathSymbol{"1D5D9}{\mbfsansF                 }{\mathalpha}{mathematical sans-serif bold capital f}%
+\UnicodeMathSymbol{"1D5DA}{\mbfsansG                 }{\mathalpha}{mathematical sans-serif bold capital g}%
+\UnicodeMathSymbol{"1D5DB}{\mbfsansH                 }{\mathalpha}{mathematical sans-serif bold capital h}%
+\UnicodeMathSymbol{"1D5DC}{\mbfsansI                 }{\mathalpha}{mathematical sans-serif bold capital i}%
+\UnicodeMathSymbol{"1D5DD}{\mbfsansJ                 }{\mathalpha}{mathematical sans-serif bold capital j}%
+\UnicodeMathSymbol{"1D5DE}{\mbfsansK                 }{\mathalpha}{mathematical sans-serif bold capital k}%
+\UnicodeMathSymbol{"1D5DF}{\mbfsansL                 }{\mathalpha}{mathematical sans-serif bold capital l}%
+\UnicodeMathSymbol{"1D5E0}{\mbfsansM                 }{\mathalpha}{mathematical sans-serif bold capital m}%
+\UnicodeMathSymbol{"1D5E1}{\mbfsansN                 }{\mathalpha}{mathematical sans-serif bold capital n}%
+\UnicodeMathSymbol{"1D5E2}{\mbfsansO                 }{\mathalpha}{mathematical sans-serif bold capital o}%
+\UnicodeMathSymbol{"1D5E3}{\mbfsansP                 }{\mathalpha}{mathematical sans-serif bold capital p}%
+\UnicodeMathSymbol{"1D5E4}{\mbfsansQ                 }{\mathalpha}{mathematical sans-serif bold capital q}%
+\UnicodeMathSymbol{"1D5E5}{\mbfsansR                 }{\mathalpha}{mathematical sans-serif bold capital r}%
+\UnicodeMathSymbol{"1D5E6}{\mbfsansS                 }{\mathalpha}{mathematical sans-serif bold capital s}%
+\UnicodeMathSymbol{"1D5E7}{\mbfsansT                 }{\mathalpha}{mathematical sans-serif bold capital t}%
+\UnicodeMathSymbol{"1D5E8}{\mbfsansU                 }{\mathalpha}{mathematical sans-serif bold capital u}%
+\UnicodeMathSymbol{"1D5E9}{\mbfsansV                 }{\mathalpha}{mathematical sans-serif bold capital v}%
+\UnicodeMathSymbol{"1D5EA}{\mbfsansW                 }{\mathalpha}{mathematical sans-serif bold capital w}%
+\UnicodeMathSymbol{"1D5EB}{\mbfsansX                 }{\mathalpha}{mathematical sans-serif bold capital x}%
+\UnicodeMathSymbol{"1D5EC}{\mbfsansY                 }{\mathalpha}{mathematical sans-serif bold capital y}%
+\UnicodeMathSymbol{"1D5ED}{\mbfsansZ                 }{\mathalpha}{mathematical sans-serif bold capital z}%
+\UnicodeMathSymbol{"1D5EE}{\mbfsansa                 }{\mathalpha}{mathematical sans-serif bold small a}%
+\UnicodeMathSymbol{"1D5EF}{\mbfsansb                 }{\mathalpha}{mathematical sans-serif bold small b}%
+\UnicodeMathSymbol{"1D5F0}{\mbfsansc                 }{\mathalpha}{mathematical sans-serif bold small c}%
+\UnicodeMathSymbol{"1D5F1}{\mbfsansd                 }{\mathalpha}{mathematical sans-serif bold small d}%
+\UnicodeMathSymbol{"1D5F2}{\mbfsanse                 }{\mathalpha}{mathematical sans-serif bold small e}%
+\UnicodeMathSymbol{"1D5F3}{\mbfsansf                 }{\mathalpha}{mathematical sans-serif bold small f}%
+\UnicodeMathSymbol{"1D5F4}{\mbfsansg                 }{\mathalpha}{mathematical sans-serif bold small g}%
+\UnicodeMathSymbol{"1D5F5}{\mbfsansh                 }{\mathalpha}{mathematical sans-serif bold small h}%
+\UnicodeMathSymbol{"1D5F6}{\mbfsansi                 }{\mathalpha}{mathematical sans-serif bold small i}%
+\UnicodeMathSymbol{"1D5F7}{\mbfsansj                 }{\mathalpha}{mathematical sans-serif bold small j}%
+\UnicodeMathSymbol{"1D5F8}{\mbfsansk                 }{\mathalpha}{mathematical sans-serif bold small k}%
+\UnicodeMathSymbol{"1D5F9}{\mbfsansl                 }{\mathalpha}{mathematical sans-serif bold small l}%
+\UnicodeMathSymbol{"1D5FA}{\mbfsansm                 }{\mathalpha}{mathematical sans-serif bold small m}%
+\UnicodeMathSymbol{"1D5FB}{\mbfsansn                 }{\mathalpha}{mathematical sans-serif bold small n}%
+\UnicodeMathSymbol{"1D5FC}{\mbfsanso                 }{\mathalpha}{mathematical sans-serif bold small o}%
+\UnicodeMathSymbol{"1D5FD}{\mbfsansp                 }{\mathalpha}{mathematical sans-serif bold small p}%
+\UnicodeMathSymbol{"1D5FE}{\mbfsansq                 }{\mathalpha}{mathematical sans-serif bold small q}%
+\UnicodeMathSymbol{"1D5FF}{\mbfsansr                 }{\mathalpha}{mathematical sans-serif bold small r}%
+\UnicodeMathSymbol{"1D600}{\mbfsanss                 }{\mathalpha}{mathematical sans-serif bold small s}%
+\UnicodeMathSymbol{"1D601}{\mbfsanst                 }{\mathalpha}{mathematical sans-serif bold small t}%
+\UnicodeMathSymbol{"1D602}{\mbfsansu                 }{\mathalpha}{mathematical sans-serif bold small u}%
+\UnicodeMathSymbol{"1D603}{\mbfsansv                 }{\mathalpha}{mathematical sans-serif bold small v}%
+\UnicodeMathSymbol{"1D604}{\mbfsansw                 }{\mathalpha}{mathematical sans-serif bold small w}%
+\UnicodeMathSymbol{"1D605}{\mbfsansx                 }{\mathalpha}{mathematical sans-serif bold small x}%
+\UnicodeMathSymbol{"1D606}{\mbfsansy                 }{\mathalpha}{mathematical sans-serif bold small y}%
+\UnicodeMathSymbol{"1D607}{\mbfsansz                 }{\mathalpha}{mathematical sans-serif bold small z}%
+\UnicodeMathSymbol{"1D608}{\mitsansA                 }{\mathalpha}{mathematical sans-serif italic capital a}%
+\UnicodeMathSymbol{"1D609}{\mitsansB                 }{\mathalpha}{mathematical sans-serif italic capital b}%
+\UnicodeMathSymbol{"1D60A}{\mitsansC                 }{\mathalpha}{mathematical sans-serif italic capital c}%
+\UnicodeMathSymbol{"1D60B}{\mitsansD                 }{\mathalpha}{mathematical sans-serif italic capital d}%
+\UnicodeMathSymbol{"1D60C}{\mitsansE                 }{\mathalpha}{mathematical sans-serif italic capital e}%
+\UnicodeMathSymbol{"1D60D}{\mitsansF                 }{\mathalpha}{mathematical sans-serif italic capital f}%
+\UnicodeMathSymbol{"1D60E}{\mitsansG                 }{\mathalpha}{mathematical sans-serif italic capital g}%
+\UnicodeMathSymbol{"1D60F}{\mitsansH                 }{\mathalpha}{mathematical sans-serif italic capital h}%
+\UnicodeMathSymbol{"1D610}{\mitsansI                 }{\mathalpha}{mathematical sans-serif italic capital i}%
+\UnicodeMathSymbol{"1D611}{\mitsansJ                 }{\mathalpha}{mathematical sans-serif italic capital j}%
+\UnicodeMathSymbol{"1D612}{\mitsansK                 }{\mathalpha}{mathematical sans-serif italic capital k}%
+\UnicodeMathSymbol{"1D613}{\mitsansL                 }{\mathalpha}{mathematical sans-serif italic capital l}%
+\UnicodeMathSymbol{"1D614}{\mitsansM                 }{\mathalpha}{mathematical sans-serif italic capital m}%
+\UnicodeMathSymbol{"1D615}{\mitsansN                 }{\mathalpha}{mathematical sans-serif italic capital n}%
+\UnicodeMathSymbol{"1D616}{\mitsansO                 }{\mathalpha}{mathematical sans-serif italic capital o}%
+\UnicodeMathSymbol{"1D617}{\mitsansP                 }{\mathalpha}{mathematical sans-serif italic capital p}%
+\UnicodeMathSymbol{"1D618}{\mitsansQ                 }{\mathalpha}{mathematical sans-serif italic capital q}%
+\UnicodeMathSymbol{"1D619}{\mitsansR                 }{\mathalpha}{mathematical sans-serif italic capital r}%
+\UnicodeMathSymbol{"1D61A}{\mitsansS                 }{\mathalpha}{mathematical sans-serif italic capital s}%
+\UnicodeMathSymbol{"1D61B}{\mitsansT                 }{\mathalpha}{mathematical sans-serif italic capital t}%
+\UnicodeMathSymbol{"1D61C}{\mitsansU                 }{\mathalpha}{mathematical sans-serif italic capital u}%
+\UnicodeMathSymbol{"1D61D}{\mitsansV                 }{\mathalpha}{mathematical sans-serif italic capital v}%
+\UnicodeMathSymbol{"1D61E}{\mitsansW                 }{\mathalpha}{mathematical sans-serif italic capital w}%
+\UnicodeMathSymbol{"1D61F}{\mitsansX                 }{\mathalpha}{mathematical sans-serif italic capital x}%
+\UnicodeMathSymbol{"1D620}{\mitsansY                 }{\mathalpha}{mathematical sans-serif italic capital y}%
+\UnicodeMathSymbol{"1D621}{\mitsansZ                 }{\mathalpha}{mathematical sans-serif italic capital z}%
+\UnicodeMathSymbol{"1D622}{\mitsansa                 }{\mathalpha}{mathematical sans-serif italic small a}%
+\UnicodeMathSymbol{"1D623}{\mitsansb                 }{\mathalpha}{mathematical sans-serif italic small b}%
+\UnicodeMathSymbol{"1D624}{\mitsansc                 }{\mathalpha}{mathematical sans-serif italic small c}%
+\UnicodeMathSymbol{"1D625}{\mitsansd                 }{\mathalpha}{mathematical sans-serif italic small d}%
+\UnicodeMathSymbol{"1D626}{\mitsanse                 }{\mathalpha}{mathematical sans-serif italic small e}%
+\UnicodeMathSymbol{"1D627}{\mitsansf                 }{\mathalpha}{mathematical sans-serif italic small f}%
+\UnicodeMathSymbol{"1D628}{\mitsansg                 }{\mathalpha}{mathematical sans-serif italic small g}%
+\UnicodeMathSymbol{"1D629}{\mitsansh                 }{\mathalpha}{mathematical sans-serif italic small h}%
+\UnicodeMathSymbol{"1D62A}{\mitsansi                 }{\mathalpha}{mathematical sans-serif italic small i}%
+\UnicodeMathSymbol{"1D62B}{\mitsansj                 }{\mathalpha}{mathematical sans-serif italic small j}%
+\UnicodeMathSymbol{"1D62C}{\mitsansk                 }{\mathalpha}{mathematical sans-serif italic small k}%
+\UnicodeMathSymbol{"1D62D}{\mitsansl                 }{\mathalpha}{mathematical sans-serif italic small l}%
+\UnicodeMathSymbol{"1D62E}{\mitsansm                 }{\mathalpha}{mathematical sans-serif italic small m}%
+\UnicodeMathSymbol{"1D62F}{\mitsansn                 }{\mathalpha}{mathematical sans-serif italic small n}%
+\UnicodeMathSymbol{"1D630}{\mitsanso                 }{\mathalpha}{mathematical sans-serif italic small o}%
+\UnicodeMathSymbol{"1D631}{\mitsansp                 }{\mathalpha}{mathematical sans-serif italic small p}%
+\UnicodeMathSymbol{"1D632}{\mitsansq                 }{\mathalpha}{mathematical sans-serif italic small q}%
+\UnicodeMathSymbol{"1D633}{\mitsansr                 }{\mathalpha}{mathematical sans-serif italic small r}%
+\UnicodeMathSymbol{"1D634}{\mitsanss                 }{\mathalpha}{mathematical sans-serif italic small s}%
+\UnicodeMathSymbol{"1D635}{\mitsanst                 }{\mathalpha}{mathematical sans-serif italic small t}%
+\UnicodeMathSymbol{"1D636}{\mitsansu                 }{\mathalpha}{mathematical sans-serif italic small u}%
+\UnicodeMathSymbol{"1D637}{\mitsansv                 }{\mathalpha}{mathematical sans-serif italic small v}%
+\UnicodeMathSymbol{"1D638}{\mitsansw                 }{\mathalpha}{mathematical sans-serif italic small w}%
+\UnicodeMathSymbol{"1D639}{\mitsansx                 }{\mathalpha}{mathematical sans-serif italic small x}%
+\UnicodeMathSymbol{"1D63A}{\mitsansy                 }{\mathalpha}{mathematical sans-serif italic small y}%
+\UnicodeMathSymbol{"1D63B}{\mitsansz                 }{\mathalpha}{mathematical sans-serif italic small z}%
+\UnicodeMathSymbol{"1D63C}{\mbfitsansA               }{\mathalpha}{mathematical sans-serif bold italic capital a}%
+\UnicodeMathSymbol{"1D63D}{\mbfitsansB               }{\mathalpha}{mathematical sans-serif bold italic capital b}%
+\UnicodeMathSymbol{"1D63E}{\mbfitsansC               }{\mathalpha}{mathematical sans-serif bold italic capital c}%
+\UnicodeMathSymbol{"1D63F}{\mbfitsansD               }{\mathalpha}{mathematical sans-serif bold italic capital d}%
+\UnicodeMathSymbol{"1D640}{\mbfitsansE               }{\mathalpha}{mathematical sans-serif bold italic capital e}%
+\UnicodeMathSymbol{"1D641}{\mbfitsansF               }{\mathalpha}{mathematical sans-serif bold italic capital f}%
+\UnicodeMathSymbol{"1D642}{\mbfitsansG               }{\mathalpha}{mathematical sans-serif bold italic capital g}%
+\UnicodeMathSymbol{"1D643}{\mbfitsansH               }{\mathalpha}{mathematical sans-serif bold italic capital h}%
+\UnicodeMathSymbol{"1D644}{\mbfitsansI               }{\mathalpha}{mathematical sans-serif bold italic capital i}%
+\UnicodeMathSymbol{"1D645}{\mbfitsansJ               }{\mathalpha}{mathematical sans-serif bold italic capital j}%
+\UnicodeMathSymbol{"1D646}{\mbfitsansK               }{\mathalpha}{mathematical sans-serif bold italic capital k}%
+\UnicodeMathSymbol{"1D647}{\mbfitsansL               }{\mathalpha}{mathematical sans-serif bold italic capital l}%
+\UnicodeMathSymbol{"1D648}{\mbfitsansM               }{\mathalpha}{mathematical sans-serif bold italic capital m}%
+\UnicodeMathSymbol{"1D649}{\mbfitsansN               }{\mathalpha}{mathematical sans-serif bold italic capital n}%
+\UnicodeMathSymbol{"1D64A}{\mbfitsansO               }{\mathalpha}{mathematical sans-serif bold italic capital o}%
+\UnicodeMathSymbol{"1D64B}{\mbfitsansP               }{\mathalpha}{mathematical sans-serif bold italic capital p}%
+\UnicodeMathSymbol{"1D64C}{\mbfitsansQ               }{\mathalpha}{mathematical sans-serif bold italic capital q}%
+\UnicodeMathSymbol{"1D64D}{\mbfitsansR               }{\mathalpha}{mathematical sans-serif bold italic capital r}%
+\UnicodeMathSymbol{"1D64E}{\mbfitsansS               }{\mathalpha}{mathematical sans-serif bold italic capital s}%
+\UnicodeMathSymbol{"1D64F}{\mbfitsansT               }{\mathalpha}{mathematical sans-serif bold italic capital t}%
+\UnicodeMathSymbol{"1D650}{\mbfitsansU               }{\mathalpha}{mathematical sans-serif bold italic capital u}%
+\UnicodeMathSymbol{"1D651}{\mbfitsansV               }{\mathalpha}{mathematical sans-serif bold italic capital v}%
+\UnicodeMathSymbol{"1D652}{\mbfitsansW               }{\mathalpha}{mathematical sans-serif bold italic capital w}%
+\UnicodeMathSymbol{"1D653}{\mbfitsansX               }{\mathalpha}{mathematical sans-serif bold italic capital x}%
+\UnicodeMathSymbol{"1D654}{\mbfitsansY               }{\mathalpha}{mathematical sans-serif bold italic capital y}%
+\UnicodeMathSymbol{"1D655}{\mbfitsansZ               }{\mathalpha}{mathematical sans-serif bold italic capital z}%
+\UnicodeMathSymbol{"1D656}{\mbfitsansa               }{\mathalpha}{mathematical sans-serif bold italic small a}%
+\UnicodeMathSymbol{"1D657}{\mbfitsansb               }{\mathalpha}{mathematical sans-serif bold italic small b}%
+\UnicodeMathSymbol{"1D658}{\mbfitsansc               }{\mathalpha}{mathematical sans-serif bold italic small c}%
+\UnicodeMathSymbol{"1D659}{\mbfitsansd               }{\mathalpha}{mathematical sans-serif bold italic small d}%
+\UnicodeMathSymbol{"1D65A}{\mbfitsanse               }{\mathalpha}{mathematical sans-serif bold italic small e}%
+\UnicodeMathSymbol{"1D65B}{\mbfitsansf               }{\mathalpha}{mathematical sans-serif bold italic small f}%
+\UnicodeMathSymbol{"1D65C}{\mbfitsansg               }{\mathalpha}{mathematical sans-serif bold italic small g}%
+\UnicodeMathSymbol{"1D65D}{\mbfitsansh               }{\mathalpha}{mathematical sans-serif bold italic small h}%
+\UnicodeMathSymbol{"1D65E}{\mbfitsansi               }{\mathalpha}{mathematical sans-serif bold italic small i}%
+\UnicodeMathSymbol{"1D65F}{\mbfitsansj               }{\mathalpha}{mathematical sans-serif bold italic small j}%
+\UnicodeMathSymbol{"1D660}{\mbfitsansk               }{\mathalpha}{mathematical sans-serif bold italic small k}%
+\UnicodeMathSymbol{"1D661}{\mbfitsansl               }{\mathalpha}{mathematical sans-serif bold italic small l}%
+\UnicodeMathSymbol{"1D662}{\mbfitsansm               }{\mathalpha}{mathematical sans-serif bold italic small m}%
+\UnicodeMathSymbol{"1D663}{\mbfitsansn               }{\mathalpha}{mathematical sans-serif bold italic small n}%
+\UnicodeMathSymbol{"1D664}{\mbfitsanso               }{\mathalpha}{mathematical sans-serif bold italic small o}%
+\UnicodeMathSymbol{"1D665}{\mbfitsansp               }{\mathalpha}{mathematical sans-serif bold italic small p}%
+\UnicodeMathSymbol{"1D666}{\mbfitsansq               }{\mathalpha}{mathematical sans-serif bold italic small q}%
+\UnicodeMathSymbol{"1D667}{\mbfitsansr               }{\mathalpha}{mathematical sans-serif bold italic small r}%
+\UnicodeMathSymbol{"1D668}{\mbfitsanss               }{\mathalpha}{mathematical sans-serif bold italic small s}%
+\UnicodeMathSymbol{"1D669}{\mbfitsanst               }{\mathalpha}{mathematical sans-serif bold italic small t}%
+\UnicodeMathSymbol{"1D66A}{\mbfitsansu               }{\mathalpha}{mathematical sans-serif bold italic small u}%
+\UnicodeMathSymbol{"1D66B}{\mbfitsansv               }{\mathalpha}{mathematical sans-serif bold italic small v}%
+\UnicodeMathSymbol{"1D66C}{\mbfitsansw               }{\mathalpha}{mathematical sans-serif bold italic small w}%
+\UnicodeMathSymbol{"1D66D}{\mbfitsansx               }{\mathalpha}{mathematical sans-serif bold italic small x}%
+\UnicodeMathSymbol{"1D66E}{\mbfitsansy               }{\mathalpha}{mathematical sans-serif bold italic small y}%
+\UnicodeMathSymbol{"1D66F}{\mbfitsansz               }{\mathalpha}{mathematical sans-serif bold italic small z}%
+\UnicodeMathSymbol{"1D670}{\mttA                     }{\mathalpha}{mathematical monospace capital a}%
+\UnicodeMathSymbol{"1D671}{\mttB                     }{\mathalpha}{mathematical monospace capital b}%
+\UnicodeMathSymbol{"1D672}{\mttC                     }{\mathalpha}{mathematical monospace capital c}%
+\UnicodeMathSymbol{"1D673}{\mttD                     }{\mathalpha}{mathematical monospace capital d}%
+\UnicodeMathSymbol{"1D674}{\mttE                     }{\mathalpha}{mathematical monospace capital e}%
+\UnicodeMathSymbol{"1D675}{\mttF                     }{\mathalpha}{mathematical monospace capital f}%
+\UnicodeMathSymbol{"1D676}{\mttG                     }{\mathalpha}{mathematical monospace capital g}%
+\UnicodeMathSymbol{"1D677}{\mttH                     }{\mathalpha}{mathematical monospace capital h}%
+\UnicodeMathSymbol{"1D678}{\mttI                     }{\mathalpha}{mathematical monospace capital i}%
+\UnicodeMathSymbol{"1D679}{\mttJ                     }{\mathalpha}{mathematical monospace capital j}%
+\UnicodeMathSymbol{"1D67A}{\mttK                     }{\mathalpha}{mathematical monospace capital k}%
+\UnicodeMathSymbol{"1D67B}{\mttL                     }{\mathalpha}{mathematical monospace capital l}%
+\UnicodeMathSymbol{"1D67C}{\mttM                     }{\mathalpha}{mathematical monospace capital m}%
+\UnicodeMathSymbol{"1D67D}{\mttN                     }{\mathalpha}{mathematical monospace capital n}%
+\UnicodeMathSymbol{"1D67E}{\mttO                     }{\mathalpha}{mathematical monospace capital o}%
+\UnicodeMathSymbol{"1D67F}{\mttP                     }{\mathalpha}{mathematical monospace capital p}%
+\UnicodeMathSymbol{"1D680}{\mttQ                     }{\mathalpha}{mathematical monospace capital q}%
+\UnicodeMathSymbol{"1D681}{\mttR                     }{\mathalpha}{mathematical monospace capital r}%
+\UnicodeMathSymbol{"1D682}{\mttS                     }{\mathalpha}{mathematical monospace capital s}%
+\UnicodeMathSymbol{"1D683}{\mttT                     }{\mathalpha}{mathematical monospace capital t}%
+\UnicodeMathSymbol{"1D684}{\mttU                     }{\mathalpha}{mathematical monospace capital u}%
+\UnicodeMathSymbol{"1D685}{\mttV                     }{\mathalpha}{mathematical monospace capital v}%
+\UnicodeMathSymbol{"1D686}{\mttW                     }{\mathalpha}{mathematical monospace capital w}%
+\UnicodeMathSymbol{"1D687}{\mttX                     }{\mathalpha}{mathematical monospace capital x}%
+\UnicodeMathSymbol{"1D688}{\mttY                     }{\mathalpha}{mathematical monospace capital y}%
+\UnicodeMathSymbol{"1D689}{\mttZ                     }{\mathalpha}{mathematical monospace capital z}%
+\UnicodeMathSymbol{"1D68A}{\mtta                     }{\mathalpha}{mathematical monospace small a}%
+\UnicodeMathSymbol{"1D68B}{\mttb                     }{\mathalpha}{mathematical monospace small b}%
+\UnicodeMathSymbol{"1D68C}{\mttc                     }{\mathalpha}{mathematical monospace small c}%
+\UnicodeMathSymbol{"1D68D}{\mttd                     }{\mathalpha}{mathematical monospace small d}%
+\UnicodeMathSymbol{"1D68E}{\mtte                     }{\mathalpha}{mathematical monospace small e}%
+\UnicodeMathSymbol{"1D68F}{\mttf                     }{\mathalpha}{mathematical monospace small f}%
+\UnicodeMathSymbol{"1D690}{\mttg                     }{\mathalpha}{mathematical monospace small g}%
+\UnicodeMathSymbol{"1D691}{\mtth                     }{\mathalpha}{mathematical monospace small h}%
+\UnicodeMathSymbol{"1D692}{\mtti                     }{\mathalpha}{mathematical monospace small i}%
+\UnicodeMathSymbol{"1D693}{\mttj                     }{\mathalpha}{mathematical monospace small j}%
+\UnicodeMathSymbol{"1D694}{\mttk                     }{\mathalpha}{mathematical monospace small k}%
+\UnicodeMathSymbol{"1D695}{\mttl                     }{\mathalpha}{mathematical monospace small l}%
+\UnicodeMathSymbol{"1D696}{\mttm                     }{\mathalpha}{mathematical monospace small m}%
+\UnicodeMathSymbol{"1D697}{\mttn                     }{\mathalpha}{mathematical monospace small n}%
+\UnicodeMathSymbol{"1D698}{\mtto                     }{\mathalpha}{mathematical monospace small o}%
+\UnicodeMathSymbol{"1D699}{\mttp                     }{\mathalpha}{mathematical monospace small p}%
+\UnicodeMathSymbol{"1D69A}{\mttq                     }{\mathalpha}{mathematical monospace small q}%
+\UnicodeMathSymbol{"1D69B}{\mttr                     }{\mathalpha}{mathematical monospace small r}%
+\UnicodeMathSymbol{"1D69C}{\mtts                     }{\mathalpha}{mathematical monospace small s}%
+\UnicodeMathSymbol{"1D69D}{\mttt                     }{\mathalpha}{mathematical monospace small t}%
+\UnicodeMathSymbol{"1D69E}{\mttu                     }{\mathalpha}{mathematical monospace small u}%
+\UnicodeMathSymbol{"1D69F}{\mttv                     }{\mathalpha}{mathematical monospace small v}%
+\UnicodeMathSymbol{"1D6A0}{\mttw                     }{\mathalpha}{mathematical monospace small w}%
+\UnicodeMathSymbol{"1D6A1}{\mttx                     }{\mathalpha}{mathematical monospace small x}%
+\UnicodeMathSymbol{"1D6A2}{\mtty                     }{\mathalpha}{mathematical monospace small y}%
+\UnicodeMathSymbol{"1D6A3}{\mttz                     }{\mathalpha}{mathematical monospace small z}%
+\UnicodeMathSymbol{"1D6A4}{\imath                    }{\mathalpha}{mathematical italic small dotless i}%
+\UnicodeMathSymbol{"1D6A5}{\jmath                    }{\mathalpha}{mathematical italic small dotless j}%
+\UnicodeMathSymbol{"1D6A8}{\mbfAlpha                 }{\mathalpha}{mathematical bold capital alpha}%
+\UnicodeMathSymbol{"1D6A9}{\mbfBeta                  }{\mathalpha}{mathematical bold capital beta}%
+\UnicodeMathSymbol{"1D6AA}{\mbfGamma                 }{\mathalpha}{mathematical bold capital gamma}%
+\UnicodeMathSymbol{"1D6AB}{\mbfDelta                 }{\mathalpha}{mathematical bold capital delta}%
+\UnicodeMathSymbol{"1D6AC}{\mbfEpsilon               }{\mathalpha}{mathematical bold capital epsilon}%
+\UnicodeMathSymbol{"1D6AD}{\mbfZeta                  }{\mathalpha}{mathematical bold capital zeta}%
+\UnicodeMathSymbol{"1D6AE}{\mbfEta                   }{\mathalpha}{mathematical bold capital eta}%
+\UnicodeMathSymbol{"1D6AF}{\mbfTheta                 }{\mathalpha}{mathematical bold capital theta}%
+\UnicodeMathSymbol{"1D6B0}{\mbfIota                  }{\mathalpha}{mathematical bold capital iota}%
+\UnicodeMathSymbol{"1D6B1}{\mbfKappa                 }{\mathalpha}{mathematical bold capital kappa}%
+\UnicodeMathSymbol{"1D6B2}{\mbfLambda                }{\mathalpha}{mathematical bold capital lambda}%
+\UnicodeMathSymbol{"1D6B3}{\mbfMu                    }{\mathalpha}{mathematical bold capital mu}%
+\UnicodeMathSymbol{"1D6B4}{\mbfNu                    }{\mathalpha}{mathematical bold capital nu}%
+\UnicodeMathSymbol{"1D6B5}{\mbfXi                    }{\mathalpha}{mathematical bold capital xi}%
+\UnicodeMathSymbol{"1D6B6}{\mbfOmicron               }{\mathalpha}{mathematical bold capital omicron}%
+\UnicodeMathSymbol{"1D6B7}{\mbfPi                    }{\mathalpha}{mathematical bold capital pi}%
+\UnicodeMathSymbol{"1D6B8}{\mbfRho                   }{\mathalpha}{mathematical bold capital rho}%
+\UnicodeMathSymbol{"1D6B9}{\mbfvarTheta              }{\mathalpha}{mathematical bold capital theta symbol}%
+\UnicodeMathSymbol{"1D6BA}{\mbfSigma                 }{\mathalpha}{mathematical bold capital sigma}%
+\UnicodeMathSymbol{"1D6BB}{\mbfTau                   }{\mathalpha}{mathematical bold capital tau}%
+\UnicodeMathSymbol{"1D6BC}{\mbfUpsilon               }{\mathalpha}{mathematical bold capital upsilon}%
+\UnicodeMathSymbol{"1D6BD}{\mbfPhi                   }{\mathalpha}{mathematical bold capital phi}%
+\UnicodeMathSymbol{"1D6BE}{\mbfChi                   }{\mathalpha}{mathematical bold capital chi}%
+\UnicodeMathSymbol{"1D6BF}{\mbfPsi                   }{\mathalpha}{mathematical bold capital psi}%
+\UnicodeMathSymbol{"1D6C0}{\mbfOmega                 }{\mathalpha}{mathematical bold capital omega}%
+\UnicodeMathSymbol{"1D6C1}{\mbfnabla                 }{\mathalpha}{mathematical bold nabla}%
+\UnicodeMathSymbol{"1D6C2}{\mbfalpha                 }{\mathalpha}{mathematical bold small alpha}%
+\UnicodeMathSymbol{"1D6C3}{\mbfbeta                  }{\mathalpha}{mathematical bold small beta}%
+\UnicodeMathSymbol{"1D6C4}{\mbfgamma                 }{\mathalpha}{mathematical bold small gamma}%
+\UnicodeMathSymbol{"1D6C5}{\mbfdelta                 }{\mathalpha}{mathematical bold small delta}%
+\UnicodeMathSymbol{"1D6C6}{\mbfvarepsilon            }{\mathalpha}{mathematical bold small varepsilon}%
+\UnicodeMathSymbol{"1D6C7}{\mbfzeta                  }{\mathalpha}{mathematical bold small zeta}%
+\UnicodeMathSymbol{"1D6C8}{\mbfeta                   }{\mathalpha}{mathematical bold small eta}%
+\UnicodeMathSymbol{"1D6C9}{\mbftheta                 }{\mathalpha}{mathematical bold small theta}%
+\UnicodeMathSymbol{"1D6CA}{\mbfiota                  }{\mathalpha}{mathematical bold small iota}%
+\UnicodeMathSymbol{"1D6CB}{\mbfkappa                 }{\mathalpha}{mathematical bold small kappa}%
+\UnicodeMathSymbol{"1D6CC}{\mbflambda                }{\mathalpha}{mathematical bold small lambda}%
+\UnicodeMathSymbol{"1D6CD}{\mbfmu                    }{\mathalpha}{mathematical bold small mu}%
+\UnicodeMathSymbol{"1D6CE}{\mbfnu                    }{\mathalpha}{mathematical bold small nu}%
+\UnicodeMathSymbol{"1D6CF}{\mbfxi                    }{\mathalpha}{mathematical bold small xi}%
+\UnicodeMathSymbol{"1D6D0}{\mbfomicron               }{\mathalpha}{mathematical bold small omicron}%
+\UnicodeMathSymbol{"1D6D1}{\mbfpi                    }{\mathalpha}{mathematical bold small pi}%
+\UnicodeMathSymbol{"1D6D2}{\mbfrho                   }{\mathalpha}{mathematical bold small rho}%
+\UnicodeMathSymbol{"1D6D3}{\mbfvarsigma              }{\mathalpha}{mathematical bold small final sigma}%
+\UnicodeMathSymbol{"1D6D4}{\mbfsigma                 }{\mathalpha}{mathematical bold small sigma}%
+\UnicodeMathSymbol{"1D6D5}{\mbftau                   }{\mathalpha}{mathematical bold small tau}%
+\UnicodeMathSymbol{"1D6D6}{\mbfupsilon               }{\mathalpha}{mathematical bold small upsilon}%
+\UnicodeMathSymbol{"1D6D7}{\mbfvarphi                }{\mathalpha}{mathematical bold small phi}%
+\UnicodeMathSymbol{"1D6D8}{\mbfchi                   }{\mathalpha}{mathematical bold small chi}%
+\UnicodeMathSymbol{"1D6D9}{\mbfpsi                   }{\mathalpha}{mathematical bold small psi}%
+\UnicodeMathSymbol{"1D6DA}{\mbfomega                 }{\mathalpha}{mathematical bold small omega}%
+\UnicodeMathSymbol{"1D6DB}{\mbfpartial               }{\mathalpha}{mathematical bold partial differential}%
+\UnicodeMathSymbol{"1D6DC}{\mbfepsilon               }{\mathalpha}{mathematical bold varepsilon symbol}%
+\UnicodeMathSymbol{"1D6DD}{\mbfvartheta              }{\mathalpha}{mathematical bold theta symbol}%
+\UnicodeMathSymbol{"1D6DE}{\mbfvarkappa              }{\mathalpha}{mathematical bold kappa symbol}%
+\UnicodeMathSymbol{"1D6DF}{\mbfphi                   }{\mathalpha}{mathematical bold phi symbol}%
+\UnicodeMathSymbol{"1D6E0}{\mbfvarrho                }{\mathalpha}{mathematical bold rho symbol}%
+\UnicodeMathSymbol{"1D6E1}{\mbfvarpi                 }{\mathalpha}{mathematical bold pi symbol}%
+\UnicodeMathSymbol{"1D6E2}{\mitAlpha                 }{\mathalpha}{mathematical italic capital alpha}%
+\UnicodeMathSymbol{"1D6E3}{\mitBeta                  }{\mathalpha}{mathematical italic capital beta}%
+\UnicodeMathSymbol{"1D6E4}{\mitGamma                 }{\mathalpha}{mathematical italic capital gamma}%
+\UnicodeMathSymbol{"1D6E5}{\mitDelta                 }{\mathalpha}{mathematical italic capital delta}%
+\UnicodeMathSymbol{"1D6E6}{\mitEpsilon               }{\mathalpha}{mathematical italic capital epsilon}%
+\UnicodeMathSymbol{"1D6E7}{\mitZeta                  }{\mathalpha}{mathematical italic capital zeta}%
+\UnicodeMathSymbol{"1D6E8}{\mitEta                   }{\mathalpha}{mathematical italic capital eta}%
+\UnicodeMathSymbol{"1D6E9}{\mitTheta                 }{\mathalpha}{mathematical italic capital theta}%
+\UnicodeMathSymbol{"1D6EA}{\mitIota                  }{\mathalpha}{mathematical italic capital iota}%
+\UnicodeMathSymbol{"1D6EB}{\mitKappa                 }{\mathalpha}{mathematical italic capital kappa}%
+\UnicodeMathSymbol{"1D6EC}{\mitLambda                }{\mathalpha}{mathematical italic capital lambda}%
+\UnicodeMathSymbol{"1D6ED}{\mitMu                    }{\mathalpha}{mathematical italic capital mu}%
+\UnicodeMathSymbol{"1D6EE}{\mitNu                    }{\mathalpha}{mathematical italic capital nu}%
+\UnicodeMathSymbol{"1D6EF}{\mitXi                    }{\mathalpha}{mathematical italic capital xi}%
+\UnicodeMathSymbol{"1D6F0}{\mitOmicron               }{\mathalpha}{mathematical italic capital omicron}%
+\UnicodeMathSymbol{"1D6F1}{\mitPi                    }{\mathalpha}{mathematical italic capital pi}%
+\UnicodeMathSymbol{"1D6F2}{\mitRho                   }{\mathalpha}{mathematical italic capital rho}%
+\UnicodeMathSymbol{"1D6F3}{\mitvarTheta              }{\mathalpha}{mathematical italic capital theta symbol}%
+\UnicodeMathSymbol{"1D6F4}{\mitSigma                 }{\mathalpha}{mathematical italic capital sigma}%
+\UnicodeMathSymbol{"1D6F5}{\mitTau                   }{\mathalpha}{mathematical italic capital tau}%
+\UnicodeMathSymbol{"1D6F6}{\mitUpsilon               }{\mathalpha}{mathematical italic capital upsilon}%
+\UnicodeMathSymbol{"1D6F7}{\mitPhi                   }{\mathalpha}{mathematical italic capital phi}%
+\UnicodeMathSymbol{"1D6F8}{\mitChi                   }{\mathalpha}{mathematical italic capital chi}%
+\UnicodeMathSymbol{"1D6F9}{\mitPsi                   }{\mathalpha}{mathematical italic capital psi}%
+\UnicodeMathSymbol{"1D6FA}{\mitOmega                 }{\mathalpha}{mathematical italic capital omega}%
+\UnicodeMathSymbol{"1D6FB}{\mitnabla                 }{\mathalpha}{mathematical italic nabla}%
+\UnicodeMathSymbol{"1D6FC}{\mitalpha                 }{\mathalpha}{mathematical italic small alpha}%
+\UnicodeMathSymbol{"1D6FD}{\mitbeta                  }{\mathalpha}{mathematical italic small beta}%
+\UnicodeMathSymbol{"1D6FE}{\mitgamma                 }{\mathalpha}{mathematical italic small gamma}%
+\UnicodeMathSymbol{"1D6FF}{\mitdelta                 }{\mathalpha}{mathematical italic small delta}%
+\UnicodeMathSymbol{"1D700}{\mitvarepsilon            }{\mathalpha}{mathematical italic small varepsilon}%
+\UnicodeMathSymbol{"1D701}{\mitzeta                  }{\mathalpha}{mathematical italic small zeta}%
+\UnicodeMathSymbol{"1D702}{\miteta                   }{\mathalpha}{mathematical italic small eta}%
+\UnicodeMathSymbol{"1D703}{\mittheta                 }{\mathalpha}{mathematical italic small theta}%
+\UnicodeMathSymbol{"1D704}{\mitiota                  }{\mathalpha}{mathematical italic small iota}%
+\UnicodeMathSymbol{"1D705}{\mitkappa                 }{\mathalpha}{mathematical italic small kappa}%
+\UnicodeMathSymbol{"1D706}{\mitlambda                }{\mathalpha}{mathematical italic small lambda}%
+\UnicodeMathSymbol{"1D707}{\mitmu                    }{\mathalpha}{mathematical italic small mu}%
+\UnicodeMathSymbol{"1D708}{\mitnu                    }{\mathalpha}{mathematical italic small nu}%
+\UnicodeMathSymbol{"1D709}{\mitxi                    }{\mathalpha}{mathematical italic small xi}%
+\UnicodeMathSymbol{"1D70A}{\mitomicron               }{\mathalpha}{mathematical italic small omicron}%
+\UnicodeMathSymbol{"1D70B}{\mitpi                    }{\mathalpha}{mathematical italic small pi}%
+\UnicodeMathSymbol{"1D70C}{\mitrho                   }{\mathalpha}{mathematical italic small rho}%
+\UnicodeMathSymbol{"1D70D}{\mitvarsigma              }{\mathalpha}{mathematical italic small final sigma}%
+\UnicodeMathSymbol{"1D70E}{\mitsigma                 }{\mathalpha}{mathematical italic small sigma}%
+\UnicodeMathSymbol{"1D70F}{\mittau                   }{\mathalpha}{mathematical italic small tau}%
+\UnicodeMathSymbol{"1D710}{\mitupsilon               }{\mathalpha}{mathematical italic small upsilon}%
+\UnicodeMathSymbol{"1D711}{\mitvarphi                }{\mathalpha}{mathematical italic small phi}%
+\UnicodeMathSymbol{"1D712}{\mitchi                   }{\mathalpha}{mathematical italic small chi}%
+\UnicodeMathSymbol{"1D713}{\mitpsi                   }{\mathalpha}{mathematical italic small psi}%
+\UnicodeMathSymbol{"1D714}{\mitomega                 }{\mathalpha}{mathematical italic small omega}%
+\UnicodeMathSymbol{"1D715}{\mitpartial               }{\mathalpha}{mathematical italic partial differential}%
+\UnicodeMathSymbol{"1D716}{\mitepsilon               }{\mathalpha}{mathematical italic varepsilon symbol}%
+\UnicodeMathSymbol{"1D717}{\mitvartheta              }{\mathalpha}{mathematical italic theta symbol}%
+\UnicodeMathSymbol{"1D718}{\mitvarkappa              }{\mathalpha}{mathematical italic kappa symbol}%
+\UnicodeMathSymbol{"1D719}{\mitphi                   }{\mathalpha}{mathematical italic phi symbol}%
+\UnicodeMathSymbol{"1D71A}{\mitvarrho                }{\mathalpha}{mathematical italic rho symbol}%
+\UnicodeMathSymbol{"1D71B}{\mitvarpi                 }{\mathalpha}{mathematical italic pi symbol}%
+\UnicodeMathSymbol{"1D71C}{\mbfitAlpha               }{\mathalpha}{mathematical bold italic capital alpha}%
+\UnicodeMathSymbol{"1D71D}{\mbfitBeta                }{\mathalpha}{mathematical bold italic capital beta}%
+\UnicodeMathSymbol{"1D71E}{\mbfitGamma               }{\mathalpha}{mathematical bold italic capital gamma}%
+\UnicodeMathSymbol{"1D71F}{\mbfitDelta               }{\mathalpha}{mathematical bold italic capital delta}%
+\UnicodeMathSymbol{"1D720}{\mbfitEpsilon             }{\mathalpha}{mathematical bold italic capital epsilon}%
+\UnicodeMathSymbol{"1D721}{\mbfitZeta                }{\mathalpha}{mathematical bold italic capital zeta}%
+\UnicodeMathSymbol{"1D722}{\mbfitEta                 }{\mathalpha}{mathematical bold italic capital eta}%
+\UnicodeMathSymbol{"1D723}{\mbfitTheta               }{\mathalpha}{mathematical bold italic capital theta}%
+\UnicodeMathSymbol{"1D724}{\mbfitIota                }{\mathalpha}{mathematical bold italic capital iota}%
+\UnicodeMathSymbol{"1D725}{\mbfitKappa               }{\mathalpha}{mathematical bold italic capital kappa}%
+\UnicodeMathSymbol{"1D726}{\mbfitLambda              }{\mathalpha}{mathematical bold italic capital lambda}%
+\UnicodeMathSymbol{"1D727}{\mbfitMu                  }{\mathalpha}{mathematical bold italic capital mu}%
+\UnicodeMathSymbol{"1D728}{\mbfitNu                  }{\mathalpha}{mathematical bold italic capital nu}%
+\UnicodeMathSymbol{"1D729}{\mbfitXi                  }{\mathalpha}{mathematical bold italic capital xi}%
+\UnicodeMathSymbol{"1D72A}{\mbfitOmicron             }{\mathalpha}{mathematical bold italic capital omicron}%
+\UnicodeMathSymbol{"1D72B}{\mbfitPi                  }{\mathalpha}{mathematical bold italic capital pi}%
+\UnicodeMathSymbol{"1D72C}{\mbfitRho                 }{\mathalpha}{mathematical bold italic capital rho}%
+\UnicodeMathSymbol{"1D72D}{\mbfitvarTheta            }{\mathalpha}{mathematical bold italic capital theta symbol}%
+\UnicodeMathSymbol{"1D72E}{\mbfitSigma               }{\mathalpha}{mathematical bold italic capital sigma}%
+\UnicodeMathSymbol{"1D72F}{\mbfitTau                 }{\mathalpha}{mathematical bold italic capital tau}%
+\UnicodeMathSymbol{"1D730}{\mbfitUpsilon             }{\mathalpha}{mathematical bold italic capital upsilon}%
+\UnicodeMathSymbol{"1D731}{\mbfitPhi                 }{\mathalpha}{mathematical bold italic capital phi}%
+\UnicodeMathSymbol{"1D732}{\mbfitChi                 }{\mathalpha}{mathematical bold italic capital chi}%
+\UnicodeMathSymbol{"1D733}{\mbfitPsi                 }{\mathalpha}{mathematical bold italic capital psi}%
+\UnicodeMathSymbol{"1D734}{\mbfitOmega               }{\mathalpha}{mathematical bold italic capital omega}%
+\UnicodeMathSymbol{"1D735}{\mbfitnabla               }{\mathalpha}{mathematical bold italic nabla}%
+\UnicodeMathSymbol{"1D736}{\mbfitalpha               }{\mathalpha}{mathematical bold italic small alpha}%
+\UnicodeMathSymbol{"1D737}{\mbfitbeta                }{\mathalpha}{mathematical bold italic small beta}%
+\UnicodeMathSymbol{"1D738}{\mbfitgamma               }{\mathalpha}{mathematical bold italic small gamma}%
+\UnicodeMathSymbol{"1D739}{\mbfitdelta               }{\mathalpha}{mathematical bold italic small delta}%
+\UnicodeMathSymbol{"1D73A}{\mbfitvarepsilon          }{\mathalpha}{mathematical bold italic small varepsilon}%
+\UnicodeMathSymbol{"1D73B}{\mbfitzeta                }{\mathalpha}{mathematical bold italic small zeta}%
+\UnicodeMathSymbol{"1D73C}{\mbfiteta                 }{\mathalpha}{mathematical bold italic small eta}%
+\UnicodeMathSymbol{"1D73D}{\mbfittheta               }{\mathalpha}{mathematical bold italic small theta}%
+\UnicodeMathSymbol{"1D73E}{\mbfitiota                }{\mathalpha}{mathematical bold italic small iota}%
+\UnicodeMathSymbol{"1D73F}{\mbfitkappa               }{\mathalpha}{mathematical bold italic small kappa}%
+\UnicodeMathSymbol{"1D740}{\mbfitlambda              }{\mathalpha}{mathematical bold italic small lambda}%
+\UnicodeMathSymbol{"1D741}{\mbfitmu                  }{\mathalpha}{mathematical bold italic small mu}%
+\UnicodeMathSymbol{"1D742}{\mbfitnu                  }{\mathalpha}{mathematical bold italic small nu}%
+\UnicodeMathSymbol{"1D743}{\mbfitxi                  }{\mathalpha}{mathematical bold italic small xi}%
+\UnicodeMathSymbol{"1D744}{\mbfitomicron             }{\mathalpha}{mathematical bold italic small omicron}%
+\UnicodeMathSymbol{"1D745}{\mbfitpi                  }{\mathalpha}{mathematical bold italic small pi}%
+\UnicodeMathSymbol{"1D746}{\mbfitrho                 }{\mathalpha}{mathematical bold italic small rho}%
+\UnicodeMathSymbol{"1D747}{\mbfitvarsigma            }{\mathalpha}{mathematical bold italic small final sigma}%
+\UnicodeMathSymbol{"1D748}{\mbfitsigma               }{\mathalpha}{mathematical bold italic small sigma}%
+\UnicodeMathSymbol{"1D749}{\mbfittau                 }{\mathalpha}{mathematical bold italic small tau}%
+\UnicodeMathSymbol{"1D74A}{\mbfitupsilon             }{\mathalpha}{mathematical bold italic small upsilon}%
+\UnicodeMathSymbol{"1D74B}{\mbfitvarphi              }{\mathalpha}{mathematical bold italic small phi}%
+\UnicodeMathSymbol{"1D74C}{\mbfitchi                 }{\mathalpha}{mathematical bold italic small chi}%
+\UnicodeMathSymbol{"1D74D}{\mbfitpsi                 }{\mathalpha}{mathematical bold italic small psi}%
+\UnicodeMathSymbol{"1D74E}{\mbfitomega               }{\mathalpha}{mathematical bold italic small omega}%
+\UnicodeMathSymbol{"1D74F}{\mbfitpartial             }{\mathalpha}{mathematical bold italic partial differential}%
+\UnicodeMathSymbol{"1D750}{\mbfitepsilon             }{\mathalpha}{mathematical bold italic varepsilon symbol}%
+\UnicodeMathSymbol{"1D751}{\mbfitvartheta            }{\mathalpha}{mathematical bold italic theta symbol}%
+\UnicodeMathSymbol{"1D752}{\mbfitvarkappa            }{\mathalpha}{mathematical bold italic kappa symbol}%
+\UnicodeMathSymbol{"1D753}{\mbfitphi                 }{\mathalpha}{mathematical bold italic phi symbol}%
+\UnicodeMathSymbol{"1D754}{\mbfitvarrho              }{\mathalpha}{mathematical bold italic rho symbol}%
+\UnicodeMathSymbol{"1D755}{\mbfitvarpi               }{\mathalpha}{mathematical bold italic pi symbol}%
+\UnicodeMathSymbol{"1D756}{\mbfsansAlpha             }{\mathalpha}{mathematical sans-serif bold capital alpha}%
+\UnicodeMathSymbol{"1D757}{\mbfsansBeta              }{\mathalpha}{mathematical sans-serif bold capital beta}%
+\UnicodeMathSymbol{"1D758}{\mbfsansGamma             }{\mathalpha}{mathematical sans-serif bold capital gamma}%
+\UnicodeMathSymbol{"1D759}{\mbfsansDelta             }{\mathalpha}{mathematical sans-serif bold capital delta}%
+\UnicodeMathSymbol{"1D75A}{\mbfsansEpsilon           }{\mathalpha}{mathematical sans-serif bold capital epsilon}%
+\UnicodeMathSymbol{"1D75B}{\mbfsansZeta              }{\mathalpha}{mathematical sans-serif bold capital zeta}%
+\UnicodeMathSymbol{"1D75C}{\mbfsansEta               }{\mathalpha}{mathematical sans-serif bold capital eta}%
+\UnicodeMathSymbol{"1D75D}{\mbfsansTheta             }{\mathalpha}{mathematical sans-serif bold capital theta}%
+\UnicodeMathSymbol{"1D75E}{\mbfsansIota              }{\mathalpha}{mathematical sans-serif bold capital iota}%
+\UnicodeMathSymbol{"1D75F}{\mbfsansKappa             }{\mathalpha}{mathematical sans-serif bold capital kappa}%
+\UnicodeMathSymbol{"1D760}{\mbfsansLambda            }{\mathalpha}{mathematical sans-serif bold capital lambda}%
+\UnicodeMathSymbol{"1D761}{\mbfsansMu                }{\mathalpha}{mathematical sans-serif bold capital mu}%
+\UnicodeMathSymbol{"1D762}{\mbfsansNu                }{\mathalpha}{mathematical sans-serif bold capital nu}%
+\UnicodeMathSymbol{"1D763}{\mbfsansXi                }{\mathalpha}{mathematical sans-serif bold capital xi}%
+\UnicodeMathSymbol{"1D764}{\mbfsansOmicron           }{\mathalpha}{mathematical sans-serif bold capital omicron}%
+\UnicodeMathSymbol{"1D765}{\mbfsansPi                }{\mathalpha}{mathematical sans-serif bold capital pi}%
+\UnicodeMathSymbol{"1D766}{\mbfsansRho               }{\mathalpha}{mathematical sans-serif bold capital rho}%
+\UnicodeMathSymbol{"1D767}{\mbfsansvarTheta          }{\mathalpha}{mathematical sans-serif bold capital theta symbol}%
+\UnicodeMathSymbol{"1D768}{\mbfsansSigma             }{\mathalpha}{mathematical sans-serif bold capital sigma}%
+\UnicodeMathSymbol{"1D769}{\mbfsansTau               }{\mathalpha}{mathematical sans-serif bold capital tau}%
+\UnicodeMathSymbol{"1D76A}{\mbfsansUpsilon           }{\mathalpha}{mathematical sans-serif bold capital upsilon}%
+\UnicodeMathSymbol{"1D76B}{\mbfsansPhi               }{\mathalpha}{mathematical sans-serif bold capital phi}%
+\UnicodeMathSymbol{"1D76C}{\mbfsansChi               }{\mathalpha}{mathematical sans-serif bold capital chi}%
+\UnicodeMathSymbol{"1D76D}{\mbfsansPsi               }{\mathalpha}{mathematical sans-serif bold capital psi}%
+\UnicodeMathSymbol{"1D76E}{\mbfsansOmega             }{\mathalpha}{mathematical sans-serif bold capital omega}%
+\UnicodeMathSymbol{"1D76F}{\mbfsansnabla             }{\mathalpha}{mathematical sans-serif bold nabla}%
+\UnicodeMathSymbol{"1D770}{\mbfsansalpha             }{\mathalpha}{mathematical sans-serif bold small alpha}%
+\UnicodeMathSymbol{"1D771}{\mbfsansbeta              }{\mathalpha}{mathematical sans-serif bold small beta}%
+\UnicodeMathSymbol{"1D772}{\mbfsansgamma             }{\mathalpha}{mathematical sans-serif bold small gamma}%
+\UnicodeMathSymbol{"1D773}{\mbfsansdelta             }{\mathalpha}{mathematical sans-serif bold small delta}%
+\UnicodeMathSymbol{"1D774}{\mbfsansvarepsilon        }{\mathalpha}{mathematical sans-serif bold small varepsilon}%
+\UnicodeMathSymbol{"1D775}{\mbfsanszeta              }{\mathalpha}{mathematical sans-serif bold small zeta}%
+\UnicodeMathSymbol{"1D776}{\mbfsanseta               }{\mathalpha}{mathematical sans-serif bold small eta}%
+\UnicodeMathSymbol{"1D777}{\mbfsanstheta             }{\mathalpha}{mathematical sans-serif bold small theta}%
+\UnicodeMathSymbol{"1D778}{\mbfsansiota              }{\mathalpha}{mathematical sans-serif bold small iota}%
+\UnicodeMathSymbol{"1D779}{\mbfsanskappa             }{\mathalpha}{mathematical sans-serif bold small kappa}%
+\UnicodeMathSymbol{"1D77A}{\mbfsanslambda            }{\mathalpha}{mathematical sans-serif bold small lambda}%
+\UnicodeMathSymbol{"1D77B}{\mbfsansmu                }{\mathalpha}{mathematical sans-serif bold small mu}%
+\UnicodeMathSymbol{"1D77C}{\mbfsansnu                }{\mathalpha}{mathematical sans-serif bold small nu}%
+\UnicodeMathSymbol{"1D77D}{\mbfsansxi                }{\mathalpha}{mathematical sans-serif bold small xi}%
+\UnicodeMathSymbol{"1D77E}{\mbfsansomicron           }{\mathalpha}{mathematical sans-serif bold small omicron}%
+\UnicodeMathSymbol{"1D77F}{\mbfsanspi                }{\mathalpha}{mathematical sans-serif bold small pi}%
+\UnicodeMathSymbol{"1D780}{\mbfsansrho               }{\mathalpha}{mathematical sans-serif bold small rho}%
+\UnicodeMathSymbol{"1D781}{\mbfsansvarsigma          }{\mathalpha}{mathematical sans-serif bold small final sigma}%
+\UnicodeMathSymbol{"1D782}{\mbfsanssigma             }{\mathalpha}{mathematical sans-serif bold small sigma}%
+\UnicodeMathSymbol{"1D783}{\mbfsanstau               }{\mathalpha}{mathematical sans-serif bold small tau}%
+\UnicodeMathSymbol{"1D784}{\mbfsansupsilon           }{\mathalpha}{mathematical sans-serif bold small upsilon}%
+\UnicodeMathSymbol{"1D785}{\mbfsansvarphi            }{\mathalpha}{mathematical sans-serif bold small phi}%
+\UnicodeMathSymbol{"1D786}{\mbfsanschi               }{\mathalpha}{mathematical sans-serif bold small chi}%
+\UnicodeMathSymbol{"1D787}{\mbfsanspsi               }{\mathalpha}{mathematical sans-serif bold small psi}%
+\UnicodeMathSymbol{"1D788}{\mbfsansomega             }{\mathalpha}{mathematical sans-serif bold small omega}%
+\UnicodeMathSymbol{"1D789}{\mbfsanspartial           }{\mathalpha}{mathematical sans-serif bold partial differential}%
+\UnicodeMathSymbol{"1D78A}{\mbfsansepsilon           }{\mathalpha}{mathematical sans-serif bold varepsilon symbol}%
+\UnicodeMathSymbol{"1D78B}{\mbfsansvartheta          }{\mathalpha}{mathematical sans-serif bold theta symbol}%
+\UnicodeMathSymbol{"1D78C}{\mbfsansvarkappa          }{\mathalpha}{mathematical sans-serif bold kappa symbol}%
+\UnicodeMathSymbol{"1D78D}{\mbfsansphi               }{\mathalpha}{mathematical sans-serif bold phi symbol}%
+\UnicodeMathSymbol{"1D78E}{\mbfsansvarrho            }{\mathalpha}{mathematical sans-serif bold rho symbol}%
+\UnicodeMathSymbol{"1D78F}{\mbfsansvarpi             }{\mathalpha}{mathematical sans-serif bold pi symbol}%
+\UnicodeMathSymbol{"1D790}{\mbfitsansAlpha           }{\mathalpha}{mathematical sans-serif bold italic capital alpha}%
+\UnicodeMathSymbol{"1D791}{\mbfitsansBeta            }{\mathalpha}{mathematical sans-serif bold italic capital beta}%
+\UnicodeMathSymbol{"1D792}{\mbfitsansGamma           }{\mathalpha}{mathematical sans-serif bold italic capital gamma}%
+\UnicodeMathSymbol{"1D793}{\mbfitsansDelta           }{\mathalpha}{mathematical sans-serif bold italic capital delta}%
+\UnicodeMathSymbol{"1D794}{\mbfitsansEpsilon         }{\mathalpha}{mathematical sans-serif bold italic capital epsilon}%
+\UnicodeMathSymbol{"1D795}{\mbfitsansZeta            }{\mathalpha}{mathematical sans-serif bold italic capital zeta}%
+\UnicodeMathSymbol{"1D796}{\mbfitsansEta             }{\mathalpha}{mathematical sans-serif bold italic capital eta}%
+\UnicodeMathSymbol{"1D797}{\mbfitsansTheta           }{\mathalpha}{mathematical sans-serif bold italic capital theta}%
+\UnicodeMathSymbol{"1D798}{\mbfitsansIota            }{\mathalpha}{mathematical sans-serif bold italic capital iota}%
+\UnicodeMathSymbol{"1D799}{\mbfitsansKappa           }{\mathalpha}{mathematical sans-serif bold italic capital kappa}%
+\UnicodeMathSymbol{"1D79A}{\mbfitsansLambda          }{\mathalpha}{mathematical sans-serif bold italic capital lambda}%
+\UnicodeMathSymbol{"1D79B}{\mbfitsansMu              }{\mathalpha}{mathematical sans-serif bold italic capital mu}%
+\UnicodeMathSymbol{"1D79C}{\mbfitsansNu              }{\mathalpha}{mathematical sans-serif bold italic capital nu}%
+\UnicodeMathSymbol{"1D79D}{\mbfitsansXi              }{\mathalpha}{mathematical sans-serif bold italic capital xi}%
+\UnicodeMathSymbol{"1D79E}{\mbfitsansOmicron         }{\mathalpha}{mathematical sans-serif bold italic capital omicron}%
+\UnicodeMathSymbol{"1D79F}{\mbfitsansPi              }{\mathalpha}{mathematical sans-serif bold italic capital pi}%
+\UnicodeMathSymbol{"1D7A0}{\mbfitsansRho             }{\mathalpha}{mathematical sans-serif bold italic capital rho}%
+\UnicodeMathSymbol{"1D7A1}{\mbfitsansvarTheta        }{\mathalpha}{mathematical sans-serif bold italic capital theta symbol}%
+\UnicodeMathSymbol{"1D7A2}{\mbfitsansSigma           }{\mathalpha}{mathematical sans-serif bold italic capital sigma}%
+\UnicodeMathSymbol{"1D7A3}{\mbfitsansTau             }{\mathalpha}{mathematical sans-serif bold italic capital tau}%
+\UnicodeMathSymbol{"1D7A4}{\mbfitsansUpsilon         }{\mathalpha}{mathematical sans-serif bold italic capital upsilon}%
+\UnicodeMathSymbol{"1D7A5}{\mbfitsansPhi             }{\mathalpha}{mathematical sans-serif bold italic capital phi}%
+\UnicodeMathSymbol{"1D7A6}{\mbfitsansChi             }{\mathalpha}{mathematical sans-serif bold italic capital chi}%
+\UnicodeMathSymbol{"1D7A7}{\mbfitsansPsi             }{\mathalpha}{mathematical sans-serif bold italic capital psi}%
+\UnicodeMathSymbol{"1D7A8}{\mbfitsansOmega           }{\mathalpha}{mathematical sans-serif bold italic capital omega}%
+\UnicodeMathSymbol{"1D7A9}{\mbfitsansnabla           }{\mathalpha}{mathematical sans-serif bold italic nabla}%
+\UnicodeMathSymbol{"1D7AA}{\mbfitsansalpha           }{\mathalpha}{mathematical sans-serif bold italic small alpha}%
+\UnicodeMathSymbol{"1D7AB}{\mbfitsansbeta            }{\mathalpha}{mathematical sans-serif bold italic small beta}%
+\UnicodeMathSymbol{"1D7AC}{\mbfitsansgamma           }{\mathalpha}{mathematical sans-serif bold italic small gamma}%
+\UnicodeMathSymbol{"1D7AD}{\mbfitsansdelta           }{\mathalpha}{mathematical sans-serif bold italic small delta}%
+\UnicodeMathSymbol{"1D7AE}{\mbfitsansvarepsilon      }{\mathalpha}{mathematical sans-serif bold italic small varepsilon}%
+\UnicodeMathSymbol{"1D7AF}{\mbfitsanszeta            }{\mathalpha}{mathematical sans-serif bold italic small zeta}%
+\UnicodeMathSymbol{"1D7B0}{\mbfitsanseta             }{\mathalpha}{mathematical sans-serif bold italic small eta}%
+\UnicodeMathSymbol{"1D7B1}{\mbfitsanstheta           }{\mathalpha}{mathematical sans-serif bold italic small theta}%
+\UnicodeMathSymbol{"1D7B2}{\mbfitsansiota            }{\mathalpha}{mathematical sans-serif bold italic small iota}%
+\UnicodeMathSymbol{"1D7B3}{\mbfitsanskappa           }{\mathalpha}{mathematical sans-serif bold italic small kappa}%
+\UnicodeMathSymbol{"1D7B4}{\mbfitsanslambda          }{\mathalpha}{mathematical sans-serif bold italic small lambda}%
+\UnicodeMathSymbol{"1D7B5}{\mbfitsansmu              }{\mathalpha}{mathematical sans-serif bold italic small mu}%
+\UnicodeMathSymbol{"1D7B6}{\mbfitsansnu              }{\mathalpha}{mathematical sans-serif bold italic small nu}%
+\UnicodeMathSymbol{"1D7B7}{\mbfitsansxi              }{\mathalpha}{mathematical sans-serif bold italic small xi}%
+\UnicodeMathSymbol{"1D7B8}{\mbfitsansomicron         }{\mathalpha}{mathematical sans-serif bold italic small omicron}%
+\UnicodeMathSymbol{"1D7B9}{\mbfitsanspi              }{\mathalpha}{mathematical sans-serif bold italic small pi}%
+\UnicodeMathSymbol{"1D7BA}{\mbfitsansrho             }{\mathalpha}{mathematical sans-serif bold italic small rho}%
+\UnicodeMathSymbol{"1D7BB}{\mbfitsansvarsigma        }{\mathalpha}{mathematical sans-serif bold italic small final sigma}%
+\UnicodeMathSymbol{"1D7BC}{\mbfitsanssigma           }{\mathalpha}{mathematical sans-serif bold italic small sigma}%
+\UnicodeMathSymbol{"1D7BD}{\mbfitsanstau             }{\mathalpha}{mathematical sans-serif bold italic small tau}%
+\UnicodeMathSymbol{"1D7BE}{\mbfitsansupsilon         }{\mathalpha}{mathematical sans-serif bold italic small upsilon}%
+\UnicodeMathSymbol{"1D7BF}{\mbfitsansvarphi          }{\mathalpha}{mathematical sans-serif bold italic small phi}%
+\UnicodeMathSymbol{"1D7C0}{\mbfitsanschi             }{\mathalpha}{mathematical sans-serif bold italic small chi}%
+\UnicodeMathSymbol{"1D7C1}{\mbfitsanspsi             }{\mathalpha}{mathematical sans-serif bold italic small psi}%
+\UnicodeMathSymbol{"1D7C2}{\mbfitsansomega           }{\mathalpha}{mathematical sans-serif bold italic small omega}%
+\UnicodeMathSymbol{"1D7C3}{\mbfitsanspartial         }{\mathalpha}{mathematical sans-serif bold italic partial differential}%
+\UnicodeMathSymbol{"1D7C4}{\mbfitsansepsilon         }{\mathalpha}{mathematical sans-serif bold italic varepsilon symbol}%
+\UnicodeMathSymbol{"1D7C5}{\mbfitsansvartheta        }{\mathalpha}{mathematical sans-serif bold italic theta symbol}%
+\UnicodeMathSymbol{"1D7C6}{\mbfitsansvarkappa        }{\mathalpha}{mathematical sans-serif bold italic kappa symbol}%
+\UnicodeMathSymbol{"1D7C7}{\mbfitsansphi             }{\mathalpha}{mathematical sans-serif bold italic phi symbol}%
+\UnicodeMathSymbol{"1D7C8}{\mbfitsansvarrho          }{\mathalpha}{mathematical sans-serif bold italic rho symbol}%
+\UnicodeMathSymbol{"1D7C9}{\mbfitsansvarpi           }{\mathalpha}{mathematical sans-serif bold italic pi symbol}%
+\UnicodeMathSymbol{"1D7CA}{\mbfDigamma               }{\mathalpha}{mathematical bold capital digamma}%
+\UnicodeMathSymbol{"1D7CB}{\mbfdigamma               }{\mathalpha}{mathematical bold small digamma}%
+\UnicodeMathSymbol{"1D7CE}{\mbfzero                  }{\mathord}{mathematical bold digit 0}%
+\UnicodeMathSymbol{"1D7CF}{\mbfone                   }{\mathord}{mathematical bold digit 1}%
+\UnicodeMathSymbol{"1D7D0}{\mbftwo                   }{\mathord}{mathematical bold digit 2}%
+\UnicodeMathSymbol{"1D7D1}{\mbfthree                 }{\mathord}{mathematical bold digit 3}%
+\UnicodeMathSymbol{"1D7D2}{\mbffour                  }{\mathord}{mathematical bold digit 4}%
+\UnicodeMathSymbol{"1D7D3}{\mbffive                  }{\mathord}{mathematical bold digit 5}%
+\UnicodeMathSymbol{"1D7D4}{\mbfsix                   }{\mathord}{mathematical bold digit 6}%
+\UnicodeMathSymbol{"1D7D5}{\mbfseven                 }{\mathord}{mathematical bold digit 7}%
+\UnicodeMathSymbol{"1D7D6}{\mbfeight                 }{\mathord}{mathematical bold digit 8}%
+\UnicodeMathSymbol{"1D7D7}{\mbfnine                  }{\mathord}{mathematical bold digit 9}%
+\UnicodeMathSymbol{"1D7D8}{\Bbbzero                  }{\mathord}{mathematical double-struck digit 0}%
+\UnicodeMathSymbol{"1D7D9}{\Bbbone                   }{\mathord}{mathematical double-struck digit 1}%
+\UnicodeMathSymbol{"1D7DA}{\Bbbtwo                   }{\mathord}{mathematical double-struck digit 2}%
+\UnicodeMathSymbol{"1D7DB}{\Bbbthree                 }{\mathord}{mathematical double-struck digit 3}%
+\UnicodeMathSymbol{"1D7DC}{\Bbbfour                  }{\mathord}{mathematical double-struck digit 4}%
+\UnicodeMathSymbol{"1D7DD}{\Bbbfive                  }{\mathord}{mathematical double-struck digit 5}%
+\UnicodeMathSymbol{"1D7DE}{\Bbbsix                   }{\mathord}{mathematical double-struck digit 6}%
+\UnicodeMathSymbol{"1D7DF}{\Bbbseven                 }{\mathord}{mathematical double-struck digit 7}%
+\UnicodeMathSymbol{"1D7E0}{\Bbbeight                 }{\mathord}{mathematical double-struck digit 8}%
+\UnicodeMathSymbol{"1D7E1}{\Bbbnine                  }{\mathord}{mathematical double-struck digit 9}%
+\UnicodeMathSymbol{"1D7E2}{\msanszero                }{\mathord}{mathematical sans-serif digit 0}%
+\UnicodeMathSymbol{"1D7E3}{\msansone                 }{\mathord}{mathematical sans-serif digit 1}%
+\UnicodeMathSymbol{"1D7E4}{\msanstwo                 }{\mathord}{mathematical sans-serif digit 2}%
+\UnicodeMathSymbol{"1D7E5}{\msansthree               }{\mathord}{mathematical sans-serif digit 3}%
+\UnicodeMathSymbol{"1D7E6}{\msansfour                }{\mathord}{mathematical sans-serif digit 4}%
+\UnicodeMathSymbol{"1D7E7}{\msansfive                }{\mathord}{mathematical sans-serif digit 5}%
+\UnicodeMathSymbol{"1D7E8}{\msanssix                 }{\mathord}{mathematical sans-serif digit 6}%
+\UnicodeMathSymbol{"1D7E9}{\msansseven               }{\mathord}{mathematical sans-serif digit 7}%
+\UnicodeMathSymbol{"1D7EA}{\msanseight               }{\mathord}{mathematical sans-serif digit 8}%
+\UnicodeMathSymbol{"1D7EB}{\msansnine                }{\mathord}{mathematical sans-serif digit 9}%
+\UnicodeMathSymbol{"1D7EC}{\mbfsanszero              }{\mathord}{mathematical sans-serif bold digit 0}%
+\UnicodeMathSymbol{"1D7ED}{\mbfsansone               }{\mathord}{mathematical sans-serif bold digit 1}%
+\UnicodeMathSymbol{"1D7EE}{\mbfsanstwo               }{\mathord}{mathematical sans-serif bold digit 2}%
+\UnicodeMathSymbol{"1D7EF}{\mbfsansthree             }{\mathord}{mathematical sans-serif bold digit 3}%
+\UnicodeMathSymbol{"1D7F0}{\mbfsansfour              }{\mathord}{mathematical sans-serif bold digit 4}%
+\UnicodeMathSymbol{"1D7F1}{\mbfsansfive              }{\mathord}{mathematical sans-serif bold digit 5}%
+\UnicodeMathSymbol{"1D7F2}{\mbfsanssix               }{\mathord}{mathematical sans-serif bold digit 6}%
+\UnicodeMathSymbol{"1D7F3}{\mbfsansseven             }{\mathord}{mathematical sans-serif bold digit 7}%
+\UnicodeMathSymbol{"1D7F4}{\mbfsanseight             }{\mathord}{mathematical sans-serif bold digit 8}%
+\UnicodeMathSymbol{"1D7F5}{\mbfsansnine              }{\mathord}{mathematical sans-serif bold digit 9}%
+\UnicodeMathSymbol{"1D7F6}{\mttzero                  }{\mathord}{mathematical monospace digit 0}%
+\UnicodeMathSymbol{"1D7F7}{\mttone                   }{\mathord}{mathematical monospace digit 1}%
+\UnicodeMathSymbol{"1D7F8}{\mtttwo                   }{\mathord}{mathematical monospace digit 2}%
+\UnicodeMathSymbol{"1D7F9}{\mttthree                 }{\mathord}{mathematical monospace digit 3}%
+\UnicodeMathSymbol{"1D7FA}{\mttfour                  }{\mathord}{mathematical monospace digit 4}%
+\UnicodeMathSymbol{"1D7FB}{\mttfive                  }{\mathord}{mathematical monospace digit 5}%
+\UnicodeMathSymbol{"1D7FC}{\mttsix                   }{\mathord}{mathematical monospace digit 6}%
+\UnicodeMathSymbol{"1D7FD}{\mttseven                 }{\mathord}{mathematical monospace digit 7}%
+\UnicodeMathSymbol{"1D7FE}{\mtteight                 }{\mathord}{mathematical monospace digit 8}%
+\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-2019  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/tex/latex/optex/base/unimath-table.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/usebib.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/usebib.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/usebib.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,351 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \MakeReference {Reading bib databases <2020-03-13>} % loaded on demand by \usebib
+
+   \_doc -----------------------------
+   Loading the `librarian.tex` macro package. See `texdoc librarian`
+   for more information about it.
+   \_cod -----------------------------
+
+\_def\_tmp{}
+\_let\_errmessageori=\_errmessage % we needn't \errmessage during \input librarian
+\_def\_errmessage#1{\_def\_tmp{error}}
+\_let\_newwriteori=\_newwrite % we need not to create \jobname.lbr:
+\_def\_newwrite#1{\_csname lb at restoreat\_endcsname \_endinput}
+\_def\_tmpb{\_catcode`\_=12 \_input librarian \_catcode`\_=11 }\_tmpb
+\_let\_errmessage=\_errmessageori
+\_let\_newwrite=\_newwriteori
+\_ifx\_tmp\_empty\_else
+  \_def\_usebib/#1 (#2) #3 {%
+     \_opwarning{eTeX and (pdfTeX or XeTeX or LuaTeX) not detected}%
+     \_immediate\_write16{\_space\_space
+               But librarian package needs it. \_noexpand\usebib ignored.}%
+  }
+  \_endinput \_fi
+\_private \BibFile \ReadList \SortList \SortingOrder \NameCount \AbbreviateFirstname
+   \CreateField \RetrieveFieldInFor \RetrieveFieldIn ;
+
+   \_doc -----------------------------
+   The `\usebib` command.
+   \_cod -----------------------------
+
+\_def\_usebib/#1 (#2) #3 {%
+  \_ifx\_citelist\_empty
+     \_opwarning{No cited items. \_noexpand\usebib ignored}%
+  \_else
+     \_bgroup \_par
+        \_emergencystretch=.3\_hsize
+        \_ifx\_bibpart\_undefined \_def\_bibpart{none}\_fi
+        \_def\_optexbibstyle{#2}%
+        \_setctable\_optexcatcodes
+        \_input bib-#2.opm
+        \_the \_bibtexhook
+        \_let\_citeI=\_relax \_xdef\_citelist{\_citelist\_citelistB}%
+        \_global\_let\_addcitelist=\_writeXcite
+        \_def\_tmp##1[*]##2\_relax{\_def\_tmp{##2}}\_expandafter\_tmp\_citelist[*]\_relax
+        \_ifx\_tmp\_empty\_else % there was \nocite[*] used. 
+           \_setbox0=\_vbox{\_hsize=\_maxdimen \_def\_citelist{}\_adef@{\_readbibentry}%
+           \_input #3.bib
+           \_expandafter}\_expandafter\_def\_expandafter\_citelist\_expandafter{\_citelist}%
+        \_fi
+        \_def\_citeI[##1]{\_csname lb at cite\_endcsname{##1}{\_bibpart}{}{}}\_citelist
+        \_BibFile{#3}%
+        \_if s#1\_SortList{\_bibpart}\_fi
+        \_ReadList{\_bibpart}%
+        \_restorectable
+     \_egroup
+  \_fi
+}
+\_def\_readbibentry#1#{\_readbibentryA}
+\_def\_readbibentryA#1{\_readbibentryB#1,,\_relax!.}
+\_def\_readbibentryB#1#2,#3\_relax!.{\_addto\_citelist{\_citeI[#1#2]}}
+
+   \_doc -----------------------------
+   Corrections in librarian macros.
+   \_cod -----------------------------
+
+\_tmpnum=\_catcode`\@  \_catcode`\@=11
+\_def\lb at checkmissingentries#1,{% we needn't \errmessage here, only \opmacwarning
+  \_def\lb at temp{#1}%
+  \_unless\_ifx\lb at temp\lb at eoe
+    \lb at ifcs{#1}{fields}%
+            {}%
+            {\_opwarning{\_string\_usebib: entry [#1] isn't found in .bib file(s)}}%
+    \_ea\lb at checkmissingentries
+  \_fi
+}
+\_def\lb at readentry#1#2#3,{% space before key have to be ingnored
+  \_def\lb at temp{#2#3}%      we need case sensitive keys
+  \_def\lb at next{\_ea\lb at gotoat\lb at gobbletoeoe}%
+  \lb at ifcs\lb at temp{requested}%
+          {\_let\lb at entrykey\lb at temp
+           \lb at ifcs\lb at entrykey{fields}{}%
+                {\lb at defcs\lb at entrykey{fields}{}%
+                 \_lowercase{\lb at addfield{entrytype}{#1}}%
+                 \_let\lb at next\lb at analyzeentry}}{}%
+  \lb at next
+}
+\_let\lb at compareA=\lb at compare
+\_let\lb at preparesortA=\lb at preparesort
+\_def\lb at compare#1\lb at eoe#2\lb at eoe{% SpecialSort:
+  \_ifx\lb at sorttype\lb at namestring
+     \_ifx\_sortfield\_undefined \lb at compareA#1\lb at eoe#2\lb at eoe
+     \_else 
+        \_ea\_RetrieveFieldInFor\_ea{\_sortfield}\lb at entrykey\lb at temp
+        \_ifx\lb at temp\_empty \_toks1={#1\lb at eoe}\_else \_toks1=\_ea{\lb at temp\lb at eoe}\_fi
+        \_ea\_RetrieveFieldInFor\_ea{\_sortfield}\lb at currententry\lb at temp
+        \_ifx\lb at temp\_empty \_toks2={#2\lb at eoe}\_else \_toks2=\_ea{\lb at temp\lb at eoe}\_fi
+        \_edef\lb at temp{\_noexpand\lb at compareA\_space\_the\_toks1 \_space\_the\_toks2}\lb at temp
+     \_fi
+  \_else \lb at compareA#1\lb at eoe#2\lb at eoe \_fi
+}
+\_def\lb at preparesort#1#2\lb at eoe{%
+  \_if#1-%
+    \_def\lb at sorttype{#2}%
+  \_else
+    \_def\lb at sorttype{#1#2}%
+  \_fi
+  \lb at preparesortA#1#2\lb at eoe
+}
+\_def\_SpecialSort#1{\_def\_sortfield{#1}}
+\_def\WriteImmediateInfo#1{}  % the existence of .lbr file bocks new reading of .bib
+\_catcode`\@=\_tmpnum
+
+   \_doc -----------------------------
+   Main action per every entry.
+   \_cod -----------------------------
+
+\_def\MakeReference{\_par \_bibskip
+  \_advance\_bibnum by1
+  \_isdefined{_bim:\_the\_bibnum}\_iftrue
+     \_edef\_tmpb{\_csname _bim:\_the\_bibnum\_endcsname}%
+     \_bibmark=\_ea{\_tmpb}%
+  \_else \_bibmark={}\_fi
+  \_edef\_tmpb{\EntryKey}%
+  \_noindent \_dest[cite:\_the\_bibnum]\_printlabel\EntryKey 
+  \_printbib 
+  {%  
+     \_RetrieveFieldIn{entrytype}\_entrytype
+     \_csname _print:BEGIN\_endcsname
+     \_isdefined{_print:\_entrytype}\_iftrue 
+        \_csname _print:\_entrytype\_endcsname
+     \_else 
+        \_ifx\_entrytype\_empty \_else
+           \_opwarning{Entrytype @\_entrytype\_space from [\EntryKey] undefined}%
+           \_csname _print:misc\_endcsname
+     \_fi\_fi
+     \_csname _print:END\_endcsname
+     \_ifx\_wref\_wrefrelax\_else 
+         \_immediate\_wref\_Xbib{{\EntryKey}{\_the\_bibnum}{\_the\_bibmark}}\_fi
+  }\_par
+}
+
+   \_doc -----------------------------
+   The \`\_bprinta`, \`\_bprintb`, \`\_bprintc`, \`\_bprintv` 
+   commands used in the style files:
+   \_cod -----------------------------
+
+\_def\_bprinta {\_bprintb*}
+\_def\_bprintb #1[#2#3]{%
+   \_def\_bibfieldname{#2#3}%
+   \_if!#2\_relax 
+      \_def\_bibfieldname{#3}%
+      \_RetrieveFieldIn{#3}\_bibfield
+      \_ifx\_bibfield\_empty\_else
+         \_RetrieveFieldIn{#3number}\_namecount
+         \_def\_bibfield{\_csname _Read#3\_ea\_endcsname \_csname _pp:#3\_endcsname}%
+      \_fi
+   \_else
+      \_RetrieveFieldIn{#2#3}\_bibfield
+   \_fi
+   \_if^#1^%
+      \_ifx\_bibfield\_empty \_ea\_ea\_ea \_doemptyfield
+      \_else \_ea\_ea\_ea \_dofullfield \_fi
+   \_else \_ea \_bprintaA
+   \_fi
+}
+\_def\_dofullfield#1#2{\_def\_dofield##1{#1}\_ea\_dofield\_ea{\_bibfield}}
+\_def\_doemptyfield#1#2{\_def\_dofield##1{#2}\_ea\_dofield\_ea{\_bibfield}}
+\_let\_Readauthor=\ReadAuthor  \_let\_Readeditor=\ReadEditor
+\_def\_bprintaA #1#2{\_ifx\_bibfield\_empty #2\_else\_bprintaB #1**\_eee\_fi}
+\_def\_bprintaB #1*#2*#3\_eee{\_if^#3^#1\_else\_ea\_bprintaC\_ea{\_bibfield}{#1}{#2}\_fi}
+\_def\_bprintaC #1#2#3{#2#1#3}
+\_def\_bprintc#1#2{\_bprintcA#1#2**\_relax}
+\_def\_bprintcA#1#2*#3*#4\_relax{\_ifx#1\_empty \_else \_if^#4^#2\_else#2#1#3\_fi\_fi}
+\_def\_bprintv [#1]#2#3{\_def\_tmpa{#2}\_def\_tmpb{#3}\_bprintvA #1,,}
+\_def\_bprintvA #1,{%
+   \_if^#1^\_tmpb\_else
+      \_RetrieveFieldIn{#1}\_tmp
+      \_ifx \_tmp\_empty 
+      \_else \_tmpa \_def\_tmpb{}\_def\_tmpa{}%
+      \_fi
+   \_ea \_bprintvA
+   \_fi
+} 
+\_sdef{_pp:author}{\_letNames\_authorname}
+\_sdef{_pp:editor}{\_letNames\_editorname}
+\_def\_letNames{\_let\_Firstname=\Firstname \_let\_Lastname=\Lastname
+   \_let\_Von=\Von \_let\_Junior=\Junior
+}
+
+   \_doc -----------------------------
+   Various macros + multilinguas.
+   \_cod -----------------------------
+
+\_def\_bibwarning{\_opwarning{Missing field "\_bibfieldname" in [\EntryKey]}}  
+
+\_def\_mtdef#1#2#3#4{\_sdef{_mt:#1:en}{#2} \_sdef{_mt:#1:cs}{#3}
+  \_if$#4$\_slet{_mt:#1:sk}{_mt:#1:cs}
+  \_else  \_sdef{_mt:#1:sk}{#4}
+  \_fi
+}
+
+\_endcode
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+The file `usebib.opm` implements the command
+`\usebib/<sorttype> (<style>) <bibfiles>`
+where `<sorttype>` is one letter `c` (references ordered by citation order in
+the text) or `s` (references ordered by key in the style file), 
+`<style>` is the part of the name `bib-<style>.opm` of the style file
+and `<bibfiles>` are one or more `.bib` file names without suffix separated by
+comma without space. Example:
+
+\begtt
+\usebib/s (simple) mybase,yourbase
+\endtt
+
+This command reads the `<bibfiles>` directly and creates the list of
+bibliographics references (only those declared by by `\cite[]` or
+`\nocite[]` in the text). The formatting of such references is defined in the style
+file. The usage is mentioned in user documentation too.
+
+The principle \"first entry wins" is used. Suppose `\usebib/s (simple) local,global`.
+If an entry with the same label is declared in `local.bib` and in
+`global.bib` too then the first wins. So, you can set an exceptions in your
+`local.bib` file for your document.
+
+\seccc Notes for style writers
+
+The `bib-<style>.opm` file must define the commands:
+
+\begitems
+* `\_authorname` ... formatting of one name in the authors list. The macro can
+    use the following data: `\_NameCount` (the number of the currently
+    processed author name in the list), `0\_namecount` (the total number of the
+    authors in the list), `\_Lastname`, `\_Firstname`, `\_Von`, `\_Junior` 
+    (the parts of the name). See the documentation of the librarian package 
+    for more info.
+* `\_editorname` ... the same as `\_authorname`, but for editors list.
+* `_print:<entrytype>` (defined by `\_sdef`) for formatting the entry of `<entrytype>`.
+    The `<entrytype>` have to be lowercase. This command can use the command:
+* `\_bprinta [<fieldname>]  {<if defined>} {<if not defined>}`. The part <if defined>
+    is executed if <fieldname> is declared in .bib file for the entry which is
+    currently processed. Else the part <if not defined> is processed.
+    The part <if defined> can include the `*` parameter which is replaced
+    by the value of the <fieldname>. The part <if not defined> can include
+    the `\_bibwarning` command if the <fieldname> is mandatory.
+* `\_bprintb [<fieldname>]  {<if defined>} {<if not defined>}`. The same as
+    `\_bprinta`, but the `##1` parameter is used instead `*`. Differences: `##1`
+    parameter can be used more than once and can be enclosed in nested
+    braces. The * parameter can be used at most once and cannot be enclosed
+    in braces. Warning: if the `\_bprintb` commands are nested (`\_bprintb` in
+    `\_bprintb`), then you need to write `####1` parameter for internal `\_bprintb`.
+    But if `\_bprinta` commands are nested then the parameter is not duplicated.
+* `\_pbprintc \macro {<if non-empty>}`. The <if non-empty> part is executed if
+    `\macro` is non-empty. The * parameter can be used, it is replaced by
+    the `\macro`.
+* `\_bprintv [<field1>,<field2>,...] {<if defined>} {<if not defined>}`.
+    The part <if defined> is executed if <field1> or <filed2> or ...
+    is defined, else the second part <if not defined> is executed.
+    There is one filed name or the list field names separated by commas.  
+    The parts cannot include any parameter.
+\enditems
+%
+There are two special fieldnames: `!author` and `!editor`. The processed list of
+authors or editors (by repeatedly calling `\_authorname` or `\_editorname`) are 
+used here insted of raw data.
+
+You can define `_print:BEGIN` and/or `_print:END` which is executed at the begin or
+end of each `<entrytype>`. The formatting does not solve the numbering and
+paragraph indentation of the entry. This is processed by `\_printbib` macro
+used in \OpTeX/ (and may be redefined by the author or document designer).
+
+You can declare `\_bimark={something}` in the `_print:END` macro. This bibmark is
+saved to the `.ref` file (created by \OpTeX/) and used in the next \TeX/ run as 
+`\cite` marks when `\nonumcitations` is set.
+
+The whole style file is read in the group during `\usebib` command is executed
+before typesetting the reference list. Each definition or setting is local
+here.
+
+If you are using non-standard fieldnames in .bib database and bib. style,
+you has to declare them by `\_CreateField {<fieldname>}`.
+
+You can declare `\_SortingOrder` in the manner documented by librarian package.
+
+If your style adds some words or abbreviations you can make them
+multilingual by saying `\_mtext{<label>}` instead such word and
+`\_mtdef{<label>} {<English>} {<Czech>} {<Slovak>}` declaration.
+The right part is printed by current value of the `\language` regiter.
+You can add more languages by re-defining the `\_mtdef` command. 
+See the section \ref[langphrases] for more information. 
+
+If you are using `\nonumcitations`, then the `\_bibmark` tokens register have to be
+prepared in the style file (in `_print:BEGIN`, `_print:END`, in
+`\_authorname` etc.) This value will be used in the `\cite[]` places 
+in the document.
+
+The example of the style file is in `bib-simple.opm`.
+
+User or author of the `bib.` style can create the hidden field which has a
+precedence while sorting names. Example:
+
+\begtt
+\CreateField {sortedby}
+\SpecialSort {sortedby}
+\endtt
+Suppose that the .bib file includes:
+\begtt
+...
+author   = "Jan Chadima",
+sortedby = "Hzzadima Jan",
+...
+\endtt
+Now, this author is sorted between H and I, because the Ch digraph in this
+name has to be sorted by this rule.
+
+If you need (for example) to place the autocitations before other citations,
+then you can mark your entries in `.bib` file by `sortedby = "@"`, because this
+character is sorted before `A`.
+
+\_endinput
+
+History:
+--------
+
+Apr. 2014:  released in OPmac
+Jan. 2016:  "first entry wins" implemented
+Apr. 2016:  \readentry -> \readbibentry, \usebib->\MakeReference
+Feb. 2018:  \input librarian does not create \jobname.lbr
+
+% Source:
+
+% opmac-bib
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Petr Olsak, version Feb. 2018 (beta)
+
+% This is module for OPmac macros, see http://petr.olsak.net/opmac.html
+% The command:
+%    \usebib/<sorttype> (<style>) (bibfiles>
+% for direct reading .bib files by OPmac macros (without bibTeX) is implemented here.
+% The implementation depends on librarian.tex package by Paul Isambert.
+% Use:
+%    \input opmac  \input opmac-bib
+% or simply:
+%    \input opmac-bib
+% before using the command \usebib.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% end 
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/usebib.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/base/verbatim.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/base/verbatim.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/base/verbatim.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,267 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\_codedecl \begtt {Verbatim <2020-04-22>} % preloaded in format
+
+   \_doc ----------------------------
+   The internal parameters 
+   \`\_ttskip`, \`\_ttpenalty`, \`\_viline`, \`\_vifile` and \`\_ttfont`
+   for verbatim macros are set. 
+   \_cod ----------------------------
+
+\_def\_ttskip{\_medskip}           % space above and below \begtt, \verbinput
+\_mathchardef\_ttpenalty=100       % penalty between lines in \begtt, \verbinput
+\_newcount\_viline                 % last line number in \verbinput
+\_newread\_vifile                  % file given by \verinput
+\_def\_ttfont{\_tt}                % default tt font
+
+   \_doc ----------------------------
+   \`\code``{<text>}` expands to `\detokenize{<text>}` when `\escapechar=-1`. In
+   order to do it more robust when it is used in `\write` then it expands as
+   noexpanded `\code<space>` (followed by space in its csname). This macro
+   does the real work.
+
+   The \`\_printinverbatim``{<text>}` macro is used for `\code{<text>}` printing and for
+   \code{`}<text>\code{`} printing. It is defined as `\hbox`, so the in-verbatim <text> 
+   will be never broken. But you can re-define this macro.
+
+   When `\code` occurs in PDF outlines then it does the same as `\detokenize`.
+   The macro for preparing outlines sets `\escapechar` to $-1$ and uses
+   \^`\_regoul` token list before `\edef`.
+
+   The `\code` is not `\proteced` because we want it expands to
+   `\unexpanded{\code<space>{<text>}}` in `\write` parameters. This protect the 
+   expansions of the `\code` parameter (like `\\`, `\^` etc.).
+   \_cod ----------------------------
+
+\_def\_code#1{\_unexpanded\_ea{\_csname _code \_endcsname{#1}}}
+\_protected\_sdef{_code }#1{{\_escapechar=-1 \_ttfont \_the\_everyintt \_relax 
+   \_ea\_printinverbatim\_ea{\_detokenize{#1}}}}
+\_def\_printinverbatim#1{\_leavevmode\_hbox{#1}}
+
+\_regmacro {}{}{\_let\code=\_detokenize \_let\_code=\_detokenize}
+\_public \code ;
+
+   \_doc ----------------------------
+   The \`\_setverb` macro sets all catcodes to \"verbatim mode". It should be used only 
+   in a group, so we prepare a new catcode table with \"verbatim" catcodes and we define
+   it as\nl `\_catcodetable`\`\_verbatimcatcodes`. After the group is finished then
+   original catcode table is restored.
+   \_cod ----------------------------
+
+\_newcatcodetable \_verbatimcatcodes
+\_def\_setverb{\_begingroup
+   \_def\do##1{\_catcode`##1=12 }
+   \_dospecials   
+   \_savecatcodetable\_verbatimcatcodes % all characters are normal
+   \_endgroup
+}
+\_setverb
+\_def\_setverb{\_catcodetable\_verbatimcatcodes }%
+
+   \_doc ----------------------------
+   \`\activettchar``<char>` saves original catcode of previously declared `<char>` (if
+   such character was declared) using \`\_savedttchar` and \`\_savedttcharc`
+   values. Then new such values are stored. The declared charater is activated
+   by `\_adef` as a macro (active character) which opens a group, 
+   does `\_setverb` and other settings and reads its parameter until second the same 
+   character. This is done by the \`\_readverb` macro. Finally it prints scanned
+   `<text>` by \^`\_printinverbatim` and closes group. Suppose that `\activettchar"` is
+   used. Then the following work is schematically done:
+   \begtt
+   \_def "{\_begingroup \_setverb ... \_readverb}
+   \_def \_readverb #1"{\_printinverbatim{#1}\_endgroup}
+   \endtt
+   Note that the second occurrence of `"` is not active because `\_setverb`
+   deactivates it.
+   \_cod ----------------------------
+
+\_def\_activettchar#1{%
+   \_ifx\_savedttchar\_undefined\_else \_catcode\_savedttchar=\_savedttcharc \_fi
+   \_chardef\_savedttchar=`#1
+   \_chardef\_savedttcharc=\_catcode`#1
+   \_adef{#1}{\_begingroup \_setverb \_adef{ }{\ }\_ttfont \_the\_everyintt\_relax \_readverb}%
+   \_def\_readverb ##1#1{\_printinverbatim{##1}\_endgroup}%
+}
+\_public \activettchar ;
+
+   \_doc ----------------------------
+   \`\begtt` is defined only as public. We don't need private `\_begtt` variant.
+   This macro is defined by `\eoldef`, so user can put a parameter at the
+   same line where `\begtt` is. This `#1` parameter is used after `\_everytt`
+   parameters settings, so user can change them locally.
+
+   The `\begtt` macro opens group, does \^`\_setverb` and another preprocessing, sets
+   `\endlinechar` to `^^J` and reads the following text in verbatim mode 
+   until \`\endtt` occurs. This scanning is done by \`\_startverb` macro which is
+   defined as:
+   \begtt \adef/{\bslash}
+   \_def\_startverb #1/endtt #2^^J{...}
+   \endtt
+   We must to ensure that the backslash in `\endtt` has category 12 (this is a
+   reason of the `\ea` chain in real code).
+   The `#2` is something between `\endtt` and end of the same line and it is simply
+   ignored.
+
+   The `\_startverb` puts the scanned data to \`\_prepareverbdata`. It sets the data
+   to `\_tmpb` without changes by default, but you should re-define it in order
+   to do special changes, if you want. (For example, \^`\hisyntax` redefines
+   this macro.) The scanned data have `^^J` at each end of line and all spaces are
+   active characters (defined as {\visiblesp`\ `}). 
+   Other characters have normal category 11 or 12.  
+
+   When `\_prepareverbdata` finishes then `\_startverb` runs \`\_printverb` loop
+   over each line of the data and does a final work: last skip plus `\noindent`
+   in the next paragraph. 
+
+   The `\_printverb` macro calls \`\_printverbline``{<line>}` to each scanned line of
+   verbatim text. This macro expect that it strarts in vertical mode and it must
+   do `\par` in order to return the vertical mode. The \`\_printverblinenum`
+   is used here: it does nothing when `\_ttline`\code{<0} else it prints the line
+   number using `\_llap`.
+   \_cod ----------------------------
+
+\_eoldef \begtt#1{\_par \_wipeepar 
+   \_vskip\_parskip \_ttskip
+   \_begingroup
+   \_setverb 
+   \_ifnum\_ttline<0 \_let\_printverblinenum=\_relax \_else \_initverblinenum \_fi
+   \_adef{ }{\ }\_adef\^^I{\t}\_parindent=\_ttindent \_parskip=0pt
+   \_def\t{\_hskip \_dimexpr\_tabspaces em/2\_relax}%
+   \_the\_everytt \_relax #1\_relax \_ttfont
+   \_endlinechar=`^^J
+   \_startverb
+}
+\_ea\_def\_ea\_startverb \_ea#\_ea1\_csstring\\endtt#2^^J{%
+   \_prepareverbdata\_tmpb{#1^^J}%
+   \_ea\_printverb \_tmpb\_end
+   \_par
+   \_endgroup \_ttskip
+   \_isnextchar\_par{}{\_noindent}%
+}
+\_def\_printverb #1^^J#2{\_ifx\_end#2
+      \_bgroup \_adef{ }{}\_def\t{}%
+          \_ifcat&#1&\_egroup \_else\_egroup \_printverbline{#1}\_fi
+   \_else
+      \_printverbline{#1}%
+      \_ea \_printverb \_ea #2%
+   \_fi
+}
+\_def\_prepareverbdata#1#2{\_def#1{#2}}
+\_def\_printverbline#1{\_penalty \_ttpenalty 
+   \_indent \_printverblinenum \_kern\_ttshift #1\par}
+\_def\_initverblinenum{\_tenrm \_thefontscale[700]\_ea\_let\_ea\_sevenrm\_the\_font}
+\_def\_printverblinenum{\_global\_advance\_ttline by1 \_llap{\_sevenrm \_the\_ttline\_kern.9em}}
+
+   \_doc ----------------------------
+   Macro \`\verbinput` uses a file read previously or opens the given file. Then
+   it runs the parameter scanning by \`\_viscanparameter` and \`\_viscanminus`.
+   Finally the \`\_doverbinput` is run. At begining of `\_doverbinput`, we have
+   `\_viline`= number of lines already read using previous `\verbinput`,
+   `\_vinolines`= the number of lines we need to skip and `\_vidolnes`= the
+   number of lines we need to print.
+   Similar preparation is done as in `\begtt` after the group is opened. Then
+   we skip \`\_vinolines` lines in a loop a and we read \`\_vidolines` lines. The
+   read data is accumulated into `\_tmpb` macro. The next steps are equal to
+   the steps done in \^`\_startverb` macro: data are processed via
+   \^`\_prepareverbdata` and printed via \^`\_printverb` loop.
+   \_cod \_fin ----------------------
+
+\_def\_verbinput #1(#2) #3 {\_par \_def\_tmpa{#3}%
+   \_def\_tmpb{#1}%  cmds used in local group
+   \_ifx\_vifilename\_tmpa \_else
+      \_openin\_vifile={#3}%
+      \_global\_viline=0 \_global\_let\_vifilename=\_tmpa
+      \_ifeof\_vifile
+         \_opwarning{\_noexpand\verbinput - file "#3" is unable to reading}
+         \_ea\_ea\_ea\_skiptorelax
+      \_fi
+   \_fi
+   \_viscanparameter #2+\_relax
+}
+\_def\_skiptorelax#1\_relax{}
+
+\_def \_viscanparameter #1+#2\_relax{%
+   \_if$#2$\_viscanminus(#1)\_else \_viscanplus(#1+#2)\_fi
+}
+\_def\_viscanplus(#1+#2+){%
+   \_if$#1$\_tmpnum=\_viline
+   \_else \_ifnum#1<0 \_tmpnum=\_viline \_advance\_tmpnum by-#1
+       \_else \_tmpnum=#1
+             \_advance\_tmpnum by-1
+             \_ifnum\_tmpnum<0 \_tmpnum=0 \_fi % (0+13) = (1+13)
+   \_fi \_fi
+   \_edef\_vinolines{\_the\_tmpnum}%
+   \_if$#2$\_def\_vidolines{0}\_else\_edef\_vidolines{#2}\_fi
+   \_doverbinput
+}
+\_def\_viscanminus(#1-#2){%
+   \_if$#1$\_tmpnum=0
+      \_else \_tmpnum=#1 \_advance\_tmpnum by-1 \_fi
+   \_ifnum\_tmpnum<0 \_tmpnum=0 \_fi  % (0-13) = (1-13)
+   \_edef\_vinolines{\_the\_tmpnum}%
+   \_if$#2$\_tmpnum=0
+      \_else \_tmpnum=#2 \_advance\_tmpnum by-\_vinolines \_fi
+   \_edef\_vidolines{\_the\_tmpnum}%
+   \_doverbinput
+}
+\_def\_doverbinput{%
+   \_tmpnum=\_vinolines
+   \_advance\_tmpnum by-\_viline
+   \_ifnum\_tmpnum<0
+      \_openin\_vifile={\_vifilename}%
+      \_global\_viline=0
+   \_else
+      \_edef\_vinolines{\_the\_tmpnum}%
+   \_fi
+   \_vskip\_parskip \_ttskip \_wipeepar
+   \_begingroup
+   \_ifnum\_ttline<-1 \_let\_printverblinenum=\_relax \_else \_initverblinenum \_fi
+   \_setverb \_adef{ }{\ }\_adef\^^I{\t}\_parindent=\_ttindent \_parskip=0pt
+   \_def\t{\_hskip \_dimexpr\_tabspaces em/2\_relax}%
+   \_the\_everytt\_relax \_tmpb\_relax \_ttfont
+   \_endlinechar=`^^J \_tmpnum=0
+   \_loop \_ifeof\_vifile \_tmpnum=\_vinolines\_space \_fi
+         \_ifnum\_tmpnum<\_vinolines\_space
+         \_vireadline \_advance\_tmpnum by1 \_repeat      %% skip lines
+   \_edef\_ttlinesave{\_ttline=\_the\_ttline}%
+   \_ifnum\_ttline=-1 \_ttline=\_viline \_fi
+   \_tmpnum=0 \_def\_tmpb{}%
+   \_ifnum\_vidolines=0 \_tmpnum=-1 \_fi
+   \_ifeof\_vifile \_tmpnum=\_vidolines\_space \_fi
+   \_loop \_ifnum\_tmpnum<\_vidolines\_space
+            \_vireadline 
+            \_ifnum\_vidolines=0 \_else\_advance\_tmpnum by1 \_fi
+            \_ifeof\_vifile \_tmpnum=\_vidolines\_space \_else \_visaveline \_fi %% save line
+            \_repeat
+   \_ea\_prepareverbdata \_ea \_tmpb\_ea{\_tmpb^^J}%
+   \_ea\_printverb \_tmpb\_end
+   \_global\_ttlinesave
+   \_par
+   \_endgroup
+   \_ttskip
+   \_isnextchar\_par{}{\_noindent}%
+}
+\_def\_vireadline{\_read\_vifile to \_tmp \_global\_advance\_viline by1 }
+\_def\_visaveline{\_ea\_addto\_ea\_tmpb\_ea{\_tmp}}
+
+\_public \verbinput ;
+
+   \_doc -----------------------------
+   The \`\visiblesp` sets spaces as visible characters \char9251.
+   It redefines {\visiblesp`\ `} primitive, so it is useful for verbatim modes only.
+   \_cod -----------------------------
+
+\_def \_visiblesp{\_ifx\_initunifonts\_relax \_def\ {\_char9251 }%
+                  \_else \_def\ {\_char32 }\_fi}
+
+\_public \visiblesp ;
+
+\_endcode 
+
+\_endinput
+
+History:
+2020-04-22 ... \ttshift introduced
+2020-04-06 ... \visiblesp added
+2020-04-04 ... ^^I activated as \t for multiline verbatim
+               \verbinput <cmds> (...) <filename>, <cmds> added.


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/base/verbatim.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/demo/op-demo.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/demo/op-demo.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/demo/op-demo.tex	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,127 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\fontfam[LMfonts]              % Default font family: Latin Modern
+
+\margins/1 a5 (1,1,1,1.4)cm    % A5 paper + 1cm margins
+\typosize[9/10.5]              % 9pt font / 10.5pt baselineskip
+\parindent=10pt                % typesetting parameters
+\hyperlinks \Blue\Blue         % active hyperlinks
+\activettchar`                 % in-text verbatim by `...`
+\everyintt={\Red}              % in-text verbatim Red
+\enquotes                      % use \"text" for English quotation  
+
+\tit Demonstration
+
+\nonum\notoc\sec Contents
+
+\maketoc  % Table of Contents is auto-generated here
+
+\sec Lists
+
+The lists have to be surrounded by `\begitems`
+and `\enditems` sequences.
+
+\begitems
+* First item.
+* Second item.
+  \begitems \style i
+    * Nested item list,
+    * numbered by roman numerals.
+  \enditems
+* Last item.
+\enditems
+
+\secc Title of\nl Subsection
+
+The subsection text\dots
+
+\sec References
+
+There is a numbered equation. 
+The number is auto-generated by `\eqmark` sequence.
+$$\label[my-eq]
+  a^2 + b^2 = c^2  \eqmark
+$$
+We can refer to Equation~\ref[my-eq]
+on page~\pgref[my-eq].
+We can refer to Table~\ref[my-tab] in
+Section~\ref[tab-sec] too. And Figure~\ref[my-pic]
+is on page~\pgref[my-pic].
+
+\sec Hyperlinks
+
+You can refer to \url{http://petr.olsak.net} using `\url`.
+Or use `\ulink` if the raw URL needs to be hidden:
+\ulink[http://petr.olsak.net/optex]{\OpTeX/ page}.
+The parameter text is colorized and it becomes 
+an active link if the `\hyperlinks` sequence
+is used at the beginning of the document.
+Internal links are activated too.
+
+\sec[tab-sec] Tables 
+
+The `\table` sequence can be used 
+instead of \"low level" `\halign`.
+The following table is framed by `\frame` sequence 
+in order to get a double frame.
+
+\bigskip
+\caption/t [my-tab]  Testing table.
+\cskip
+\centerline{%
+   \frame{\table{|r|c|l|}{\crl
+           \bf Title A & \bf Title B & \bf Title C \crll
+           first & second & third \cr
+           next  & text  & last  \crl }}}
+
+\sec Images
+
+The images (PDF, JPG, PNG, TIFF) can be inserted 
+by `\inspic` sequence. The `\caption` 
+can be added if you need to refer to a figure.
+
+\label[my-pic]
+\centerline {\picwidth=2.7cm \inspic{op-ring.png}}
+\cskip
+\caption/f The nonempty ideal of a simple ring --
+           the ring itself.
+
+\sec Verbatim
+
+In-text verbatim is surrounded by the character declared
+by `\activettchar` sequence. The listing can be surrounded
+by `\begtt` and `\endtt` sequences
+\begtt
+This is verbatim.
+  All characters are printed $$, \, # etc.
+\endtt
+or it can be included by `\verbinput` from external file.
+
+\verbinput (98-100) op-demo.tex
+
+\sec Math
+
+The Math alphabets
+`\mit`, `\cal`, `\script`, `\frak`, `\bbchar`, `\bi`
+are provided. For example:
+$$
+  {\bi A} = \pmatrix {\cal C  & \script C \cr
+                      \frak M & \bbchar R }.  
+$$
+Hundreds of AMS symbols are available:
+$\sphericalangle, \boxplus, \Cup, \Cap, \ldots$
+
+\sec Others
+
+The `\fontfam` command selects a desired family of fonts.
+The `\typosize` or `\typoscale` sequences set the size
+and baselineskip of used fonts (including math fonts).
+The `\fnote` generates a footnote\fnote{Like this} and
+`\mnote` generates a margin note. 
+The `\margins` sets margins and paper dimensions.
+The `\cite` sequence can be used for bibliographic citations.
+The `\bib` sequence creates one bibliography record. Or 
+you can use `\usebib` for direct access to the {\tt.bib} files. 
+The list of features does not end here\dots
+
+\bye


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/demo/op-demo.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/demo/op-letter.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/demo/op-letter.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/demo/op-letter.tex	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,41 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\letter         % \letter OpTeX style activated
+\fontfam[bonum]
+\cslang
+
+\address
+  Vážený pan
+  Mgr. Bořek Byrokrat
+  ředitel Ústavu pro další možnosti
+  Úřední 789
+  123 45 Praha 1
+
+\hfill V Praze dne \today
+
+\subject Žádost o možnost další možnosti
+
+Vážený pane řediteli,
+
+na základě Vašeho dopisu č.j.~123456/78-dat a elektronické výzvy si dovoluji 
+Vás požádat o prozkoumání mé možnosti další možnosti. 
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
+eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
+veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
+commodo consequat. 
+
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
+eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
+veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
+commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
+esse cillum dolore eu fugiat nulla pariatur. 
+
+S úctou
+
+\hfill \address
+  {\it Petr Olšák}
+  specialista na \TeX/
+  Ulice 12345
+  Praha 13
+
+\bye


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/demo/op-letter.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/demo/op-ring.png
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/tex/latex/optex/demo/op-ring.png
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/demo/op-ring.png	2020-05-06 21:08:34 UTC (rev 55047)
+++ trunk/Master/texmf-dist/tex/latex/optex/demo/op-ring.png	2020-05-06 22:01:50 UTC (rev 55048)

Property changes on: trunk/Master/texmf-dist/tex/latex/optex/demo/op-ring.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/demo/op-slides.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/demo/op-slides.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/demo/op-slides.tex	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,288 @@
+%% This is part of OpTeX project, see http://petr.olsak.net/optex
+
+\slides   % OpTeX slides style activated
+
+\catcode`<=13                 % special printing of <text>
+\def<#1>{\hbox{$\langle$\it#1\/$\rangle$}}
+\everyintt={\catcode`\<=13}
+
+\hyperlinks\Blue\Blue         % hyperlinks are used in the title page
+\backgroundpic{slides-bg.png} % background picture
+
+\activettchar`                % inline verbatim
+\enquotes                     % English quotes \"..."
+
+\slideshow %------------------------------------------------------------
+
+
+\tit \OpTeX/ slides
+
+\subtit Petr Olšák\nl petr at olsak.net
+
+\subtit\rm \url{http://petr.olsak.net/optex}
+
+\pg; %------------------------------------------------------------------
+
+\sec Basics
+
+* The the simple document looks like:
+
+\begtt 
+\slides       % style initialized
+%\wideformat  % 16:9
+\slideshow    % partially uncovering ideas
+
+\sec First slide
+text
+\pg;
+
+\sec Second slide
+text
+\pg.
+\endtt
+
+* If `\slideshow` is missing or commented out then 
+  \"partially uncovering ideas" (see later) are deactivated. It is useful 
+  for printing.
+* The `\slideshow` must be the last command in the declaration part of the
+  document.
+* By default, the slides have A5 landscape format. 
+  You can declare `\wideformat`. Then the height is the same
+  but width is 263\,mm, i.\,e.~the ratio width:height is 16:9.
+
+\pg; %------------------------------------------------------------------
+
+\sec Title slide
+
+* Title of the document (used at the first slide) is created
+  by `\tit Title` (terminated by end of line).
+* The `\subtit Author name etc.`\ (terminated by end of line)
+  can be used after `\tit` at the first slide.
+* You can use `\nl` for new line in paragraphs or titles.
+
+\sec Default design
+
+* The paragraph texts are ragged right.
+* Titles, subtitles and section titles are centered.
+* The `\sec` and `\secc` are printed without numbers.
+* Paragraph indentation is zero. There is a little vertical space between
+  paragraphs.
+* The Heros font family (aka Helvetica) is initialized as default.\nl 
+  Sans-serif FiraMath font for math typesetting is used.
+* The items in lists are started by blue square (`\type X` and `\type x` ).
+
+\pg; %------------------------------------------------------------------
+
+\sec One slide (one page)
+
+* Top level item list is activated by default. The asterisk `*` opens 
+  new item at the top level list.
+* Nested items lists (second and more level) should be created in
+  the `\begitems`\dots`\enditems` environments.
+* Each slide (page) must be terminated by `\pg;` command.
+* The last slide must be terminated by `\pg.` command or by `\bye`.
+
+\begtt 
+\sec My ideas
+
+* First idea
+* Second idea
+  \begitems
+  * First sub-idea
+  * Second sub-idea
+  \enditems
+* Final idea
+\endtt
+
+* Note: each page is processed in a group, so: put your own definitions 
+  (if~exist) before `\slideshow` or use `\global` assignment.
+
+\pg; %------------------------------------------------------------------
+
+\sec Partially uncovering ideas
+
+* The control sequence `\pg` must be followed by:\pg+
+\begitems
+* the character `;` -- normal next page,\pg+
+* the character `.` -- the end of the document,\pg+
+* the character `+` -- next page keeps the same text
+  and a next text is added (usable for partially uncovering of ideas).\pg+ 
+\enditems
+
+* Summary:
+\begtt
+\pg;    ... next page
+\pg.    ... the end of the document
+\pg+    ... uncover next text at the same page
+\endtt
+\pg+
+
+* When `\slideshow` is not declared then `\pg+` is deactivated.\pg+
+* The `\pg+` creates a new \"virtual page", so the current paragraph is
+  terminated.
+
+\pg; %------------------------------------------------------------------
+
+\sec Example with partially uncovering ideas
+
+The previous page was created by:
+
+\begtt
+\sec Partially uncovering ideas
+
+* The control sequence `\pg` must be followed by:\pg+
+
+\begitems
+* the character `.` -- normal next page,\pg+
+* the character `;` -- the end of the document,\pg+
+* the character `+` -- next ... \pg+
+\enditems
+
+* Summary
+...
+* When `\slideshow` is not declared 
+  then `\pg+` is deactivated.\pg+
+* The `\pg+` creates a new \"virtual page", 
+  so the current paragraph is terminated.
+\pg;
+\endtt
+
+\pg; %------------------------------------------------------------------
+
+\sec Notes
+
+* When `\slideshow` is active then you cannot reference sections by 
+  hyperlinked `\ref`. Only `\pgref` works (and goes to the last layer
+  of the referenced page).
+* If the text overfull the page (slide) then it follows to the next page without
+  saying explicitly `\pg;`. But `\slideshow` cannot work in such case.\pg+
+
+\sec More about design
+
+* You can use `\backgroundpic{<image-file>}` for putting an image to the backgroud.
+* You can re-declare `\footline` or re-define internal macros for design as 
+  you wish.
+* You can put the images or text wherever using `\putimege` or `\puttext`
+  macros...
+
+\pg; %------------------------------------------------------------------
+
+\sec Putting images and texts wherever
+
+* `\puttext <right> <up> {<text>}` puts a <text> to the desired place:
+  It moves the current point <right> and <up>, puts the <text> and returns
+  back, so the typesetting continues from previous position. The parameters
+  <right> and <up> are dimensions. For example
+
+\begtt
+\puttext 0mm 50mm {\Red HELLO}
+\endtt
+
+  \puttext 0mm 50mm {\Red HELLO}
+  prints red HELLO, as shown here.\pg+
+
+* `\putpic <right> <up> <width> <height> {<image-file>}`
+  puts the image with desired <width> and <height> at the position like 
+  `\puttext` puts the text.
+
+  \putpic .8\hsize 20mm 30mm \nospec {op-ring.png}
+* The ring above is the result of 
+
+\begtt
+\putpic .8\hsize 20mm 30mm \nospec {op-ring.png} 
+\endtt
+  %
+  used at beginning of this paragraph.\pg+
+* Use `\nospec` for <width> or <height> of the image if you don't want to specify both
+  dimensions (because you don't want to change the image aspect ratio).
+
+\pg; %------------------------------------------------------------------
+
+\sec Limits of the \code{\\pg+} sequence
+
+* The \code{\\pg+} sequence (partially uncovering ideas) cannot be used inside
+  a~group.
+* The exception is the nested environment `\begitems...\enditems`.
+* The `\pg+` always finalizes the current paragraph.
+  It is impossible to hide only a part of horizontal mode.\pg+
+
+\sec The \code{\\layers}\,...\code{\\endlayers} environment
+
+If you really need something unsupported by `\pg+` then you can use 
+
+\begtt \catcode`\<=13
+\layers <number>
+<layered text>
+\endlayers
+\endtt 
+
+* The <layered text> should include conditions like
+  `\ifnum\layernum...` or `\ifcase\layernum`. 
+  It is printed <number> times to more slide pages (layers) with the same
+  surrounding text. See next page... 
+
+\pg; %------------------------------------------------------------------
+
+\sec Example of \code{\\layers} environment
+
+The `\slides` style provides a shortcut `\use` and a macro `\pshow` (means
+partially show):
+
+\begtt
+\def\use#1#2{\ifnum\layernum#1\relax#2\fi}
+\def\pshow#1{\use{=#1}\Red \use{<#1}\Transparent \ignorespaces}
+\endtt
+
+The `{\pshow<num> <text>}` prints <text> in Red when current layer is equal
+to <num> or it prints <text> normally when current layers is greater than <num>.
+The transparent (invisible) text is used in other cases.
+
+The following dance:
+\layers 3
+{\pshow2 Second text.} {\pshow3 Third text.} {\pshow1 First text.} 
+\endlayers
+\pg+
+
+was generated by
+
+\begtt
+\layers 3
+{\pshow2 Second text.} {\pshow3 Third text.} {\pshow1 First text.} 
+\endlayers
+\endtt
+
+\pg+
+* The <layered text> is treated as macro parameter. So, you cannot use verbatim
+  nor `\sec` titles here. Maximal one `\layers` environment can be per one 
+  page (terminated by `\pg+` or `\pg;` or `\pg.`
+
+\pg; %------------------------------------------------------------------
+
+\sec Comparison \OpTeX/ slides with Beamer\fnote{\url{http://www.ctan.org/pkg/beamer}}
+
+The \LaTeX{} package {\bf\Blue Beamer} gives much more features and many themes
+are prepared for Beamer, {\bf\Red but}
+\pg+
+* the user of Beamer is forced to {\em program} his/her document using 
+  dozens of \code{\\begin{foo}} and \code{\\end{foo}} and many another
+  programming constructions,\pg+
+* plain \TeX{} gives you a possibility to simply 
+  {\em write} your document with minimal markup. The result is more compact.
+  You can concentrate to the contents of your document, not to the
+  programming syntax.\pg+
+* User needs to read 250 pages of doc for understanding Beamer,\pg+
+* on the other hand, you need to read only ten 
+  slides\fnote{this eleventh slide isn't counted}
+  and you are ready to use {\bf\Blue\OpTeX/ slides}.
+
+\pg; %------------------------------------------------------------------
+
+\null
+\vskip2cm
+\centerline{\typosize[35/40]\bf Thanks for your attention}\pg+
+
+\vskip2cm
+\centerline{\Blue\typosize[60/70]\bf Questions?}
+
+\pg. %----------------------------- THE END ----------------------------
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/demo/op-slides.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/demo/slides-bg.png
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/tex/latex/optex/demo/slides-bg.png
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/demo/slides-bg.png	2020-05-06 21:08:34 UTC (rev 55047)
+++ trunk/Master/texmf-dist/tex/latex/optex/demo/slides-bg.png	2020-05-06 22:01:50 UTC (rev 55048)

Property changes on: trunk/Master/texmf-dist/tex/latex/optex/demo/slides-bg.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/optex/pkg/qrcode.opm
===================================================================
--- trunk/Master/texmf-dist/tex/latex/optex/pkg/qrcode.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/optex/pkg/qrcode.opm	2020-05-06 22:01:50 UTC (rev 55048)
@@ -0,0 +1,2706 @@
+% This is macro package used by OpTeX, see http://petr.olsak.net/optex
+% qrcode.opm, Petr Olšák <petr at olsak.net>, 2020 
+
+% See end of the file for more information
+
+\_codedecl \qrcode {Macro for QR code printing <2020-05-04>}
+
+\_namespace{qr}
+
+\_newcount\.i
+\_newcount\.j
+\_newcount\.a
+\_newcount\.b
+\_newcount\.c
+
+\_def\.relax{\_relax}%
+
+\_def\.utfstring#1{\_directlua{
+   local text="\_luaescapestring{#1}"
+   tex.print(string.format('\_pcent.2x',string.len(text)))
+   for i=1,string.len(text) do
+      tex.print(string.format('\_pcent.2x',string.byte(text,i)))
+   end
+}}
+\_def\.utfstringlen#1{\_directlua{
+   tex.print(string.len("\_luaescapestring{#1}"))
+}}
+
+\_def\.g_preface_macro#1#2{%
+  % #1 = macro to be appended to
+  % #2 = code to add
+  \_edef\.codeA{#2}%
+  \_ea\_ea\_ea\_gdef\_ea\_ea\_ea#1\_ea\_ea\_ea{\_ea\.codeA#1}%
+}
+
+\_def\.getstringlength#1{%
+   \_xdef\.stringlength{\.utfstringlen{#1}}%
+}%
+
+\_def\.for#1=#2to#3by#4#{\.forA{#1}{#2}{#3}{#4}}
+\_long\_def\.forA#1#2#3#4#5{\_begingroup
+   {\_escapechar=`\\ % allocation of #1 as counter:
+      \_ea \_ifx\_csname for:\_string#1\_endcsname \_relax
+         \_csname newcount\_ea\_endcsname \_csname for:\_string#1\_endcsname\_fi
+    \_ea}\_ea\_let\_ea#1\_csname for:\_string#1\_endcsname
+   #1=#2%
+   \_def\.forB{#5\_advance#1by#4\_relax \_ea\.forC}%
+   \_ifnum#4>0 \_def\.forC{\_ifnum#1>#3\_relax\_else\.forB\_fi}%
+   \_else      \_def\.forC{\_ifnum#1<#3\_relax\_else\.forB\_fi}%
+   \_fi
+   \_ifnum#4=0 \let\.forC=\_relax \_fi
+   \.forC \_endgroup
+}
+
+\_def\.padatfront#1#2{%
+  % #1 = macro containing text to pad
+  % #2 = desired number of characters
+  % Pads a number with initial zeros.
+  \.getstringlength{#1}%
+  \.a=\.stringlength\_relax
+  \_advance\.a by 1\_relax
+  \.for \.iz = \.a to #2 by 1
+    {\.g_preface_macro{#1}{0}}%
+}
+
+\.a=-1\_relax
+\_def\.savehexsymbols(#1#2){%
+  \_advance\.a by 1\_relax%
+  \_ea\_def\_csname _qr_hexchar:\_the\.a\_endcsname{#1}%
+  \_ea\_edef\_csname _qr_hextodecimal:#1\_endcsname{\_the\.a}%
+  \_ifnum\.a=15\_relax
+    %Done.
+    \_let\.next=\_relax
+  \_else
+    \_def\.next{\.savehexsymbols(#2)}%
+  \_fi
+  \.next
+}%
+\.savehexsymbols(0123456789abcdef\_relax\_relax)%
+
+\_def\.decimaltobase#1#2#3{%
+  % #1 = macro to store result
+  % #2 = decimal representation of a positive integer
+  % #3 = new base
+  \_bgroup
+    \_edef\.newbase{#3}%
+    \_gdef\.base_result{}%
+    \.a=#2\_relax%
+    \.decimaltobase_recursive%
+    \_xdef#1{\.base_result}%
+  \_egroup
+}
+\_def\.decimaltobase_recursive{%
+  \.b=\.a
+  \_divide\.b by \.newbase\_relax
+  \_multiply\.b by -\.newbase\_relax
+  \_advance\.b by \.a\_relax
+  \_divide\.a by \.newbase\_relax
+  \_ifnum\.b<10\_relax
+    \_edef\.newdigit{\_the\.b}%
+  \_else
+    \_edef\.newdigit{\_csname _qr_hexchar:\_the\.b\_endcsname}%
+  \_fi
+  \_edef\.argument{{\_noexpand\.base_result}{\.newdigit}}%
+  \_ea\.g_preface_macro\.argument
+  \_ifnum\.a=0\_relax
+    \_relax
+  \_else
+    \_ea\.decimaltobase_recursive
+  \_fi
+}
+\_long\_def\.xaddto#1#2{\_xdef#1{#1#2}}
+
+\_def\.decimaltohex[#1]#2#3{%
+  % #1 (opt.) = number of hex digits to create
+  % #2 = macro to store result
+  % #3 = decimal digits to convert
+  \.decimaltobase{#2}{#3}{16}%
+  \.padatfront{#2}{#1}%
+}
+\_def\.decimaltobinary[#1]#2#3{%
+  % #1 (opt.) = number of bits to create
+  % #2 = macro to store result
+  % #3 = decimal digits to convert
+  \.decimaltobase{#2}{#3}{2}%
+  \.padatfront{#2}{#1}%
+}
+
+\.for \.iz = 0 to 15 by 1%
+  {%
+   \.decimaltohex[1]{\.hexchar}{\_the\.iz}%
+   \.decimaltobinary[4]{\.bits}{\_the\.iz}%
+   \_ea\_xdef\_csname _qr_b2h:\.bits\_endcsname{\.hexchar}%
+   \_ea\_xdef\_csname _qr_h2b:\.hexchar\_endcsname{\.bits}%
+  }%
+
+\_def\.binarytohex[#1]#2#3{%
+  % #1 (optional) = # digits desired
+  % #2 = macro to save to
+  % #3 = binary string (must be multiple of 4 bits)
+  \_def\.testi{#1}%
+  \_ifx\.testi\.relax%
+    %No argument specified
+    \_def\.desireddigits{0}%
+  \_else
+    \_def\.desireddigits{#1}%
+  \_fi
+  \_gdef\.base_result{}%
+  \_edef\.argument{(#3\_relax\_relax\_relax\_relax\_relax)}%
+  \_ea\.binarytohex_int\.argument%
+  \.padatfront{\.base_result}{\.desireddigits}%
+  \_xdef#2{\.base_result}%
+}
+\_def\.binarytohex_int(#1#2#3#4#5){%
+  % #1#2#3#4 = 4 bits
+  % #5 = remainder, including \_relax\_relax\_relax\_relax\_relax terminator
+  \_def\.testi{#1}%
+  \_ifx\.testi\.relax%
+    %Done.
+    \_def\.next{\_relax}%
+  \_else%
+    \_xdef\.base_result{\.base_result\_csname _qr_b2h:#1#2#3#4\_endcsname}%
+    \_def\.next{\.binarytohex_int(#5)}%
+  \_fi%
+  \.next%
+}
+
+\_def\.hextobinary[#1]#2#3{%
+  % #1 (optional) = # bits desired
+  % #2 = macro to save to
+  % #3 = hexadecimal string
+  \_bgroup
+  \_def\.testi{#1}%
+  \_ifx\.testi\.relax
+    %No argument specified
+    \_def\.desireddigits{0}%
+  \_else
+    \_def\.desireddigits{#1}%
+  \_fi
+  \_gdef\.base_result{}%
+  \_edef\.argument{(#3\_relax\_relax)}%
+  \_ea\.hextobinary_int\.argument%
+  \.padatfront{\.base_result}{\.desireddigits}%
+  \_xdef#2{\.base_result}%
+  \_egroup
+}
+\_def\.hextobinary_int(#1#2){%
+  % #1 = hexadecimal character
+  % #2 = remainder, including \_relax\_relax terminator
+  \_def\.testii{#1}%
+  \_ifx\.testii\.relax
+    %Done.
+    \_def\.next{\_relax}%
+  \_else
+    \_xdef\.base_result{\.base_result\_csname _qr_h2b:#1\_endcsname}%
+    \_def\.next{\.hextobinary_int(#2)}%
+  \_fi
+  \.next
+}
+
+\_def\.hextodecimal#1#2{%
+  \_edef\.argument{#2}%
+  \_ea\.a\_ea=\_ea\_number\_ea"\.argument\_relax
+  \_edef#1{\_the\.a}%
+}
+
+\_def\.hextodecimal#1#2{%
+  % #1 = macro to store result
+  % #2 = hexadecimal representation of a positive integer
+  \_bgroup
+    \.a=0\_relax
+    \_edef\.argument{(#2\_relax)}%
+    \_ea\.hextodecimal_recursive\.argument%
+    \_xdef#1{\_the\.a}%
+  \_egroup
+}
+\_def\.hextodecimal_recursive(#1#2){%
+  % #1 = first hex char
+  % #2 = remainder
+  \_advance \.a by \_csname _qr_hextodecimal:#1\_endcsname\_relax%
+  \_edef\.testii{#2}%
+  \_ifx\.testii\.relax%
+    %Done.
+    \_let\.next=\_relax%
+  \_else
+    %There's at least one more digit.
+    \_multiply\.a by 16\_relax
+    \_edef\.next{\_noexpand\.hextodecimal_recursive(#2)}%
+  \_fi%
+  \.next%
+}
+
+\_def\.storetomatrix#1#2#3#4{%
+  % #1 = matrix name
+  % #2 = row number
+  % #3 = column number
+  % #4 = value of matrix entry
+  \_ea\_gdef\_csname #1@#2@#3\_endcsname{#4}%
+}%
+
+\_def\.estoretomatrix#1#2#3#4{%
+  % This version performs exactly one expansion on #4.
+  % #1 = matrix name
+  % #2 = row number
+  % #3 = column number
+  % #4 = value of matrix
+  \_ea\_gdef\_csname #1@#2@#3\_ea\_endcsname\_ea{#4}%
+}%
+
+\_def\.matrixentry#1#2#3{%
+  % #1 = matrix name
+  % #2 = row number
+  % #3 = column number
+  \_csname #1@#2@#3\_endcsname
+}%
+
+\_def\.createsquareblankmatrix#1#2{%
+%  \.creatematrix{#1}%
+  \_ea\_gdef\_csname #1 at numrows\_endcsname{#2}%
+  \_ea\_gdef\_csname #1 at numcols\_endcsname{#2}%
+  \.for \.iz = 1 to #2 by 1%
+    {\.for \.jz = 1 to #2 by 1%
+      {\.storetomatrix{#1}{\_the\.iz}{\_the\.jz}{\.blank}}}%
+}%
+
+\_def\.numberofrowsinmatrix#1{%
+  \_csname #1 at numrows\_endcsname%
+}%
+
+\_def\.numberofcolsinmatrix#1{%
+  \_csname #1 at numcols\_endcsname%
+}%
+
+\_def\.setnumberofrows#1#2{%
+  \_ea\_xdef\_csname #1 at numrows\_endcsname{#2}%
+}%
+
+\_def\.setnumberofcols#1#2{%
+  \_ea\_xdef\_csname #1 at numcols\_endcsname{#2}%
+}%
+
+\_newdimen\.desiredheight
+\_newdimen\.modulesize
+
+\_def\.link#1#2{\_hbox{\_pdfstartlink height\_ht0 depth0pt \.border
+   user{/Subtype/Link/A <</Type/Action/S/URI/URI(#1)>>}\_relax #2\_pdfendlink}%
+}
+\_def\.border{%
+   \_ifcsname _qr_kv:qrborder\_endcsname attr{/C[\.kv{qrborder}] /Border[0 0 .6]}%
+   \_else attr{/Border[0 0 0]}%
+   \_fi
+}
+
+\_def\.createliteralmatrix#1#2#3{%
+  % #1 = matrix name
+  % #2 = m, the number of rows and columns in the square matrix
+  % #3 = a string of m^2 tokens to be written into the matrix
+%  \.creatematrix{#1}%
+  \_ea\_xdef\_csname #1 at numrows\_endcsname{#2}%
+  \_ea\_xdef\_csname #1 at numcols\_endcsname{#2}%
+  \_gdef\.literalmatrix_tokens{#3}%
+  \.for \.iz = 1 to #2 by 1%
+    {\.for \.jz = 1 to #2 by 1%
+      {\_ea\.createliteralmatrix_int\_ea(\.literalmatrix_tokens)%
+       \.estoretomatrix{#1}{\_the\.iz}{\_the\.jz}{\.entrytext}%
+      }%
+    }%
+}
+\_def\.createliteralmatrix_int(#1#2){%
+  \_def\.entrytext{#1}%
+  \_gdef\.literalmatrix_tokens{#2}%
+}
+
+\.createliteralmatrix{finderpattern}{8}{%
+  \.blackfixed\.blackfixed\.blackfixed\.blackfixed\.blackfixed\.blackfixed\.blackfixed\.whitefixed
+  \.blackfixed\.whitefixed\.whitefixed\.whitefixed\.whitefixed\.whitefixed\.blackfixed\.whitefixed
+  \.blackfixed\.whitefixed\.blackfixed\.blackfixed\.blackfixed\.whitefixed\.blackfixed\.whitefixed
+  \.blackfixed\.whitefixed\.blackfixed\.blackfixed\.blackfixed\.whitefixed\.blackfixed\.whitefixed
+  \.blackfixed\.whitefixed\.blackfixed\.blackfixed\.blackfixed\.whitefixed\.blackfixed\.whitefixed
+  \.blackfixed\.whitefixed\.whitefixed\.whitefixed\.whitefixed\.whitefixed\.blackfixed\.whitefixed
+  \.blackfixed\.blackfixed\.blackfixed\.blackfixed\.blackfixed\.blackfixed\.blackfixed\.whitefixed
+  \.whitefixed\.whitefixed\.whitefixed\.whitefixed\.whitefixed\.whitefixed\.whitefixed\.whitefixed
+}%
+
+\.createliteralmatrix{alignmentpattern}{5}{%
+  \.blackfixed\.blackfixed\.blackfixed\.blackfixed\.blackfixed
+  \.blackfixed\.whitefixed\.whitefixed\.whitefixed\.blackfixed
+  \.blackfixed\.whitefixed\.blackfixed\.whitefixed\.blackfixed
+  \.blackfixed\.whitefixed\.whitefixed\.whitefixed\.blackfixed
+  \.blackfixed\.blackfixed\.blackfixed\.blackfixed\.blackfixed
+}%
+
+\_def\.copymatrixentry#1#2#3#4#5#6{%
+  % Copy the (#2,#3) entry of matrix #1
+  % to the (#5,#6) position of matrix #4.
+  \_ea\_ea\_ea\_global%
+  \_ea\_ea\_ea\_let\_ea\_ea\_csname #4@#5@#6\_endcsname
+                     \_csname #1@#2@#3\_endcsname
+}%
+
+\_def\.createduplicatematrix#1#2{%
+  % #1 = name of copy
+  % #2 = original matrix to be copied
+%  \.creatematrix{#1}%
+  \.for \.iz = 1 to \.numberofrowsinmatrix{#2} by 1%
+    {\.for \.jz = 1 to \.numberofcolsinmatrix{#2} by 1%
+      {\.copymatrixentry{#2}{\_the\.iz}{\_the\.jz}{#1}{\_the\.iz}{\_the\.jz}%
+      }%
+    }%
+  \.setnumberofrows{#1}{\.numberofrowsinmatrix{#2}}%
+  \.setnumberofcols{#1}{\.numberofcolsinmatrix{#2}}%
+}%
+
+\_def\.placefinderpattern_int#1#2#3#4#5{%
+  % Work on matrix #1.
+  % Start in position (#2, #3) -- should be a corner
+  % #4 indicates horizontal direction (1=right, -1=left)
+  % #5 indicates vertical direction (1=down, -1=up)
+  %
+  % In this code, \sourcei and \sourcej are TeX counts working through the finderpattern matrix,
+  % and i and j are counters indicating positions in the big matrix.
+  \.setcounter\.i{#2}%
+  \.for \.sourcei=1 to 8 by 1%
+    {\.setcounter\.j{#3}%
+     \.for \.sourcej=1 to 8 by 1%
+       {\.copymatrixentry{finderpattern}{\_the\.sourcei}{\_the\.sourcej}%
+                        {#1}{\_the\.i}{\_the\.j}%
+        \.addtocounter\.j{#5}%
+       }%
+     \.addtocounter\.i{#4}%
+    }%
+}%
+
+\_def\.placefinderpatterns#1{%
+  % #1=matrix name
+  \.placefinderpattern_int{#1}{1}{1}{1}{1}%
+  \.placefinderpattern_int{#1}{\.numberofrowsinmatrix{#1}}{1}{-1}{1}%
+  \.placefinderpattern_int{#1}{1}{\.numberofcolsinmatrix{#1}}{1}{-1}%
+}%
+
+\_def\.placetimingpatterns#1{%
+  %Set \.endingcol to n-8.
+  \.a=\.size\_relax%
+  \_advance\.a by -8\_relax%
+  \_edef\.endingcol{\_the\.a}%
+  \.for \.jz = 9 to \.endingcol by 1%
+    {\_ifodd\.jz\_relax%
+       \.storetomatrix{#1}{7}{\_the\.jz}{\.blackfixed}%
+       \.storetomatrix{#1}{\_the\.jz}{7}{\.blackfixed}%
+     \_else%
+       \.storetomatrix{#1}{7}{\_the\.jz}{\.whitefixed}%
+       \.storetomatrix{#1}{\_the\.jz}{7}{\.whitefixed}%
+     \_fi%
+    }%
+}%
+
+\_def\.placealignmentpattern_int#1#2#3{%
+  % Work on matrix #1.
+  % Write an alignment pattern into the matrix, centered on (#2,#3).
+  \.a=#2\_relax%
+  \_advance\.a by -2\_relax%
+  \.b=#3\_relax%
+  \_advance\.b by -2\_relax%
+  \.setcounter\.i{\_the\.a}%
+  \.for \.iz=1 to 5 by 1%
+    {\.setcounter\.j{\_the\.b}%
+     \.for \.jz=1 to 5 by 1%
+      {\.copymatrixentry{alignmentpattern}{\_the\.iz}{\_the\.jz}%
+                       {#1}{\_the\.i}{\_the\.j}%
+       \.stepcounter\.j
+      }%
+     \.stepcounter\.i
+    }%
+}%
+
+\_newifi\_ifqr_incorner%
+\_def\.placealignmentpatterns#1{%
+  %There are k^2-3 alignment patterns,
+  %arranged in a (k x k) grid within the matrix.
+  %They begin in row 7, column 7,
+  %except that the ones in the NW, NE, and SW corners
+  %are omitted because of the finder patterns.
+  %Recall that
+  %  * \.k stores k,
+  %  * \.alignment_firstskip stores how far between the 1st and 2nd row/col, &
+  %  * \.alignment_generalskip stores how far between each subsequent row/col.
+  \_ea\_ifnum\.k>0\_relax
+    %There will be at least one alignment pattern.
+    %N.B. k cannot equal 1.
+    \_ea\_ifnum\.k=2\_relax
+      % 2*2-3 = exactly 1 alignment pattern.
+      \.a=7\_relax
+      \_advance\.a by \.alignment_firstskip\_relax
+      \_xdef\.targetii{\_the\.a}%
+      \.placealignmentpattern_int{#1}{\.targetii}{\.targetii}%
+    \_else
+      % k is at least 3, so the following loops should be safe.
+      \_xdef\.targetii{7}%
+      \.for \.ii = 1 to \.k by 1%
+        {\_ifcase\.ii\_relax%
+           \_relax% \.ii should never equal 0.
+         \_or
+           \_xdef\.targetii{7}% If \.ii = 1, we start in row 7.
+         \_or
+           %If \.ii = 2, we add the firstskip.
+           \.a=\.targetii\_relax%
+           \_advance\.a by \.alignment_firstskip\_relax%
+           \_xdef\.targetii{\_the\.a}%
+         \_else
+           %If \.ii>2, we add the generalskip.
+           \.a=\.targetii\_relax%
+           \_advance\.a by \.alignment_generalskip\_relax%
+           \_xdef\.targetii{\_the\.a}%
+         \_fi
+         \.for \.jj = 1 to \.k by 1%
+           {\_ifcase\.jj\_relax%
+              \_relax% \.jj should never equal 0.
+            \_or
+              \_xdef\.targetjj{7}% If \.jj=1, we start in row 7.
+            \_or
+              %If \.jj=2, we add the firstskip.
+              \.a=\.targetjj\_relax%
+              \_advance\.a by \.alignment_firstskip%
+              \_xdef\.targetjj{\_the\.a}%
+            \_else
+              %If \.jj>2, we add the generalskip.
+              \.a=\.targetjj\_relax%
+              \_advance\.a by \.alignment_generalskip%
+              \_xdef\.targetjj{\_the\.a}%
+            \_fi
+            \.incornerfalse%
+            \_ifnum\.ii=1\_relax
+              \_ifnum\.jj=1\_relax
+                \.incornertrue
+              \_else
+                \_ifnum\.k=\.jj\_relax
+                  \.incornertrue
+                \_fi
+              \_fi
+            \_else
+              \_ea\_ifnum\.k=\.ii\_relax
+                \_ifnum\.jj=1\_relax
+                  \.incornertrue
+                \_fi
+              \_fi
+            \_fi
+            \_ifqr_incorner
+              \_relax
+            \_else
+              \.placealignmentpattern_int{#1}{\.targetii}{\.targetjj}%
+            \_fi
+           }% ends \.for \.jj
+        }% ends \.for \.ii
+    \_fi
+  \_fi
+}%
+
+\_def\.placedummyformatpatterns#1{%
+  \.for \.jz = 1 to 9 by 1%
+    {\_ifnum\.jz=7\_relax%
+     \_else%
+       \.storetomatrix{#1}{9}{\_the\.jz}{\.formatsquare}%
+       \.storetomatrix{#1}{\_the\.jz}{9}{\.formatsquare}%
+     \_fi%
+    }%
+  \.setcounter\.j{\.size}%
+  \.for \.jz = 1 to 8 by 1%
+    {\.storetomatrix{#1}{9}{\_the\.j}{\.formatsquare}%
+     \.storetomatrix{#1}{\_the\.j}{9}{\.formatsquare}%
+     \.addtocounter\.j{-1}%
+    }%
+  %Now go back and change the \.formatsquare in (n-8,9) to \.blackfixed.
+  \.addtocounter\.j{1}%
+  \.storetomatrix{#1}{\_the\.j}{9}{\.blackfixed}%
+}%
+
+\_def\.placedummyversionpatterns#1{%
+  \_ea\_ifnum\.version>6\_relax
+    %Must include version information.
+    \_global\.i=\.size%
+    \_global\_advance\.i by -10\_relax%
+    \.for \.iz = 1 to 3 by 1%
+      {\.for \.jz = 1 to 6 by 1%
+        {\.storetomatrix{#1}{\_the\.i}{\_the\.jz}{\.formatsquare}%
+         \.storetomatrix{#1}{\_the\.jz}{\_the\.i}{\.formatsquare}%
+        }%
+       \.stepcounter\.i
+      }%
+  \_fi
+}%
+
+\_def\.writebit(#1#2)#3{%
+  % #3 = matrix name
+  % (qr_i,qr_j) = position to write in (counters)
+  % #1 = bit to be written
+  % #2 = remaining bits plus '\_relax' as an end-of-file marker
+  \_edef\.datatowrite{#2}%
+  \_ifnum#1=1
+    \.storetomatrix{#3}{\_the\.i}{\_the\.j}{\.black}%
+  \_else
+    \.storetomatrix{#3}{\_the\.i}{\_the\.j}{\.white}%
+  \_fi
+}%
+
+\_newifi\_ifqr_rightcol
+\_newifi\_ifqr_goingup
+
+\_def\.writedata_hex#1#2{%
+  % #1 = name of a matrix that has been prepared with finder patterns, timing patterns, etc.
+  % #2 = a string consisting of bytes to write into the matrix, in two-char hex format.
+  \.setcounter\.i{\.numberofrowsinmatrix{#1}}%
+  \.setcounter\.j{\.numberofcolsinmatrix{#1}}%
+  \.rightcoltrue
+  \.goinguptrue
+  \_edef\.argument{{#1}(#2\_relax\_relax\_relax)}%
+  \_ea\.writedata_hex_recursive\.argument%
+}%
+
+\_def\.writedata_hex_recursive#1(#2#3#4){%
+  % #1 = name of a matrix that has been prepared with finder patterns, timing patterns, etc.
+  % (qr_i,qr_j) = position to write in counters
+  % #2#3#4 contains the hex codes of the bytes to be written, plus \_relax\_relax\_relax
+  % as an end-of-file marker
+  \_edef\.testii{#2}%
+  \_ifx\.testii\.relax%
+    % #2 is \_relax, so there is nothing more to write.
+    \_relax
+    \_let\.go=\_relax
+  \_else
+    % #2 is not \_relax, so there is another byte to write.
+    \.hextobinary[8]{\.bytetowrite}{#2#3}%
+    \_xdef\.datatowrite{\.bytetowrite\_relax}% %Add terminating "\_relax"
+    \.writedata_recursive{#1}% %This function actually writes the 8 bits.
+    \_edef\.argument{{#1}(#4)}%
+    \_ea\_def\_ea\.go\_ea{\_ea\.writedata_hex_recursive\.argument}% %Call self to write the next bit.
+  \_fi
+  \.go
+}%
+
+\_def\.writedata#1#2{%
+  % #1 = name of a matrix that has been prepared with finder patterns, timing patterns, etc.
+  % #2 = a string consisting of 0's and 1's to write into the matrix.
+  \.setcounter\.i{\.numberofrowsinmatrix{#1}}%
+  \.setcounter\.j{\.numberofcolsinmatrix{#1}}%
+  \.rightcoltrue
+  \.goinguptrue
+  \_edef\.datatowrite{#2\_relax}%
+  \.writedata_recursive{#1}%
+}%
+
+\_def\.iblank{\.blank}%
+
+\_def\.writedata_recursive#1{%
+  % #1 = matrix name
+  % (qr_i,qr_j) = position to write in (counters)
+  % \.datatowrite contains the bits to be written, plus '\_relax' as an end-of-file marker
+  \_ea\_let\_ea\.squarevalue\_csname #1@\_the\.i @\_the\.j\_endcsname%
+  \_ifx\.squarevalue\.iblank
+    %Square is blank, so write data in it.
+    \_ea\.writebit\_ea(\.datatowrite){#1}%
+    %The \.writebit macro not only writes the first bit of \.datatowrite into the matrix,
+    %but also removes the bit from the 'bitstream' of \.datatowrite.
+  \_fi
+  %Now adjust our position in the matrix.
+  \_ifqr_rightcol
+    %From the right-hand half of the two-bit column, we always move left.  Easy peasy.
+    \.addtocounter\.j{-1}%
+    \.rightcolfalse
+  \_else
+    %If we're in the left-hand column, things are harder.
+    \_ifqr_goingup
+      %First, suppose we're going upwards.
+      \_ifnum\.i>1\_relax%
+        %If we're not in the first row, things are easy.
+        %We move one to the right and one up.
+        \.addtocounter\.j{1}%
+        \.addtocounter\.i{-1}%
+        \.rightcoltrue
+      \_else
+        %If we are in the first row, then we move to the left,
+        %and we are now in the right-hand column on a downward pass.
+        \.addtocounter\.j{-1}%
+        \.goingupfalse
+        \.rightcoltrue
+      \_fi
+    \_else
+      %Now, suppose we're going downwards.
+      \_ea\_ifnum\.size>\.i\_relax%
+        %If we're not yet in the bottom row, things are easy.
+        %We move one to the right and one down.
+        \.addtocounter\.j{1}%
+        \.addtocounter\.i{1}%
+        \.rightcoltrue
+      \_else
+        %If we are in the bottom row, then we move to the left,
+        %and we are now in the right-hand column on an upward pass.
+        \.addtocounter\.j{-1}%
+        \.rightcoltrue
+        \.goinguptrue
+      \_fi
+    \_fi
+    %One problem: what if we just moved into the 7th column?
+    %Das ist verboten.
+    %If we just moved (left) into the 7th column, we should move on into the 6th column.
+    \_ifnum\.j=7\_relax%
+      \.setcounter\.j{6}%
+    \_fi
+  \_fi
+  %Now check whether there are any more bits to write.
+  \_ifx\.datatowrite\.relax
+    % \.datatowrite is just `\_relax', so we're done.
+    \_let\.nexttoken=\_relax
+    \_relax
+  \_else
+    % Write some more!
+    \_def\.nexttoken{\.writedata_recursive{#1}}%
+  \_fi
+  \.nexttoken
+}%
+
+\_def\.writeremainderbits#1{%
+  % #1 = name of a matrix that has been prepared and partly filled.
+  % (qr_i,qr_j) = position to write in counters
+  \_ea\_ifnum\.numremainderbits>0\_relax
+    \_def\.datatowrite{}%
+    \.for \.iz = 1 to \.numremainderbits by 1%
+      {\.xaddto{\.datatowrite}{0}}%
+    \.xaddto{\.datatowrite}{\_relax}% terminator
+    \.writedata_recursive{#1}%
+  \_fi
+}%
+
+\_newifi\_ifqr_cellinmask
+
+\_def\.setmaskingfunction#1{%
+  % #1 = 1 decimal digit for the mask. (I see no reason to use the 3-bit binary code.)
+  % The current position is (\themaski,\themaskj), with indexing starting at 0.
+  \_edef\.maskselection{#1}%
+  \_ea\_ifcase\.maskselection\_relax
+    %Case 0: checkerboard
+    \_def\.parsemaskingfunction{%
+      % Compute mod(\themaski+\themaskj,2)%
+      \.a=\.maski%
+      \_advance\.a by \.maskj%
+      \.b=\.a%
+      \_divide\.b by 2%
+      \_multiply\.b by 2%
+      \_advance\.a by -\.b%
+      \_edef\.maskfunctionresult{\_the\.a}%
+    }%
+  \_or
+    %Case 1: horizontal stripes
+    \_def\.parsemaskingfunction{%
+      % Compute mod(\themaski,2)%
+      \_ifodd\.maski\_relax%
+        \_def\.maskfunctionresult{1}%
+      \_else%
+        \_def\.maskfunctionresult{0}%
+      \_fi%
+    }%
+  \_or
+    %Case 2: vertical stripes
+    \_def\.parsemaskingfunction{%
+      % Compute mod(\themaskj,3)%
+      \.a=\.maskj%
+      \_divide\.a by 3%
+      \_multiply\.a by 3%
+      \_advance\.a by -\.maskj%
+      \_edef\.maskfunctionresult{\_the\.a}%
+    }%
+  \_or
+    %Case 3: diagonal stripes
+    \_def\.parsemaskingfunction{%
+      % Compute mod(\themaski+\themaskj,3)%
+      \.a=\.maski%
+      \_advance\.a by \.maskj%
+      \.b=\.a%
+      \_divide\.b by 3%
+      \_multiply\.b by 3%
+      \_advance\.b by -\.a%
+      \_edef\.maskfunctionresult{\_the\.b}%
+    }%
+  \_or
+    %Case 4: wide checkerboard
+    \_def\.parsemaskingfunction{%
+      % Compute mod(floor(\themaski/2) + floor(\themaskj/3),2) %
+      \.a=\.maski%
+      \_divide\.a by 2%
+      \.b=\.maskj%
+      \_divide\.b by 3%
+      \_advance\.a by \.b%
+      \.b=\.a%
+      \_divide\.a by 2%
+      \_multiply\.a by 2%
+      \_advance\.a by -\.b%
+      \_edef\.maskfunctionresult{\_the\.a}%
+    }%
+  \_or
+    %Case 5: quilt
+    \_def\.parsemaskingfunction{%
+      % Compute mod(\themaski*\themaskj,2) + mod(\themaski*\themaskj,3) %
+      \.a=\.maski%
+      \_multiply\.a by \.maskj%
+      \.b=\.a%
+      \.c=\.a%
+      \_divide\.a by 2%
+      \_multiply\.a by 2%
+      \_advance\.a by -\.c% (result will be -mod(i*j,2), which is negative.)
+      \_divide\.b by 3%
+      \_multiply\.b by 3%
+      \_advance\.b by -\.c% (result will be -mod(i*j,3), which is negative.)
+      \_advance\.a by \.b% (result is negative of what's in the spec.)
+      \_edef\.maskfunctionresult{\_the\.a}%
+    }%
+  \_or
+    %Case 6: arrows
+    \_def\.parsemaskingfunction{%
+      % Compute mod( mod(\themaski*\themaskj,2) + mod(\themaski*\themaskj,3) , 2 ) %
+      \.a=\.maski%
+      \_multiply\.a by \.maskj%
+      \.b=\.a%
+      \.c=\.a%
+      \_multiply\.c by 2% % \.c equals 2*i*j.
+      \_divide\.a by 2%
+      \_multiply\.a by 2%
+      \_advance\.c by -\.a% Now \.c equals i*j + mod(i*j,2).
+      \_divide\.b by 3%
+      \_multiply\.b by 3%
+      \_advance\.c by -\.b% (Now \.c equals mod(i*j,2) + mod(i*j,3).
+      \.a=\.c%
+      \_divide\.a by 2%
+      \_multiply\.a by 2%
+      \_advance\.c by-\.a%
+      \_edef\.maskfunctionresult{\_the\.c}%
+    }%
+  \_or
+    %Case 7: shotgun
+    \_def\.parsemaskingfunction{%
+      % Compute mod( mod(\themaski+\themaskj,2) + mod(\themaski*\themaskj,3) , 2 ) %
+      \.a=\.maski%
+      \_advance\.a by \.maskj% %So \.a = i+j
+      \.b=\.maski%
+      \_multiply\.b by \.maskj% %So \.b = i*j
+      \.c=\.a%
+      \_advance\.c by \.b% So \.c = i+j+i*j
+      \_divide\.a by 2%
+      \_multiply\.a by 2%
+      \_advance\.c by -\.a% So \.c = mod(i+j,2) + i*j
+      \_divide\.b by 3%
+      \_multiply\.b by 3%
+      \_advance\.c by -\.b% So \.c = mod(i+j,2) + mod(i*j,3)
+      \.a=\.c%
+      \_divide\.c by 2%
+      \_multiply\.c by 2%
+      \_advance\.a by -\.c%
+      \_edef\.maskfunctionresult{\_the\.a}%
+    }%
+  \_fi
+}%
+
+\_def\.checkifcellisinmask{%
+  % The current position is (\.iz,\.jz), in TeX counts,
+  % but the counters (maski,maskj) should contain
+  % the current position with indexing starting at 0.
+  % That is, maski = \.iz-1 and maskj = \.jz-1.
+  %
+  % \.parsemaskingfunction must have been set by a call to \.setmaskingfunction
+  \.parsemaskingfunction
+  \_ea\_ifnum\.maskfunctionresult=0\_relax
+    \.cellinmasktrue
+  \_else
+    \.cellinmaskfalse
+  \_fi
+}%
+
+\_newcount\.maski
+\_newcount\.maskj
+
+\_def\.applymask#1#2#3{%
+  % #1 = name of a matrix that should be filled out completely
+  %      except for the format and/or version information.
+  % #2 = name of a new matrix to contain the masked version
+  % #3 = 1 decimal digit naming the mask
+  \.createduplicatematrix{#2}{#1}%
+  \.setmaskingfunction{#3}%
+  \.setcounter\.maski{-1}%
+  \.for \.iz = 1 to \.size by 1%
+    {\.stepcounter\.maski
+     \.setcounter\.maskj{-1}%
+     \.for \.jz = 1 to \.size by 1%
+     {\.stepcounter\.maskj
+      \.checkifcellisinmask
+      \_ifqr_cellinmask
+        \.checkifcurrentcellcontainsdata{#2}%
+        \_ifqr_currentcellcontainsdata
+          \.flipcurrentcell{#2}%
+        \_fi
+      \_fi
+      }%
+    }%
+}%
+
+\_newifi\_ifqr_currentcellcontainsdata
+\.currentcellcontainsdatafalse
+
+\_def\.iwhite{\.white}%
+\_def\.iblack{\.black}%
+
+\_def\.checkifcurrentcellcontainsdata#1{%
+  % #1 = name of matrix
+  \.currentcellcontainsdatafalse
+  \_ea\_ifx\_csname #1@\_the\.iz @\_the\.jz\_endcsname\.iwhite
+    \.currentcellcontainsdatatrue
+  \_fi
+  \_ea\_ifx\_csname #1@\_the\.iz @\_the\.jz\_endcsname\.iblack
+    \.currentcellcontainsdatatrue
+  \_fi
+}%
+
+\_def\.flippedblack{\.black}%
+\_def\.flippedwhite{\.white}%
+
+\_def\.flipcurrentcell#1{%
+  % #1 = name of matrix
+  % (\.iz, \.jz) = current position, in TeX counts.
+  % This assumes the cell contains data, either black or white!
+  \_ea\_ifx\_csname #1@\_the\.iz @\_the\.jz\_endcsname\.iwhite
+    \.storetomatrix{#1}{\_the\.iz}{\_the\.jz}{\.flippedblack}%
+  \_else
+    \.storetomatrix{#1}{\_the\.iz}{\_the\.jz}{\.flippedwhite}%
+  \_fi
+}%
+
+\_def\.chooseandapplybestmask#1{%
+  % #1 = name of a matrix that should be filled out completely
+  %      except for the format and/or version information.
+  % This function applies all eight masks in succession,
+  % calculates their penalties, and remembers the best.
+  % The number indicating which mask was used is saved in \.mask_selected.
+  \.createduplicatematrix{originalmatrix}{#1}%
+  \.message{<Applying Mask 0...}%
+  \.applymask{originalmatrix}{#1}{0}%
+  \.message{done. Calculating penalty...}%
+  \.evaluatemaskpenalty{#1}%
+  \_xdef\.currentbestpenalty{\.penalty}%
+  \.message{penalty is \.penalty>^^J}%
+  \_gdef\.currentbestmask{0}%
+  \.for \.iz = 1 to 7 by 1%
+    {\.message{<Applying Mask \_the\.iz...}%
+     \.applymask{originalmatrix}{currentmasked}{\_the\.iz}%
+     \.message{done. Calculating penalty...}%
+     \.evaluatemaskpenalty{currentmasked}%
+     \.message{penalty is \.penalty>^^J}%
+     \_ea\_ea\_ea\_ifnum\_ea\.penalty\_ea<\.currentbestpenalty\_relax
+       %We found a better mask.
+       \_xdef\.currentbestmask{\_the\.iz}%
+       \.createduplicatematrix{#1}{currentmasked}%
+       \_xdef\.currentbestpenalty{\.penalty}%
+     \_fi
+    }%
+  \_xdef\.mask_selected{\.currentbestmask}%
+  \.message{<Selected Mask \.mask_selected>^^J}%
+}%
+
+\_def\.Ni{3}%
+\_def\.Nii{3}%
+\_def\.Niii{40}%
+\_def\.Niv{10}%
+\_def\.fiveones{11111}%
+\_def\.fivezeros{00000}%
+\_def\.twoones{11}%
+\_def\.twozeros{00}%
+\_def\.finderA{00001011101}%
+\_def\.finderB{10111010000}%
+\_def\.finderBthree{1011101000}%
+\_def\.finderBtwo{101110100}%
+\_def\.finderBone{10111010}%
+\_def\.finderBzero{1011101}%
+\_newifi\_ifqr_stringoffive
+\_def\.addpenaltyiii{%
+  \.addtocounter\.penaltyiii{\.Niii}%
+}%
+\_newcount\.totalones
+\_newcount\.penaltyi
+\_newcount\.penaltyii
+\_newcount\.penaltyiii
+\_newcount\.penaltyiv
+\_def\.evaluatemaskpenalty#1{%
+  % #1 = name of a matrix that we will test for the penalty
+  % according to the specs.
+  \.setcounter\.penaltyi{0}%
+  \.setcounter\.penaltyii{0}%
+  \.setcounter\.penaltyiii{0}%
+  \.setcounter\.penaltyiv{0}%
+  \_bgroup%localize the meanings we give to the symbols
+    \_def\.black{1}\_def\.white{0}%
+    \_def\.blackfixed{1}\_def\.whitefixed{0}%
+    \_def\.formatsquare{0}% This is not stated in the specs, but seems
+                            % to be the standard implementation.
+    \_def\.blank{0}% These would be any bits at the end.
+    %
+    \.setcounter\.totalones{0}%
+    \.for \.iz=1 to \.size by 1%
+      {\_def\.lastfive{z}% %The z is a dummy, that will be removed before any testing.
+       \.stringoffivefalse
+       \_def\.lasttwo_thisrow{z}% %The z is a dummy.
+       \_def\.lasttwo_nextrow{z}% %The z is a dummy.
+       \_def\.lastnine{z0000}% %The 0000 stands for the white space to the left. The z is a dummy.
+       \_def\.ignore_finderBat{0}%
+       \.for \.jz=1 to \.size by 1%
+         {\_edef\.newbit{\.matrixentry{#1}{\_the\.iz}{\_the\.jz}}%
+          %
+          % LASTFIVE CODE FOR PENALTY 1
+          % First, add the new bit to the end.
+          \_ea\.xaddto\_ea\.lastfive\_ea{\.newbit}%
+          \_ifnum\.jz<5\_relax%
+            %Not yet on the 5th entry.
+            %Don't do any testing.
+          \_else
+            % 5th entry or later.
+            % Remove the old one, and then test.
+            \.removefirsttoken\.lastfive%
+            \_ifx\.lastfive\.fiveones%
+              \_ifqr_stringoffive
+                %This is a continuation of a previous block of five or more 1's.
+                \.stepcounter\.penaltyi
+              \_else
+                %This is a new string of five 1's.
+                \.addtocounter\.penaltyi{\.Ni}%
+                \_global\.stringoffivetrue
+              \_fi
+            \_else
+              \_ifx\.lastfive\.fivezeros%
+                \_ifqr_stringoffive
+                  %This is a continuation of a previous block of five or more 0's.
+                  \.stepcounter\.penaltyi
+                \_else
+                  %This is a new string of five 0's.
+                  \.addtocounter\.penaltyi{\.Ni}%
+                  \_global\.stringoffivetrue
+                \_fi
+              \_else
+                %This is not a string of five 1's or five 0's.
+                \_global\.stringoffivefalse
+              \_fi
+            \_fi
+          \_fi
+          %
+          % 2x2 BLOCKS FOR PENALTY 2
+          % Every 2x2 block of all 1's counts for \.Nii penalty points.
+          % We do not need to run this test in the last row.
+          \_ea\_ifnum\_ea\.iz\_ea<\.size\_relax
+            \_ea\.xaddto\_ea\.lasttwo_thisrow\_ea{\.newbit}%
+            %Compute \.iplusone
+            \.a=\.iz\_relax%
+            \_advance\.a by 1%
+            \_edef\.iplusone{\_the\.a}%
+            %
+            \_edef\.nextrowbit{\.matrixentry{#1}{\.iplusone}{\_the\.jz}}%
+            \_ea\.xaddto\_ea\.lasttwo_nextrow\_ea{\.nextrowbit}%
+            \_ifnum\.jz<2\_relax%
+              %Still in the first column; no check.
+            \_else
+              %Second column or later.  Remove the old bits, and then test.
+              \.removefirsttoken\.lasttwo_thisrow
+              \.removefirsttoken\.lasttwo_nextrow
+              \_ifx\.lasttwo_thisrow\.twoones
+                \_ifx\.lasttwo_nextrow\.twoones
+                  \.addtocounter\.penaltyii{\.Nii}%
+                \_fi
+              \_else
+                \_ifx\.lasttwo_thisrow\.twozeros
+                  \_ifx\.lasttwo_nextrow\.twozeros
+                    \.addtocounter\.penaltyii{\.Nii}%
+                  \_fi
+                \_fi
+              \_fi
+            \_fi
+          \_fi
+          %
+          % LASTNINE CODE FOR PENALTY 3
+          % First, add the new bit to the end.
+          \_ea\.xaddto\_ea\.lastnine\_ea{\.newbit}%
+          \_ifnum\.jz<7\_relax%
+            %Not yet on the 7th entry.
+            %Don't do any testing.
+          \_else
+            % 7th entry or later.
+            % Remove the old one, and then test.
+            \.removefirsttoken\.lastnine
+            \_ea\_ifnum\.size=\.jz\_relax%
+              % Last column.  Any of the following should count:
+              %     1011101 (\.finderBzero)
+              %    10111010 (\.finderBone)
+              %   101110100 (\.finderBtwo)
+              %  1011101000 (\.finderBthree)
+              % 10111010000 (\.finderB)
+              \_ifx\.lastnine\.finderB
+                \.addpenaltyiii
+              \_else
+                \.removefirsttoken\.lastnine
+                \_ifx\.lastnine\.finderBthree
+                  \.addpenaltyiii
+                \_else
+                  \.removefirsttoken\.lastnine
+                  \_ifx\.lastnine\.finderBtwo
+                    \.addpenaltyiii
+                  \_else
+                    \.removefirsttoken\.lastnine
+                    \_ifx\.lastnine\.finderBone
+                      \.addpenaltyiii
+                    \_else
+                      \.removefirsttoken\.lastnine
+                      \_ifx\.lastnine\.finderBzero
+                        \.addpenaltyiii
+                      \_fi
+                    \_fi
+                  \_fi
+                \_fi
+              \_fi
+            \_else
+              \_ifx\.lastnine\.finderA% %Matches 0000 1011101
+                \.addpenaltyiii
+                %Also, we record our discovery, so that we can't count this pattern again
+                %if it shows up four columns later as 1011101 0000.
+                %
+                %Set \.ignore_finderBat to \.jz+4.
+                \.a=\.jz\_relax%
+                \_advance\.a by 4%
+                \_xdef\.ignore_finderBat{\_the\.a}%
+              \_else
+                \_ifx\.lastfive\.finderB% %Matches 1011101 0000.
+                  \_ea\_ifnum\.ignore_finderBat=\.jz\_relax
+                    %This pattern was *not* counted already earlier.
+                    \.addpenaltyiii
+                  \_fi
+                \_fi
+              \_fi
+            \_fi
+          \_fi
+          %
+          %COUNT 1's FOR PENALTY 4
+          \_ea\_ifnum\.newbit=1\_relax%
+            \.stepcounter\.totalones
+          \_fi
+         }% end of j-loop
+      }% end of i-loop
+    %
+    %NOW WE ALSO NEED TO RUN DOWN THE COLUMNS TO FINISH CALCULATING PENALTIES 1 AND 3.
+    \.for \.jz=1 to \.size by 1%
+      {\_def\.lastfive{z}% %The z is a dummy, that will be removed before any testing.
+       \.stringoffivefalse
+       \_def\.lastnine{z0000}% %The 0000 stands for the white space to the left. The z is a dummy.
+       \_def\.ignore_finderBat{0}%
+       \.for \.iz=1 to \.size by 1%
+         {\_edef\.newbit{\.matrixentry{#1}{\_the\.iz}{\_the\.jz}}%
+          %
+          % LASTFIVE CODE FOR PENALTY 1
+          % First, add the new bit to the end.
+          \_ea\.xaddto\_ea\.lastfive\_ea{\.newbit}%
+          \_ifnum\.iz<5\_relax%
+            %Not yet on the 5th entry.
+            %Don't do any testing.
+          \_else
+            % 5th entry or later.
+            % Remove the old one, and then test.
+            \.removefirsttoken\.lastfive
+            \_ifx\.lastfive\.fiveones%
+              \_ifqr_stringoffive
+                %This is a continuation of a previous block of five or more 1's.
+                \.stepcounter\.penaltyi
+              \_else
+                %This is a new string of five 1's.
+                \.addtocounter\.penaltyi{\.Ni}%
+                \_global\.stringoffivetrue
+              \_fi
+            \_else
+              \_ifx\.lastfive\.fivezeros%
+                \_ifqr_stringoffive
+                  %This is a continuation of a previous block of five or more 0's.
+                  \.stepcounter\.penaltyi
+                \_else
+                  %This is a new string of five 0's.
+                  \.addtocounter\.penaltyi{\.Ni}%
+                  \_global\.stringoffivetrue
+                \_fi
+              \_else
+                %This is not a string of five 1's or five 0's.
+                \_global\.stringoffivefalse
+              \_fi
+            \_fi
+          \_fi
+          %
+          % HAPPILY, WE DON'T NEED TO CALCULATE PENALTY 2 AGAIN.
+          %
+          % LASTNINE CODE FOR PENALTY 3
+          % First, add the new bit to the end.
+          \_ea\.xaddto\_ea\.lastnine\_ea{\.newbit}%
+          \_ifnum\.iz<7\_relax%
+            %Not yet on the 7th entry.
+            %Don't do any testing.
+          \_else
+            % 7th entry or later.
+            % Remove the old one, and then test.
+            \.removefirsttoken\.lastnine
+            \_ea\_ifnum\.size=\.iz\_relax%
+              % Last column.  Any of the following should count:
+              %     1011101 (\.finderBzero)
+              %    10111010 (\.finderBone)
+              %   101110100 (\.finderBtwo)
+              %  1011101000 (\.finderBthree)
+              % 10111010000 (\.finderB)
+              \_ifx\.lastnine\.finderB
+                \.addpenaltyiii
+              \_else
+                \.removefirsttoken\.lastnine
+                \_ifx\.lastnine\.finderBthree
+                  \.addpenaltyiii
+                \_else
+                  \.removefirsttoken\.lastnine
+                  \_ifx\.lastnine\.finderBtwo
+                    \.addpenaltyiii
+                  \_else
+                    \.removefirsttoken\.lastnine
+                    \_ifx\.lastnine\.finderBone
+                      \.addpenaltyiii
+                    \_else
+                      \.removefirsttoken\.lastnine
+                      \_ifx\.lastnine\.finderBzero
+                        \.addpenaltyiii
+                      \_fi
+                    \_fi
+                  \_fi
+                \_fi
+              \_fi
+            \_else
+              \_ifx\.lastnine\.finderA% %Matches 0000 1011101
+                \.addpenaltyiii
+                %Also, we record our discovery, so that we can't count this pattern again
+                %if it shows up four columns later as 1011101 0000.
+                %
+                %Set \.ignore_finderBat to \.iz+4.
+                \.a=\.iz\_relax%
+                \_advance\.a by 4%
+                \_xdef\.ignore_finderBat{\_the\.a}%
+              \_else
+                \_ifx\.lastfive\.finderB% %Matches 1011101 0000.
+                  \_ea\_ifnum\.ignore_finderBat=\.iz\_relax
+                    %This pattern was *not* counted already earlier.
+                    \.addpenaltyiii
+                  \_fi
+                \_fi
+              \_fi
+            \_fi
+          \_fi
+          %
+         }% end of i-loop
+      }% end of j-loop
+  \_egroup
+  %
+  %CALCULATE PENALTY 4
+  %According to the spec, penalty #4 is computed as
+  % floor( |(i/n^2)-0.5|/0.05 )
+  % where i is the total number of 1's in the matrix.
+  % This is equal to abs(20*i-10n^2) div n^2.
+  %
+  \.a=\.totalones\_relax
+  \_multiply\.a by 20\_relax
+  \.b=\.size\_relax
+  \_multiply\.b by \.size\_relax
+  \.c=10\_relax
+  \_multiply\.c by \.b\_relax
+  \_advance\.a by -\.c\_relax
+  \_ifnum\.a<0\_relax
+    \_multiply\.a by -1\_relax
+  \_fi
+  \_divide\.a by \.b\_relax
+  \.setcounter\.penaltyiv{\_the\.a}%
+  %
+  %CALCULATE TOTAL PENALTY
+  \.a=\_the\.penaltyi\_relax%
+  \_advance\.a by \_the\.penaltyii\_relax%
+  \_advance\.a by \_the\.penaltyiii\_relax%
+  \_advance\.a by \_the\.penaltyiv\_relax%
+  \_edef\.penalty{\_the\.a}%
+}%
+
+\_def\.removefirsttoken#1{%
+  %Removes the first token from the macro named in #1.
+  \_edef\.argument{(#1)}%
+  \_ea\.removefirsttoken_int\.argument%
+  \_xdef#1{\.removefirsttoken_result}%
+}%
+\_def\.removefirsttoken_int(#1#2){%
+  \_def\.removefirsttoken_result{#2}%
+}%
+
+\_def\.writeformatstring#1#2{%
+  % #1 = matrix name
+  % #2 = binary string representing the encoded and masked format information
+  \.setcounter\.i{9}%
+  \.setcounter\.j{1}%
+  \_edef\.argument{{#1}(#2\_relax)}%
+  \_ea\.writeformatA_recursive\.argument
+  %
+  \.setcounter\.i{\.numberofrowsinmatrix{#1}}%
+  \.setcounter\.j{9}%
+  \_ea\.writeformatB_recursive\.argument
+}%
+
+\_def\.writeformatA_recursive#1(#2#3){%
+  % #1 = matrix name
+  % #2 = first bit of string
+  % #3 = rest of bitstream
+  % (qr_i,qr_j) = current (valid) position to write (in counters)
+  \_ifnum#2=1\_relax
+    \.storetomatrix{#1}{\_the\.i}{\_the\.j}{\.blackformat}%
+  \_else
+    \.storetomatrix{#1}{\_the\.i}{\_the\.j}{\.whiteformat}%
+  \_fi
+  % Now the tricky part--moving \.iz and \.jz to their next positions.
+  \_ifnum\.j<9\_relax
+    %If we're not yet in column 9, move right.
+    \.stepcounter\.j
+    \_ifnum\.j=7\_relax
+      %But we skip column 7!
+      \.stepcounter\.j
+    \_fi
+  \_else
+    %If we're in column 9, we move up.
+    \.addtocounter\.i{-1}%
+    \_ifnum\.i=7\_relax
+      %But we skip row 7!
+      \.addtocounter\.i{-1}%
+    \_fi
+  \_fi
+  %N.B. that at the end of time, this will leave us at invalid position (0,9).
+  %That makes for an easy test to know when we are done.
+  \_ifnum\.i<1
+    \_let\.nexttoken=\_relax
+  \_else
+    \_def\.nexttoken{\.writeformatA_recursive{#1}(#3)}%
+  \_fi
+  \.nexttoken
+}%
+
+\_def\.writeformatB_recursive#1(#2#3){%
+  % #1 = matrix name
+  % #2 = first bit of string
+  % #3 = rest of bitstream
+  % (qr_i,qr_j) = current (valid) position to write (in counters)
+  \_ifnum#2=1\_relax
+    \.storetomatrix{#1}{\_the\.i}{\_the\.j}{\.blackformat}%
+  \_else
+    \.storetomatrix{#1}{\_the\.i}{\_the\.j}{\.whiteformat}%
+  \_fi
+  % Now the tricky part--moving counters i and j to their next positions.
+  \.a=\.size%
+  \_advance\.a by -6\_relax%
+  \_ifnum\.a<\.i\_relax
+    %If we're not yet in row n-6, move up.
+    \.addtocounter\.i{-1}%
+  \_else
+    \_ifnum\.a=\.i\_relax
+      %If we're actually in row n-6, we jump to position (9,n-7).
+      \.setcounter\.i{9}%
+      %Set counter j equal to \.size-7.
+      \_global\.j=\.size\_relax%
+      \_global\_advance\.j by -7\_relax%
+    \_else
+      %Otherwise, we must be in row 9.
+      %In this case, we move right.
+      \.stepcounter\.j
+    \_fi
+  \_fi
+  %N.B. that at the end of time, this will leave us at invalid position (9,n+1).
+  %That makes for an easy test to know when we are done.
+  \_ea\_ifnum\.size<\.j\_relax
+    \_let\.nexttoken=\_relax
+  \_else
+    \_def\.nexttoken{\.writeformatB_recursive{#1}(#3)}%
+  \_fi
+  \.nexttoken
+}%
+
+\_def\.writeversionstring#1#2{%
+  % #1 = matrix name
+  % #2 = binary string representing the encoded version information
+  %
+  % Plot the encoded version string into the matrix.
+  % This is only done for versions 7 and higher.
+  \_ea\_ifnum\.version>6\_relax
+    %Move to position (n-8,6).
+    \.setcounter\.i{\.size}\_relax%
+    \.addtocounter\.i{-8}\_relax%
+    \.setcounter\.j{6}%
+    \_edef\.argument{{#1}(#2\_relax)}%
+    \_ea\.writeversion_recursive\.argument
+  \_fi
+}%
+
+\_def\.writeversion_recursive#1(#2#3){%
+  % #1 = matrix name
+  % #2 = first bit of string
+  % #3 = rest of bitstream
+  % (qr_i,qr_j) = current (valid) position to write (in counters)
+  %
+  % The version information is stored symmetrically in the matrix
+  % In two transposed regions, so we can write both at the same time.
+  % In the comments, we describe what happens in the lower-left region,
+  % not the upper-right.
+  %
+  %Set \.topline equal to n-10.
+  \.a=\.size\_relax%
+  \_advance\.a by -10\_relax%
+  \_edef\.topline{\_the\.a}%
+  %
+  \_ifnum#2=1\_relax
+    \.storetomatrix{#1}{\_the\.i}{\_the\.j}{\.blackformat}%
+    \.storetomatrix{#1}{\_the\.j}{\_the\.i}{\.blackformat}%
+  \_else
+    \.storetomatrix{#1}{\_the\.i}{\_the\.j}{\.whiteformat}%
+    \.storetomatrix{#1}{\_the\.j}{\_the\.i}{\.whiteformat}%
+  \_fi
+  % Now the tricky part--moving counters i and j to their next positions.
+  \.addtocounter\.i{-1}%
+  \_ea\_ifnum\.topline>\.i\_relax
+    %We've overshot the top of the region.
+    %We need to move left one column and down three.
+    \.addtocounter\.j{-1}%
+    \.addtocounter\.i{3}%
+  \_fi
+  %N.B. that at the end of time, this will leave us at invalid position (n-8,0).
+  %That makes for an easy test to know when we are done.
+  \_ifnum\.j<1\_relax
+    \_let\.nexttoken=\_relax
+  \_else
+    \_def\.nexttoken{\.writeversion_recursive{#1}(#3)}%
+  \_fi
+  \.nexttoken
+}%
+\_newcount\.hexchars
+
+\_def\.encode_binary#1{%
+  % #1 = string of ascii characters, to be converted into bitstream
+  %
+  % We do this one entirely in hex, rather than binary, because we can.
+  %
+  %Now comes the actual data.
+  %
+  {\_endlinechar=-1 \_xdef\.codetext{4\.utfstring{#1}0}}%
+  %The terminator is 0
+  %\.xaddto\.codetext{0}% %This is '0000' in binary.
+  %
+  %There is no need to pad bits to make a multiple of 8,
+  %because the data length is already 4 + 8 + 8n + 4.
+  %
+  %Now add padding codewords if needed.
+  \.setcounter\.hexchars{0}%
+  \.getstringlength{\.codetext}%
+  \.setcounter\.hexchars{\.stringlength}%
+  %Set \.numpaddingcodewords equal to \.totaldatacodewords - hexchars/2.
+  \.a=-\.hexchars\_relax
+  \_divide\.a by 2\_relax
+  \_advance\.a by \.totaldatacodewords\_relax
+  \_edef\.numpaddingcodewords{\_the\.a}%
+  %
+  \_ea\_ifnum\.numpaddingcodewords<0%
+    \_edef\.ds{ERROR: Too much data!  Over by \.numpaddingcodewords bytes.}\_show\.ds
+  \_fi
+  \_ea\_ifnum\.numpaddingcodewords>0%
+    \.for \.iz = 2 to \.numpaddingcodewords by 2%
+      {\.xaddto{\.codetext}{ec11}}%
+    \_ea\_ifodd\.numpaddingcodewords\_relax
+      \.xaddto{\.codetext}{ec}%
+    \_fi
+  \_fi
+}%
+
+\_def\.splitcodetextintoblocks{%
+  \.setcounter\.i{0}%
+  \.for \.jz = 1 to \.numshortblocks by 1%
+    {\.stepcounter\.i
+     \.splitoffblock{\.codetext}{\_the\.i}{\.shortblock_size}%
+    }%
+  \_ea\_ifnum\.numlongblocks>0\_relax
+    \.for \.jz = 1 to \.numlongblocks by 1%
+      {\.stepcounter\.i
+       \.splitoffblock{\.codetext}{\_the\.i}{\.longblock_size}%
+      }%
+  \_fi
+}%
+
+\_def\.splitoffblock#1#2#3{%
+  % #1 = current codetext in hexadecimal
+  % #2 = number to use in csname "\datablock@#2".
+  % #3 = number of bytes to split off
+  \.message{<Splitting off block #2>}%
+  \_ea\_gdef\_csname datablock@#2\_endcsname{}% %This line is important!
+  \.for \.iz = 1 to #3 by 1%
+    {\_edef\.argument{{#2}(#1)}%
+     \_ea\.splitoffblock_int\.argument
+    }%
+}%
+
+\_def\.splitoffblock_int#1(#2#3#4){%
+  % #1 = number to use in csname "\datablock@#1".
+  % #2#3 = next byte to split off
+  % #4 = remaining text
+  %
+  % We add the next byte to "\datablock@#1",
+  % and we remove it from the codetext.
+  \_ea\_xdef\_csname datablock@#1\_endcsname{\_csname datablock@#1\_endcsname#2#3}%
+  \_xdef\.codetext{#4}%
+}%
+
+\_def\.createerrorblocks{%
+  \.for \.ii = 1 to \.numblocks by 1%
+    {\.message{<Making error block \_the\.ii>}%
+     \.FXgenerate_errorbytes{\_csname datablock@\_the\.ii\_endcsname}{\.numeccodewords}%
+     \_ea\_xdef\_csname errorblock@\_the\.ii\_endcsname{\.FXerrorbytes}%
+    }%
+}%
+
+\_def\.interleave{%
+  \.setcounter\.i{0}%
+  \_def\.interleaved_text{}%
+  \.message{<Interleaving datablocks of length \.shortblock_size\_space and \.longblock_size: }%
+  \.for \.ii = 1 to \.shortblock_size by 1%
+    {\.for \.jj = 1 to \.numblocks by 1%
+      {\.writefromblock{datablock}{\_the\.jj}%
+      }%
+     \.message{\_the\.ii,}%
+    }%
+  %The long blocks are numbered \.numshortblocks+1, \.numshortblocks+2, ..., \.numblocks.
+  \.a=\.numshortblocks\_relax
+  \_advance\.a by 1\_relax
+  \.for \.jj = \.a to \.numblocks by 1%
+      {\.writefromblock{datablock}{\_the\.jj}}%
+  \_ea\_ifnum\.numlongblocks>0\_relax%
+    \.message{\.longblock_size.>}%
+  \_else
+    \.message{.>}%
+  \_fi
+  \.message{<Interleaving errorblocks of length \.numeccodewords: }%
+  \.for \.ii = 1 to \.numeccodewords by 1%
+    {\.message{\_the\.ii,}%
+     \.for \.jj = 1 to \.numblocks by 1%
+      {\.writefromblock{errorblock}{\_the\.jj}%
+      }%
+    }%
+  \.message{.><Interleaving complete.>}%
+}%
+
+\_def\.writefromblock#1#2{%
+  % #1 = either 'datablock' or 'errorblock'
+  % #2 = block number, in {1,...,\.numblocks}%
+  \_edef\.argument{(\_csname #1@#2\_endcsname\_relax\_relax\_relax)}%
+  \_ea\.writefromblock_int\.argument
+  \_ea\_xdef\_csname #1@#2\_endcsname{\.writefromblock_remainder}%
+}%
+
+\_def\.writefromblock_int(#1#2#3){%
+  % #1#2 = first byte (in hex) of text, which will be written to \.interleaved_text
+  % #3 = remainder, including \_relax\_relax\_relax terminator.
+  \.xaddto{\.interleaved_text}{#1#2}%
+  \.writefromblock_intint(#3)%
+}%
+
+\_def\.writefromblock_intint(#1\_relax\_relax\_relax){%
+  \_xdef\.writefromblock_remainder{#1}%
+}%
+
+\_newifi\_ifqr_leadingcoeff
+\_def\.testleadingcoeff(#1#2){%
+  % Tests whether the leading digit of #1#2 is 1.
+  \_ifnum#1=1\_relax
+    \.leadingcoefftrue
+  \_else
+    \.leadingcoefffalse
+  \_fi
+}%
+
+\_def\.polynomialdivide#1#2{%
+  \_edef\.numerator{#1}%
+  \_edef\.denominator{#2}%
+  \.divisiondonefalse%
+  \_ea\_ea\_ea\.oneroundofdivision\_ea\_ea\_ea{\_ea\.numerator\_ea}\_ea{\.denominator}%
+}%
+
+\_def\.empty{}%
+\_def\.oneroundofdivision#1#2{%
+  % #1 = f(x), of degree n
+  % #2 = g(x), of degree m
+  % Obtains a new polynomial h(x), congruent to f(x) modulo g(x),
+  % but of degree at most n-1.
+  %
+  % If leading coefficient of f(x) is 1, subtracts off g(x) * x^(n-m).
+  % If leading coefficient of f(x) is 0, strips off that leading zero.
+  %
+  \.testleadingcoeff(#1)%
+  \_ifqr_leadingcoeff
+    \.xorbitstrings{#1}{#2}%
+    \_ifqr_xorfailed
+      %If xor failed, that means our #1 was already the remainder!
+      \.divisiondonetrue
+      \_edef\.theremainder{#1}%
+    \_else
+      %xor succeeded. We need to recurse.
+      \_ea\_ea\_ea\_edef\_ea\_ea\_ea\.numerator\_ea\_ea\_ea{\_ea\.stripleadingzero\_ea(\.xorresult)}%
+    \_fi
+  \_else
+    \_ea\_def\_ea\.numerator\_ea{\.stripleadingzero(#1)}%
+    \_ifx\.numerator\.empty
+      \.divisiondonetrue
+      \_def\.theremainder{0}%
+    \_fi
+  \_fi
+  \_ifqr_divisiondone
+    \_relax
+  \_else
+    \_ea\.oneroundofdivision\_ea{\.numerator}{#2}%
+  \_fi
+}%
+
+\_def\.stripleadingzero(0#1){#1}%Strips off a leading zero.
+
+\_newifi\_ifqr_xorfailed% This flag will trigger when #2 is longer than #1.
+
+\_def\.xorbitstrings#1#2{%
+ % #1 = bitstring
+ % #2 = bitstring no longer than #1
+ \.xorfailedfalse
+ \_edef\.argument{(,#1\_relax\_relax)(#2\_relax\_relax)}%
+ \_ea\.xorbitstrings_recursive\.argument
+ %\.xorbitstrings_recursive(,#1\_relax\_relax)(#2\_relax\_relax)%
+}%
+
+\_def\.xorbitstrings_recursive(#1,#2#3)(#4#5){%
+ % #1#2#3 is the first bitstring, xor'ed up through #1.
+ % #4#5 is the remaining portion of the second bitstring.
+ \_def\.testii{#2}%
+ \_def\.testiv{#4}%
+ \_ifx\.testii\.relax
+   % #1 contains the whole string.
+   % Now if #4 is also \_relax, that means the two strings started off with equal lengths.
+   % If, however, #4 is not \_relax, that means the second string was longer than the first, a problem.
+   \_ifx\.testiv\.relax
+     %No problem.  We are done.
+     \.xorbit_saveresult(#1#2#3)%
+   \_else
+     %Problem!  The second string was longer than the first.
+     \.xorfailedtrue
+     \_def\.xorresult{}%
+   \_fi
+ \_else
+   % There is still a bit to manipulate in #2.
+   % Check whether #4 contains anything.
+   \_ifx\.testiv\.relax
+     % No, #4 is empty.  We are done. "#2#3" contains the remainder of the first string,
+     % which we append untouched and then strip off the two \_relax-es.
+     \.xorbit_saveresult(#1#2#3)%
+   \_else
+     % Yes, #4 still has something to XOR. Do the task.
+     \_ifnum#2=#4\_relax
+       \.xorbitstrings_recursive(#1%
+                                 0,#3)(#5)%
+     \_else
+       \.xorbitstrings_recursive(#1%
+                                 1,#3)(#5)%
+     \_fi
+   \_fi
+ \_fi
+}%
+
+\_def\.xorbit_saveresult(#1\_relax\_relax){%
+  %Strips off the extra '\_relax'es at the end.
+  \_def\.xorresult{#1}%
+}%
+
+\_newifi\_ifqr_divisiondone
+
+\_def\.BCHcode#1{%
+  \_edef\.formatinfo{#1}%
+  \_def\.formatinfopadded{\.formatinfo 0000000000}%
+  \_def\.divisor{10100110111}%
+  \.divisiondonefalse
+  \.polynomialdivide{\.formatinfopadded}{\.divisor}%
+  %
+  \.getstringlength{\.theremainder}%
+  %Run loop from stringlength+1 to 10.
+  \.a=\.stringlength\_relax%
+  \_advance\.a by 1\_relax%
+  \.for \.iz = \.a to 10 by 1%
+    {%
+      \_xdef\.theremainder{0\.theremainder}%
+    }%
+  \_edef\.BCHresult{\.formatinfo\.theremainder}%
+}%
+
+\_def\.formatmask{101010000010010}%
+
+\_def\.encodeandmaskformat#1{%
+  \.BCHcode{#1}%
+  \.xorbitstrings{\.BCHresult}{\.formatmask}%
+  \_edef\.formatbitstring{\.xorresult}%
+}%
+
+\_def\.Golaycode#1{%
+  % #1 = 6-bit version number
+  \_edef\.versioninfo{#1}%
+  \_def\.versioninfopadded{\.versioninfo 000000000000}% %Append 12 zeros.
+  \_def\.divisor{1111100100101}%
+  \.divisiondonefalse
+  \.polynomialdivide{\.versioninfopadded}{\.divisor}%
+  %
+  \.getstringlength{\.theremainder}%
+  %Run loop from stringlength+1 to 12.
+  \.a=\.stringlength\_relax%
+  \_advance\.a by 1\_relax%
+  \.for \.iz = \.a to 12 by 1%
+    {%
+     \_xdef\.theremainder{0\.theremainder}%
+    }%
+  \_edef\.Golayresult{\.versioninfo\.theremainder}%
+}%
+\_def\.Fresult{}%
+
+\_def\.xorbitstring#1#2#3{%
+  % #1 = new macro to receive result
+  % #2, #3 = bitstrings to xor.  The second can be shorter than the first.
+  \_def\.xor_result{}%
+  \_edef\.argument{(#2\_relax\_relax)(#3\_relax\_relax)}%
+  \_ea\.xorbitstring_recursive\.argument%
+  \_edef#1{\.xor_result}%
+}%
+\_def\.xorbitstring_recursive(#1#2)(#3#4){%
+  \_edef\.testi{#1}%
+  \_ifx\.testi\.relax%
+    %Done.
+    \let\.next=\_relax%
+  \_else
+    \_if#1#3\_relax
+      \.xaddto{\.xor_result}{0}%
+    \_else
+      \.xaddto{\.xor_result}{1}%
+    \_fi
+    \_edef\.next{\_noexpand\.xorbitstring_recursive(#2)(#4)}%
+  \_fi
+  \.next
+}
+
+\_def\.Faddchar_raw#1#2{%
+  %Add two hexadecimal digits using bitwise xor
+  \.hextobinary[4]{\.summandA}{#1}%
+  \.hextobinary[4]{\.summandB}{#2}%
+  \.xorbitstring{\.Fresult}{\.summandA}{\.summandB}%
+  \.binarytohex[1]{\.Fresult}{\.Fresult}%
+}%
+
+\_def\.canceltwos#1{%
+  \_edef\.argument{(#1\_relax\_relax)}%
+  \_ea\.canceltwos_int\.argument%
+}%
+
+\_def\.canceltwos_int(#1#2){%
+  \_ea\.canceltwos_recursion(,#1#2)%
+}%
+
+\_def\.canceltwos_recursion(#1,#2#3){%
+  \_def\.testii{#2}%
+  \_ifx\.testii\.relax
+    %Cancelling complete.
+    \.striptworelaxes(#1#2#3)%
+    %Now \.Fresult contains the answer.
+  \_else
+    \_relax
+    \_ifnum#2=2\_relax
+      \.canceltwos_recursion(#10,#3)%
+    \_else
+      \.canceltwos_recursion(#1#2,#3)%
+    \_fi
+  \_fi
+}%
+
+\_def\.striptworelaxes(#1\_relax\_relax){%
+  \_gdef\.Fresult{#1}%
+}%
+
+\.for \.iz = 0 to 15 by 1%
+  {\.decimaltohex[1]{\.tempa}{\_the\.iz}%
+   \.for \.jz = 0 to 15 by 1%
+    {\.decimaltohex[1]{\.tempb}{\_the\.jz}%
+     \.Faddchar_raw\.tempa\.tempb
+     \_ea\_xdef\_csname F at addchar@\.tempa\.tempb\_endcsname{\.Fresult}%
+    }%
+  }%
+
+\_def\.Faddchar#1#2{%
+  \_ea\_def\_ea\.Fresult\_ea{\_csname F at addchar@#1#2\_endcsname}%
+}%
+
+\_def\.Faddstrings#1#2{%
+  \_edef\.argument{(,#1\_relax\_relax)(#2\_relax\_relax)}%
+  \_ea\.Faddstrings_recursion\.argument%
+}%
+
+\_def\.Faddstrings_recursion(#1,#2#3)(#4#5){%
+  %Adds two hexadecimal strings, bitwise, from left to right.
+  %The second string is allowed to be shorter than the first.
+  \_def\.testii{#2}%
+  \_def\.testiv{#4}%
+  \_ifx\.testii\.relax
+    %The entire string has been processed.
+    \_gdef\.Fresult{#1}%
+  \_else
+    \_ifx\.testiv\.relax
+      %The second string is over.
+      \.striptworelaxes(#1#2#3)%
+      %Now \.Fresult contains the answer.
+    \_else
+      %We continue to add.
+      \.Faddchar{#2}{#4}%
+      \_edef\.argument{(#1\.Fresult,#3)(#5)}%
+      \_ea\.Faddstrings_recursion\.argument%
+    \_fi
+  \_fi
+}%
+\_gdef\.Fstripleadingzero(0#1){\_edef\.Fresult{#1}}%
+
+\.i=0%
+\_def\.poweroftwo{1}%
+\.for \.iz = 1 to 254 by 1%
+  {\_global\_advance\.i by1%
+   \.a=\.poweroftwo\_relax
+   \_multiply\.a by 2\_relax
+   \_edef\.poweroftwo{\_the\.a}%
+   \.decimaltohex[2]{\.poweroftwo_hex}{\.poweroftwo}%
+   \_ea\_ifnum\.poweroftwo>255\_relax
+     %We need to bitwise add the polynomial represented by 100011101, i.e. 0x11d.
+     \.Faddstrings{\.poweroftwo_hex}{11d}%               %Now it should start with 0.
+     \_ea\.Fstripleadingzero\_ea(\.Fresult)%              %Now it should be two hex digits.
+     \_edef\.poweroftwo_hex{\.Fresult}%                   %Save the hex version.
+     \.hextodecimal{\.poweroftwo}{\.Fresult}%
+   \_fi
+   \_xdef\.poweroftwo{\.poweroftwo}%
+   \_ea\_xdef\_csname F at twotothe@\_the\.i\_endcsname{\.poweroftwo_hex}%
+   \_ea\_xdef\_csname F at logtwo@\.poweroftwo_hex\_endcsname{\_the\.i}%
+  }%
+\_ea\_xdef\_csname F at twotothe@0\_endcsname{01}%
+\_ea\_xdef\_csname F at logtwo@01\_endcsname{0}%
+
+\_def\.Ftwotothe#1{%
+  \_ea\_xdef\_ea\.Fresult\_ea{\_csname F at twotothe@#1\_endcsname}%
+}%
+\_def\.Flogtwo#1{%
+  \_ea\_xdef\_ea\.Fresult\_ea{\_csname F at logtwo@#1\_endcsname}%
+}%
+
+\_def\.zerozero{00}%
+
+\_def\.Fmultiply#1#2{%
+  % #1 and #2 are two elements of F_256,
+  % given as two-character hexadecimal strings.
+  % Multiply them within F_256, and place the answer in \.Fresult
+  \_edef\.argA{#1}%
+  \_edef\.argB{#2}%
+  \_ifx\.argA\.zerozero
+    \_def\.Fresult{00}%
+  \_else
+    \_ifx\.argB\.zerozero
+      \_def\.Fresult{00}%
+    \_else
+      \_ea\.Flogtwo\_ea{\.argA}%
+        \_edef\.logA{\.Fresult}%
+      \_ea\.Flogtwo\_ea{\.argB}%
+        \_edef\.logB{\.Fresult}%
+      \_ea\.a\_ea=\.logA\_relax%  \.a = \logA
+      \_ea\_advance\_ea\.a\.logB\_relax% \advance \.a by \logB
+      \_ifnum\.a>254\_relax%
+        \_advance\.a by -255\_relax
+      \_fi
+      \_ea\.Ftwotothe\_ea{\_the\.a}%
+      % Now \.Fresult contains the product, as desired.
+    \_fi
+  \_fi
+}%
+
+\_newifi\_ifqr_FXleadingcoeff_zero
+\_def\.FXtestleadingcoeff(#1#2#3){%
+  % Tests whether the leading coefficient of the hex-string #1#2#3 is '00'.
+  \_edef\.FXleadingcoefficient{#1#2}%
+  \.FXleadingcoeff_zerofalse
+  \_ifx\.FXleadingcoefficient\.zerozero
+    \.FXleadingcoeff_zerotrue
+  \_fi
+}%
+
+\_newifi\_ifqr_FXdivisiondone
+
+\_newcount\.divisionsremaining %Keep track of how many divisions to go!
+\_def\.FXpolynomialdivide#1#2{%
+  \_edef\.FXnumerator{#1}%
+  \_edef\.denomin{#2}%
+  \.getstringlength\.FXnumerator
+  \.setcounter\.divisionsremaining{\.stringlength}%
+  \.getstringlength\.denomin
+  \.addtocounter\.divisionsremaining{-\.stringlength}%
+  \.addtocounter\.divisionsremaining{2}%
+  \_divide\.divisionsremaining by 2\_relax  %2 hex chars per number
+  \.FXdivisiondonefalse
+  \_ea\_ea\_ea\.FXpolynomialdivide_recursive\_ea\_ea\_ea{\_ea\.FXnumerator\_ea}\_ea{\.denomin}%
+}%
+
+\_def\.FXpolynomialdivide_recursive#1#2{%
+  % #1 = f(x), of degree n
+  % #2 = g(x), of degree m
+  % Obtains a new polynomial h(x), congruent to f(x) modulo g(x),
+  % but of degree at most n-1.
+  %
+  % If leading coefficient of f(x) is 0, strips off that leading zero.
+  % If leading coefficient of f(x) is a, subtracts off a * g(x) * x^(n-m).
+  % N.B. we assume g is monic.
+  %
+  \.FXtestleadingcoeff(#1)%
+  \_ifqr_FXleadingcoeff_zero
+    %Leading coefficient is zero, so remove it.
+    \_ea\_def\_ea\.FXnumerator\_ea{\.FXstripleadingzero(#1)}%
+  \_else%
+    %Leading coefficient is nonzero, and contained in \.FXleadingcoefficient
+    \.FXsubtractphase{#1}{#2}{\.FXleadingcoefficient}%
+    \_ifqr_FXsubtractfailed
+      %If subtraction failed, that means our #1 was already the remainder!
+      \.FXdivisiondonetrue
+      \_edef\.theremainder{#1}%
+    \_else%
+      %xor succeeded. We need to recurse.
+      \_ea\_ea\_ea\_edef\_ea\_ea\_ea\.FXnumerator\_ea\_ea\_ea{\_ea\.FXstripleadingzero\_ea(\.FXsubtraction_result)}%
+    \_fi%
+  \_fi%
+  \.addtocounter\.divisionsremaining{-1}%
+  \_ifnum\.divisionsremaining=0\_relax
+    %Division is done!
+    \.FXdivisiondonetrue
+    \_edef\.theremainder{\.FXnumerator}%
+    \_relax%
+  \_else%
+    \_ea\.FXpolynomialdivide_recursive\_ea{\.FXnumerator}{#2}%
+  \_fi%
+}%
+
+\_def\.FXstripleadingzero(00#1){#1}%Strips off a single leading zero of F_256.
+
+\_newifi\_ifqr_FXsubtractfailed% This flag will trigger when #2 is longer than #1.
+
+\_def\.FXsubtractphase#1#2#3{%
+ % #1 = bitstring
+ % #2 = bitstring no longer than #1
+ % #3 = leading coefficient
+ \.FXsubtractfailedfalse
+ \_edef\.argument{(,#1\_relax\_relax\_relax)(#2\_relax\_relax\_relax)(#3)}%
+ \_ea\.FXsubtract_recursive\.argument%
+}%
+
+\_def\.FXsubtract_recursive(#1,#2#3#4)(#5#6#7)(#8){%
+ % This is a recursive way to compute f(x) - a*g(x)*x^k.
+ % #1#2#3#4 is the first bitstring, subtracted up through #1.
+ %          Thus #2#3 constitutes the next two-character coefficient.
+ % #5#6#7 is the remaining portion of the second bitstring.
+ %          Thus #5#6 constitutes the next two-character coefficient
+ % #8 is the element a of F_256.  It should contain two characters.
+ \_def\.testii{#2}%
+ \_def\.testv{#5}%
+ \_ifx\.testii\.relax
+   % #1 contains the whole string.
+   % Now if #5 is also \_relax, that means the two strings started off with equal lengths.
+   % If, however, #5 is not \_relax, that means the second string was longer than the first, a problem.
+   \_ifx\.testv\.relax
+     %No problem.  We are done.
+     \.FXsubtract_saveresult(#1#2#3#4)% %We keep the #2#3#4 to be sure we have all three relax-es to strip off.
+   \_else
+     %Problem!  The second string was longer than the first.
+     %This usually indicates the end of the long division process.
+     \.FXsubtractfailedtrue
+     \_def\.FXsubtraction_result{}%
+   \_fi
+ \_else
+   % There is still a coefficient to manipulate in #2#3.
+   % Check whether #5 contains anything.
+   \_ifx\.testv\.relax
+     % No, #5 is empty.  We are done. "#2#3#4" contains the remainder of the first string,
+     % which we append untouched and then strip off the three \_relax-es.
+     \.FXsubtract_saveresult(#1#2#3#4)%
+   \_else
+     % Yes, #5#6 still has something to XOR. Do the task.
+     \.Fmultiply{#5#6}{#8}% Multiply by the factor 'a'.
+     \.Faddstrings{#2#3}{\.Fresult}% Subtract.  (We're in characteristic two, so adding works.)
+     \_edef\.argument{(#1\.Fresult,#4)(#7)(#8)}%
+     \_ea\.FXsubtract_recursive\.argument%
+   \_fi
+ \_fi
+}%
+
+\_def\.FXsubtract_saveresult(#1\_relax\_relax\_relax){%
+  %Strips off the three extra '\_relax'es at the end.
+  \_def\.FXsubtraction_result{#1}%
+}%
+
+\_def\.FXcreategeneratorpolynomial#1{%
+  % #1 = n, the number of error codewords desired.
+  % We need to create \prod_{j=0}^{n-1} (x-2^j).
+  \_edef\.FXgenerator_degree{#1}%
+  \_def\.FXgeneratorpolynomial{01}% Initially, set it equal to 1.
+  \.setcounter\.i{0}%
+  \.FXcreategenerator_recursive%
+  %The result is now stored in \.FXgeneratorpolynomial
+}%
+
+\_def\.FXcreategenerator_recursive{%
+  % \.FXgeneratorpolynomial contains the current polynomial f(x),
+  %   which should be a degree-i polynomial
+  %   equal to \prod_{j=0}^{i-1} (x-2^j).
+  %   (If i=0, then \.FXgeneratorpolynomial should be 01.)
+  % This recursion step should multiply the existing polynomial by (x-2^i),
+  % increment i by 1, and check whether we're done or not.
+  \_edef\.summandA{\.FXgeneratorpolynomial 00}% This is f(x) * x
+  \_edef\.summandB{00\.FXgeneratorpolynomial}% This is f(x), with a 0x^{i+1} in front.
+  \.Ftwotothe{\_the\.i}%
+  \_edef\.theconstant{\.Fresult}%
+  \.FXsubtractphase{\.summandA}{\.summandB}{\.theconstant}%
+     %This calculates \.summandA + \.theconstant * \.summandB
+     %and stores the result in \.FXsubtraction_result
+  \_edef\.FXgeneratorpolynomial{\.FXsubtraction_result}%
+  \.stepcounter\.i
+  \_ea \_ifnum\.FXgenerator_degree=\.i\_relax
+    %We just multiplied by (x-2^{n-1}), so we're done.
+    \_relax
+  \_else%
+    %We need to do this again!
+    \_ea \.FXcreategenerator_recursive
+  \_fi
+}%
+
+\_def\.FXgenerate_errorbytes#1#2{%
+  % #1 = datastream in hex
+  % #2 = number of error correction bytes requested
+  \_edef\.numerrorbytes{#2}%
+  \_ea\.FXcreategeneratorpolynomial\_ea{\.numerrorbytes}%
+  \_edef\.FXnumerator{#1}%
+  \.for \.iz = 1 to \.numerrorbytes by 1%
+    {\.xaddto\.FXnumerator{00}}% %One error byte means two hex codes.
+  \.FXpolynomialdivide{\.FXnumerator}{\.FXgeneratorpolynomial}%
+  \_edef\.FXerrorbytes{\.theremainder}%
+}%
+\_newifi\_ifqr_versionmodules
+
+\_def\.level_char#1{%
+    \_ea\_ifcase#1
+      M\_or L\_or H\_or Q\_fi}%
+
+\_newifi\_ifqr_versiongoodenough
+\_def\.choose_bestversion#1{%
+  % \.desiredversion = user-requested version
+  % \.desiredlevel = user-requested error-correction level
+  \_edef\.stringlength{\.utfstringlen{#1}}%
+  %
+  %Run double loop over levels and versions, looking for
+  %the smallest version that can contain our data,
+  %and then choosing the best error-correcting level at that version,
+  %subject to the level being at least as good as the user desires.
+  \_global\.versiongoodenoughfalse%
+  \_gdef\.bestversion{0}%
+  \_gdef\.bestlevel{0}%
+  \_ifnum\.desiredversion=0\_relax
+    \.a=1\_relax
+  \_else
+    \.a=\.desiredversion\_relax
+  \_fi
+  \.for \.iz=\.a to 40 by 1
+    {\_edef\.version{\_the\.iz}%
+     \_global\.versiongoodenoughfalse
+     \.for \.jz=0 to 3 by 1%
+      {%First, we map {0,1,2,3} to {1,0,4,3}, so that we loop through {M,L,H,Q}
+       %in order of increasing error-correction capabilities.
+       \.a = \.jz\_relax
+       \_divide \.a by 2\_relax
+       \_multiply \.a by 4\_relax
+       \_advance \.a by 1\_relax
+       \_advance \.a by -\.jz\_relax
+       \_edef\.level{\_the\.a}%
+       \_ifnum\.desiredlevel=\.a\_relax
+         \_global\.versiongoodenoughtrue
+       \_fi
+       \_ifqr_versiongoodenough
+         \.calculate_capacity{\.version}{\.level}%
+         \_ea\_ea\_ea\_ifnum\_ea\.truecapacity\_ea<\.stringlength\_relax
+           %Too short
+           \_relax
+         \_else
+           %Long enough!
+           \_xdef\.bestversion{\.version}%
+           \_xdef\.bestlevel{\.level}%
+           \_global\.iz=40%
+         \_fi
+       \_fi
+      }%
+     }%
+  \_edef\.version{\.bestversion}%
+  \_edef\.level{\.bestlevel}%
+  \_ea\_ifnum\.desiredversion>0\_relax
+    \_ifx\.bestversion\.desiredversion\_relax
+      %No change from desired version.
+    \_else
+      %Version was increased
+      \.message{<Requested QR version '\.desiredversion' is too small for desired text.}%
+      \.message{Version increased to '\.bestversion' to fit text.>^^J}%
+    \_fi
+  \_fi
+  \_ifx\.bestlevel\.desiredlevel\_relax
+    %No change in level.
+  \_else
+    \.message{<Error-correction level increased from \.level_char{\.desiredlevel}}%
+    \.message{to \.level_char{\.bestlevel} at no cost.>^^J}%
+  \_fi
+}%
+
+\_def\.calculate_capacity#1#2{%
+  \_edef\.version{#1}%
+  \_edef\.level{#2}%
+  %Calculate \.size, the number of modules per side.
+  % The formula is 4\.version+17.
+  \.a=\.version\_relax
+  \_multiply\.a by 4\_relax
+  \_advance\.a by 17\_relax
+  \_xdef\.size{\_the\.a}%
+  %
+  % Calculate \.k, which governs the number of alignment patterns.
+  % The alignment patterns lie in a kxk square, except for 3 that are replaced by finding patterns.
+  % The formula is 2 + floor( \.version / 7 ), except that k=0 for version 1.
+  \_ea\_ifnum\.version=1\_relax%
+    \_def\.k{0}%
+  \_else%
+    \.a=\.version\_relax
+    \_divide \.a by 7\_relax
+    \_advance\.a by 2\_relax
+    \_edef\.k{\_the\.a}%
+  \_fi%
+  %
+  %Calculate number of function pattern modules.
+  %This consists of the three 8x8 finder patterns, the two timing strips, and the (k^2-3) 5x5 alignment patterns.
+  %The formula is 160+2n+25(k^2-3)-10(k-2), unless k=0 in which case we just have 160+2n.
+  \.a=\.size\_relax
+  \_multiply\.a by 2\_relax
+  \_advance\.a by 160\_relax
+  \_ea\_ifnum\.k=0\_relax\_else
+    %\.k is nonzero, hence at least 2, so we continue to add 25(k^2-3)-10(k-2).
+    \.b=\.k\_relax
+    \_multiply\.b by \.k\_relax
+    \_advance\.b by -3\_relax
+    \_multiply\.b by 25\_relax
+    \_advance\.a by \.b\_relax
+    \.b=\.k\_relax
+    \_advance\.b by -2\_relax
+    \_multiply\.b by 10\_relax
+    \_advance\.a by -\.b\_relax
+  \_fi
+  \_edef\.numfunctionpatternmodules{\_the\.a}%
+  %
+  %Calculate the number of version modules, either 36 or 0.
+  \_ea\_ifnum\.version>6\_relax
+    \.versionmodulestrue
+    \_def\.numversionmodules{36}%
+  \_else
+    \.versionmodulesfalse
+    \_def\.numversionmodules{0}%
+  \_fi
+  %
+  %Now calculate the codeword capacity and remainder bits.
+  %Take n^2 modules, subtract all those dedicated to finder patterns etc., format information, and version information,
+  %and what's left is the number of bits we can play with.
+  %The number of complete bytes is \.numdatacodewords;
+  %the leftover bits are \.numremainderbits.
+  \.a=\.size\_relax
+  \_multiply \.a by \.size\_relax
+  \_advance \.a by -\.numfunctionpatternmodules\_relax
+  \_advance \.a by -31\_relax% % There are 31 format modules.
+  \_advance \.a by -\.numversionmodules\_relax
+  \.b=\.a\_relax
+  \_divide \.a by 8\_relax
+  \_edef\.numdatacodewords{\_the\.a}%
+  \_multiply\.a by 8\_relax
+  \_advance \.b by -\.a\_relax
+  \_edef\.numremainderbits{\_the\.b}%
+  %
+  %The size of the character count indicator also varies by version.
+  %There are only two options, so hardcoding seems easier than expressing these functionally.
+  \_ea\_ifnum\.version<10\_relax
+    \_def\.charactercountbytes_byte{1}%
+    \_def\.charactercountbits_byte{8}%
+  \_else
+    \_def\.charactercountbytes_byte{2}%
+    \_def\.charactercountbits_byte{16}%
+  \_fi
+  %
+  %Now we call on the table, from the QR specification,
+  %of how many blocks to divide the message into, and how many error bytes each block gets.
+  %This affects the true capacity for data, which we store into \.totaldatacodewords.
+  % The following macro sets \.numblocks and \.numeccodewords
+  % based on Table 9 of the QR specification.
+  \.settableix
+  \.a = -\.numblocks\_relax
+  \_multiply \.a by \.numeccodewords\_relax
+  \_advance\.a by \.numdatacodewords\_relax
+  \_edef\.totaldatacodewords{\_the\.a}%
+  \_advance\.a by -\.charactercountbytes_byte\_relax%Subtract character count
+  \_advance\.a by -1\_relax% Subtract 1 byte for the 4-bit mode indicator and the 4-bit terminator at the end.
+  \_edef\.truecapacity{\_the\.a}%
+}
+
+\_def\.setversion#1#2{%
+  % #1 = version number, an integer between 1 and 40 inclusive.
+  % #2 = error-correction level, as an integer between 0 and 3 inclusive.
+  %      0 = 00 = M
+  %      1 = 01 = L
+  %      2 = 10 = H
+  %      3 = 11 = Q
+  % This macro calculates and sets a variety of global macros and/or counters
+  % storing version information that is used later in construction the QR code.
+  % Thus \setversion should be called every time!
+  %
+  \_edef\.version{#1}%
+  \_edef\.level{#2}%
+  %
+  \.calculate_capacity{\.version}{\.level}%
+  %The capacity-check code sets the following:
+  % * \.size
+  % * \.k
+  % * \_ifqr_versionmodules
+  % * \.numversionmodules
+  % * \.numdatacodewords
+  % * \.numremainderbits
+  % * \.charactercountbits_byte
+  % * \.charactercountbytes_byte
+  % * \.numblocks (via \.settableix)
+  % * \.numeccodewords (via \.settableix)
+  % * \.totaldatacodewords
+  %
+  % The alignment patterns' square is 7 modules in from each edge.
+  % They are spaced "as evenly as possible" with an even number of modules between each row/column,
+  % unevenness in division being accommodated by making the first such gap smaller.
+  % The formula seems to be
+  %    general distance = 2*round((n-13)/(k-1)/2+0.25)
+  %                     = 2*floor((n-13)/(k-1)/2+0.75)
+  %                     = 2*floor( (2*(n-13)/(k-1)+3) / 4 )
+  %                     = (((2*(n-13)) div (k-1) + 3 ) div 4 ) * 2
+  %    first distance = leftovers
+  % The 0.25 is to accommodate version 32, which is the only time we round down.
+  % Otherwise a simple 2*ceiling((n-13)/(k-1)/2) would have sufficed.
+  %
+  \.a = \.size\_relax
+  \_advance\.a by -13\_relax
+  \_multiply\.a by 2\_relax
+  \.b = \.k\_relax
+  \_advance \.b by -1\_relax
+  \_divide\.a by \.b\_relax
+  \_advance\.a by 3\_relax
+  \_divide\.a by 4\_relax
+  \_multiply\.a by 2\_relax
+  \_edef\.alignment_generalskip{\_the\.a}%
+  %
+  %Now set \.alignment_firstskip to (\.size-13)-(\.k-2)*\.alignment_generalskip %
+  \.a = \.k\_relax
+  \_advance\.a by -2\_relax
+  \_multiply\.a by -\.alignment_generalskip\_relax
+  \_advance\.a by \.size\_relax
+  \_advance\.a by -13\_relax
+  \_edef\.alignment_firstskip{\_the\.a}%
+  %
+  %
+  %
+  % Our \.totaldatacodewords bytes of data are broken up as evenly as possible
+  % into \.numblocks datablocks; some may be one byte longer than others.
+  % We set \.shortblock_size to floor(\.totaldatacodewords / \.numblocks)
+  % and \.numlongblocks to mod(\.totaldatacodewords , \.numblocks).
+  \.a=\.totaldatacodewords\_relax
+  \_divide\.a by \.numblocks\_relax
+  \_edef\.shortblock_size{\_the\.a}%
+  \_multiply\.a by -\.numblocks\_relax
+  \_advance\.a by \.totaldatacodewords\_relax
+  \_edef\.numlongblocks{\_the\.a}%
+  %
+  %Set \.longblock_size to \.shortblock_size+1.
+  \.a=\.shortblock_size\_relax
+  \_advance\.a by 1\_relax
+  \_edef\.longblock_size{\_the\.a}%
+  %
+  %Set \.numshortblocks to \.numblocks - \.numlongblocks
+  \.b=\.numblocks\_relax
+  \_advance\.b by -\.numlongblocks\_relax
+  \_edef\.numshortblocks{\_the\.b}%
+}%
+
+\_def\.settableix_int(#1,#2){%
+  \_edef\.numblocks{#1}%
+  \_edef\.numeccodewords{#2}%
+}%
+
+\_def\.settableix{%
+\_ea\_ifcase\.level\_relax
+  %00: Level 'M', medium error correction
+  \_edef\.tempdata{(%
+    \_ifcase\.version\_relax
+      \_relax %There is no version 0.
+    \_or1,10%
+    \_or1,16%
+    \_or1,26%
+    \_or2,18%
+    \_or2,24%
+    \_or4,16%
+    \_or4,18%
+    \_or4,22%
+    \_or5,22%
+    \_or5,26%
+    \_or5,30%
+    \_or8,22%
+    \_or9,22%
+    \_or9,24%
+    \_or10,24%
+    \_or10,28%
+    \_or11,28%
+    \_or13,26%
+    \_or14,26%
+    \_or16,26%
+    \_or17,26%
+    \_or17,28%
+    \_or18,28%
+    \_or20,28%
+    \_or21,28%
+    \_or23,28%
+    \_or25,28%
+    \_or26,28%
+    \_or28,28%
+    \_or29,28%
+    \_or31,28%
+    \_or33,28%
+    \_or35,28%
+    \_or37,28%
+    \_or38,28%
+    \_or40,28%
+    \_or43,28%
+    \_or45,28%
+    \_or47,28%
+    \_or49,28%
+  \_fi)}%
+\_or
+  %01: Level 'L', low error correction
+  \_edef\.tempdata{%
+  (\_ifcase\.version\_relax
+    \_relax %There is no version 0.
+  \_or 1,7%
+  \_or 1,10%
+  \_or 1,15%
+  \_or 1,20%
+  \_or 1,26%
+  \_or 2,18%
+  \_or 2,20%
+  \_or 2,24%
+  \_or 2,30%
+  \_or 4,18%
+  \_or 4,20%
+  \_or 4,24%
+  \_or 4,26%
+  \_or 4,30%
+  \_or 6,22%
+  \_or 6,24%
+  \_or 6,28%
+  \_or 6,30%
+  \_or 7,28%
+  \_or 8,28%
+  \_or 8,28%
+  \_or 9,28%
+  \_or 9,30%
+  \_or 10,30%
+  \_or 12,26%
+  \_or 12,28%
+  \_or 12,30%
+  \_or 13,30%
+  \_or 14,30%
+  \_or 15,30%
+  \_or 16,30%
+  \_or 17,30%
+  \_or 18,30%
+  \_or 19,30%
+  \_or 19,30%
+  \_or 20,30%
+  \_or 21,30%
+  \_or 22,30%
+  \_or 24,30%
+  \_or 25,30%
+  \_fi)}%
+\_or
+  %10: Level 'H', high error correction
+  \_edef\.tempdata{(%
+    \_ifcase\.version\_relax
+      \_relax %There is no version 0.
+    \_or1,17%
+    \_or1,28%
+    \_or2,22%
+    \_or4,16%
+    \_or4,22%
+    \_or4,28%
+    \_or5,26%
+    \_or6,26%
+    \_or8,24%
+    \_or8,28%
+    \_or11,24%
+    \_or11,28%
+    \_or16,22%
+    \_or16,24%
+    \_or18,24%
+    \_or16,30%
+    \_or19,28%
+    \_or21,28%
+    \_or25,26%
+    \_or25,28%
+    \_or25,30%
+    \_or34,24%
+    \_or30,30%
+    \_or32,30%
+    \_or35,30%
+    \_or37,30%
+    \_or40,30%
+    \_or42,30%
+    \_or45,30%
+    \_or48,30%
+    \_or51,30%
+    \_or54,30%
+    \_or57,30%
+    \_or60,30%
+    \_or63,30%
+    \_or66,30%
+    \_or70,30%
+    \_or74,30%
+    \_or77,30%
+    \_or81,30%
+  \_fi)}%
+\_or
+  %11: Level 'Q', quality error correction
+  \_edef\.tempdata{(%
+    \_ifcase\.version\_relax
+      \_relax %There is no version 0.
+    \_or1,13%
+    \_or1,22%
+    \_or2,18%
+    \_or2,26%
+    \_or4,18%
+    \_or4,24%
+    \_or6,18%
+    \_or6,22%
+    \_or8,20%
+    \_or8,24%
+    \_or8,28%
+    \_or10,26%
+    \_or12,24%
+    \_or16,20%
+    \_or12,30%
+    \_or17,24%
+    \_or16,28%
+    \_or18,28%
+    \_or21,26%
+    \_or20,30%
+    \_or23,28%
+    \_or23,30%
+    \_or25,30%
+    \_or27,30%
+    \_or29,30%
+    \_or34,28%
+    \_or34,30%
+    \_or35,30%
+    \_or38,30%
+    \_or40,30%
+    \_or43,30%
+    \_or45,30%
+    \_or48,30%
+    \_or51,30%
+    \_or53,30%
+    \_or56,30%
+    \_or59,30%
+    \_or62,30%
+    \_or65,30%
+    \_or68,30%
+    \_fi)}%
+\_fi
+\_ea\.settableix_int\.tempdata
+}%
+
+\_def\.qM{M}\_def\.qz{0}%
+\_def\.qL{L}\_def\.qi{1}%
+\_def\.qH{H}\_def\.qii{2}%
+\_def\.qQ{Q}\_def\.qiii{3}%
+\_def\.setlevel#1{%
+  \_edef\.level_selected{#1}%
+  \_ifx\.level_selected\.qM
+    \_edef\.desiredlevel{0}%
+  \_fi
+  \_ifx\.level_selected\.qL
+    \_edef\.desiredlevel{1}%
+  \_fi
+  \_ifx\.level_selected\.qH
+    \_edef\.desiredlevel{2}%
+  \_fi
+  \_ifx\.level_selected\.qQ
+    \_edef\.desiredlevel{3}%
+  \_fi
+  \_ifx\.level_selected\.qz
+    \_edef\.desiredlevel{0}%
+  \_fi
+  \_ifx\.level_selected\.qi
+    \_edef\.desiredlevel{1}%
+  \_fi
+  \_ifx\.level_selected\.qii
+    \_edef\.desiredlevel{2}%
+  \_fi
+  \_ifx\.level_selected\.qiii
+    \_edef\.desiredlevel{3}%
+  \_fi
+}%
+
+% key-value pairs (OPmac trick 0069)
+\_def\.kv#1{\_ifcsname _qr_kv:#1\_endcsname \_csname _qr_kv:#1\_ea\_endcsname
+   \_else \_ea\.kvunknown \_fi 
+}
+\_def\.kvunknown{???}
+\_def\.kvscan #1#2=#3,{\_ifx#1,\_else \_sdef{_qr_kv:#1#2}{#3}\_ea\.kvscan\_fi}
+
+\_def\.qrset#1{\_def\.tmpb{#1,}%
+   \_replstring\.tmpb{ =}{=}\_replstring\.tmpb{= }{=}%
+   \_replstring\.tmpb{tight,}{qr-border=0,}%
+   \_replstring\.tmpb{padding,}{qr-border=1,}%
+   \_replstring\.tmpb{verbose,}{qr-message=1,}%
+   \_replstring\.tmpb{silent,}{qr-message=0,}%
+   \_replstring\.tmpb{draft,}{qr-final=0,}%
+   \_replstring\.tmpb{final,}{qr-final=1,}%
+   \_replstring\.tmpb{nolink,}{qr-link=0,}%
+   \_replstring\.tmpb{link,}{qr-link=1,}%
+   \_ea\.kvscan\.tmpb,=,%
+   \.desiredheight=\.kv{height}\_relax
+   \.setlevel{\.kv{level}}%
+   \_edef\.desiredversion{\.kv{version}}%
+}
+\.qrset{height=2cm, version=0, level=M, tight, silent, final, nolink}
+
+\_def\.setcounter #1#2{\_global#1=#2\_relax}
+\_def\.stepcounter  #1{\_global\_advance#1 by1\_relax}
+\_def\.addtocounter#1#2{\_global\_advance#1 by#2\_relax}
+
+\_def\.qrcode{\_begingroup
+   \_isnextchar[{\.qrcodeA}{\.qrcodeB}%
+}
+\_def\.qrcodeA[#1]{\.qrset{#1}\_ea\.qrcodeB\_romannumeral-`\.}
+\_def\.qrcodeB#1{%
+   \_if1\.kv{qr-message}\_let\.message=\_message \_else \_def\.message##1{}\_fi
+   \_if1\.kv{qr-border}\_def\.padd{\_kern4\.modulesize}\_else\_def\.padd{}\_fi
+   \_bgroup 
+      \_escapechar=-1
+      \_xdef\.etext{\_detokenize{#1}}\_gdef\.text{#1}%
+   \_egroup
+   \.qrcode_int
+   \_endgroup
+}
+\_def\.qrcode_int{%
+  \.message{<QR code requested for "\.etext" in version
+           \.desiredversion-\.level_char{\.desiredlevel}.>^^J}%
+  %First, choose the version and level.
+  %Recall that \.choose_bestversion sets \.version and \.level.
+  \_ea\.choose_bestversion\_ea{\.etext}%
+  \_if1\.kv{qr-final}%
+     \.setversion{\.version}{\.level}%
+     \.qrcode_int_new
+  \_else
+     \.modulesize=\.desiredheight
+     \_divide\.modulesize by \.size\_relax
+     \_let\.d=\.desiredheight
+     \_vbox{\.padd\_hbox{\.padd\_vbox to\.d{\_hrule\_vss
+        \_hbox to\.d{\_vrule height.7\.d depth.3\.d \_hss ...QR...\_hss\_vrule}%
+        \_vss\_hrule}\.padd}\.padd}%
+  \_fi
+}%
+
+\_public \qrcode \qrset ;
+
+\_def\.qrcode_int_new{%
+  \.qrbeginhook
+  \.createsquareblankmatrix{newqr}{\.size}%
+  \.placefinderpatterns{newqr}%
+  \.placetimingpatterns{newqr}%
+  \.placealignmentpatterns{newqr}%
+  \.placedummyformatpatterns{newqr}%
+  \.placedummyversionpatterns{newqr}%
+  \.message{<Calculating QR code for "\.etext" in
+            version \.version-\.level_char{\.level}.>^^J}%
+  \_ea\.encode_binary\_ea{\.etext}%
+  \.splitcodetextintoblocks
+  \.createerrorblocks
+  \.interleave
+  \.message{<Writing data...}%
+     \.writedata_hex{newqr}{\.interleaved_text}%
+  \.message{done.>^^J}%
+  \.writeremainderbits{newqr}%
+  \.chooseandapplybestmask{newqr}%
+  \.decimaltobinary[2]{\.level_binary}{\.level}%
+  \.decimaltobinary[3]{\.mask_binary}{\.mask_selected}%
+  \_edef\.formatstring{\.level_binary\.mask_binary}%
+  \.message{<Encoding and writing format string...}%
+     \_ea\.encodeandmaskformat\_ea{\.formatstring}%
+     \.writeformatstring{newqr}{\.formatbitstring}%
+  \.message{done.>^^J}%
+  \.message{<Encoding and writing version information...}%
+     \.decimaltobinary[6]{\.version_binary}{\.version}%
+     \.Golaycode{\.version_binary}%
+     \.writeversionstring{newqr}{\.Golayresult}%
+  \.message{done.>^^J}%
+  \.message{<Printing QR code...}%
+     \.matrixtobinary{newqr}%
+     \.restore\.data
+  \.message{done.>^^J}%
+  \.qrendhook
+}%
+
+\_def\.matrixtobinary#1{%
+   \_bgroup
+   \_gdef\.data{}%
+   \_def\.black{1}\_let\.blackfixed=\.black \_let\.blackformat=\.black
+   \_def\.white{0}\_let\.whitefixed=\.white \_let\.whiteformat=\.white
+   \.for \.iz = 1 to \.size by 1
+      {\.for \.jz = 1 to \.size by 1
+          {\_xdef\.data{\.data\.matrixentry{#1}{\_the\.iz}{\_the\.jz}}}}%
+   \_xdef\.data{{\.size}{\.data}}%
+   \_egroup
+}
+
+\_def\.restore#1{\_ea\.restoreA#1}
+\_def\.restoreA#1#2{%
+   \.modulesize=\.desiredheight \_divide\.modulesize by#1
+   \_if1\.kv{qr-link}\_setbox0=\_fi
+   \_vbox\_bgroup\.padd \_offinterlineskip \_baselineskip=\.modulesize 
+      \.i=0 \.j=0 \_let\.next=\.restoreB 
+   \_hbox\_bgroup\.padd \.restoreB #2%
+   \_if1\.kv{qr-link}\.link{\.etext}{\_box0}\_fi
+}
+\_def\.restoreB#1{\_advance \.j by1
+   \_ifx1#1\_vrule height\.modulesize width\.modulesize\_else \_kern\.modulesize\_fi
+   \_ifnum\.size=\.j \_vrule height\.modulesize width 0pt \.padd\_egroup \_advance\.i by1
+      \_ifnum\.size=\.i \.padd\_egroup \_let\.next=\_relax \_else \_hbox\_bgroup\.padd \_fi
+   \_fi \.next
+}
+
+\_def\.qrbeginhook{}
+\_def\.qrendhook{}
+
+\_endcode
+
+This macro file is created for \OpTeX/. It is derived from:
+
+\begtt
+% qrcode.tex
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Petr Olsak <petr at olsak.net>                  Jul. 2015
+
+% This macro qrcode.tex is (roughly speaking) a copy of qrcode.sty
+% macro by Anders Hendrickson <ahendric at cord.edu>, see 
+% http://www.ctan.org/tex-archive/macros/latex/contrib/qrcode
+
+% The main difference between qrcode.sty and qrcode.tex is, that
+% the LaTeX ballast was removed from qrcode.sty by Petr Olsak. The result:
+% The qrcode.tex macro can be used in plain TeX format too.
+\endtt
+
+\secc Usage
+
+Load this macro file by `\load[qrcode]` and then the command
+`\qrcode{<encoded text>}` or `\qrcode[<options>]{<encoded text>}` is ready to use.
+
+The parameter <encoded text> is used as is (without expanding).
+It follows the same rules as in the `\code{<text>}` macro.
+Use these rules if the encoded text includes a \TeX/ sensitive characters.
+
+The characters from all Unicode table are allowed in <encoded text>. 
+
+\secc Options
+
+You can use `\qrset{<options>}` for global-like options and
+`\qrcode[<options>]{<encoded text>}` for local options for one QR code.
+The `\qrset{<options>}` is valid within a group (if exists) or in whole
+document. 
+
+Options are separated by comma and they are in two types: single
+word or key=value format. Default options are: 
+
+\begtt
+\qrset{height=2cm, version=0, level=M, tight, silent, final, nolink}
+\endtt
+
+The options are the same as described in `qrcode.pdf` at 
+\url{http://www.ctan.org/tex-archive/macros/latex/contrib/qrcode}.
+In short:
+
+\begitems
+* `height=dimen`   ... The height of the QRcode without padding.
+
+* `version=number` ... Number 0 to 40 linearly depends on the density of QRcode.
+                   The 0 means that the density is automatically selected.
+
+* `level=letter`   ... L, M, Q o H (low, medium, quality, hight) sets the amount 
+                   of redundancy in the code in order of error recovering.
+
+* `tight`   ... Code without margins.
+* `padding` ... 4module blank margins around the code.
+
+* `verbose` ... Information about calculating in terminal and in the log.
+* `silent`  ... No information about calculating.
+
+* `final`   ... The QR code is calculated and printed.
+* `draft`   ... Only empty rectangle in the same size as QR code is printed.
+
+* `nolink`  ... The QR code is not active hyperlink.
+* `link`    ... The QR code is active hyperlink to <encoded text>.
+
+* `qrborder={R G B}`  ... The color of the frame around active hypertext space
+                      if link option is set. R G B (red green blue) are decimal 
+                      numbers from 0 to 1. The frame is visible only in
+                      pdf viewers. Default: invisible frame.
+\enditems
+
+
+Example:
+
+\begtt
+\qrset{silent}     % ... all codes will be silent in the log and terminal.
+\qrcode [height=3cm, link, padding, qrborder={1 0 0}] {http://petr.olsak.net}  
+                   % ... 3cm QRcode as hyperlink
+\endtt
+
+Note:
+
+The saving/restoring pre-calculated QRcodes isn't supported by default.
+If you are printing the same QR codes repeatedly, use \setbox/\copy
+technique. For example:
+
+\begtt
+\newbox\mybox
+\setbox\mybox=\hbox{\qrcode{encoded text}}
+\copy\mybox \copy\mybox \copy\mybox etc.
+\endtt
+
+If you have a huge amount of different QR codes, you can use draft/final
+options.
+
+The `\_qr_data` macro is saved after each \qrcode calculation in the format
+`{size}{111101011...001}` where size is the number of columns or rows in QR
+square and second parameter includes size^2 ones or zeros which means black
+or white modules (scanned left to right, top to bottom). Another information
+can be retrieved from `\_qr_text` macro (encoded text before expanding) and
+`\_qr_etext` macro (raw encoded text, each charater is detokeinized).
+The macros `\_qr_data`, `\_qr_text` and `\_qr_etext` are saved globally.
+


Property changes on: trunk/Master/texmf-dist/tex/latex/optex/pkg/qrcode.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/tlpkg/libexec/ctan2tds
===================================================================
--- trunk/Master/tlpkg/libexec/ctan2tds	2020-05-06 21:08:34 UTC (rev 55047)
+++ trunk/Master/tlpkg/libexec/ctan2tds	2020-05-06 22:01:50 UTC (rev 55048)
@@ -910,7 +910,6 @@
  'oops',	"die 'skipping, replaced by ccool'",
  'opacity-pro',	"die 'skipping, adobe required (dps)'",
  'opensans',    "&MAKEcopy",
- 'optex',	"&MAKEflatten",
  'optima',      "die 'skipping, nonfree font'",
  'osa',         "die 'skipping, relies on endfloat.cfg and non-unique filenames'",
  'osmanian',    "die 'skipping, no good license info'",
@@ -1440,6 +1439,7 @@
  'mp3d'                 => '&PREHOOK_mp3d',
  'numericplots'		=> '&PREHOOK_flatten1',
  'nwejm'		=> '&PREHOOK_flatten1',
+ 'optex'		=> '&PREHOOK_optex',
  'pgfornament'		=> '&PREHOOK_flatten1',
  'pictex'               => '&PREHOOK_pictex',
  'pkuthss'              => '&PREHOOK_flatten1',
@@ -1550,6 +1550,7 @@
  'niceframe'            => '&POST_rmsymlink',
  'numericplots'         => '&POSTnumericplots',
  'nwejm'		=> '&POSTnwejm',
+ 'optex'		=> '&POSToptex',
  'pas-cv'               => '&POSTpas_vc',
  'pbibtex-base'		=> '&POSTpbibtex_base',
  'pedigree-perl'        => '&POSTpedigreeperl',
@@ -5725,6 +5726,11 @@
   &SYSTEM ("$RM -rf v1.0");
 }
 
+sub PREHOOK_optex { # must do early to be found by the normal install
+  print "PREHOOK_$package - man page\n";
+  &SYSTEM ("$MV doc/optex.1 .");
+}
+
 sub PREHOOK_pictex {
   print "PREHOOK_$package - rm autoarea\n";
   &SYSTEM ("$RM -rf addon/autoarea*");
@@ -6686,6 +6692,12 @@
   &SYSTEM ("$MV images $DEST/tex/latex/$package");
 }
 
+sub POSToptex {
+  print "POST$package - mv base demo pkg subdirs\n";
+  &mv_with_mkdir ("base", "demo", "pkg", "$DEST/tex/latex/$package");
+  &SYSTEM ("$MV doc/* .");
+}
+
 sub POSTpas_vc {
   print "POST$package - mv latex subdir, doc files\n";
   &SYSTEM ("$MV latex $DEST/tex/latex/$package");



More information about the tex-live-commits mailing list.