summaryrefslogtreecommitdiff
path: root/macros/luatex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/luatex')
-rw-r--r--macros/luatex/optex/README120
-rw-r--r--macros/luatex/optex/base/alloc.opm173
-rw-r--r--macros/luatex/optex/base/basic-macros.opm130
-rw-r--r--macros/luatex/optex/base/bib-iso690.opm906
-rw-r--r--macros/luatex/optex/base/bib-simple.opm164
-rw-r--r--macros/luatex/optex/base/cite-bib.opm271
-rw-r--r--macros/luatex/optex/base/colors.opm394
-rw-r--r--macros/luatex/optex/base/doc.opm276
-rw-r--r--macros/luatex/optex/base/f-adventor.opm22
-rw-r--r--macros/luatex/optex/base/f-antt.opm32
-rw-r--r--macros/luatex/optex/base/f-baskerville.opm22
-rw-r--r--macros/luatex/optex/base/f-bonum.opm24
-rw-r--r--macros/luatex/optex/base/f-comicneue.opm23
-rw-r--r--macros/luatex/optex/base/f-cursor.opm22
-rw-r--r--macros/luatex/optex/base/f-dejavu.opm31
-rw-r--r--macros/luatex/optex/base/f-ebgaramond.opm37
-rw-r--r--macros/luatex/optex/base/f-garamondl.opm26
-rw-r--r--macros/luatex/optex/base/f-gfsbodoni.opm22
-rw-r--r--macros/luatex/optex/base/f-heros.opm244
-rw-r--r--macros/luatex/optex/base/f-kerkis.opm32
-rw-r--r--macros/luatex/optex/base/f-kpfonts.opm45
-rw-r--r--macros/luatex/optex/base/f-libertine-s.opm50
-rw-r--r--macros/luatex/optex/base/f-libertine.opm60
-rw-r--r--macros/luatex/optex/base/f-libertinus.opm36
-rw-r--r--macros/luatex/optex/base/f-librecaslon.opm22
-rw-r--r--macros/luatex/optex/base/f-lido.opm48
-rw-r--r--macros/luatex/optex/base/f-lmfonts.opm186
-rw-r--r--macros/luatex/optex/base/f-merriweather.opm33
-rw-r--r--macros/luatex/optex/base/f-pagella.opm24
-rw-r--r--macros/luatex/optex/base/f-poltawski.opm34
-rw-r--r--macros/luatex/optex/base/f-roboto.opm59
-rw-r--r--macros/luatex/optex/base/f-schola.opm24
-rw-r--r--macros/luatex/optex/base/f-sourcepro.opm39
-rw-r--r--macros/luatex/optex/base/f-technika.opm31
-rw-r--r--macros/luatex/optex/base/f-termes.opm24
-rw-r--r--macros/luatex/optex/base/f-xcharter.opm24
-rw-r--r--macros/luatex/optex/base/fams-ini.opm214
-rw-r--r--macros/luatex/optex/base/fnotes.opm191
-rw-r--r--macros/luatex/optex/base/fonts-catalog.opm136
-rw-r--r--macros/luatex/optex/base/fonts-opmac.opm226
-rw-r--r--macros/luatex/optex/base/fonts-preload.opm36
-rw-r--r--macros/luatex/optex/base/fonts-resize.opm354
-rw-r--r--macros/luatex/optex/base/fonts-select.opm846
-rw-r--r--macros/luatex/optex/base/graphics.opm445
-rw-r--r--macros/luatex/optex/base/hi-syntax.opm223
-rw-r--r--macros/luatex/optex/base/hisyntax-c.opm66
-rw-r--r--macros/luatex/optex/base/hisyntax-html.opm31
-rw-r--r--macros/luatex/optex/base/hisyntax-python.opm82
-rw-r--r--macros/luatex/optex/base/hisyntax-tex.opm38
-rw-r--r--macros/luatex/optex/base/hyperlinks.opm157
-rw-r--r--macros/luatex/optex/base/hyphen-lan.opm245
-rw-r--r--macros/luatex/optex/base/if-macros.opm313
-rw-r--r--macros/luatex/optex/base/keyval.opm82
-rw-r--r--macros/luatex/optex/base/languages.opm188
-rw-r--r--macros/luatex/optex/base/lists.opm128
-rw-r--r--macros/luatex/optex/base/logos.opm61
-rw-r--r--macros/luatex/optex/base/luatex-ini.opm136
-rw-r--r--macros/luatex/optex/base/makeindex.opm463
-rw-r--r--macros/luatex/optex/base/maketoc.opm154
-rw-r--r--macros/luatex/optex/base/margins.opm80
-rw-r--r--macros/luatex/optex/base/math-macros.opm1079
-rw-r--r--macros/luatex/optex/base/math-preload.opm227
-rw-r--r--macros/luatex/optex/base/math-unicode.opm266
-rw-r--r--macros/luatex/optex/base/mathclass.opm1591
-rw-r--r--macros/luatex/optex/base/more-macros.opm284
-rw-r--r--macros/luatex/optex/base/multicolumns.opm114
-rw-r--r--macros/luatex/optex/base/optex.ini107
-rw-r--r--macros/luatex/optex/base/optex.lua356
-rw-r--r--macros/luatex/optex/base/others.opm106
-rw-r--r--macros/luatex/optex/base/outlines.opm108
-rw-r--r--macros/luatex/optex/base/output.opm267
-rw-r--r--macros/luatex/optex/base/parameters.opm588
-rw-r--r--macros/luatex/optex/base/pdfuni-string.opm127
-rw-r--r--macros/luatex/optex/base/plain-macros.opm346
-rw-r--r--macros/luatex/optex/base/prefixed.opm298
-rw-r--r--macros/luatex/optex/base/print-unimath.opm56
-rw-r--r--macros/luatex/optex/base/ref-file.opm141
-rw-r--r--macros/luatex/optex/base/references.opm94
-rw-r--r--macros/luatex/optex/base/sections.opm469
-rw-r--r--macros/luatex/optex/base/slides.opm247
-rw-r--r--macros/luatex/optex/base/styles.opm120
-rw-r--r--macros/luatex/optex/base/table.opm526
-rw-r--r--macros/luatex/optex/base/uni-lcuc.opm15944
-rw-r--r--macros/luatex/optex/base/unimath-codes.opm439
-rw-r--r--macros/luatex/optex/base/unimath-table.opm2471
-rw-r--r--macros/luatex/optex/base/usebib.opm398
-rw-r--r--macros/luatex/optex/base/verbatim.opm372
-rw-r--r--macros/luatex/optex/demo/op-biblist.bib298
-rw-r--r--macros/luatex/optex/demo/op-demo.tex127
-rw-r--r--macros/luatex/optex/demo/op-letter-cs.tex41
-rw-r--r--macros/luatex/optex/demo/op-letter-en.tex38
-rw-r--r--macros/luatex/optex/demo/op-ring.pngbin512984 -> 0 bytes
-rw-r--r--macros/luatex/optex/demo/op-slides-bg.pngbin62385 -> 0 bytes
-rw-r--r--macros/luatex/optex/demo/op-slides.tex322
-rw-r--r--macros/luatex/optex/doc/omls.tex832
-rw-r--r--macros/luatex/optex/doc/optex-doc.pdfbin1380041 -> 0 bytes
-rw-r--r--macros/luatex/optex/doc/optex-doc.tex114
-rw-r--r--macros/luatex/optex/doc/optex-math.tex1662
-rw-r--r--macros/luatex/optex/doc/optex-techdoc.tex290
-rw-r--r--macros/luatex/optex/doc/optex-userdoc.tex2019
-rw-r--r--macros/luatex/optex/doc/optex.142
-rw-r--r--macros/luatex/optex/pkg/emoji.opm55
-rw-r--r--macros/luatex/optex/pkg/plain-at.opm43
-rw-r--r--macros/luatex/optex/pkg/qrcode.opm2707
-rw-r--r--macros/luatex/optex/pkg/vlna.opm193
105 files changed, 0 insertions, 44529 deletions
diff --git a/macros/luatex/optex/README b/macros/luatex/optex/README
deleted file mode 100644
index b8f925e47c..0000000000
--- a/macros/luatex/optex/README
+++ /dev/null
@@ -1,120 +0,0 @@
-OpTeX: the LuaTeX format based on Plain TeX and OPmac
-
-Author: Petr Olsak, <petr@olsak.net>
-
-This software is in public domain.
-
-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:
-
-<1.01> Mar. 2021
- Minor code fixes (thanks to reports from users).
- LibreCaslon font file added.
- two new callbacks from new LuaTeX 1.13 added to optex.lua
- active * (in lists) works as normal in math mode.
- f-heros(\slides): additional font XITSMath loaded (to the base FiraMath font).
- \_xhsize seting added to \margins.
-<1.00> Feb. 2021
- The OMLS (OpTeX Markup Language Standard) was developed. It helps to create
- convertors from/to OpTeX documents and similar applications.
- \pdfunidef re-imeplemted.
- \thisoutline introduced.
- \verbchar introduced instead \activettchar.
- Bugs fixing.
-<0.19> Jan. 2021
- emoji support as pkg/emoji.opm.
- non-braakable places generated by luavlna, suported as pkg/vlna.opm.
- \begblock...\endblock introduced.
- comment character allowed after \begtt.
- more robust macros: \replstring, \table.
- complete revision of documentation, spelling corrections.
- Several bugs fixed.
-<0.18> Dec. 2020
- Font support for next 9 families added.
- Font selection system improved.
- Documentation (especially about font selection system) corrected.
- Macros supporting key=value included to the format.
- \foreach macro improved.
- Concept of multilang in bib rewritten.
- \opwarning format changed (line numbers are printed too).
- Several bugs fixed.
-<0.17> Nov. 2020
- optex.lua introduced (instead external ltluatex.lua)
- hyph.patterns are loaded directly by \patterns, not using lua code
- \commentchars introduced (comments which are able to interrupt verbatim mode)
-<0.16> Oct. 2020
- callback.register_x introduced, namespaces for packages corrected
- kerkis and EBGaramond fontfiles added
- little corrections
- optex-math manual: Index added
-<0.15> Jun. 2020
- Release for Overleaf - TL2020.
- More vertical space above in \chap and \secc.
-<0.14> Jun. 2020
- Typeseting Math with OpTeX: new document added.
- Math macros corrected.
- In-line verbatim in section titles allowed.
- \eqbox implemented.
- "\mnote up", "\displaylines to" (new features implemented)
-<0.13> May 2020
- \table have more features: \tabskip, \table to, \table pxto, \vspan
- The \eqalign reimplemented to be more flexible.
- The boundary character ":" introduced in the \table.
- \| undefined in 8bit math: bug fixed.
- \isnextchar: \let\tmp=#1 -> \let\tmp= #1
-<0.12> May 2020
- 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> Apr. 2020
- \phi, \varpi in Unicode: bug fixed
- \mathstyles introduced.
-<0.10> Apr. 2020
- Technical documentation added
- \_famdecl instedad \_fontdecl in font family files (incompatible change).
-<0.09> Syntax highlighting implemented.
-<0.08> \numberedpar implmented. \emergencystretch=20pt added as default.
- \inoval, \incircle, \clipinoval, \clipincircle imlemented.
- \puttext, \putpic x,y instead -y,x (incompatible change!)
- footnotes have separated color stack now.
- \fnotelinks implemented.
- Lists by \begitems...\enditems improved (\novspaces \_vspacehalf, \ilevel).
-<0.07> demos: op-letter.tex and op-slides.tex added.
- \inkinspic, \transformbox, \slides added.
- documentation improved and updated.
-<0.06> tables re-implemented, opmac-rest removed.
- footnotes, marginal notes reimplemented.
- sections.opm, graphics.opm, colors.opm, languages re-implemented
- Cite-bib re-implemented.
- Index, sorting re-implemented.
-<0.05> \boldmath reimplemented
- \fontcolor, \letterspacing implemented
- font catalogue improved
-<0.04> references.opl, hyperlinks.opl re-implemented.
- \fontfam, f-* rewritten: no usage of boundary "..." in \_fontnamegen
- \fnote{...} corrected: (parameter is not really parameter)
- verbatim.opl re-implemented + doc added
- file-ref.opl implemented (new \_Xrefversion{3})
- bugfixing
-<0.03> optex-doc optex.1 included,
- verbatim.opm re-implmented,
- math-unicode implemented,
- usebib.opm + bib-style.opm included
- \catcodetable stack implemented
- bugfixing of macros.
- catcodes.opl: removed, one can use \catcodetable, ... primitives,
- pdfuni-string: lua code for lua5.3 fixed.
-<0.02> Released.
diff --git a/macros/luatex/optex/base/alloc.opm b/macros/luatex/optex/base/alloc.opm
deleted file mode 100644
index 5d874134d4..0000000000
--- a/macros/luatex/optex/base/alloc.opm
+++ /dev/null
@@ -1,173 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_codedecl \newdimen {Allocators for registers <2021-02-15>} % 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\_famalloc=18 \_famalloc=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{%
- \_incr{\_cs{_#2alloc}}%
- \_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 \`\newfam`
- 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\_newfam #1{\_allocator #1{fam}\_chardef}
-
-\_public \newcount \newdimen \newskip \newmuskip \newbox \newtoks \newread \newwrite \newfam ;
-
- \_doc -----------------------------
- The \`\newinsert` macro is defined differently than others.
- \_cod -----------------------------
-
-\_newcount\_insertalloc \_insertalloc=255
-\_chardef\_insertmin = 201
-
-\_def\_newinsert #1{%
- \_decr\_insertalloc
- \_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 \`\newcatcodetable`
- 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/. We absolutely
- don't support the `@`category dance, so `\z@skip`
- `\z@`, `\p@` etc. are not defined in \OpTeX/. If you need such
- control sequences then you can initialize them by `\load[plain-at]`.
-
- Only the \`\_zo` and \`\_zoskip` (equivalents to `\z@` and `\z@skip`)
- are declared here and used in some internal macros of \OpTeX/
- for improving speed.
- \_cod -----------------------------
-
-\_newdimen\_maxdimen \_maxdimen=16383.99999pt % the largest legal <dimen>
-\_newdimen\_zo \_zo=0pt
-\_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 \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 as in old plain\TeX/, but the range of directly used registers
-is wider.
-
-Inserts are allocated from 254 to 201 using `\newinsert`.
-
-You can define your own allocation concept (for example for allocation of
-arrays) from the top of the 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]
- \global\advance\_maicount by -#2\relax
- \ifnum \_countalloc > \_maicount
- \errmessage{No room for a new array of \string\count}%
- \else
- \global\chardef#1=\_maicount
- \fi
-}
-\def\usecount #1[#2]{% \usecount \foo[2]
- \count\numexpr#1+#2\relax
-}
-\endtt
-
-\_endinput
-
-2021-02-15 \_advance -> \_incr, \_decr
-2020-05-12 \newmath -> \newfam bug fixing
-2020-01-23 released
diff --git a/macros/luatex/optex/base/basic-macros.opm b/macros/luatex/optex/base/basic-macros.opm
deleted file mode 100644
index 4d465c3010..0000000000
--- a/macros/luatex/optex/base/basic-macros.opm
+++ /dev/null
@@ -1,130 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_codedecl \sdef {Basic macros for OpTeX <2021-02-03>} % 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 ------------------------------
- \`\ignoreit` ignores next token or `{<text>}`,
- \`\useit``{<text>}` expands to `<text>` (removes outer braces),
- \`\ignoresecond` uses first, ignores second parameter and
- \`\usesecond` ignores first, uses second parameter.
- \_cod ------------------------------
-
-\_long\_def \_ignoreit #1{}
-\_long\_def \_useit #1{#1}
-\_long\_def \_ignoresecond #1#2{#1}
-\_long\_def \_usesecond #1#2{#2}
-\_public \ignoreit \useit \ignoresecond \usesecond ;
-
- \_doc ------------------------------
- \`\bslash` is \"normal backslash" with category code 12.
- \`\nbb` is double backslash
- and \`\pcent` is normal~`%`.
- They can 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\_ea\_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 -----------------------------
- \`\incr``<counter>` increases `<counter>` by one globally.
- \`\decr``<counter>` decreases `<counter>` by one globally.
- \_cod -----------------------------
-
-\_def\_incr #1{\_global\_advance#1by1 }
-\_def\_decr #1{\_global\_advance#1by-1 }
-\_public \incr \decr ;
-
- \_doc ------------------------------
- \`\opwarning` `{<text>}` prints warning on the terminal and to the log file.
- \_cod ------------------------------
-
-\_def \_opwarning #1{\_wterm{WARNING l.\_the\_inputlineno: #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 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 ;
-
- \_doc ------------------------------
- Write a warning if the user did not load a Unicode Font {\em or}
- if there were unresolved references. \`\_byehook` is used in the \^`\bye` macro.
- \_cod ------------------------------
-
-\_def\_byehook{%
- \_ifx\_initunifonts\_relax \_relax\_else \_opwarning{Unicode font was not loaded}\_fi
- \_ifnum\_unresolvedrefs>0 \_opwarning{Try to rerun to get references right}\_fi
-}
-
-\_endcode % -------------------------------------
-
-2021-02-03: \useit defined.
-2021-01-22: \trycs: \ea added in order to be able to use cs with parameters
-2021-01-08: \opwarning format changed (secondly, hope that conclusively)
-2020-10-12: \opwarning: line numbers added
-2020-02-14: introduced
diff --git a/macros/luatex/optex/base/bib-iso690.opm b/macros/luatex/optex/base/bib-iso690.opm
deleted file mode 100644
index c58709ce83..0000000000
--- a/macros/luatex/optex/base/bib-iso690.opm
+++ /dev/null
@@ -1,906 +0,0 @@
-% This is part of the 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 the 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@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}%
-}
-
- \_doc -----------------------------
- Setting phrases.
- \_cod -----------------------------
-
-\_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}
-
- \_doc ----------------------------
- \`\_Mtext``{<identifier>}` expands to a
- phrase by outer document language (no entry language).
- \_cod -----------------------------
-
-\_chardef\_documentlanguage=\_language
-\_def\_Mtext#1{\_csname _mt:#1:\_csname _lan:\_the\_documentlanguage\_endcsname\_endcsname}
-
-\_CreateField {lang}
-\_def\_setlang#1{\_ifx#1\_empty \_else
- \_ifcsname _mt:bib.and:#1\_endcsname \_language=\_csname _#1Patt\_endcsname \_relax
- \_else \_opwarning{No phrases for "#1" used by [\EntryKey] in .bib}%
- \_fi\_fi
-}
-
- \_doc -----------------------------
- Non-standard field names.
- \_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
- \_cs{_\_cs{_lan:\_the\_documentlanguage}dateformat}#1/#2/#3\relax
- \_fi\_fi ]%
-}
-\_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-biblist.bib` for an example of the `.bib` input. You can try it by:
-
-\begtt
-\fontfam[LMfonts]
-\nocite[*]
-\usebib/s (iso690) op-biblist
-\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 badly interpreted.
-
-The entry names and field names are case insensitive. If there exists 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 a special printing of various fields.
-\enditems
-
-There can be only one option field per each entry with (maybe) 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 in 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 the semifinal and final author the word \"and" (or something
-different depending on the current language) is printed.
-
-The first author is printed in reverse order: \"LASTNAME, Firstname(s) von,
-After" and the other authors 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 the 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 are printed in this 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 are 8 or more authors then only the 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 the author's 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 the 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 of authors, replace all
-spaces by `\ ` in this name. Such text is interpreted as Lastname. You
-can add the secondary name (interpreted as Firstname) after the 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 the 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 has to be used for Lastnames in the 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 a colon. Next, the optional secondary
-title has to be printed in an 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 the 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's 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, maybe 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 a different current language is used) before URL.
-It means, that the output of the 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 the 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 use the 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
-the field is missing then a 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 occur.
-
-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 the 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 the 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 this case. If it is used then
-it has precedence before the 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 for 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 the 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-oriented
-bib-marks instead of numbers. This style file auto-generates these marks in the
-form \"Lastname of the first author, comma, space, the year" if the 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 like 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 (i.e.\ 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 placing the auto-citations at 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 the semifinal and final author)
-maybe 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 of the language
-(for example In:). Unfortunately, the bib\TeX/ supposes that the entry data
-are not fully included in the fields so the automaton has to add some
-text during processing (\"ed.", \"Vol.", \"see also", etc.).
-But what language has to be chosen?
-
-The current value of the `\language` register at the start of the `.bib`
-processing is described as the language of the outer document. This language
-is used for technical notes regardless of the entry language. Moreover,
-each entry can have the `lang` field (short name of the language). This
-language is used for ed./vyd., vol./ročník, etc. and it is used for
-hyphenation too. If the `lang` is not set then the outer document
-language is used.
-
-You can use \^`\_Mtext{bib.<identifier>}` if you want to use a phrase
-dependent on outer document language (no on entry language).
-Example:
-
-\begtt
-howpublished = "\_Mtext{bib.blue-ray}"
-\endtt
-
-Now, you can set the variants of `bib.blue-ray` phrase for various
-languages:
-
-\begtt
-\_sdef{_mt:bib.blue-ray:en} {Blue-ray disc}
-\_sdef{_mt:bib.blue-ray:cs} {Blue-ray disk}
-\endtt
-
-
-\seccc Summary of non-standard fields
-
-This style uses the following fields unknown by bib\TeX/:
-
-\begtt
-option ... options separated by spaces
-lang ... the language two-letter code of one entry
-ednote ... edition 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 \catcode`\<=13
-aumax:<number> ... maximum number of printed authors
-aumin:<number> ... number of printed authors if aumax exceeds
-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 of 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
-
-Other options in the option field are silently ignored.
diff --git a/macros/luatex/optex/base/bib-simple.opm b/macros/luatex/optex/base/bib-simple.opm
deleted file mode 100644
index dff747bd57..0000000000
--- a/macros/luatex/optex/base/bib-simple.opm
+++ /dev/null
@@ -1,164 +0,0 @@
-%% This is part of the 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
-
-% Formatting 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}%
-}
-
-\_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~*.\ }{}%
- \_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:thesis}{%
- \_bprinta [!author] {*\.\ }{\_bibwarning}%
- \_bprintb [title] {{\_em##1}\.\ }{\_bibwarning}%
- \_bprinta [type] {*,\ }{\_bibwarning}%
- \_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...
diff --git a/macros/luatex/optex/base/cite-bib.opm b/macros/luatex/optex/base/cite-bib.opm
deleted file mode 100644
index 26a5b17bd4..0000000000
--- a/macros/luatex/optex/base/cite-bib.opm
+++ /dev/null
@@ -1,271 +0,0 @@
-%% This is part of the 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 empty internal macro \`\_savedcites` will include the `<bib-marks>` list to
- be printed. This list is set by `\_citeA` inside a 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 the 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 know what <labels> are used in the document 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 the 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{\_noexpand\cite [#1#2] unknown. Try to TeX me again}\_openref
- \_incr\_unresolvedrefs
- \_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 the 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 bib-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 a 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 implemented in `usebib.opm` file which is loaded
- when the `\usebib` command is used first.
- The `usebib.opm` file loads the `librarian.tex` for scanning 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 ------------------------------
- \_forwardlink\`\nobibwarning` `[<list of bib-labels>]`
- declares a list of bib labels
- which are not fully declared in `.bib` file but we want to suppress the
- warning about it. List of bib labels are comma-separated case sensitive
- list without spaces.
- \_cod ------------------------------
-
-\_def\_nobibwarnlist{,}
-\_def\_nobibwarning[#1]{\_global\_addto\_nobibwarnlist{#1,}}
-\_public \nobibwarning ;
-
- \_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 the usage of `iso690` bib-style.
-
diff --git a/macros/luatex/optex/base/colors.opm b/macros/luatex/optex/base/colors.opm
deleted file mode 100644
index bbda496761..0000000000
--- a/macros/luatex/optex/base/colors.opm
+++ /dev/null
@@ -1,394 +0,0 @@
-%% This is part of the 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 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 headers and footers) to `\_ensureblackA` which sets
- Black at the start of its parameter and returns 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 the current color to your macro by `\let\yourmacro=\_currentcolor`
- and you can return to this color by the command `\_setcolor\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 the next pages and their colors are independent of colors
- used in the main page-body. The \`\_openfnotestack` is defined as
- \`\_openfnotestackA` when the \^`\_setcolor` is used first.
- The \`\_fnotestack` is initialized in 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 the 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 \catcode`\<=13
- 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. 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 independent of \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 return to the black color
-using `\Black` manually.
-
-By default, \OpTeX/ sets `\localcolor`. It means that the typesetting
-returns to a previous color at the end of the current group, so you cannot
-write `\Black` explicitly. This is implemented using the `\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 the previous color is 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 subtractive color
-model CMYK. If the result has a component greater than 1 then all
-components are multiplied by a coefficient in order to the 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 of 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 the black component from the color. You can use
-the `-\Black` trick after `\useK` command to remove grey components
-occurred during color mixing.
-
-Finally, you can use `^` immediately preceded before the 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
diff --git a/macros/luatex/optex/base/doc.opm b/macros/luatex/optex/base/doc.opm
deleted file mode 100644
index ce571a9e81..0000000000
--- a/macros/luatex/optex/base/doc.opm
+++ /dev/null
@@ -1,276 +0,0 @@
-%% This is part of the 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 -----------------------------
- A full page of listing causes underfull `\vbox` in output routine.
- We need to add a small tolerance.
- \_cod -----------------------------
-
-\_pgbottomskip=0pt plus10pt minus2pt
-
- \_doc -----------------------------
- The listing mode is implemented here. The \`\maxlines`
- is maximal lines of code printed in the listing mode.
- \_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}%
-}
-\_def\_remfirstunderscore#1{\_ea\_remfirstunderscoreA#1\_relax#1}
-\_def\_remfirstunderscoreA#1#2\_relax#3{\_if _#1\_def#3{#2}\_fi}
-
- \_doc -----------------------------
- The lines in the listing mode have a 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
- \_ifx\_printfilename\_relax \_penalty \_ttpenalty \_fi \_vskip-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#2\_end{\_fi\_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 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 points and hyperlinks to/from it.
- Main documentation point: \code{\\`\\foo`}.
- User-level documentation point: \code{\\^`\\foo}, first occurence only.
- The next occurrences are only links to the main documentation point.
- Link to user-level documentation point: \code{\\~`\\foo}.
- If user-level documentation point follows the main documentation point
- then use \code{\\_forwardlink\\`\\foo`}.
- \_cod -----------------------------
-
-\_verbchar`
-
-\_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\_forwardlink\`#1`{{\_slet{cs:^\_csstring#1}{relax}\`#1`}}
-
-\_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 a 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`. It is set to almost infinity (100000). You can set it
-to a more sensible value. Such a setting is valid only for the first following
-listing mode.
-
-When the listing mode is finished by `\_doc` then the 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 compensation for this indentation.
-
-The `\_cod` macro ignores the rest of the 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 an active link to the main documentation point of such control sequence
-and prints them in blue. Another 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 a hyperlink to the user documentation point
-if this 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
diff --git a/macros/luatex/optex/base/f-adventor.opm b/macros/luatex/optex/base/f-adventor.opm
deleted file mode 100644
index df22be1130..0000000000
--- a/macros/luatex/optex/base/f-adventor.opm
+++ /dev/null
@@ -1,22 +0,0 @@
-%% This is part of the 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.
-
diff --git a/macros/luatex/optex/base/f-antt.opm b/macros/luatex/optex/base/f-antt.opm
deleted file mode 100644
index 39d3d011ea..0000000000
--- a/macros/luatex/optex/base/f-antt.opm
+++ /dev/null
@@ -1,32 +0,0 @@
-%% This is part of the 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]:script=latn;\_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.
-
diff --git a/macros/luatex/optex/base/f-baskerville.opm b/macros/luatex/optex/base/f-baskerville.opm
deleted file mode 100644
index 4e6027d703..0000000000
--- a/macros/luatex/optex/base/f-baskerville.opm
+++ /dev/null
@@ -1,22 +0,0 @@
-%% This is part of the 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]:script=latn;\_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.
-
diff --git a/macros/luatex/optex/base/f-bonum.opm b/macros/luatex/optex/base/f-bonum.opm
deleted file mode 100644
index a285021b2e..0000000000
--- a/macros/luatex/optex/base/f-bonum.opm
+++ /dev/null
@@ -1,24 +0,0 @@
-%% This is part of the 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.
-
diff --git a/macros/luatex/optex/base/f-comicneue.opm b/macros/luatex/optex/base/f-comicneue.opm
deleted file mode 100644
index a7b9f8e002..0000000000
--- a/macros/luatex/optex/base/f-comicneue.opm
+++ /dev/null
@@ -1,23 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_famdecl [ComicNeue] \Comicneue {Comic Neue sans serif}
- {\angular} {\lf \li \rm \it \bf \bi} {}
- {[ComicNeue-Regular]}
- {\_def\_fontnamegen {[ComicNeue\_anguV-\_currV]:\_fontfeatures}}
-
-\_wlog{\_detokenize{%
-Modifier:^^J
- \angular ...... Angular ends of curves^^J
-Variants:^^J
- \lf (Light) \rm \bf \li (LightItalic) \it \bi^^J
-}}
-
-\_moddef \resetmod {\_fsetV angu={} \_fvars Regular Bold RegularItalic Bolditalic }
-\_moddef \angular {\_fsetV angu=Angular }
-\_famvardef \lf {\_fsetV curr=Light \_rm}
-\_famvardef \li {\_fsetV curr=LightItalic \_rm}
-
-\_initfontfamily % new font family must be initialized
-
-\_endcode
-
diff --git a/macros/luatex/optex/base/f-cursor.opm b/macros/luatex/optex/base/f-cursor.opm
deleted file mode 100644
index 80b2a29457..0000000000
--- a/macros/luatex/optex/base/f-cursor.opm
+++ /dev/null
@@ -1,22 +0,0 @@
-%% This is part of the 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.
-
diff --git a/macros/luatex/optex/base/f-dejavu.opm b/macros/luatex/optex/base/f-dejavu.opm
deleted file mode 100644
index 76fd90c0db..0000000000
--- a/macros/luatex/optex/base/f-dejavu.opm
+++ /dev/null
@@ -1,31 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_famdecl [DejaVu] \Dejavu {Derived from the Vera fonts}
- {\sans \mono \cond \light \caps} {\rm \bf \it \bi} {TG-DejavuMath}
- {[DejaVuSerif]}
- {\_def\_fontnamegen {[DejaVu\_subfamV\_typfamV\_currV]:\_fontfeatures}}
-
-\_wlog{\_detokenize{%
-Modifiers:^^J
- \sans ...... sans serif^^J
- \serif ..... serif (default)^^J
- \mono ...... non-proportional, only \sans^^J
- \light ..... extra-light, only \sans, only \rm, others (\bf\it\bi) unchanged^^J
- \cond ...... condensed (\sans or \serif, not \mono)
-}}
-
-\_def\_BIfvars{\_fvars {} -Bold -Italic -BoldItalic }
-\_def\_BOfvars{\_fvars {} -Bold -Oblique -BoldOblique }
-\_moddef \resetmod {\_fsetV subfam=Serif,typfam={} \_BIfvars }
-\_moddef \sans {\_fsetV subfam=Sans \_BOfvars }
-\_moddef \serif {\_fsetV subfam=Serif,typfam={} \_BOfvars }
-\_moddef \mono {\_fsetV subfam=Sans,typfam=Mono \_BOfvars }
-\_moddef \light {\_fsetV subfam=Sans,typfam={} \_fvars -ExtraLight -Bold -Oblique -BoldOblique }
-\_moddef \cond {\_fsetV typfam=Condensed }
-
-\_initfontfamily % new font family must be initialized
-
-\_loadmath {[texgyredejavu-math]}
-
-\_endcode
-
diff --git a/macros/luatex/optex/base/f-ebgaramond.opm b/macros/luatex/optex/base/f-ebgaramond.opm
deleted file mode 100644
index 63502c9b08..0000000000
--- a/macros/luatex/optex/base/f-ebgaramond.opm
+++ /dev/null
@@ -1,37 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_famdecl [EB Garamond] \EBGaramond {Based on Garamond}
- {\medium \semibold \caps \swash} {\rm \bf \it \bi \initials} {Garamond-Math}
- {[EBGaramond-Regular]}
- {\_def\_fontnamegen {[EBGaramond-\_currV]:\_capsV\_swaV\_fontfeatures}}
-
-\_wlog{\_detokenize{%
-Modifiers:^^J
- \caps ...... caps & small caps^^J
- \swash ..... alternative capitals for \it, \bi, only non-accented letters^^J
- \medium .... medium weight^^J
- \semibold .. semibold weight (only \bf, \bi are changed)^^J
-Variant:^^J
- \initials .. Initials, only letters ADFGLNOQT^^J
-}}
-
-\_moddef \resetmod {\_fsetV caps={},swa={} \_fvars Regular Bold Italic BoldItalic }
-\_moddef \medium {\_fvars Medium ExtraBold MediumItalic ExtraBoldItalic }
-\_moddef \semibold {\_fvars Regular SemiBold Italic SemiBoldItalic }
-\_moddef \caps {\_fsetV caps=+smcp;+onum; }
-\_moddef \nocaps {\_fsetV caps={} }
-\_moddef \swash {\_fsetV swa=+swsh; }
-\_moddef \noswash {\_fsetV swa={} }
-
-\_famvardef \initials {\_fvars Initials . . . \rm}
-
-
-\_initfontfamily % new font family must be initialized
-
-\_loadmath {[Garamond-Math]}
-
-\_endcode
-
-See the file `f-heros.opm` for information about principles of such
-font-macro-files.
-
diff --git a/macros/luatex/optex/base/f-garamondl.opm b/macros/luatex/optex/base/f-garamondl.opm
deleted file mode 100644
index d642aac98c..0000000000
--- a/macros/luatex/optex/base/f-garamondl.opm
+++ /dev/null
@@ -1,26 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_famdecl [Garamond Libre] \Garamondl {Free, derived from old style font family}
- {\caps \swash} {\rm \bf \it \bi} {Garamond-Math}
- {[GaramondLibre-Regular]}
- {\_def\_fontnamegen
- {[GaramondLibre-\_currV]:script=latn;\_capsV\_swaV\_fontfeatures}}
-
-\_wlog{\_detokenize{%
-Modifiers:^^J
- \caps ...... caps & small caps, only non-accented letters^^J
- \swash ..... alternative capitals for \it, \bi, only non-accented letters^^J
-}}
-
-\_moddef \resetmod {\_fsetV caps={},swa={} \_fvars Regular Bold Italic Bolditalic }
-\_moddef \caps {\_fsetV caps=+smcp;+onum;-liga; }
-\_moddef \nocaps {\_fsetV caps={} }
-\_moddef \swash {\_fsetV swa=+swsh; }
-\_moddef \noswash {\_fsetV swa={} }
-
-\_initfontfamily % new font family must be initialized
-
-\_loadmath {[Garamond-Math]}
-
-\_endcode
-
diff --git a/macros/luatex/optex/base/f-gfsbodoni.opm b/macros/luatex/optex/base/f-gfsbodoni.opm
deleted file mode 100644
index d7d3494a9d..0000000000
--- a/macros/luatex/optex/base/f-gfsbodoni.opm
+++ /dev/null
@@ -1,22 +0,0 @@
-%% This is part of the 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]:script=latn;\_capsV\_fontfeatures}}
-
-\_wlog{\_detokenize{%
-Modifier:^^J
- \caps ...... Caps & Small caps (only \rm)^^J
-}}
-
-\_moddef \resetmod {\_fsetV caps={} \_fvars {} Bold It BoldIt }
-\_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.
-
diff --git a/macros/luatex/optex/base/f-heros.opm b/macros/luatex/optex/base/f-heros.opm
deleted file mode 100644
index 767052cc45..0000000000
--- a/macros/luatex/optex/base/f-heros.opm
+++ /dev/null
@@ -1,244 +0,0 @@
-%% This is part of the 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
-
-\_ifmathloading
- \_loadmath {[FiraMath-Regular]}
- \_addto\_normalmath{\_loadumathfamily 5 {xitsmath-regular}{} }
- \_addto\_boldmath {\_loadumathfamily 5 {xitsmath-bold}{} }
- \_addto\frak{\_fam5 }\_addto\cal{\_fam5 }
- \_normalmath
- \_wterm{MATH-FONT(5): "[XITSMath-Regular/Bold]" -- used for \_string\cal, \_string\frak}
- % \bf, \bi from FiraMath:
- \_let\_bsansvariables=\_bfvariables
- \_let\_bsansGreek=\_bfGreek
- \_let\_bsansgreek=\_bfgreek
- \_let\_bsansdigits=\_bfdigits
- \_let\_bisansvariables=\_bivariables
- \_let\_bisansgreek=\_bigreek
-\_fi
-
-\_endcode
-
-The font family file declares the font family for selecting fonts from this
-family at the 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 a font family file, you need to keep the 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 this 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 additional information into a 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.opm`
- 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 do 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` to start the family (it is mandatory).
-* 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 the expand processor level only) to a file name of the loaded font (or to its font
-name) and to optional font features appended. The Font Selection
-System uses this macro at the primitive level in the following sense:
-
-\begtt \catcode`\<=13
-\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.
-
-\seccc Example 1
-
-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 are in `f-<family>.opm` files.
-
-\seccc Example 2
-
-The `f-heros.opm` is listed here. Look at it.
-When Heros family is selected and `\bf` is asked then
-`\font {[texgyreheros-bold]:+tlig;} at10pt`
-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.
-
-\seccc Example 3
-
-If both font modifiers `\caps`, `\cond` were applied in Heros
-family, then `\def\_capsV{+smcp;+onum}` and `\def\_condV{cn}` were processed
-by these font modifiers. If a 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.
-
-\seccc The \code{\\_onlyif} macro
-
-has the syntax \^`\_onlyif` `<word>=<value-a>,<value-b>,...<value-n>: {<what>}`. It can
-be used inside `\moddef` as simple IF statement: the `<what>` is processed only
-if `<word>` has `<value-a>` or `<value-b>` \dots or `<value-n>`. See
-`f-roboto.opm` for examples of usage of many `\_onlyif`'s.
-
-Recommendation: use the \^`\_fontfeatures` macro at the end of the `\_fontnamegen`
-macro in order to the \^`\setff`, \^`\setfontcolor`, \^`\setletterspace`
-macros can work.
-
-\seccc The \code{\\moddef} macro
-
-has the syntax \^`\moddef\<modifier>{<what to do>}`. It does more things than simple `\_def`:
-
-\begitems
-* The modifier macros are defined as `\_protected`.
-* The modifier macros are defined as family-dependent.
-* If the declared control sequence is defined already (and it is not a font
- modifier) then it is re-defined with a warning.
-\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 {...}% this is copied from 7-th parameter of \_famdecl
- \resetmod
- <run all family-dependent font modifiers used before Familyselector without warnings>
-\endtt
-
-{\noindent\bf The \^`\_initfontfamily`}\nl
-must be run after modifier's decaration.
-It runs the `\<Familyselector>` and it runs `\_rm`,
-so the first font from the new family is loaded and it is ready to use it.
-
-\seccc Name conventions
-
-Create font modifiers, new variants, and the `\<Familyselector>` only as public, i.e.
-in user namespace without `_` prefix. We assume that if a user re-defines them then he/she needs
-not them, so we have no problems. If the user's definition was done before loading
-the font family file then it is re-defined and \OpTeX/ warns about it. See the end of
-section~\ref[fontcommands].
-
-The name of `\<Familyselector>` should begin with an uppercase letter.
-
-Please, look at
-\ulink[http://petr.olsak.net/ftp/olsak/optex/op-catalog.pdf]{\OpTeX/ font catalogue}
-before you will create your font family file and use the same names for
-analogical font modifiers (like `\cond`, `\caps`, `\sans`, `\mono` etc.)\
-and for extra variant selectors (like `\lf`, `\li`, `\kf`, `\ki` etc.\ used in
-Roboto font family).
-
-If you are using the same font modifier names to analogical font shapes then
-such modifiers are kept when the family is changed. For example:
-
-\begtt
-\fontfam [Termes] \fontfam[Heros]
-\caps\cond\it Caps+Cond italic in Heros \Termes\currvar Caps italic in Termes.
-\endtt
-%
-The family selector first resets all modifiers data by
-\^`\resetmod` and then it tries to run all currently used family-dependent modifiers
-before the family switching (without warnings if such modifier is
-unavailable in the new family).
-In this example, `\Termes` does `\resetmod` followed by `\caps\cond`.
-The `\caps` is applied and `\cond` is silently ignored in Termes family.
-
-If you need to declare your private modifier (because it is used in other
-modifiers or macros, for example), use the name `\_wordM`. You can be
-sure that such a name does not influence the private namespace used by \OpTeX/.
-
-\seccc 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` or `f-poltawski.opm` where you can find the
-the example of the optical sizes declaration including documentation about
-it.
-
-If you need to create a font family file with a non-Unicode font, you can do it.
-The `\_fontnamegen` must expand to the name of TFM file in this 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's
-codes of such alphabets), but middle or east Europe use languages where
-such a condition is not true.
diff --git a/macros/luatex/optex/base/f-kerkis.opm b/macros/luatex/optex/base/f-kerkis.opm
deleted file mode 100644
index 4bc31ead65..0000000000
--- a/macros/luatex/optex/base/f-kerkis.opm
+++ /dev/null
@@ -1,32 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_famdecl [Kerkis] \Kerkis {Free Bookman alternative with Greek letters}
- {\semibold \sans \sanssemi \caps} {\rm \bf \it \bi \calli} {}
- {[Kerkis]}
- {\_def\_fontnamegen {[Kerkis\_currV]:script=latn;\_fontfeatures}}
-
-\_wlog{\_detokenize{%
-Modifiers:^^J
- \semibold .. semibold weight (changed only \bf, \bi)^^J
- \caps ...... caps & small caps (only \rm \bf, bad accents in \bf)^^J
- \sans ...... sans serif^^J
- \sanssemi .. semibold sans serif (only \rm, accented letters not available)^^J
-Variant:^^J
- \calli ..... Calligraphic (only upercase, lowercase letters equal to Italic)^^J
-}}
-
-\_moddef \resetmod {\_fvars {} -Bold -Italic -BoldItalic }
-\_moddef \semibold {\_fvars {} -SemiBold -Italic -SemiBold-Italic }
-\_moddef \caps {\_fvars -SmallCaps.otf -BoldSmallCaps . . }
-\_moddef \sans {\_fvars Sans Sans-Bold Sans-Italic Sans-BoldItalic }
-\_moddef \sanssemi {\_fvars Sans-SmallCaps . . . }
-
-\_famvardef \calli {\_fvars -Calligraphic . . . \rm}
-
-
-\_initfontfamily % new font family must be initialized
-
-\_endcode
-
-See the file `f-heros.opm` for information about principles of such
-font-macro-files.
diff --git a/macros/luatex/optex/base/f-kpfonts.opm b/macros/luatex/optex/base/f-kpfonts.opm
deleted file mode 100644
index c030bea8e8..0000000000
--- a/macros/luatex/optex/base/f-kpfonts.opm
+++ /dev/null
@@ -1,45 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_famdecl [KP Fonts] \Kpfonts {KP fonts -- Johannes Kepler project}
- {\sans \mono \light \caps \swash} {\rm \bf \it \bi} {KpMath}
- {[KpRoman-Regular]}
- {\_def\_fontnamegen {[Kp\_subfamV-\_currV]:\_capsV\_swaV\_fontfeatures}}
-
-\_wlog{\_detokenize{%
-Modifiers:^^J
- \sans ...... sans serif^^J
- \mono ...... non-proportional^^J
- \light ..... light (\rm, \it) + semibold (\bf, \bi) variants^^J
- \caps ...... caps & small caps^^J
- \swash ..... alternative Q letter^^J
-}}
-
-\_def\_RBIfvars{\_fvars Regular Bold Italic BoldItalic }
-\_moddef \resetmod {\_fsetV subfam=Roman,caps={},swa={} \_RBIfvars }
-\_moddef \sans {\_fsetV subfam=Sans \_RBIfvars }
-\_moddef \mono {\_fsetV subfam=Mono \_RBIfvars }
-\_moddef \light {\_fsetV subfam=Roman \_fvars Light Semibold LightItalic SemiboldItalic }
-\_moddef \caps {\_fsetV caps=+smcp;+onum; }
-\_moddef \nocaps {\_fsetV caps={} }
-\_moddef \swash {\_fsetV swa=+swsh; }
-\_moddef \noswash {\_fsetV swa={} }
-
-\_initfontfamily % new font family must be initialized
-
-\_loadmath {[KpMath-Regular]}
-\_loadboldmath {[KpMath-Bold]} \to {[KpMath-Regular]}
-
-\_endcode
-
-The KP fonts family includes more variants of Math fonts.
-Only Regular / Bold pair is loaded as default.
-
-There are alternatives:
-
-\doloadmath \loadmath {KpMath-Light}
-\loadboldmath {[KpMath-Semibold]} \to {[KpMath-Light]}
-
-or
-
-\doloadmath \loadmath {KpMath-Sans}
-
diff --git a/macros/luatex/optex/base/f-libertine-s.opm b/macros/luatex/optex/base/f-libertine-s.opm
deleted file mode 100644
index 3cdc089312..0000000000
--- a/macros/luatex/optex/base/f-libertine-s.opm
+++ /dev/null
@@ -1,50 +0,0 @@
-%% This is part of the 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
diff --git a/macros/luatex/optex/base/f-libertine.opm b/macros/luatex/optex/base/f-libertine.opm
deleted file mode 100644
index b25c2fc4f9..0000000000
--- a/macros/luatex/optex/base/f-libertine.opm
+++ /dev/null
@@ -1,60 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_famdecl [Linux Libertine] \Libertine {Free Linux Libertine fonts}
- {\sans \mono \caps \semibold} {\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
- \semibold .. semi-bold variants (changed only \bf, \bi)^^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 \semibold {\_fsetV subfam=Libertine \_fvars R RZ RI 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.
-
diff --git a/macros/luatex/optex/base/f-libertinus.opm b/macros/luatex/optex/base/f-libertinus.opm
deleted file mode 100644
index 5f1329d286..0000000000
--- a/macros/luatex/optex/base/f-libertinus.opm
+++ /dev/null
@@ -1,36 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_famdecl [Libertinus] \Libertinus {Free fonts derived from Linux Libertine}
- {\semibold \sans \caps} {\rm \bf \it \bi \mono \initials \displ \keybr} {Libertinus}
- {[LibertinusSerif-Regular]}
- {\_def\_fontnamegen {[Libertinus\_subfamV-\_currV]:\_capsV\_fontfeatures}}
-
-\_wlog{\_detokenize{%
-Modifiers:^^J
- \semibold .. semi-bold variants, changed only \bf, \bi^^J
- \sans ...... smaller serifs, only \rm, \bf \it^^J
- \caps ...... caps & small caps^^J%
-Special variants:^^J
- \mono ..... non-proportional
- \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=Serif,caps={} \_fvars Regular Bold Italic BoldItalic }
-\_moddef \semibold {\_fsetV subfam=Serif \_fvars Regular Semibold Italic SemiboldItalic }
-\_moddef \sans {\_fsetV subfam=Sans \_fvars Regular Bold Italic . }
-\_moddef \caps {\_fsetV caps=+smcp;+onum; }
-\_moddef \nocaps {\_fsetV caps={} }
-
-\_famvardef \mono {\_fsetV subfam=Mono \_fvars Regular . . . \_rm}
-\_famvardef \initials {\_fsetV subfam=SerifInitials \_fvars Regular . . . \_rm}
-\_famvardef \displ {\_fsetV subfam=SerifDisplay \_fvars Regular . . . \_rm}
-\_famvardef \keybr {\_fsetV subfam=Keyboard \_fvars Regular . . . \_rm}
-
-\_initfontfamily % new font family must be initialized
-
-\_loadmath {[LibertinusMath-Regular]}
-
-\_endcode
-
diff --git a/macros/luatex/optex/base/f-librecaslon.opm b/macros/luatex/optex/base/f-librecaslon.opm
deleted file mode 100644
index 53f61834f1..0000000000
--- a/macros/luatex/optex/base/f-librecaslon.opm
+++ /dev/null
@@ -1,22 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_famdecl [LibreCaslon] \Librecaslon {Libre Caslon Text, inspired by Caslon}
- {\onum} {\rm \bf \it \bi} {Termes}
- {[LibreCaslonText-Regular]}
- {\_def\_fontnamegen {[Libre\_currV]:\_capsV\_fontfeatures}}
-
-\_wlog{\_detokenize{%
-Modifier:^^J
- \onum ...... oldstyle figures^^J
-}}
-
-\_moddef \resetmod {\_fsetV caps={},csl={CaslonText}
- \_fvars \_cslV-Regular \_cslV-Bold \_cslV-Italic Csln-Bolditalic }
-\_moddef \onum {\_fsetV caps=+onum; }
-
-\_initfontfamily % new font family must be initialized
-
-\_loadmath {[texgyretermes-math]}
-
-\_endcode
-
diff --git a/macros/luatex/optex/base/f-lido.opm b/macros/luatex/optex/base/f-lido.opm
deleted file mode 100644
index 13b4cb7628..0000000000
--- a/macros/luatex/optex/base/f-lido.opm
+++ /dev/null
@@ -1,48 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_famdecl [Lido] \Lido {by StormType Foundry designed for "lidove noviny"}
- {\cond} {\rm \bf \mf \mi \it \bi} {Termes}
- {[LidoSTF]}
- {\_def\_fontnamegen {[LidoSTF\_condV\_currV]:script=latn;\_capsV\_fontfeatures}}
-
-\_wlog{\_detokenize{%
-Variants:^^J
- \rm \bf \it \bi ... classical variants^^J
- \mf \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 \mf \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 \mf {\_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
-\mf Medium-Regular \mi Medium-Italics
-\bf Bold-Regular \bi Bold-Italics
-
-and three Condensed variants:
-
-\cond \rm Condensed
- \mf 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.
-
diff --git a/macros/luatex/optex/base/f-lmfonts.opm b/macros/luatex/optex/base/f-lmfonts.opm
deleted file mode 100644
index 13865890e2..0000000000
--- a/macros/luatex/optex/base/f-lmfonts.opm
+++ /dev/null
@@ -1,186 +0,0 @@
-%% This is part of the 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 ; % used in \_tryloadtt
-
-\_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 with an 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 us to use shortcuts instead of real <resizing-data>.
-There are shortcuts `\_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
-
-Another example of a font family with optical sizes is Antykwa Półtawskiego.
-The optical sizes feature is deactivated by default and it is switched on by
-`\osize` font modifier:
-
-\printdoc f-poltawski.opm
diff --git a/macros/luatex/optex/base/f-merriweather.opm b/macros/luatex/optex/base/f-merriweather.opm
deleted file mode 100644
index f2972aaafd..0000000000
--- a/macros/luatex/optex/base/f-merriweather.opm
+++ /dev/null
@@ -1,33 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_famdecl [Merriweather] \Merriweather {Modern shapes, sharp serifs}
- {\caps \sans \serif} {\lf \li \rm \bf \it \bi \kr \ki} {}
- {[Merriweather-Regular]}
- {\_def\_fontnamegen {[Merriweather\_sansV-\_currV]:\_capsV\_fontfeatures}}
-
-\_wlog{\_detokenize{%
-Modifiers:^^J
- \sans ...... sans serif^^J
- \serif ..... variants with serifs (default)^^J
- \caps ...... caps & small caps^^J
- \nocaps .... no \caps^^J%
-Extended variants:^^J
- \lf \li .... Light, LightItalic^^J
- \kf \ki .... Black, BlackItalic^^J
-}}
-
-\_moddef \resetmod {\_fsetV caps={},sans={} \_fvars Regular Bold Italic BoldItalic }
-\_moddef \caps {\_fsetV caps=+smcp;+onum; }
-\_moddef \nocaps {\_fsetV caps={} }
-\_moddef \sans {\_fsetV sans=Sans }
-\_moddef \serif {\_fsetV sans={} }
-
-\_famvardef \lf {\_fsetV curr=Light \_rm}
-\_famvardef \li {\_fsetV curr=LightItalic \_rm}
-\_famvardef \kf {\_fsetV curr=ExtraBold \_onlyif sans={}: {\_fsetV curr=Black }\_rm}
-\_famvardef \ki {\_fsetV curr=ExtraBoldItalic \_onlyif sans={}: {\_fsetV curr=BlackItalic }\_rm}
-
-\_initfontfamily % new font family must be initialized
-
-\_endcode
-
diff --git a/macros/luatex/optex/base/f-pagella.opm b/macros/luatex/optex/base/f-pagella.opm
deleted file mode 100644
index a0e4eb8e30..0000000000
--- a/macros/luatex/optex/base/f-pagella.opm
+++ /dev/null
@@ -1,24 +0,0 @@
-%% This is part of the 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.
-
diff --git a/macros/luatex/optex/base/f-poltawski.opm b/macros/luatex/optex/base/f-poltawski.opm
deleted file mode 100644
index ffc7e8474d..0000000000
--- a/macros/luatex/optex/base/f-poltawski.opm
+++ /dev/null
@@ -1,34 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_famdecl [Poltawski] \Poltawski {Antykwa Poltawskiego, Polish traditional font family}
- {\light \noexpd \expd \eexpd \cond \ccond \osize \caps} {\rm \bf \it \bi} {}
- {[antpolt-regular]}
- {\_def\_fontnamegen {[antpolt\_liV\_condV-\_currV]\_capsV\_fontfeatures}}
-
-\_wlog{\_detokenize{%
-Modifiers:^^J
- \light ..... light weight, \bf,\bi=semibold^^J
- \noexpd .... no expanded, no condensed, designed for 10pt size (default)^^J
- \eexpd ..... expanded, designed for 6pt size^^J
- \expd ...... semi expanded, designed for 8pt size^^J
- \cond ...... semi condensed, designed for 12pt size^^J
- \ccond ..... condensed, designed for 17pt size^^J
- \osize ..... auto-sitches between \ccond \cond \noexpd \expd \eexpd by size^^J
- \caps ...... caps & small caps^^J
-}}
-
-\_moddef \resetmod {\_fsetV li={},cond={},caps={} \_fvars regular bold italic bolditalic }
-\_moddef \light {\_fsetV li=lt }
-\_moddef \noexpd {\_fsetV cond={} }
-\_moddef \eexpd {\_fsetV cond=expd }
-\_moddef \expd {\_fsetV cond=semiexpd }
-\_moddef \cond {\_fsetV cond=semicond }
-\_moddef \ccond {\_fsetV cond=cond }
-\_moddef \caps {\_fsetV caps=+smcp;+onum; }
-\_moddef \nocaps {\_fsetV caps={} }
-\_moddef \osize {\_def\_fontnamegen{[antpolt\_liV\_optname{x}-\_currV]:\_capsV\_fontfeatures}%
- \_regoptsizes x ? expd <7 semiexpd <9 {} <11.1 semicond <15 cond <*}
-
-\_initfontfamily % new font family must be initialized
-
-\_endcode
diff --git a/macros/luatex/optex/base/f-roboto.opm b/macros/luatex/optex/base/f-roboto.opm
deleted file mode 100644
index 51dfffff25..0000000000
--- a/macros/luatex/optex/base/f-roboto.opm
+++ /dev/null
@@ -1,59 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_famdecl [Roboto] \Roboto {Geometric grotesk, thin variants included}
- {\cond \mono \ttset \thin \light \normal \bolder \caps}
- {\tf \ti \lf \li \rm \it \mf \mi \bf \bi \kf \ki} {}
- {[Roboto-Regular]}
- {\_def\_fontnamegen {[Roboto\_subV-\_currV]:\_capsV\_fontfeatures}}
-
-\_wlog{\_detokenize{%
-Modifiers (subfamilies):^^J
- \cond ...... Condensed variants (no Thin, Medium, Black)^^J
- \mono ...... Monospaced variants [Mono] (no Black)^^J
- \ttset ..... Typewriter-like variants [Slab] (no Italic, no Medium, Black)^^J%
-Modifiers (face weight):^^J
- \thin ...... \rm, \it = Thin, \bf, \bi = Normal^^J
- \light ..... \rm, \it = Light, \bf, \bi = Medium^^J
- \normal .... \rm, \it = Normal, \bf, \bi = Bold^^J
- \bolder .... \rm, \it = Medium, \bf, \bi = Black^^J%
-Modifiers (Caps):^^J
- \caps ...... Caps & small Caps^^J
- \nocaps .... no \caps^^J%
-Extended variants:^^J
- \tf \ti .... Thin, ThinItalic^^J
- \lf \li .... Light, LightItalic^^J
- \mf \mi .... Medium, MediumItalic^^J
- \kf \ki .... Black, BlackItalic^^J
-}}
-
-\_moddef \resetmod {\_fsetV caps={},sub={},w=n \_fvars Regular Bold Italic BoldItalic }
-\_moddef \mono {\_fsetV sub=Mono \_onlyif w=b: {\normal}}
-\_moddef \cond {\_fsetV sub=Condensed \_onlyif w=b: {\normal}\_onlyif w=t: {\light}}
-\_moddef \ttset {\_fsetV sub=Slab \_fvars Regular Bold . . }
-
-\_moddef \thin {\_onlyif sub={},Mono: {\_fsetV w=t \_fvars Thin Regular ThinItalic Italic }%
- \_onlyif sub=Slab: {\_fsetV w=t \_fvars Thin Regular . . }}
-\_moddef \light {\_onlyif sub={},Mono: {\_fsetV w=l \_fvars Light Medium LightItalic MediumItalic }%
- \_onlyif sub=Condensed: {\_fsetV w=l \_fvars Light Regular LightItalic Italic }%
- \_onlyif sub=Slab: {\_fsetV w=l \_fvars Light Bold . . }}
-\_moddef \normal {\_fsetV w=n \_fvars Regular Bold Italic BoldItalic
- \_onlyif sub=Slab: {\_fvars Regular Bold . . }}
-\_moddef \bolder {\_onlyif sub={}: {\_fsetV w=b \_fvars Medium Black MediumItalic BlackItalic }}
-
-\_moddef \caps {\_fsetV caps=+smcp;+onum; }
-\_moddef \nocaps {\_fsetV caps={} }
-
-\_famvardef \tf {\_thinM \_rm}
-\_famvardef \ti {\_thinM \_it}
-\_famvardef \lf {\_lightM \_rm}
-\_famvardef \li {\_lightM \_it}
-\_famvardef \mf {\_bolderM \_rm}
-\_famvardef \mi {\_bolderM \_it}
-\_famvardef \kf {\_bolderM \_bf}
-\_famvardef \ki {\_bolderM \_bi}
-\_let\_thinM=\thin \_let\_lightM=\light \_let\_bolderM=\bolder
-
-\_initfontfamily % new font family must be initialized
-
-\_endcode
-
diff --git a/macros/luatex/optex/base/f-schola.opm b/macros/luatex/optex/base/f-schola.opm
deleted file mode 100644
index 067a6d0ce2..0000000000
--- a/macros/luatex/optex/base/f-schola.opm
+++ /dev/null
@@ -1,24 +0,0 @@
-%% This is part of the 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.
-
diff --git a/macros/luatex/optex/base/f-sourcepro.opm b/macros/luatex/optex/base/f-sourcepro.opm
deleted file mode 100644
index a8e847104e..0000000000
--- a/macros/luatex/optex/base/f-sourcepro.opm
+++ /dev/null
@@ -1,39 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_famdecl [Source Pro] \Sourcepro {SourceSerifPro,SourceSansPro,SourceCodePro}
- {\serif \sans \mono \light \elight \bolder \medium \caps} {\rm \bf \it \bi} {Termes}
- {[SourceSerifPro-Regular]}
- {\_def\_fontnamegen {[Source\_typfV Pro-\_currV]:\_capsV\_fontfeatures}}
-
-\_wlog{\_detokenize{%
-Modifiers:^^J
- \serif ..... Serif family (default)^^J
- \sans ...... Sans family^^J
- \mono ...... Code family^^J
- \light ..... \rm=Light, \bf=Semibold^^J
- \elight .... \rm=Extra light, \bf=Regular^^J
- \bolder .... \rm=Semibold, \bf=Black^^J
- \medium .... \rm=Medium, \bf=Bold (only for \mono family)^^J
- \caps ...... caps & small caps, only for \sans (\serif: only \rm,\bf)^^J
-}}
-
-\_moddef \resetmod {\_fsetV typf=Serif,caps={} \_fvars Regular Bold RegularIt BoldIt }
-\_moddef \serif {\_fsetV typf=Serif }
-\_moddef \sans {\_fsetV typf=Sans }
-\_moddef \mono {\_fsetV typf=Code }
-\_moddef \light {\_fvars Light Semibold LightIt SemiboldIt }
-\_moddef \elight {\_fvars ExtraLight Regular ExtraLightIt RegularIt }
-\_moddef \bolder {\_fvars Semibold Black SemiboldIt BlackIt }
-\_moddef \medium {\_fsetV typf=Code \_fvars Medium Bold MediumIt BoldIt }
-\_moddef \caps {\_fsetV caps=+smcp;+onum; }
-\_moddef \nocaps {\_fsetV caps={} }
-
-\_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.
-
diff --git a/macros/luatex/optex/base/f-technika.opm b/macros/luatex/optex/base/f-technika.opm
deleted file mode 100644
index 77b894e53b..0000000000
--- a/macros/luatex/optex/base/f-technika.opm
+++ /dev/null
@@ -1,31 +0,0 @@
-%% This is part of the 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.
-
diff --git a/macros/luatex/optex/base/f-termes.opm b/macros/luatex/optex/base/f-termes.opm
deleted file mode 100644
index 8cd6ee6d8a..0000000000
--- a/macros/luatex/optex/base/f-termes.opm
+++ /dev/null
@@ -1,24 +0,0 @@
-%% This is part of the 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.
-
diff --git a/macros/luatex/optex/base/f-xcharter.opm b/macros/luatex/optex/base/f-xcharter.opm
deleted file mode 100644
index 9ad886d47f..0000000000
--- a/macros/luatex/optex/base/f-xcharter.opm
+++ /dev/null
@@ -1,24 +0,0 @@
-%% This is part of the 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]:script=latn;\_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.
-
diff --git a/macros/luatex/optex/base/fams-ini.opm b/macros/luatex/optex/base/fams-ini.opm
deleted file mode 100644
index 3c8ded975e..0000000000
--- a/macros/luatex/optex/base/fams-ini.opm
+++ /dev/null
@@ -1,214 +0,0 @@
-%% This is part of the 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 catalog :}
-
-\_faminfo [Catalogue] {Catalogue of all registered font families} {fonts-catalog} {}
-\_famalias [Catalog]
-
-\_famtext {Computer Modern like family:}
-
-\_famfrom {GUST}
-\_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] \_famalias [lm]
-
-\_famtext {TeX Gyre fonts based on 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 [Palatino]
-
-\_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:}
-
-\_famfrom {Philipp H. Poll}
-\_faminfo [Linux Libertine] {Free fonts typically installed on systems} {f-libertine}
- { -: {\rm\bf\it\bi} \semibold: {\bf\bi}
- \caps,\sans,\mono,\caps\sans: {\rm\bf\it\bi} -: {\initials\displ\keybr} }
-\_famalias [Libertine] \_famalias [LinLibertine]
-
-\_famfrom {Philipp H. Poll, Khaled Hosny}
-\_faminfo [Libertinus] {Free fonts derived from Linux Libertine} {f-libertinus}
- { -: {\rm\bf\it\bi} \semibold: {\bf\bi} \sans: {\rm\bf\it}
- \caps: {\rm\bf\it\bi} \caps\semibold: {\bf\bi} \caps\sans: {\rm\bf\it}
- -: {\mono\initials\displ\keybr} }
-
-\_famfrom {Daniel Flipo}
-\_faminfo [KP fonts] {KP fonts -- Johannes Kepler project} {f-kpfonts}
- { -,\light,\sans,\mono, \caps, \caps\light, \caps\sans,\caps\mono,\swash: {\rm\bf\it\bi} }
-\_famalias [KP]
-
-\_famfrom {DejaVu fonts team}
-\_faminfo [DejaVu] {Derived from the Vera fonts} {f-dejavu}
- { -,\cond,\sans,\sans\cond,\mono: {\rm\bf\it\bi} \light: {\rm} }
-
-\_famfrom {Zygfryd Gardzielewski, Janusz M. Nowacki}
-\_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]
-
-\_famfrom {Adam Półtawski, Janusz M. Nowacki, Bogusław Jackowski and Piotr Strzelczyk}
-\_faminfo [Poltawski] {Antykwa Poltawskiego, Polish traditional font family} {f-poltawski}
- { \ccond,\cond,-,\expd,\eexpd,
- \light\ccond,\light\cond,\light,\light\expd,\light\eexpd,
- \caps: {\rm\bf\it\bi} }
-\_famalias [Antykwa Poltawskiego] \_famalias [Poltawskiego] \_famalias [APoltawskiego]
-
-\_famfrom {Michael Sharpe}
-\_faminfo [Baskerville] {Free variants of classical Baskerville} {f-baskerville}
- { -,\caps: {\rm\bf\it\bi} }
-\_famalias [BaskervilleF]
-
-\_famfrom {Georg Duffner, Octavio Pardo}
-\_faminfo [EB Garamond] {Free variants of classical Garamond} {f-ebgaramond}
- { -,\caps,\medium,\medium\caps,\semibold,\semibold\caps: {\rm\bf\it\bi}
- \swash: {\it\bi} -: {\initials} }
-\_famalias [Garamond]
-
-\_famfrom {George Douros, Benjamin Miller}
-\_faminfo [Garamond Libre] {Free, derived from old style font family} {f-garamondl}
- { -,\caps: {\rm\bf\it\bi} \swash: {\it\bi} }
-\_famalias [GaramondL]
-
-\_famfrom {Pablo Impallari, Rodrigo Fuenzalida}
-\_faminfo [LibreCaslon] {Libre Caslon Text, inspired by Caslon} {f-librecaslon}
- { -,\onum: {\rm\bf\it\bi} }
-\_famalias [Caslon]
-
-\_famfrom {Adobe, Paul D. Hunt}
-\_faminfo [Source Pro] {Adobe SourceSerifPro, SourceSansPro, SourceCodePro} {f-sourcepro}
- { \elight,\light,-,\bolder: {\rm\it} -,\bolder: {\bf\bi}
- \sans\elight,\sans\light,\sans,\sans\bolder: {\rm\it} \sans,\sans\bolder: {\bf\bi}
- \elight\caps,\light\caps,\caps,\bolder\caps: {\rm} \caps,\bolder\caps: {\bf}
- \sans\elight\caps,\sans\light\caps,\sans\caps,\sans\bolder\caps: {\rm\it}
- \sans\caps,\sans\bolder\caps: {\bf\bi}
- \mono\elight,\mono\light,\mono,\mono\medium,\mono\bolder: {\rm\it} \mono,\mono\bolder: {\bf\bi}
- }
-\_famalias [AdobeSource] \_famalias [AdobeSourcePro]
-
-\_famfrom {Uni. of the Aegean}
-\_faminfo [Kerkis] {Free Bookman alternative with Greek letters} {f-kerkis}
- { -,\sans: {\rm\bf\it\bi} \caps: {\rm\bf} \semibold: {\bf\bi}
- \sanssemi: {\rm} -:{\calli} }
-
-\_famfrom {Craig Rozynski}
-\_faminfo [ComicNeue] {Comic Neue sans serif} {f-comicneue}
- { -,\angular: {\lf\li\rm\it\bf\bi} }
-
-\_famfrom {Eben Sorkin}
-\_faminfo [Merriweather] {Modern shapes, sharp serifs} {f-merriweather}
- { -,\sans: {\lf\li\rm\it\bf\bi\kf\ki} \caps,\sans\caps: {\rm\it} }
-
-\_famfrom {Google, Christian Robertson}
-\_faminfo [Roboto] {Geometric grotesk, thin variants included} {f-roboto}
- { -: {\tf\ti\lf\li\rm\it\mf\mi\bf\bi\kf\ki}
- \cond: {\lf\li\rm\it\bf\bi}
- \mono: {\tf\ti\lf\li\rm\it\mf\mi\bf\bi}
- \ttset: {\tf\lf\rm\bf}
- \caps, \caps\cond: {\rm\bf\it\bi} \caps\ttset: {\rm\bf}
- }
-
-\_famfrom {CTU in Prague, Roman Cernohous}
-\_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]
-
-\_famfrom {Bitstream, Andrey V. Panov, Michael Sharpe}
-\_faminfo [XCharter] {An extension of Bitstream Charter} {f-xcharter}
- { -,\slant,\caps,\caps\slant: {\rm\bf\it\bi} }
-
-\_famfrom {George Matthiopoulos, Greek Font Society}
-\_faminfo [GFSBodoni] {Based on Bodoni with greek letters} {f-gfsbodoni}
- { -: {\rm\bf\it\bi} \caps: {\rm} }
-
-\_endcode
-
-Once you have prepared a font family file with the name `f-<famname>.opm` and
-\TeX/can see it in your filesystem then you can type \^`\fontfam``[<famname>]` and
-the file is read, so the information about the 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 is more tolerant:
-you can write uppercase letters and spaces here. The spaces are ignored and
-uppercase 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 the previous paragraph without
-registering it. But problem is that such families are not listed when
-`\fontfam[?]` is used and it is not included in the font catalog when
-`\fontfam[catalog]` is printed. The list of families taken in the catalog and
-listed on the terminal is declared in two files: `fams-ini.opm` and
-`fams-local.opm`. The second file is optional. Users 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 the original Times purchased from Adobe then you can register your
-declaration of Adobe's Times family in `fams-local.opm`. When a user writes
-`\fontfam[Times]` then the original Times (not Termes) is used.
-
-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-28) 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 the catalog. It consists of
-one or more pairs `<mods>: {<vars>}`.
-For each pair: each modifier (separated by comma) is applied to each
-variant selector in <vars>
-and prepared samples are 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 the log file when all
-families are listed.
-
-The \^`\_famfrom` saves the information about font type foundry or
-manufacturer or designer or license owner. You can use it before `\_faminfo`
-to print `\_famfrom` info into the catalog.
-The `\_famfrom` data is applied to each following declared families until new
-`\_famfrom` is given. Use `\_famfrom {}` if the information is not known.
diff --git a/macros/luatex/optex/base/fnotes.opm b/macros/luatex/optex/base/fnotes.opm
deleted file mode 100644
index 612b32a17d..0000000000
--- a/macros/luatex/optex/base/fnotes.opm
+++ /dev/null
@@ -1,191 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_codedecl \fnote {Footnotes, marginal notes OpTeX <2020-05-26>} % loaded in format
-
- \_doc -----------------------------
- \`\_gfnotenum` is a counter which counts footnotes globally in the whole document.\nl
- \`\_lfnotenum` is a 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 this case.\nl
- \`\fnotenum` is a macro that 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
- the 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 can propagate a macro parameter into the 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` don't read the text as a
- parameter but during the normal horizontal mode. This is the 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}%
- \_incr\_unresolvedrefs
- \_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 a numeric type and false
- if it is a non-numeric type (Roman numeral, for example). We prefer to use
- `<pageno>`, but only if it has the 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 \`\_mnoteD``{<text>}` macro sets the position of the marginal note.
- 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 -----------------------------
-
-\_def\_mnote #1#{\_ifx^#1^\_else \_mnoteC#1\_end \_fi \_mnoteD}
-\_def\_mnoteC up#1\_end{\_mnoteskip=#1\_relax} % \mnote up<dimen> {<text>} syntax
-\_long\_def\_mnoteD#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 \`\mnoteskip` is a dimen value that denotes the vertical shift of marginal
- note from its normal position. A positive value means shift up, negative
- down. The `\mnoteskip` register is set to zero
- after the marginal note is printed. The new syntax `\mnote up<dimen>{<text>}`
- is possible too, but public `\mnoteskip` is kept for backward compatibility.
- \_cod -----------------------------
-
-\_newdimen\_mnoteskip
-\_public \mnoteskip ;
-
- \_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
- \_incr\_unresolvedrefs
- \_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 % -------------------------------------
-
-2020-05-26 \mnote up<dimen> implemented
-2020-03-20 released
diff --git a/macros/luatex/optex/base/fonts-catalog.opm b/macros/luatex/optex/base/fonts-catalog.opm
deleted file mode 100644
index 3cd02e7b27..0000000000
--- a/macros/luatex/optex/base/fonts-catalog.opm
+++ /dev/null
@@ -1,136 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_codedecl \_undefined {Font catalogue <2020-02-26>} % loaded on demand by \fontfam[catalog]
-
-\_tracinglostchars=1 % only to log file
-\_initunifonts
-\_begingroup
-
-\_istoksempty\_catalogmathsample \_iftrue \_noloadmath \_fi
-\_font\_ttfixed=[LMMono10-Regular]\_relax
-\_fontlet\_smalltt=\_ttfixed 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 \_csname \_currfamily\_endcsname
- \_vtop{\leftskip=1em \_baselineskip=9pt \_tmp \_par}\_hss
- \_if\_relax\_the\_famfrom\_relax \_else from: \_the\_famfrom \_fi
- }
-}
-
-\_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 \_famfrom{}\_input fams-local.opm \_fi
-
-\_endgroup
-
-\parindent=0pt
-
-\nonum\sec Customization of the catalog
-
-
-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 the catalog 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 users can create it. The syntax rules are
-described in the \code{fams-ini.opm} file.
-
-
-\_endcode % -------------------------------------
-
diff --git a/macros/luatex/optex/base/fonts-opmac.opm b/macros/luatex/optex/base/fonts-opmac.opm
deleted file mode 100644
index 3ae2f0c5e1..0000000000
--- a/macros/luatex/optex/base/fonts-opmac.opm
+++ /dev/null
@@ -1,226 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_codedecl \typosize {Font managing macros from OPmac <2021-03-10>} % 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 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
- and loads fonts at given sizes.
- It redefines itself as \`\_setmainvaluesL`
- to set the main values only first. The \^`\_setmainvaluesL` does only
- fonts loading.
- \nl
- \`\scalemain` returns to these values if they were set. Else they are set
- to 10/12\,pt.
- \nl
- \`\mfontsrule` gives the rule how math fonts are loaded when \^`\typosize`
- or \^`\typoscale` are used. The value of \^`\mfontsrule` can be:
- \begitems
- * 0: no math fonts are loaded. User must use \^`\normalmath` or \^`\boldmath` explicitly.
- * 1: `\_normalmath` is run if \^`\typosize`/\^`\typoscale` are used
- first or they are run at outer group level. No
- `\everymath`/`\everydisplay` are set in this case. If
- \^`\typosize`/\^`\typoscale` are run repeatedly in a group then `\_normalmath` is
- run only when math formula occurs. This is done using
- `\everymath`/`\everydisplay` and \^`\_setmathfonts`.
- \^`\mfontsrule=1` is default.
- * 2: `\_normalmath` is run whenever \^`\typosize`/\^`\typoscale` are used.
- `\everymath`/`\everydisplay` registers are untouched.
- \enditems
- \_cod -----------------------------
-
-\_newskip \_mainbaselineskip \_mainbaselineskip=0pt \_relax
-\_newdimen \_mainfosize \_mainfosize=0pt
-\_newcount \_mfontsrule \_mfontsrule=1
-
-\_def\_setmainvalues {%
- \_mainbaselineskip=\_baselineskip
- \_mainfosize=\_optsize
- \_topskip=\_mainfosize \_splittopskip=\_topskip
- \_ifmmode \_else \_bf \_it \_bi \_rm \_fi % load all basic variants of the family
- \_ifnum \_mfontsrule>0 \_normalmath \_fi % load math fonts first
- \_let \_setmainvalues =\_setmainvaluesL
-}
-\_def\_setmainvaluesL {\_relax \_ifmmode \_else \_rm \_fi % load text font
- \_ifcase \_mfontsrule % load math fonts
- \_or \_ifnum\_currentgrouplevel=0 \_normalmath
- \_else \_everymath={\_setmathfonts}\_everydisplay={\_normalmath}%
- \_let\_runboldmath=\_relax \_fi
- \_or \_normalmath \_fi}
-\_def\_scalemain {%
- \_ifdim \_mainfosize=\_zo
- \_mainfosize=10pt \_mainbaselineskip=12pt
- \_let \_setmainvalues=\_setmainvaluesL
- \_fi
- \_optsize=\_mainfosize \_baselineskip=\_mainbaselineskip
-}
-\_public \scalemain \mainfosize \mainbaselineskip \mfontsrule ;
-
- \_doc -----------------------------
- Suppose following example:
- `{\typosize[13/15] Let $M$ be a subset of $R$ and $x\in M$...}`
- If \^`\mfontsrule=1` then \^`\typosize` does not load math fonts
- immediatelly but at the first math formula. It is done by `\everymath`
- register, but the contents of this register is processed inside the math
- group. If we do `\everymath={\_normalmath}` then this complicated macro
- will be processed three times in your example above. We want only one
- pocessing, so we do `\everymath={`\`\_setmathfonts``}` and
- this macro closes math mode first, loads fonts and opens math mode again.
- \_cod -----------------------------
-
-\_def\_setmathfonts{$\_normalmath\_everymath{}\_everydisplay{}$}
-
- \_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 variant 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>\_zo
- \_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\rm\bf`, `\let\it\bi` and
- `\let\normalmath=\boldmath`. All following text will be in bold.
- If should be used after \^`\typosize` or \^`\typoscale` macros.\nl
- The internal \`\_runboldmath` macro runs `\_boldmath` immediatelly
- if no delay of the math font loading is set by \^`\_setmainvaluesL`.\nl
- The `\rm`, `\it` in math mode must keep its original meaning.
- \_cod -----------------------------
-
-\_protected\_def \_boldify {%
- \_let \_setmainvalues=\_setmainvaluesL
- \_let\it =\_bi \_let\rm =\_bf \_let\_normalmath=\_boldmath \_bf
- \_runboldmath
- \_ifx\_ncharrmA\_undefined \_protected\_addto\rm{\_fam0 }\_protected\_addto\it{\_fam1 }%
- \_else \_protected\_def\rm {\_tryloadbf \_tenbf \_inmath{\_rmvariables \_rmdigits}}%
- \_protected\_def\it {\_tryloadbi \_tenbi \_inmath{\_itvariables}}%
- \_fi
-}
-\_def\_runboldmath{\_boldmath}
-
-\_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 the default font size
- (declared by first \^`\typosize` command and redefines itself be only
- the font switch for the next pages.
- \_cod -----------------------------
-
-\_def \_rmfixed {% used in default \footline
- {\_ifdim\_mainfosize=0pt \_mainfosize=10pt \_fi
- \_fontdef\_tenrm{\_setfontsize{at\mainfosize}\_resetmod\_rm}%
- \_global\_let\_rmfixed=\_tenrm}% next use will be font switch only
- \_rmfixed
-}
-\_let \rmfixed = \_tenrm % user can redefine it
-
-\_endcode % -------------------------------------
-
-History:
-2021-03-10 \boldify corrected
-2021-03-09 \mfontsrule and \_setmathfonts introduced
-2020-12-12 \_rmfixed fixed
-2020-04-28 \boldify: removed \let\_rm=\_bf
-2020-04-14 \_setmainvaluesL: \_ifmmode test added
-2020-03-27 \_setmainvalues: \_splittopskip=\_topskip added
diff --git a/macros/luatex/optex/base/fonts-preload.opm b/macros/luatex/optex/base/fonts-preload.opm
deleted file mode 100644
index 712730436c..0000000000
--- a/macros/luatex/optex/base/fonts-preload.opm
+++ /dev/null
@@ -1,36 +0,0 @@
-%% This is part of the 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 %---------------------------------------------------
-
-The 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
-a few 8bit fonts here especially for simple testing the format.
-But, if the user needs to do more serious work, he/she can
-use `\fontfam` macro to load a selected font family of Unicode fonts.
-
-We have a dilemma: when the Unicode fonts cannot be preloaded in the format then the basic
-font set can be loaded by `\everyjob`. But why to load a set of fonts at the
-beginning of every job when it is highly likely that the user will
-load something completely different. Our decision is: there is a basic 8bit
-font set in the format (for testing purposes only) and the user should load
-a Unicode font family 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.
-
diff --git a/macros/luatex/optex/base/fonts-resize.opm b/macros/luatex/optex/base/fonts-resize.opm
deleted file mode 100644
index ac0064df10..0000000000
--- a/macros/luatex/optex/base/fonts-resize.opm
+++ /dev/null
@@ -1,354 +0,0 @@
-%% This is part of the 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>\_zo \_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=\_zo
- \_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 shown 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 have the same meaning because of the
- \`\_reversetfm` macro. The `\_whichtfm` expands this data line and apply
- \`\_dowhichtfm`. This macro selects 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-lmtt8 8.5 ec-lmtt9 9.5 ec-lmtt10 11.1 ec-lmtt12 *
-
-\_setfontsize {at10pt} % default font size
-
-\_endcode %---------------------------------------------------
-
-
-\sec[setfontsize] Scaling fonts in text mode (low-level macros)
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\secc The `\setfontsize` macro
-
-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 currently selected font to the size given by previous
-\^`\setfontsize`. For example
-
-\begtt
- The 10 pt text is here,
-\setfontsize{at12pt} the 10 pt text is here unchanged...
-\resizethefont and the 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
-
-\secc[fontprimitive] The `\font` primitive
-
-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 The 10 pt text is here
-\setfontsize{at12pt}
-\comfortaa The 12 pt text is here
-\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/ (see section \ref[exfont]).
-If you didn't use this command, you must initialize
-these features by the \^`\initunifonts` command explicitly, for example:
-
-\begtt
-\initunifonts
-\font\tencyklop=[cyklop-regular] at10pt % the font cyklop-regular.otf is loaded
-\def\cyklop{\tencyklop\resizethefont}
-
-\cyklop The 10 pt text is here
-\setfontsize{at12pt}
-\cyklop The 12 pt text is here
-\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 an internal group and sets the
-resulting selected font as `\<newfont>`.
-
-The resulting `\<newfont>` declared by \~`\fontdef` is \"fixed font switch"
-independent of \^`\setfontsize` and other font modifiers. More exactly, it is
-a 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 can resize
-arbitrary font given by its font switch.
-This font switch was declared 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 the 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
diff --git a/macros/luatex/optex/base/fonts-select.opm b/macros/luatex/optex/base/fonts-select.opm
deleted file mode 100644
index 740b311a67..0000000000
--- a/macros/luatex/optex/base/fonts-select.opm
+++ /dev/null
@@ -1,846 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_codedecl \fontfam {Fonts selection system <2021-02-25>} % preloaded in format
-
- \_doc -----------------------------
- \`\initunifonts` macro extends \LuaTeX's font capabalities,
- in order to be able to load Unicode fonts. Unfortunately, this part of
- \OpTeX/ depends on `luaotfload` package, which adapts Con\TeX/t's generic
- font loader for plain \TeX/ and \LaTeX. `luaotfload` uses Lua functions
- from \LaTeX's `luatexbase` namespace, we provide our own replacements.
- Moreover, `\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, `\initunifonts` sets itself to relax because we don't want to do
- this work twice.\nl
- \`\_ttunifont` is default font for `\tt` variant if
- `f-lmfonts.opm` (or another font file where `\tt` is declared) is not loaded.
- \_cod -----------------------------
-
-\_def\_initunifonts {%
- \directlua{%
- require('luaotfload-main')
- luaotfload.main()
- }%
- \_gdef\_rfskipatX ##1" ##2\_relax{"##1"}%
- \_global\_let \_doresizefont=\_doresizeunifont
- \_gdef\_tryloadtt {\_fontdef\_tentt{\_let\_fontnamegen=\_ttunifont\_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
-}
-\_def\_ttunifont{[lmmono10-regular]:\_fontfeatures-tlig;}
-
-\_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
- internal `\_f:<currfamily>:main.fam` command.
- The macro \`\_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 font family context. The font family context is given by the current
- `\_currfamily` value and by the actual meaning of the \^`\_fontnamegen` macro.
- The \`\_mathfaminfo` is saved for usage in the catalog.
- \_cod -----------------------------
-
-\_def\_famdecl [#1]#2#3#4#5#6#7#8{%
- \_initunifonts \_uniaccents
- \_unless\_ifcsname _f:\_csstring#2:main.fam\_endcsname
- \_isfont{#7}\_iffalse
- \_opwarning{Family [#1] skipped, font "#7" not found}\_ea\_ea\_ea\_endinput \_else
- \_edef\_currfamily {\_csstring #2}\_def\_mathfaminfo{#6}%
- \_wterm {FONT: [#1] -- \_string#2 \_detokenize{(#3)^^J mods:{#4} vars:{#5} math:{#6}}}%
- \_unless \_ifx #2\_undefined
- \_opwarning{\_string#2 is redefined by \_string\_famdecl\_space[#1]}\_fi
- \_protected\_edef#2{\_def\_noexpand\_currfamily{\_csstring #2}\_unexpanded{#8\_resetfam}}%
- \_ea \_let \_csname _f:\_currfamily:main.fam\_endcsname =#2%
- \_fi
- \_else \_csname _f:\_csstring#2:main.fam\_endcsname \_reloading \_rm \_ea \_endinput \_fi
-}
-\_def\_initfontfamily{%
- \_csname _f:\_currfamily:main.fam\_endcsname \_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
- \`\_fsetV` `<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>`.
- \nl
- \`\_prepcommalist` `ab,{},cd,\_end,` expands to `ab,,cd,` (auxiliary macro
- used in `\_onlyif`).
- \_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{,\_prepcommalist #2,\_end,}{,\_cs{_#1V},}}\_act
- \_iftrue #3\_fi
-}
-\_def\_prepcommalist#1,{\_ifx\_end#1\_empty\_else #1,\_ea\_prepcommalist\_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
- the warning. When the `\_currfamily` value is
- changed then we can declare the same `\<modifier>` with a different meaning.
-
- When a user declares a prefixed variant of the `\<modifier>` then unprefixed
- modifier name is used in internal macros, this is the 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 `_`.
-
- \`\_setnewmeaning` `<cs-name>=\_tmpa <by-what>` does exactly `\_let <csname>=\_tmpa`
- but warning is printed if <cs-name> is defined already and it is not a variant
- selector or font modifier.
-
- \`\_addtomodlist` `<font modifier>` adds given modifier to \`\_modlist`
- macro. This list is used after `\resetmod` when a new family is selected by
- a family selector, see \`\_resetfam` macro.
- This allows reinitializing the same current modifiers in the font context
- after the family is changed.
- \_cod -----------------------------
-
-\_def \_moddef #1#2{\_edef\_tmp{\_csstring#1}%
- \_sdef{_f:\_currfamily:\_tmp}{\_addtomodlist#1#2\_reloading}%
- \_protected \_edef \_tmpa{\_noexpand\_famdepend\_noexpand#1{_f:\_noexpand\_currfamily:\_tmp}}%
- \_setnewmeaning #1=\_tmpa \moddef
-}
-\_protected \_def\_resetmod {\_cs{_f:\_currfamily:resetmod}} % private variant of \resetmod
-\_def \_resetfam{\_def\_addtomodlist##1{}\_resetmod
- \_edef \_modlist{\_ea}\_modlist
- \_let\_addtomodlist=\_addtomodlistb
-}
-\_def \_currfamily{} % default current family is empty
-\_def \_modlist{} % list of currently used modifiers
-
-\_def \_addtomodlist#1{\_addto\_modlist#1}
-\_let \_addtomodlistb=\_addtomodlist
-
-\_def\_famdepend#1#2{\_ifcsname#2\_endcsname \_csname#2\_ea\_endcsname \_else
- \_ifx\_addtomodlist\_addtomodlistb
- \_opwarning{\_string#1 is undeclared in family "\_currfamily", ignored}\_fi\_fi
-}
-\_def\_setnewmeaning #1=\_tmpa#2{%
- \_ifx #1\_undefined \_else \_ifx #1\_tmpa \_else
- \_opwarning{\_string#1 is redefined by \_string#2}%
- \_fi\_fi
- \_let#1=\_tmpa
-}
-\_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
- * `\def \_tryload:<currfam>:<XX> {`\^`\fontdef`` \_ten<XX> {<data>}}` loads font `\_ten<XX>`,
- * `\protected\def \<XX> {\_famdepend \<XX> {_f:<currfam>:<XX>}}`,
- * `\def \_f:<currfam>:<XX> {\_tryload:<currfam>:<XX>\_ten<XX>}` keeps family dependent definition,
- * `\def \_currvar:_ten<XX> {\<XX>}` in order to the \^`\currvar` macro work correctly.
- \enditems
- `\famvardef\tt` behaves somewhat differently: it doesn't re-define the
- `\tt` macro which is defined as `\_tryloadtt \_tentt` in sections~\ref[math-preload]
- and~\ref[unimath-codes]. It only re-defines the internal `\_tryloadtt` macro.
- \_cod -----------------------------
-
-\_def\_famvardef#1{\_edef\_tmp{\_csstring#1}%
- \_ea\_famvardefA \_ea#1\_csname _ten\_tmp\_ea\_endcsname
- \_csname _tryload:\_currfamily:\_tmp\_endcsname
-}
-\_def\_famvardefA #1#2#3#4{% #1=\XX #2=\_tenXX #3=\_tryload:currfam:XX #4=data
- \_isinlist{.\_rm\_bf\_it\_bi\currvar\_currvar}#1\_iftrue
- \_opwarning{\_string\famvardef:
- You cannot re-declare standard variant selector \_string#1}%
- \_else
- \_def#3{\_fontdef#2{#4}}%
- \_protected\_edef\_tmpa{\_noexpand\_famdepend\_noexpand#1{_f:\_noexpand\_currfamily:\_tmp}}%
- \_ifx #1\_tt \_let\_tryloadtt=#3\_else \_setnewmeaning #1=\_tmpa \famvardef \_fi
- \_sdef{_f:\_currfamily:\_tmp}{#3#2}%
- \_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 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}\_famfrom={}%
- \_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-local.opm` files are read then we need
- to save only 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
- information 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.
- \nl
- \`\_famfrom` declares type foundry or owner or designer of the font family.
- It can be used in `fams-ini.opm` or `fams-local.opm` and it is printed
- in the font catalog.
- \_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\_tmpa{\_ea\_removespaces #1 {} }}%
- \_sdef{_famf:\_tmpa\_ea}\_ea{\_famfile}%
-}
-\_newtoks\_famfrom
-\_input fams-ini.opm
-\_let\_famfile=\_undefined
-\_famfrom={}
-
- \_doc -----------------------------
- When the \^`\fontfam``[catalog]` is used then the file
- `fonts-catalog.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, they select given font.
-* {\em variant selectors}, there are four basic variant selectors
- \^`\rm`, \^`\bf`, \^`\it`, \^`\bi`, there is a special selector \^`\currvar`.
- More variant selectors can be declared by the \~`\famvardef` macro.
- They select the font depending on the given variant and on the {\em font context}
- (i.e.\ on current family and on more features given by font modifiers).
- In addition, \OpTeX/ defines \~`\tt` as variant selector
- independent of chosen font family. It selects typewriter-like font.
-* {\em font modifiers} are declared in a family (`\cond`, `\caps`) or are
- \"build in" (\^`\setfontsize``{<size spec>}`, \~`\setff{<features>}`).
- They do appropriate change in the {\em font context} but do not select
- the font.
-* {\em family selectors} (for example `\Termes`, `\LMfonts`),
- they are declared typically in the {\em font family files}.
- They enable to switch between font families, they do appropriate
- change in the {\em font context} but do not select
- the font.
-\enditems
-
-These commands set their values locally. When the \TeX/ group is
-left then the selected font and the {\em font context} are returned back to the values
-used when the group was opened. They have the following features:
-
-The {\em font context} is a set of macro values that will affect the
-selection of real font when the variant selector is processed. It includes the
-value of {\em current family}, current font size, and
-more values stored by font modifiers.
-
-The {\em family context} is the current family value stored in the font
-context. The variant selectors declared by \~`\famvardef` and
-font modifiers declared by \~`\moddef` are dependent on the {\em family context}.
-They can have the same names but different behavior 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 users 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.
-The loaded family is set as current and `\rm` variant selector is processed.
-
-The available declared font modifiers and declared variant selectors are
-listed in the log file when the 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 arbitrarily combined (in arbitrary order) and if the font family disposes
-of all such sub-variants then the desired font is selected (after variant
-selector is used). On the other hand, there are font modifiers that 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 a variant selector.
-It keeps the current variant and the font of such variant is
-reloaded with respect to the current font context by the previously given family
-selector and font modifiers.
-
-You can use the \^`\setfontsize` `{<sizespec>}` command in the same sense as
-other font modifiers. It saves 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
-
-A much more comfortable way to resize fonts is using OPmac-like commands
-\~`\typosize` and \~`\typoscale`.
-These commands prepare the right sizes for math
-fonts too and they re-calculate 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[fontcommands] Declaring font commands
-%----------------------------
-
-Font commands can be font switches, variant selectors, font modifiers,
-family selectors and defined font macros doing something with fonts.
-
-\begitems
-* Font switches can be decared by `\font` primitive (see
- section~\ref[fontprimitive]) or by \^`\fontlet` command (see
- section~\ref[fontlet]) or by \~`\fontdef` command (see
- sections~\ref[fontdef2] and~\ref[fontdef]).
- When the font switches are used then they select the given font independently
- of the current font context. They can be used
- in `\output` routine (for example) because we need to set fixed fonts
- in headers and footers.
-* Variant selectors are \^`\rm`, \^`\bf`, \^`\it`, \^`\bi`, \~`\tt` and \^`\currvar`. More
- variant selectors can be declared by \~`\famvardef` command. They select a
- font dependent on the current font context, see section~\ref[famvardef].
- The `\tt` selector is documented in section~\ref[tt].
-* Font modifiers are \"build in" or declared by \~`\moddef` command.
- They do modifications in the font context but don't select any font.
- \begitems
- * \"build-in" font modifiers are \^`\setfontsize` (see
- section~\ref[setfontsize]), \~`\setff` (see section~\ref[setff]),
- \~`\setfontcolor`, \~`\setletterspace` and \~`\setwordspace`
- (see section~\ref[specff]). They are independent of font family.
- * Font modifiers declared by \~`\moddef` depend on the font family and they
- are typically declared in font family files, see
- section~\ref[fontfamfiles].
- \enditems
-* Family selectors set the given
- font family as current and re-set data used by the family-dependent font
- modifiers to initial values and to the currently used modifiers.
- They are declared in font family files
- by \~`\_famdecl` macro, see section~\ref[fontfamfiles].
-* Font macros can be defined arbitrarily by `\def` primitive by users.
- See an example in section~\ref[fontmacros].
-\enditems
-
-All declaration commands mentioned here: `\font`, `\fontlet`, `\fontdef`, `\famvardef`,
-`\moddef`, `\_famdecl` and `\def` make local assignment.
-
-\secc[fontdef2] The `\fontdef` declarator in detail
-
-The general format for \^`\fontdef` usage is
-\begtt \catcode`\<=13
-\fontdef\<font switch> {\<family selector> <font modifiers> \<variant selector>}
-\endtt
-%
-where `\<family selector>` and `<font modifiers>` are optional and
-`\<variant selector>` is mandatory.
-
-The \^`\fontdef` does the following steps.
-It pushes the current font context to a stack, it does modifications of the font
-context by given `\<family selector>` and/or `<font modifiers>` and it
-finds the real font by `\<variant selector>`. This font is not selected but
-it is assigned to the declared `\<font switch>` (like `\font` primitive does
-it). Finally, `\fontdef` pops the font context stack, so the current
-font context is the same as it was before `\fontdef` is used.
-
-More about `\fontdef` command including examples is written in
-section~\ref[fontdef].
-
-
-\secc[famvardef] The `\famvardef` declarator
-
-You can declare a new variant selector by the \^`\famvardef` macro. This
-macro has similar syntax as \^`\fontdef`:
-\begtt \catcode`\<=13
-\famvardef\<new variant selector> {\<family selector> <font modifiers> \<variant selector>}
-\endtt
-%
-where `\<family selector>` and `<font modifiers>` are optional and
-`\<variant selector>` is mandatory.
-The `\<new variant selector>` should be used in the same sense as `\rm`,
-`\bf` etc. It can be used as the final command in next
-\^`\fontdef` or \^`\famvardef` declarators
-too. When the `\<new variant selector>` is used in the normal text then it does
-the following steps: pushes current font context to a stack, modifies font
-context by declared `\<family selector>` and/or `<font modifiers>`,
-runs following `\<variant selector>`.
-This last one selects a real font. Then pops the font context stack.
-The new font is selected but the font context has its original values.
-This is main difference between `\famvardef\foo{...}` and `\def\foo{...}`.
-
-Moreover, the \^`\famvardef` creates the `\<new variant selector>` family dependent.
-When the selector is used in another family context than it is defined then a warning is
-printed on the terminal \"<var selector> is undeclared in the current family"
-and nothing happens. But you can declare the same variant selector by
-\^`\famvardef` macro in the context of a new family. Then the same command
-may 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. Then you can declare:
-\begtt
-\famvardef \mf {\medium\rm}
-\famvardef \mi {\medium\it}
-\endtt
-Now, you can use six independent variant selectors `\rm`, `\bf`, `\it`,
-`\bi`, `\mf` 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 a 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
-
-The variant selectors (declared by \~`\famvardef`) or font
-modifiers (declared by \~`\moddef`) are (typically) control sequences in user name
-space (`\mf`, `\caps`). They are most often declared in font family files and
-they are loaded by \^`\fontfam`. A conflict with such names in
-user namespace can be here. For example: if `\mf` is defined by a user and then
-`\fontfam[Roboto]` is used then `\famvardef\mf` is performed for Roboto
-family and the original meaning of `\mf` is lost. But \OpTeX/ prints warning
-about it. There are two cases:
-
-\begtt
-\def\mf{Metafont}
-\fontfam[Roboto] % warning: "The \mf is redefined by \famvardef" is printed
- or
-\fontfam[Roboto]
-\def\mf{Metafont} % \mf variant selector redefined by user, we suppose that \mf
- % is used only in the meaning of "Metafont" in the document.
-\endtt
-
-\secc[tt] The `\tt` variant selector
-
-\^`\tt` is an additional special variant selector which is defined as \"select typewriter
-font independently of the current font family". By default, the typewriter font-face
-from LatinModern font family is used.
-
-The \^`\tt` variant selector is used in \OpTeX/ internal macros
-\^`\_ttfont` (verbatim texts) and \^`\_urlfont` (printing URL's).
-
-You can redefine the behavior of `\tt` by \^`\famvardef`. For example:
-
-\begtt
-\fontfam[Cursor]
-\fontfam[Heros]
-\fontfam[Termes]
-\famvardef\tt{\Cursor\setff{-liga;-tlig}\rm}
-
-Test in Termes: {\tt text}. {\Heros\rm Test in Heros: {\tt text}}.
-Test in URL \url{http://something.org}.
-\endtt
-%
-You can see that `\tt` stay family independent. This is a special feature only
-for `\tt` selector. New definition is used in \^`\_ttfont` and \^`\_urlfont` too.
-It is recommended to use `\setff{-liga;-tlig}` to suppress the
-ligatures in typewriter fonts.
-
-If Unicode math font is loaded then the `\tt` macro selects typewriter
-font-face in math mode too. This face
-is selected from used Unicode math font and it is independent of
-`\famvardef\tt` declaration.
-
-
-\secc[fontmacros] Font commands defined by `\def`
-
-Such font commands can be used as fonts selectors for titles, footnotes,
-citations, etc. Users can define them.
-
-The following example shows how to define a \"title-font selector".
-Titles are not only bigger but they are typically in the bold variant. When a user puts
-`{\it...}` into the title text 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 Title in bold 14pt font and {\it bold 14pt italics} too}
-\endtt
-
-\OpTeX/ defines similar internal commands \^`\_titfont`, \^`\_chapfont`, \^`\_secfont` and
-\^`\_seccfont`, see section~\ref[sections]. The commands \^`\typosize` and
-\^`\boldify` are used in these macros. They set the math fonts to given size too and they
-are defined in section~\ref[opmac-fonts].
-
-
-\secc[setff] 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 support the given font feature then the font is reloaded
-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
-create a new modifier, just use `{\caps`\^`\currvar`` 012345}`.
-
-
-\secc[specff] 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 the 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 the backslash)
-instead of the hexadecimal specification.
-The empty parameter `<color>` means default black color.
-
-These colors of fonts are implemented using \LuaTeX/ internal font feature. This
-is different approach than using colors in section \ref[colors].
-
-\^`\setletterspace` `{<number>}` specifies the letter spacing of the font. The
-`<number>` is a 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 the default.
-
-\^`\setwordspace` `{<scaling>}` scales the default interword space (defined in the
-font) and its stretching and shrinking parameters by given `<scaling>`
-factor. For example `\setwordspace{2.5}` multiplies interword 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
-\setff{upper}\rm % to uppercase (lower=lowecase) conversion at font level
-\endtt
-
-Use font transformations mentioned above and \^`\setletterspace`,
-\^`\setwordspace` with care. The best setting of these values is the default
-setting in every font, of course. If you really need to set a different
-letter spacing then it is strongly recommended to add `\setff{-liga}`
-to disable ligatures. And setting a positive letter spacing probably
-needs to scale interword spacing too.
-
-All mentioned font modifiers (except for `\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
-
-\secc[exfont] Notices about extension of `\font` primitive
-%---------------------------------------------------------
-
-Unicode fonts are loaded by extended `\font` primitive. This extension is
-not activated in \OpTeX/ by default, \^`\initunifonts` macro activates it.
-You need not use \^`\initunifonts` explicitly if \^`\fontfam` macro is
-used because \^`\fontfam` runs it internally.
-
-The \^`\initunifonts` loads the Lua code from the Luaotfload package which
-implements the `\font` primitive extension. See its
-documentation `luaotfload-latex.pdf` for information about
-all possibilities of extended `\font` primitive.
-
-The \OpTeX/ format is initialized by `luatex` engine by default but
-you can initialize it by `luahbtex` engine too. Then the harfbuzz library is
-ready to use for font rendering as an alternative to build-in font renderer
-from Luaotfload. The harfbuzz library gives more features for rendering
-Indic and Arabic scripts. But it is not used as default, you need to specify
-`mode=harf` in the fontfeatures field when `\font` is used. Moreover, when
-`mode=harf` is used, then you must specify `script` too. For example
-
-\begtt
-\font\devafont=[NotoSansDevanagari-Regular]:mode=harf;script=dev2
-\endtt
-%
-If the `luahbtex` engine is not used then `mode=harf` is ignored. See
-Luaotfload documentation for more information.
-
-\endinput
-
-2021-02-25 \_ttunifont introduced
-2021-01-27 lua hack (print function) removed because luaotfload 3.17 removes bug.
-2020-12-12 \_modlist added, doc improved
-2020-04-18 \_tryloadfamslocal introduced
- \_fontdecl -> \_famdecl with different concept
-2020-03-18 released
diff --git a/macros/luatex/optex/base/graphics.opm b/macros/luatex/optex/base/graphics.opm
deleted file mode 100644
index afff1c1284..0000000000
--- a/macros/luatex/optex/base/graphics.opm
+++ /dev/null
@@ -1,445 +0,0 @@
-%% This is part of the 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=\_zo \_else width\_picwidth\_fi
- \_ifdim\_picheight=\_zo \_else height\_picheight\_fi
- \_picparams {\_the\_picdir#1}%
- \_pdfrefximage\_pdflastximage\_egroup}
-
-\_def\_picparams{}
-
-\_public \inspic ;
-
- \_doc -----------------------------
- Inkscape can 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 after `*.pdf` is included
- in order to place labels of this picture in the same font as the 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` tokens 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 to\_zo{\_vss\_hbox to\_zo{\_kern#1\_picwidth
- \_pdfsave\_hbox to\_zo{#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 to\_zo{\_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 the 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 width\_zo
- \_setbox0=\_hbox{\_box0}\_ht0=\_zo \_dp0=\_zo
- \_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=\_zo \_dp0=\_zo \_ht0=\_zo
- \_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 a natural dimension.
- \nl
- \`\backgroundpic``{<image-file>}` puts the image to
- the background of each page. It is 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>\_zo \_vskip-\_prevdepth \_relax \_fi
- \_nointerlineskip
- \_fi
- \_wd0=\_zo \_ht0=\_zo \_dp0=\_zo
- \_vbox to\_zo{\_kern-\_dimen2 \_hbox to\_zo{\_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>` axis.
- The origin is in the center.
- \nl
- \`\_oval``{<x>}{<y>}{<roundness>}` creates an oval with `<x>`, `<y>` size and with
- the 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>`, creates the
- `<curve>` and returns the current point back.
- 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=\_zo \_else \_ht0=\_dimexpr\_ht0+\_vvkern \_relax
- \_dp0=\_dimexpr\_dp0+\_vvkern \_relax \_fi
- \_ifdim\_hhkern=\_zo \_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 to\_zo{\_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=\_zo \_dimen1=\_zo
- \_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=\_zo \_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 a 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 beginning 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=\_zo
- \_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 % -------------------------------------
-
-The \^`\inspic` is defined by `\pdfximage` and `\pdfrefximage` primitives.
-If you want to use one picture more than once in your document, then the
-following code is recommended:
-\begtt \catcode`\<=13
-\newbox\mypic
-\setbox\mypic = \hbox{\picw=3cm \inspic{<picture>}}
-
-My picture: \copy\mypic, again my picture: \copy\mypic, etc.
-\endtt
-This code downloads the picture data to the PFD output only once (when
-`\setbox` is processed). Each usage of `\copy\mypic` puts only a pointer to
-the picture data in the PDF.
-
-If you want to copy the same picture in different sizes, then choose
-a \"basic size" used in `\setbox` and all different sizes can be realized by
-the \^`\transformbox{<transformation>}{\copy\mypic}`.
-
-\_endinput
-
-2020-12-21: \puttext: \box0 in goup, bugfix
-2020-04-12: \_public \clipinoval \clipincircle ; added, bug fixed
-
diff --git a/macros/luatex/optex/base/hi-syntax.opm b/macros/luatex/optex/base/hi-syntax.opm
deleted file mode 100644
index eb6d747914..0000000000
--- a/macros/luatex/optex/base/hi-syntax.opm
+++ /dev/null
@@ -1,223 +0,0 @@
-%% This is part of the 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 the 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 \_let\b=\_relax \_def\t{\n\_noexpand\t\n}\_let\_start=\_relax
- \_adef{ }{\n\_noexpand\ \n}\_edef\_tmpb{\_start^^J##2\_end}%
- \_replthis{^^J}{\n^^J\b\n}\_replthis{\b\n\_end}{\_end}%
- \_let\x=\_relax \_let\y=\_relax \_let\z=\_relax \_let\t=\_relax
- \_hicomments % keeps comments declared by \commentchars
- \_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 "\_tmpa" undeclared (no file hisyntax-\_tmpa.opm)}
- \_fi\_fi
- \_replthis{\_start\n^^J}{}\_replthis{^^J\_end}{^^J}%
- \_def\n{}\_def\b{}\_adef{ }{\_dsp}%
- \_bgroup \_lccode`\~=`\ \_lowercase{\_egroup\_def\ {\_noexpand~}}%
- \_def\w####1{####1}\_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 this:
-
-\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.
-
-\secl4 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 prepared 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 represented by `\n^^J\n`.
-* The `\_start` control sequence is added before the verbatim text and the `\_end` control
- sequence is appended to the end of the verbatim text. These control
- sequences are removed in the post-processing phase.
-\enditems
-
-Special macros are 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 tabulator. 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 (separately) 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
-
diff --git a/macros/luatex/optex/base/hisyntax-c.opm b/macros/luatex/optex/base/hisyntax-c.opm
deleted file mode 100644
index 3c1f228f88..0000000000
--- a/macros/luatex/optex/base/hisyntax-c.opm
+++ /dev/null
@@ -1,66 +0,0 @@
-%% This is part of the 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 declare the syntax declaration
-in it. The second token 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 declared if you want to give these token lists to
-the user namespace. 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 read it repeatedly before each code chunk
-again and again.
-
-Note that `\foreach` is used for each non-letters (expanded via \string
-because we needn't treat with active or special TeX characters). The
-keyword is applied in the `\foreach` loop too.
-
-See `hi-sytax.opm` for more information about `\hicolor`, `\replfromto` and
-`\replthis` macros.
diff --git a/macros/luatex/optex/base/hisyntax-html.opm b/macros/luatex/optex/base/hisyntax-html.opm
deleted file mode 100644
index 3f0be6a23e..0000000000
--- a/macros/luatex/optex/base/hisyntax-html.opm
+++ /dev/null
@@ -1,31 +0,0 @@
-%% This is part of the 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{\&#1;}}
-
-\_endcode %------------------------------------------------
-
diff --git a/macros/luatex/optex/base/hisyntax-python.opm b/macros/luatex/optex/base/hisyntax-python.opm
deleted file mode 100644
index 6250eed0e3..0000000000
--- a/macros/luatex/optex/base/hisyntax-python.opm
+++ /dev/null
@@ -1,82 +0,0 @@
-%% This is part of the 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.
-
diff --git a/macros/luatex/optex/base/hisyntax-tex.opm b/macros/luatex/optex/base/hisyntax-tex.opm
deleted file mode 100644
index 583676a2ca..0000000000
--- a/macros/luatex/optex/base/hisyntax-tex.opm
+++ /dev/null
@@ -1,38 +0,0 @@
-%% This is part of the 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.
diff --git a/macros/luatex/optex/base/hyperlinks.opm b/macros/luatex/optex/base/hyperlinks.opm
deleted file mode 100644
index 5fc8a32233..0000000000
--- a/macros/luatex/optex/base/hyperlinks.opm
+++ /dev/null
@@ -1,157 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_codedecl \ulink {Hyperlinks <2021-01-27>} % 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 the top border of the PDF viewer but we want to see
- the line where the destination is. The destination box is positioned by a
- different way dependent on the 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 to\_zo{\_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 the `<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. Users 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 \link ;%
-}
-\_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 breakpoints to special places of the
- `<url>`. For example `//` is replaced by `\_urlskip/\_urlskip/\_urlbskip`
- where `\urlskip` adds a small nonbreakable 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 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 the 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
-
-2021-01-27 \public \link added to \hyperlinks, bug fixed.
-2020-04-22 \| in \url: bug fixed
-2020-03-15 introduced \ No newline at end of file
diff --git a/macros/luatex/optex/base/hyphen-lan.opm b/macros/luatex/optex/base/hyphen-lan.opm
deleted file mode 100644
index dad0b26657..0000000000
--- a/macros/luatex/optex/base/hyphen-lan.opm
+++ /dev/null
@@ -1,245 +0,0 @@
-%% This is part of the 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 an 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 the 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 the 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> <hyph-file-spec> <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 <hyph-file-spec> <number> <long-lang> % 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` and
- \^`\_uselang` first (in initialization state) and it runs
- only \^`\_uselang` when it is called again (in processing state).
- \_cod -----------------------------
-
-\_def\_preplang #1 #2 #3 #4 #5 {%
- \_ea\_chardef \_csname _#1Patt\_endcsname=#4
- \_sdef{_lan:#4}{#1}\_lowercase{\_sdef{_ulan:#2}}{#1}%
- \_def\_next{\_ea\_noexpand\_csname _#1lang\_endcsname}%
- \_ea\_edef \_csname _#1lang\_endcsname {%
- \_noexpand\_loadpattrs #3 #4 #2 % loads patterns
- \_gdef\_next{\_noexpand\_uselang{#1}\_csname _#1Patt\_endcsname #5}% re-defines itself
- \_next % runs itself in processing state
- }
- \_addto\_langlist{ #1(#2)}%
- \_sdef{#1lang\_ea}\_ea{\_csname _#1lang\_endcsname}% unprefixed \<isocode>lang
-}
-
- \_doc -----------------------------
- \`\_loadpattrs` `<hyph-file-spec> <number> <long-lang>`
- loads hyphenation patterns and hyphenation exceptions for given language
- and registers them as `\language=<number>`.
-
- The <hyph-file-spec> is a part of full file name wich is read:
- `hyph-<hyph-file-spec>.tex`. The patterns and hyphenation exceptions
- are saved here in UTF-8 encoding.
- The <hyph-file-spec> should be a list of individual <hyph-file-spec>'s
- separated by commas, see the language Serbian below for an example.
- \_cod -----------------------------
-
-\_def\_loadpattrs#1 #2 #3 {%
- \_wlog{Loading hyphenation #3: (#1) \_string\language=#2}%
- \_begingroup\_setbox0=\_vbox{% we don't want spaces in horizontal mode
- \_language=#2\_def\\{#3}%
- \_let\patterns=\_patterns \_let\hyphenation=\_hyphenation \_def\message##1{}%
- \_loadpattrsA #1,,%
- }\_endgroup
-}
-\_def\_loadpattrsA #1,{\_ifx,#1,\_else
- \_isfile {hyph-#1}\_iftrue \_opinput{hyph-#1}%
- \_else \_opwarning{No hyph. patterns #1 for \\, missing package?}%
- \_def\_opwarning##1{}\_fi
- \_ea \_loadpattrsA \_fi
-}
-
- \_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 by 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 en-us 100 23
-\_preplang engb UKenglish en-gb 101 23
-\_preplang it Italian it 102 22
-\_preplang ia Interlingua ia 103 22
-\_preplang id Indonesian id 104 22
-
-\_preplang cs Czech cs 115 23
-\_preplang sk Slovak sk 116 23
-\_preplang de nGerman de-1996 121 22
-\_preplang fr French fr 122 22
-\_preplang pl Polish pl 123 22
-\_preplang cy Welsh cy 124 23
-\_preplang da Danish da 125 22
-\_preplang es Spanish es 126 22
-\_preplang sl Slovenian sl 128 22
-\_preplang fi Finnish fi 129 22
-\_preplang hu Hungarian hu 130 22
-\_preplang tr Turkish tr 131 22
-\_preplang et Estonian et 132 23
-\_preplang eu Basque eu 133 22
-\_preplang ga Irish ga 134 23
-\_preplang nb Bokmal nb 135 22
-\_preplang nn Nynorsk nn 136 22
-\_preplang nl Dutch nl 137 22
-\_preplang pt Portuguese pt 138 23
-\_preplang ro Romanian ro 139 22
-\_preplang hr Croatian hr 140 22
-\_preplang zh Pinyin zh-latn-pinyin 141 11
-\_preplang is Icelandic is 142 22
-\_preplang hsb Uppersorbian hsb 143 22
-\_preplang af Afrikaans af 144 12
-\_preplang gl Galician gl 145 22
-\_preplang kmr Kurmanji kmr 146 22
-\_preplang tk Turkmen tk 147 22
-\_preplang la Latin la 148 22
-\_preplang lac classicLatin la-x-classic 149 22
-\_preplang lal liturgicalLatin la-x-liturgic 150 22
-\_preplang elm monoGreek el-monoton 201 11
-\_preplang elp Greek el-polyton 202 11
-\_preplang grc ancientGreek grc 203 11
-\_preplang ca Catalan ca 204 22
-\_preplang cop Coptic cop 205 11
-\_preplang mn Mongolian mn-cyrl 206 22
-\_preplang sa Sanskrit sa 207 13
-\_preplang ru Russian ru 208 22
-\_preplang uk Ukrainian uk 209 22
-\_preplang hy Armenian hy 210 12
-\_preplang as Assamese as 211 11
-\_preplang hi Hindi hi 212 11
-\_preplang kn Kannada kn 213 11
-\_preplang lv Latvian lv 215 22
-\_preplang lt Lithuanian lt 216 22
-\_preplang ml Malayalam ml 217 11
-\_preplang mr Marathi mr 218 11
-\_preplang or Oriya or 219 11
-\_preplang pa Panjabi pa 220 11
-\_preplang ta Tamil ta 221 11
-\_preplang te Telugu te 222 11
-
-\_preplang be Belarusian be 223 22
-\_preplang bg Bulgarian bg 224 22
-\_preplang bn Bengali bn 225 11
-\_preplang cu churchslavonic cu 226 12
-\_preplang deo oldGerman de-1901 227 22
-\_preplang gsw swissGerman de-ch-1901 228 22
-\_preplang eo Esperanto eo 229 22
-\_preplang fur Friulan fur 230 22
-\_preplang gu Gujarati gu 231 11
-\_preplang ka Georgian ka 232 12
-\_preplang mk Macedonian mk 233 22
-\_preplang oc Occitan oc 234 22
-\_preplang pi Pali pi 235 12
-\_preplang pms Piedmontese pms 236 22
-\_preplang rm Romansh rm 237 22
-\_preplang sr Serbian sh-cyrl,sh-latn 238 22
-\_preplang sv Swedish sv 239 22
-\_preplang th Thai th 240 23
-\_preplang ethi Ethiopic mul-ethi 241 11
-
- \_doc -----------------------------
- The \`\langlist` includes names of all languages which are ready to load
- and use their hyphenation patterns. This list is printed to the terminal and
- to log at ini\TeX/ state here. It can be used when processing documents 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 just switching
-hyphenation patterns. For example, you need to load a specific font with a
-specific script used in the selected language, you can define 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 set language-specific phrases (like `\today`)
-by this code. Another concept is used for such tasks. See the
-section~\ref[langphrases] for more details.
diff --git a/macros/luatex/optex/base/if-macros.opm b/macros/luatex/optex/base/if-macros.opm
deleted file mode 100644
index 462e496017..0000000000
--- a/macros/luatex/optex/base/if-macros.opm
+++ /dev/null
@@ -1,313 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_codedecl \newif {Special if-macros, is-macros and loops <2021-02-03>} % 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 the internal namespace
- (`_`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 ----------------------------
- \`\afterfi` `{<what to do>}<ignored>\fi` closes condition by `\fi` and processes
- <what to do>. Usage:
- \begtt
- \if<something> \afterfi{<result is true>} \else \afterfi{<resut is false>} \fi
- \endtt
- \_cod ----------------------------
-
-\_def\_afterfi#1#2\_fi{\_fi#1}
-\_def\afterfi#1#2\fi{\_fi#1}
-
- \_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}
-\_long\_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.
- \nl
- \`\foreach` `<list>`\`\do` `<parameter-mask>{<what>}`
- reads parameters from <list> repeatedly and does <what> for each such reading.
- The parameters are declared by <parameter-mask>. Examples:
- \begtt
- \foreach (a,1)(b,2)(c,3)\do (#1,#2){#1=#2 }
- \foreach word1,word2,word3,\do #1,{Word is #1.}
- \foreach A=word1 B=word2 \do #1=#2 {"#1 is set as #2".}
- \endtt
- Note that `\foreach <list>\do {<what>}` is equivalent to `\foreach <list>\do #1{<what>}`.
-
- Recommendation: it is better to use private variants of \`\_foreach`.
- 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#{\_isempty{#2}\_iftrue
- \_afterfi{\_foreachA{#1}{##1}}\_else\_afterfi{\_foreachA{#1}{#2}}\_fi}
-\_long\_def\_foreachA #1#2#3{\_putforstack
- \_immediateassignment \_long\_gdef\_fbody#2{\_testparam##1..\_iftrue #3\_ea\_fbody\_fi}%
- \_fbody #1#2\_finbody\_getforstack
-}
-\_def\_testparam#1#2#3\_iftrue{\_ifx###1\_empty\_ea\_finbody\_else}
-\_def\_finbody#1\_finbody{}
-
-\_long\_def\foreach #1\do#2#{\_isempty{#2}\_iftrue
- \_afterfi{\_foreachA{#1}{##1}}\_else\_afterfi{\_foreachA{#1}{#2}}\_fi}
-
- \_doc -----------------------------
- \`\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 <from>, <to>, <step> parameters can be numeric expressions.
- The macro is expandable.\nl
- The test in the \`\_fornumB` says: if (<to> $\string<$ <current number>
- AND <step> is positive) or if (<to> $>$ <current number> AND <step> is
- negative) then close loop by `\_getforstack`. Sorry, the condition is
- writen by somewhat cryptoid \TeX/ language.
- \_cod -----------------------------
-
-\_def\_fornum#1..#2\_do{\_fornumstep 1:#1..#2\_do}
-\_long\_def\_fornumstep#1:#2..#3\_do#4{\_putforstack
- \_immediateassigned{%
- \_gdef\_fbody##1{#4}%
- \_global\_frnum=\_numexpr#2\_relax
- }%
- \_ea\_fornumB\_ea{\_the\_numexpr#3\_ea}\_ea{\_the\_numexpr#1}%
-}
-\_def\_fornumB #1#2{\_ifnum#1\_ifnum#2>0<\_else>\_fi \_frnum \_getforstack
- \_else \_ea\_fbody\_ea{\_the\_frnum}%
- \_immediateassignment\_global\_advance\_frnum by#2
- \_afterfi{\_fornumB{#1}{#2}}\_fi
-}
-\_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
- \_sxdef{_frnum:\_the\_forlevel\_ea}{\_the\_frnum}%
- \_global\_slet{_fbody:\_the\_forlevel}{_fbody}%
- \_fi
- \_incr\_forlevel
-}}
-\_def\_getforstack{\_immediateassigned{%
- \_decr\_forlevel
- \_ifnum\_forlevel>0
- \_global\_slet{_fbody}{_fbody:\_the\_forlevel}%
- \_global\_frnum=\_cs{_frnum:\_the\_forlevel}\_space
- \_fi
-}}
-\_ifx\_immediateassignment\_undefined % for compatibility with older LuaTeX
- \_let\_immediateassigned=\_useit \_let\_immediateassignment=\_empty
-\_fi
-
- \_doc ----------------------------
- User can define own expandable \"foreach" macro by
- \`\foreachdef` `\macro <parameter-mask>{<what>}`
- which can be used by `\macro {<list>}`. The macro reads repeatedly parameters from <list>
- using <parameter-mask> and does <what> for each such reading. For example
- \begtt
- \foreachdef\mymacro #1,{[#1]}
- \mymacro{a,b,cd,efg,}
- \endtt
- expands to [a][b][cd][efg]. Such user defined macros are more effecive during processing
- than `\foreach` itself because they need not to operate with the for-stack.
- \_cod ----------------------------
-
-\_def\_foreachdef#1#2#{\_toks0{#2}%
- \_long\_edef#1##1{\_ea\_noexpand\_csname _body:\_csstring#1\_endcsname
- ##1\_the\_toks0 \_noexpand\_finbody}%
- \_foreachdefA#1{#2}}
-\_def\_foreachdefA#1#2#3{%
- \_long\_sdef{_body:\_csstring#1}#2{\_testparam##1..\_iftrue #3\_cs{_body:\_csstring#1\_ea}\_fi}}
-
-\_public \foreachdef ;
-
- \_doc ----------------------------
- \secc Is-macros
- There are a collection of macros
- \^`\isempty`, \^`\istoksempty`, \^`\isequal`, \^`\ismacro`,
- \^`\isdefined`, \^`\isinlist`, \^`\isfile` and \^`\isfont`
- 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 ----------------------------
-
-\_long\_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 codes 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 a 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 a different syntax than all other 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
-
-2021-02-03 public version of \loop and \foreach are \long
-2020-05-22 \foreach, \fornum: all settings are global, independent on TeX group
-2020-05-06 \isnextchar: \let\tmp=#1 -> \let\tmp= #1 (bug fix, #1 should be space)
-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
diff --git a/macros/luatex/optex/base/keyval.opm b/macros/luatex/optex/base/keyval.opm
deleted file mode 100644
index b0462296b3..0000000000
--- a/macros/luatex/optex/base/keyval.opm
+++ /dev/null
@@ -1,82 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_codedecl \readkv {Key-value dictionaries <2020-12-21>} % preloaded in format
-
- \_doc ----------------------------
- {\bf Implementation.}
- The \`\readkv` expands its parameter and does replace-strings in order to
- remove spaces around equal signs and after commas. Double commas are
- removed. Then \`\_kvscan` reads the parameters list finished by the double
- comma and saves values to `\_kv:<key>` macros.\nl
- The \`\kv``{<key>}` expands the `\_kv:<key>` macro. If this macro isn't
- defined then \`\_kvunknown` is processed. You can re-define it if you want.
- \_cod ----------------------------
-
-\_def\_readkv#1{\_ea\_def\_ea\_tmpb\_ea{#1}%
- \_replstring\_tmpb{= }{=}\_replstring\_tmpb{ =}{=}%
- \_replstring\_tmpb{, }{,}\_replstring\_tmpb{,,}{,}%
- \_ea \_kvscan \_tmpb,,=,}
-\_def\_kvscan #1#2=#3,{\_ifx#1,\_else \_sdef{_kv:#1#2}{#3}\_ea\_kvscan\_fi}
-\_def\_kv#1{\_trycs{_kv:#1}{\_kvunknown}}
-\_def\_kvunknown{???}
-
-\public \readkv \kv ;
-
-\_endcode
-
-Users or macro programmers can define macros with options in key=value format.
-It means a comma-separated list of equations key=value. First, we give an
-example.
-
-Suppose that you want to define a macro `\myframe` with options: color of
-rules, color of text inside the frame, rule-width, space between text and
-rules. You want to use this macro as:
-
-\begtt
-\myframe [margins=5pt,rule-width=2pt,frame-color=\Red,text-color=\Blue] {text1}
-or
-\myframe [frame-color=\Blue] {text2} % other parameters are default
-\endtt
-%
-You can define `\myframe` as follows:
-
-\begtt
-\def\myframedefaults{% defaults:
- frame-color=\Black, % color of frame rules
- text-color=\Black, % color ot text nside the frame
- rule-width=0.4pt, % width of rules used in the frame
- margins=2pt, % space between text inside and rules.
-}
-\optdef\myframe [] #1{\bgroup
- \ea\addto\ea\myframedefaults\ea{\ea,\the\opt}%
- \readkv\myframedefaults
- \rulewidth=\kv{rule-width}
- \hhkern=\kv{margins}\vvkern=\kv{margins}\relax
- \kv{frame-color}\frame{\kv{text-color}\strut #1}%
- \egroup}
-\endtt
-%
-We recommend using \^`\optdef` for defining macros with optional parameters
-written in `[]`. Then the optional parameters are saved in the \^`\opt` tokens
-register. First: we append the \^`\opt` (actual optional parameters) to
-`\myframedefault` by \^`\addto` macro.
-Second: we read the parameters by
-\^`\readkv{<pramaters list>}` macro.
-Third: the values can be used by expandable \^`\kv{<key>}` macro.
-The \^`\kv{<key>}` returns `???` if such key is not declared.
-
-You can use keys without values in the parameters list too, but with
-additional care. For example, suppose `draft` option without parameter.
-If a user writes `\myframe [..., draft, ...]{text}` then `\myframe` should behave differently.
-We have to add `DRAFTv=0,` in `\myframedefault` macro.
-Moreover, `\myframe` macro must include preprocessing of `\myframedefault` using
-\^`\replstring` which replaces the occurrence of `draft` by `DRAFTv=1`.
-\begtt
-\optdef\myframe [] #1{...
- \ea\addto\ea\myframedefaults\ea{\the\opt}%
- \replstring\myframedefaults{draft}{DRAFTv=1}%
- \readkv\myframedefaults
- ...
- \ifnum\kv{DRAFTv}=1 draft mode\else normal mode\fi
- ...}
-\endtt
diff --git a/macros/luatex/optex/base/languages.opm b/macros/luatex/optex/base/languages.opm
deleted file mode 100644
index ff9373b720..0000000000
--- a/macros/luatex/optex/base/languages.opm
+++ /dev/null
@@ -1,188 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_codedecl \_mtext {Languages <2021-01-21>} % 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 the declared word and `<lang>` is a 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 Betreff
-\_langw es Capítulo Tabla Figura Sujeto
-\_langw fr Chaptire Tableau Figure Matière
-\_langw it Capitolo Tabella Fig. Oggetto
-\_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
-\_monthw it gennaio febbraio marzo aprile maggio giugno
- luglio agosto settembre ottobre novembre dicembre
-
-
-\_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 the `\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 the 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
-
- \_doc -----------------------------
- The \`\quoteschars``<lqq><rqq><lq><rq>` defines `\"` and `\"` as `\_qqA`
- in in normal mode and as expadable macros in outline mode.
- We want to well process the common cases: \code{\\"`&`"} or \code{\\"`\{`"}.
- This is the reason why the quotes parameter is read in verbatim mode and retokenized
- again by `\scantextokens`. We want to allow to quote the quotes mark
- itself by \code{\\"{`"`}"}. This is the reason why the sub-verbatim mode is
- used when the first character is \code{\{} in the parameter.\nl
- The `\"` is defined as `\_qqA\_qqB<lqq><rqq>` and `\'` as `\_qqA\_qqC<lq><rq>`.
- The \`\_qqA``\_qqB<clqq><crqq>` runs \`\_qqB``<lqq><rqq><text>"`.\nl
- The \`\_regquotes``\""<L><R>` does `\def\"#1"{<L>#1<R>}` for outlines but the `"`
- separator is active (because `"` and `'` are active in \^`\pdfunidef`).
- \_cod -----------------------------
-
-\_def \_quoteschars #1#2#3#4{\_def\_altquotes{\_quoteschars#3#4#1#2}\_public\altquotes;%
- \_protected\_def \"{\_qqA\_qqB#1#2}\_protected\_def \'{\_qqA\_qqC#3#4}%
- \_regmacro{}{}{\_regquotes\""#1#2\_regquotes\''#3#4}}
-
-\_def\_qqA#1#2#3{\_bgroup\_setverb \_catcode`\ =10
- \_isnextchar\_bgroup{\_catcode`\{=1 \_catcode`\}=2 #1#2#3}{#1#2#3}}
-\_long\_def\_qqB#1#2#3"{\_egroup#1\_scantextokens{#3}#2}
-\_long\_def\_qqC#1#2#3'{\_egroup#1\_scantextokens{#3}#2}
-\_def\_regquotes#1#2#3#4{\_bgroup \_lccode`~=`#2\_lowercase{\_egroup \_def#1##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 the first backslash.
- First, declare `\<iso-code>quotes`, then \^`\altquotes` (if needed) and finally
- \^`\activequotes`.
- \_cod -----------------------------
-
-\_def\_activequotes{\_let\_actqq=\"\_adef"{\_actqq}\_let\_actq=\'\_adef'{\_actq}%
- \_regmacro{}{}{\_adef"{\"}\_adef'{\'}}}
-
-\_public \quoteschars \activequotes \enquotes \csquotes \skquotes \frquotes \plquotes
- \esquotes \grquotes \ruquotes \itquotes \dequotes ;
-
- \_doc -----------------------------
- Bibliography references generated by \^`\usebib` uses more
- language-dependent phrases. They are declared here. We don't want to save
- all these phrases into the format, so the trick with {`\_endinput`}
- is used here. When \^`\usebib` is processed then the following part of the file
- `languages.opm` is read again.
-
- Only phrases of few languages are declared here now. If you want to declare
- phrases of your language, please create an \"issue" or a \"request" at
- \url{https://github.com/olsak/OpTeX} or send me an email with new
- phrases for your language (or language you know:). I am ready to put them here.
- Temporarily, you can put your definitions into `\bibtexhook` token list.
- \_cod -----------------------------
-
-\_endinput % don't save these \def's to the format
-
-\_def\_langb#1 #2#3#4#5#6#7#8#9{\_def\_mbib##1##2{\_sdef{_mt:bib.##2:#1}{##1}}%
- \_mbib{#2}{and}\_mbib{#3}{etal}\_mbib{#4}{edition}\_mbib{#5}{citedate}\_mbib{#6}{volume}%
- \_mbib{#7}{number}\_mbib{#8}{prepages}\_mbib{#9}{postpages}\_langbA}
-\_def\_langbA#1#2#3#4#5#6#7{\_mbib{#1}{editor}\_mbib{#2}{editors}\_mbib{#3}{available}%
- \_mbib{#4}{availablealso}\_mbib{#5}{bachthesis}\_mbib{#6}{masthesis}\_mbib{#7}{phdthesis}}
-
-\_langb en {, and } { et al.} { ed.} {cit.~} {Vol.~} {No.~} {pp.~} {~p.} {,~ed.} {,~eds.}
- {Available from } {Available also from }
- {Bachelor's Thesis} {Master's Thesis} {Ph.D. Thesis}
-%------------------------------------------------------------------------------------------
-\_langb cs { a } { a~kol.} { vyd.} {vid.~} {ročník~} {č.~} {s.~} {~s.} {,~editor} {,~editoři}
- {Dostupné na } {Dostupné též na }
- {Bakalářská práce} {Diplomová práce} {Disertační práce}
-\_langb sk { a } { a~kol.} { vyd.} {vid.~} {ročník~} {č.~} {s.~} {~s.} {,~editor} {,~editoři}
- {Dostupné na } {Dostupné tiež na }
- {Bakalárska práca} {Diplomová práca} {Dizertačná práca}
-
-% \_<lang>dateformat year/month/day\relax, for example: \_csdateformat 2020/05/21\relax
-% This is used in iso690 bib-style when the field "citedate" is used.
-
-\_def\_endateformat #1/#2/#3\relax{#1-#2-#3}
-% \_csdateformat 2020/05/21\relax -> \hbox{21. 5. 2020}
-\_def\_csdateformat #1/#2/#3\relax{\hbox{\_tmpnum=#3 \_the\_tmpnum. \_tmpnum=#2 \_the\_tmpnum. #1}}
-\_let\_skdateformat =\_csdateformat
-
-\_endcode % -------------------------------------
-
-2021-01-21 more robust quotes in outlines
-2020-12-05 bib phrases moved here
-2020-04-29 Obrazek -> Abbildung: bug fixed
-2020-03-15 introduced
diff --git a/macros/luatex/optex/base/lists.opm b/macros/luatex/optex/base/lists.opm
deleted file mode 100644
index 189719302d..0000000000
--- a/macros/luatex/optex/base/lists.opm
+++ /dev/null
@@ -1,128 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_codedecl \begitems {Lists: begitems, enditems <2021-03-10>} % 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. Users can set
- initial value of `\itemnum` to another value after `\beitems` if they want.
- \nl
- Each level of nested lists is indented by the new `\iindent` from left.
- The 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*{\_relax\_ifmmode*\_else\_ea\_startitem\_fi}
- \_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 ;
-
- \_doc -----------------------------
- The \`\begblock` macro selects fonts from footnotes \^`\_fnset`
- and opens new indentation in a group.
- \`\endblock` closes the group.
- This is implemented as an counterpart
- of Markdown's Blockquotes. Redefine these macros if you want to declare
- different design.
- The \ulink[http://petr.olsak.net/optex/optex-tricks.html\#greyblock]{\OpTeX/ trick 0031}
- shows how to create blocks with grey background splittable to more pages.
- \_cod -----------------------------
-
-\_def\_begblock{\_bgroup\_fnset \_medskip \_advance\_leftskip by\_iindent \_firstnoindent}
-\_def\_endblock{\_par\_medskip\_egroup\_isnextchar\_par{}{\_noindent}}
-
-\_public \begblock \endblock ;
-
-
-\_endcode % -------------------------------------
-
-2021-03-10 \_ifmmode*\_else\_ea\_startitem\_fi added to * defintition
-2020-04-21 \isnextchar\par added to \enditems
-2020-03-18 introduced
diff --git a/macros/luatex/optex/base/logos.opm b/macros/luatex/optex/base/logos.opm
deleted file mode 100644
index a510a74a30..0000000000
--- a/macros/luatex/optex/base/logos.opm
+++ /dev/null
@@ -1,61 +0,0 @@
-%% This is part of the 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 the 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 {\_isnextchar/\_ignoreit{}}
-
-\_public \TeX \OpTeX \LuaTeX \XeTeX \ignoreslash ;
-
- \_doc -----------------------------
- The \`\_slantcorr` macro expands to the slant-correction of the 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 need 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
-
diff --git a/macros/luatex/optex/base/luatex-ini.opm b/macros/luatex/optex/base/luatex-ini.opm
deleted file mode 100644
index e0526a48d6..0000000000
--- a/macros/luatex/optex/base/luatex-ini.opm
+++ /dev/null
@@ -1,136 +0,0 @@
-%% This is part of the 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.
diff --git a/macros/luatex/optex/base/makeindex.opm b/macros/luatex/optex/base/makeindex.opm
deleted file mode 100644
index e5f7b4032e..0000000000
--- a/macros/luatex/optex/base/makeindex.opm
+++ /dev/null
@@ -1,463 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_codedecl \makeindex {Makeindex and sorting <2021-02-15>} % loaded in format
-
- \_doc -----------------------------
- \^`\makeindex` implements sorting algorithm at \TeX/ macro-language level.
- You need not any external program.
-
- There are two passes in the sorting algorithm. The primary pass does not
- distinguish between a group of letters (typically non-accented and
- accented). If the result of comparing two string is equal in primary pass
- then the secondary pass is started. It distinguishes 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 the 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 the sorting algorithm are declared in \`\_ignoredchars``<iso-code>`.
- The compound characters (two or more characters interpreted as one
- character in the sorting algorithm) are mapped to single invisible characters
- in \`\_compoundchars``<iso-code>`. Czech rules declare 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 the first pass
- without additional condition. All characters are taken into account in
- second pass: ASCII characters with code $\string<65$ 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 a subset of the 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 with 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 codes.
- 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=64 \_ea\_act \_sortingdata \_relax
-}
-
- \_doc -----------------------------
- Strings to be sorted are prepared in `\,<string>` control sequences
- (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 the first character from both converted strings, compares them
- and if it is equal then calls itself recursively else gives the 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 a 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 with 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}%
- \_incr\_unresolvedrefs
- \_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
- \_ea\_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 solve 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 other variants of indexing macros expand internally to `\iindex`.
- \_cod -----------------------------
-
-\_def\_iindex#1{\_isempty{#1}\_iffalse
- \_openref{\_def~{ }\_ewref\_Xindex{{#1}{\_iitypesaved}}}\_fi}
-\_public \iindex ;
-
- \_doc -----------------------------
- The \`\_Xindex``{<word>}{<iitype>}` stores `\,<word>` to the `\_iilist` if
- there is the 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.
- Moreover, 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 the horizontal mode in 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 % -------------------------------------
-
-2021-02-15 \_expandafter -> \_ea
-2021-02-01 secodary sorting: start from code 65
-2020-04-21 \isempty \iffalse ... \fi added to \iindex
-2020-03-26 introduced
diff --git a/macros/luatex/optex/base/maketoc.opm b/macros/luatex/optex/base/maketoc.opm
deleted file mode 100644
index 8dfd821640..0000000000
--- a/macros/luatex/optex/base/maketoc.opm
+++ /dev/null
@@ -1,154 +0,0 @@
-% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_codedecl \maketoc {Macros for maketoc <2020-02-09>} % preloaded in format
-
- \_doc ------------------------------------
- \`\_Xtoc` `{<level>}{<type>}{<number>}{<o-title>}<title>` (in `.ref` file) reads
- given data and appends them to the \`\_toclist` as
- \^`\_tocline``{<level>}{<type>}{<number>}{<o-title>}{<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
- * `<o-title>`: outlines title, if differs from `<title>`.
- * `<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.
-
- We read the <title> parameter by \^`\scantoeol` from `.ref` file
- because the <title> can include something like \code{`\{`}.
- \_cod ------------------------------------
-
-\_def\_toclist{}
-\_newifi \_ifischap \_ischapfalse
-
-\_def\_Xtoc#1#2#3#4{\_ifnum#1=0 \_ischaptrue\_fi
- \_addto\_toclist{\_tocline{#1}{#2}{#3}{#4}}\_scantoeol\_XtocA}
-\_def\_XtocA#1{\_addto\_toclist{{#1}}\_ea\_addto\_ea\_toclist\_ea{\_currpage}}
-
- \_doc ------------------------------------
- \`\_tocline``{<level>}{<type>}{<number>}{<o-title>}{<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 horizontal 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 this:
- \begtt \catcode`\<=13
- | |
- \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 the global counter of all TOC records (used by hyperlinks).
- \_cod ------------------------------------
-
-\_newcount \_tocrefnum
-\_def\_tocline#1#2#3#4#5#6#7{%
- \_advance\_tocrefnum by1
- \_bgroup
- \_leftskip=\_iindent \_rightskip=2\_iindent
- \_ifischap \_advance\_leftskip by \_iindent \_fi
- \_def\_pgn{\_ilink[pg:#6]}%
- \_the\_everytocline
- \_ifcsname _tocl:#1\_endcsname
- \_cs{_tocl:#1}{#3}{\_scantextokens{#5}}{#7}\_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 -----------------------------------
- If you want a special formating of TOC with adding more
- special lines (no generated as titles from `\chap`, `\sec`, `\secc`), you
- can define `\addtotoc{<level>}{<type>}{<number>}{<o-title>}{<title>}` macro:
- \begtt
- \def\addtotoc#1#2#3#4#5{%
- \incr\_tocrefnum
- \_dest[toc:\_the\_tocrefnum]%
- \_ewref\_Xtoc{{#1}{#2}{#3}{#4}#5}%
- }
- \endtt
- and you can declare special lines (or something else)
- as an unused level (10 in the following example):
- \begtt
- \sdef{_tocl:10}#1#2#3{\medskip\hbox{\Blue #2}\medskip}
- \endtt
- Now, users can add a blue line into TOC by
- \begtt \catcode`\<=13
- \addtotoc{10}{blue-line}{}{\relax}{<blue text to be added in the TOC>}
- \endtt
- anywhere in the document. Note that `\relax` in the fourth parameter
- means that outline will be not generated. And second parameter
- `blue-line` is only a comment (unused in macros).
-
- \`\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
- \_incr\_unresolvedrefs
- \_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
-
-2021-02-09 \thisoutline implemented
-2020-04-23 \_tocpar introduced (incompatible change)
-2020-04-22 \_pg -> \_pgn (incompatible change)
-2020-03-12 introduced
diff --git a/macros/luatex/optex/base/margins.opm b/macros/luatex/optex/base/margins.opm
deleted file mode 100644
index d88cc04237..0000000000
--- a/macros/luatex/optex/base/margins.opm
+++ /dev/null
@@ -1,80 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_codedecl \margins {Macros for margins setting <2021-03-15>} % 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
- \_xhsize =\_hsize \_setxhsize % \_xhsize used by \output routine
- \_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 % -----------------------------------------
-
-2021-03-15 \_setxhsize added
-2020-03-14 released
diff --git a/macros/luatex/optex/base/math-macros.opm b/macros/luatex/optex/base/math-macros.opm
deleted file mode 100644
index 2b090ee1b8..0000000000
--- a/macros/luatex/optex/base/math-macros.opm
+++ /dev/null
@@ -1,1079 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_codedecl \sin {Math macros plus mathchardefs <2021-02-15>} % preloaded in format
-
- \_doc -----------------------------
- The category code of the character `_` remains as the letter (11) and the mathocode
- of it is `"8000`.
- It means that it is an active character in math mode. It is defined as the subscript prefix.
-
- There is a problem: The `x_n` is tokenized as `x`, `_`, `n` and it works
- without problems. 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 your own
- control sequence in the form `\<word>_` or `\<word>_<one-letter>` (where
- <word> is a sequence of letters) because such control sequences are
- inaccessible: preprocessor rewrites it.
-
- The \`\mathsbon` macro activates the rewriting 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, it is activated in the `\everyjob`, see section~\ref[init].
- Note, that the `\everyjob` is processed after the first line of the document is
- read, so the \^`\mathsbon` is activated from the second line of the document.
- \_cod -----------------------------
-
-\catcode`\_ = 8 \let\sb = _
-\catcode`\_ = 13 \let _ = \sb
-\catcode`\_ = 11
-\_private \sb ;
-
-\_newifi\_ifmathsb \_mathsbfalse
-\_def \_mathsbon {%
- \_directlua{
- callback.add_to_callback("process_input_buffer",
- function (str)
- return string.gsub(str.." ", "(\_nbb[a-zA-Z]+)_([a-zA-Z]?[^_a-zA-Z])", "\_pcent 1 _\_pcent 2")
- end, "_mathsb") }%
- \_global\_mathsbtrue
-}
-\_def \_mathsboff {%
- \_directlua{ callback.remove_from_callback("process_input_buffer", "_mathsb") }%
- \_global \_mathsbfalse
-}
-\_public \mathsboff \mathsbon ;
-
- \_doc -----------------------------
- All mathcodes are set to equal values as in plain\TeX/.
- But all encoding-dependent declarations (like these) will be set
- to different values when a 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 declared 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 the 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 a more readable
- form.\nl
- \`\sp` is an alternative for `^`. The \`\sb` alternative for `_` was defined
- at 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=\_zo
- \_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 -----------------------------
- \`\adots` inspired by plain \TeX/
- \_cod -----------------------------
-
-\_protected\_def\_adots{\_mathinner{%
- \_mkern1mu\_raise.1em\_hbox{.}\_mkern2mu
- \_raise.4em\_hbox{.}\_mkern2mu\_raise.7em\_vbox{\_kern.7em\_hbox{.}}\_mkern1mu}}
-
-\_public \adots ;
-
- \_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 -----------------------------
- \`\_math`, \`\skew`,
- \`\overrightarrow`, \`\overleftarrow`, \`\overbrace`, \`\underbrace` macros.
- The last four are redefined when Unicode math is loaded.
- \_cod -----------------------------
-
-\_def\_math{\_mathsurround\_zo}
-\_protected\_def\_skew #1#2#3{{\_muskip0=#1mu\_divide\_muskip0=by2 \_mkern\_muskip0
- #2{\_mkern-\_muskip0{#3}\_mkern\_muskip0}\_mkern-\_muskip0}{}}
-\_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}
-
-\_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 \_hbox{\_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=\_zo \_dp0=\_zo \_hbox{\_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{\_kern\_zo #2}\_limits^{#1}}}
-\_protected\_def\_doteq{\_buildrel\_textstyle.\over=}
-\_private \in \sim ;
-\_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 -----------------------------
- \`\matrix` and \`\pmatrix`
- behave as in Plain \TeX/, if it is used in the
- `\displaystyle`. On the other hand, it is printed in smaller size
- (by appropriate amount) in `\textstyle` = `\scriptstyle` and `\scriptscriptstyle`.
- This feature is new in \OpTeX/.
- \_cod -----------------------------
-
-\_protected\_def\_matrix#1{\_null\_thinsk
- \_edef\_tmpa{\_the\_numexpr \_mathstyle/4\_relax}% 0 0 1 1 1 1 2 2
- \_vcenter{\_matrixbaselines\_math
- \_ialign{\_the\_lmfil$\_matrixstyle##$\_hfil&&\_quad\_the\_lmfil$\_matrixstyle##$\_hfil\_crcr
- \_mathstrut\_crcr\_noalign{\_kern-\_baselineskip}
- #1\_crcr\_mathstrut\_crcr\_noalign{\_kern-\_baselineskip}}}\_thinsk}
-
-\_def\_matrixbaselines{\_normalbaselines \_def\_matrixstyle{}%
- \_let\_matrixbaselines=\_relax % \matrix inside matrix does not change size again
- \_ifcase\_tmpa \_or
- \_baselineskip=.7\_baselineskip \_def\_quad {\_hskip.7em\_relax}%
- \_let\_matrixstyle=\_scriptstyle
- \_or
- \_baselineskip=.5\_baselineskip \_def\_quad {\_hskip.5em\_relax}%
- \_let\_matrixstyle=\_scriptscriptstyle
- \_fi
-}
-\_protected\_def\_pmatrix#1{\_left(\_matrix{#1}\_right)}
-
-\_public \matrix \pmatrix ;
-
- \_doc -----------------------------
- The \`\cases` and \`\bordermatrix` macros are almost identical as in plain \TeX/.
- You can simply re-define `\bordermatrix` with other delimiters
- using the common \`\_bordermatrixwithdelims` macro.
- \_cod -----------------------------
-
-\_protected\_long\_def\_cases#1{\_left\{\_thinsk\_vcenter{\_normalbaselines\_math
- \_ialign{$##\_hfil$&\_quad{##\_unsskip}\_hfil\_crcr#1\_crcr}}\_right.}
-
-\_newdimen\_ptrenwd
-\_ptrenwd=8.75pt % width of the big left (
-\_protected\_def\_bordermatrix{\_bordermatrixwithdelims()}
-\_def\_bordermatrixwithdelims#1#2#3{\_begingroup \_math
- \_setbox0=\_vbox{\_bordermatrixA #3\_stopbmatrix}%
- \_setbox2=\_vbox{\_unvcopy0 \_global\_setbox1=\_lastbox}%
- \_setbox2=\_hbox{\_unhbox1 \_unskip\_global\_setbox1=\_lastbox}%
- \_setbox2=\_hbox{$\_kern\_wd1 \_kern-\_ptrenwd\_left#1\_kern-\_wd1
- \_global\_setbox1=\_vbox{\_box1 \_kern.2em}%
- \_vcenter{\_kern-\_ht1 \_unvbox0 \_kern-\_baselineskip}\_thinsk\_right#2$}%
- \_null\_thicksk\_vbox{\_kern\_ht1 \_box2}\_endgroup}
-\_def\_bordermatrixA #1\cr#2\_stopbmatrix{%
- \_ialign{$##$\_hfil\_kern.2em\_kern\_ptrenwd&\_thinspace\_hfil$##$\_hfil
- &&\_quad\_hfil$##$\_hfil\_crcr
- \_omit\_strut\_hfil\_crcr\_noalign{\_kern-\_baselineskip}%
- #1\_crcr\_noalign{\_kern.2em}#2\_crcr\_omit\_strut\_cr}}
-
-\_public \cases \bordermatrix ;
-
- \_doc -----------------------------
- The \`\eqalign` macro behaves like in Plain \TeX/ by default.
- It creates the `\vcenter` in the math mode. The content is two column
- `\halign` with right-aligned left column and left-aligned right column.
- The table items are in `\displaystyle` and the `\baselineskip` is
- advanced by `\jot` (3pt in plain \TeX). It follows from the default
- settings of \^`\eqlines` and \^`\eqstyle` parameters.
-
- In \OpTeX/, this macro is more flexible. See section 4.4 in the
- \ulink[http://petr.olsak.net/ftp/olsak/optex/optex-math.pdf]
- {Typesetting Math with \OpTeX/}.
- The `\baselineskip` value is set by the \^`\eqlines` parameter and math style
- by the \^`\eqstyle` parameter.
-
- There are more possible columns than two (used in classical Plain TeX):
- `rlcrlcrlc` etc.\ where `r` and `l` columns are without spaces and `c` column
- (if used) has space \^`\eqspace`/2 at its both sides.
- \_cod -----------------------------
-
-\_long\_def\_eqalign#1{\_null\_thinsk\_vcenter{\_the\_eqlines\_math
- \_ialign{&\_hfil$\_the\_eqstyle{##}$&$\_the\_eqstyle{{}##}$\_hfil
- &\_hskip.5\_eqspace\_hfil$\_the\_eqstyle{##}$\_hskip.5\_eqspace\_hfil
- \_crcr#1\_crcr}}\_thinsk}
-
-\_public \eqalign ;
-
- \_doc -----------------------------
- The \`\displaylines``{<formula>\cr<formula>\cr...<formula>}`
- creates horizontally centered formulae.
- It behaves exactly as in Plain \TeX/. The `\halign` is applied directly
- in the outer display environment with lines of type `\hbox to\displaywidth`.
- This enables to break lines inside such display to more pages but it is
- impossible to use `\eqno` or `\leqno` or \^`\eqmark`.
-
- \OpTeX/ offers
- `\dislaylines to<dimen>{<formula>\cr<formula>\cr...<formula>}`
- as an alternative case of usage `\displaylines`. See section 4.3 in the
- \ulink[http://petr.olsak.net/ftp/olsak/optex/optex-math.pdf]
- {Typesetting Math with \OpTeX/}.
- The centered formulas are in `\vcenter` in this case,
- so lines cannot be broken into more pages, but this case
- enables to use `\eqno` or `\leqno` or \^`\eqmark`.
- \_cod -----------------------------
-
-\_def\_displaylines #1#{\_ifx&#1&\_ea\_displaylinesD
- \_else \_def\_tmp to##1\_end{\_def\_tmp{\_dimexpr ##1}}\_tmp #1\_end
- \_ea\_displaylinesto \_fi}
-\_long\_def\_displaylinesD #1{\_display \_tabskip=\_zoskip
- \_halign{\_hbox to\_displaywidth{$\_elign\_hfil\_displaystyle##\_hfil$}\_crcr
- #1\_crcr}}
-\_long\_def\_displaylinesto #1{\_vcenter{\_openup\_jot \_math \_tabskip=\_zoskip
- \_halign{\_strut\_hbox to\_span\_tmp{$\_hss\_displaystyle##\_hss$}\_crcr
- #1\_crcr}}}
-
-\_public\displaylines ;
-
- \_doc -----------------------------
- \`\openup`, \`\eqalignno` and `\leqalignno` macros are copied from
- Plain \TeX/ unchanged.
- \_cod -----------------------------
-
-\_def\_openup{\_afterassignment\_openupA\_dimen0=}
-\_def\_openupA{\_advance\_lineskip by\_dimen0
- \_advance\_baselineskip by\_dimen0
- \_advance\_lineskiplimit by\_dimen0 }
-\_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
-\_long\_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}}
-\_long\_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 \eqalignno \leqalignno ;
-
- \_doc -----------------------------
- These macros are inspired by `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 smarter 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 the 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}{\_stylenum3 #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 \`\cramped` macro
- sets the cramped variant of the current style.
- Note that \^`\currstyle` initializes non-cramped variants.
- The example `\mathframe` above should be:\nl
- `\def\mathframe#1{\mathstyles{\frame{$\currstyle\cramped #1$}}}`.\nl
- Second note: `\cramped` macro reads the current math style from
- the `\mathstyle` LuaTeX primitive, so it does not work in numerators of
- generalized fractions but you can use it before the fraction is opened:
- `$\cramped {x^2\over y^2}$`.
- \_cod -----------------------------
-
-\_def\_cramped{\_ifcase\_numexpr(\_mathstyle+1)/2\_relax\_or
- \_crampeddisplaystyle \_or \_crampedtextstyle \_or
- \_crampedscriptstyle \_or \_crampedscriptscriptstyle \_fi
-}
-\_public \cramped ;
-
- \_doc -----------------------------
- The \`\mathbox``{<text>}` macro is copied from OPmac trick 078.
- It behaves like `\hbox{<text>}` but the `<text>` is scaled to a smaller
- size if it is used in scriptstyle or scriptscript style.\nl
- The \^`\_textmff` and \^`\_scriptmff` are redefined in order to
- respect optical sizes. If we are in script style then the math mode
- starts in text style, but optical size is given to script style.
- The `\mathbox` in non-Unicode math respects optical sizes
- using different principle.
- \_cod -----------------------------
-
-\_def\_mathbox#1{{\_mathstyles{\_hbox{%
- \_ifnum\_stylenum<2 \_everymath{\_currstyle}%
- \_else
- \_ifnum\_stylenum=2 \_def\_textmff{+ssty=0;}\_fi
- \_ifnum\_stylenum=3 \_def\_textmff{+ssty=1;}\_def\_scriptmff{+ssty=1;}\_fi
- \_typoscale[\_dobystyle{}{}{700}{500}/]\_fi #1}}}%
-}
-\_public \mathbox ;
-
-\_endcode %---------------------------------------------------
-
-2021-02-15 \_mathbox redefines \_textmff etc. in order to respect optical sizes
-2021-02-04 \_bordermatrixwithdelims introduced.
-2021-01-23 better expession for math styles in \matrix
-2021-01-22 bad use of \_stylenum in \matrix + bad value (bug fix: \_stylenum->\_mtstylenum)
-2020-12-17 \box0->\hbox{\box0} in \_finphant and \_finsmash, see https://tex.stackexchange.com/questions/574997/
-2020-06-14 \borermatrix, \cases corrected
-2020-06-13 \adots introduced, \matrix smaller in T mode too.
-2020-06-03 \notin corrected
-2020-06-02 $$\par$$ error is supressed, so we define \(l)eqalign(no), \displayines as \long
-2020-05-30 \cases: group added in the second column.
- "\displaylines to<size>" implemented and documented.
-2020-05-11 \let\|=\Vert, bug fixed
-2020-04-27 \mathstyles introduced
-2020-03-14 implemented
diff --git a/macros/luatex/optex/base/math-preload.opm b/macros/luatex/optex/base/math-preload.opm
deleted file mode 100644
index 0ec9abae2f..0000000000
--- a/macros/luatex/optex/base/math-preload.opm
+++ /dev/null
@@ -1,227 +0,0 @@
-%% This is part of the 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 the normal shape of all math
- symbols and \`\boldmath` for the bold shape of all math symbols. 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 cmtt8 8.5 cmtt9 9.5 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 6 eufm7 8.5 eufm10 *
-\_regtfm eufb 0 eufb5 6 eufb7 8.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 default.
- \nl
- \`\_corrmsize` `<factor><space>` can be used just before
- `\_loadmathfamily` or `\_setmathfamily`.
- The `<factor>` is decimal number, it denotes
- scale-factor \"size of loaded math font in `\textstyle` : size of text font".
- You can use it in `\_normalmath` or `\_boldmath` macros if you want to do a
- corrections (for example due to different ex-height in text and math
- font). The `\_corrmsize` is applied only to one following
- `\_loadmathfamily` or `\_setmathfamily`. If it is missing
- then the `<factor>` is 1 for such math family (i.e.\ no size corrections).
- \_cod -----------------------------
-
-\_def\_corrmsize#1 {\_ptmunit=#1\_ptunit} % for corrections of sizes in diferent fonts
-
-\_def\_loadmathfamily #1 #2 {%
- \_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 \_ptmunit=\_ptunit
-}
-\_def\_setmathfamily #1 #2{\_let\_mF=#2%
- \_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 \_ptmunit=\_ptunit \_let#2=\_mF
-}
-\_def\_setmathsizes[#1/#2/#3]{\_ptmunit=\_ptunit
- \_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 -----------------------------
- Finally, we preload a math fonts collection in [10/7/5] sizes
- when the format is generated. This is done when
- `\_suppressfontnotfounderror=1` because we need not errors when the 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 Unicode fonts, i.e.
-Unicode-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
diff --git a/macros/luatex/optex/base/math-unicode.opm b/macros/luatex/optex/base/math-unicode.opm
deleted file mode 100644
index 96f9983380..0000000000
--- a/macros/luatex/optex/base/math-unicode.opm
+++ /dev/null
@@ -1,266 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_codedecl \loadmath {Unicode Math fonts <2021-03-09>} % preloaded in format
-
- \_doc -----------------------------
- \`\loadmath` `{<Unicode-math font>}` loads the 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 the 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.}%
- \_ifx\_ncharrmA\_undefined \_opinput {unimath-codes.opm}\_fi
- \_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 a similar sense as
- \^`\_setmathdimens`.
- \nl
- You can combine more fonts if you register them to another
- math families (5, 6, 7, etc.) in the \^`\normalmath` macro.
- \nl
- The default value of \^`\_normalunimath` shows a combination of base Unicode-math
- font with 8bit Math font at family 4. See definition of `\script` macro where
- `\fam4` is used.
- \_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
- \_begingroup % correction for \choose
- \_everymath{}\_global\_setbox0=\_hbox{$\_fam1\_displaystyle{0\_atop0}$}\_endgroup
- \_Umathfractiondelsize\_displaystyle = \_dimexpr(\_ht0-\_Umathaxis\_displaystyle)*2\_relax
-}
-
- \_doc -----------------------------
- If you try the example above about
- \~`\loadboldmath``{[xitsmath-bold]} \to {[xitsmath-regular]}`
- then you can find a bug in XITSMath-Bold font: the symbols for norm
- $\|x\|$ are missing. So, we have to define `\_boldmath` macro manually.
- The missing symbol is loaded from family 5 as no-bold variant in our example:
- \begtt
- \loadmath{[xitsmath-regular]}
- \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
-
- \`\_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 math family 1 is loaded then the family 2 and 3 are 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.\nl
- The \^`\_corrmsize` `<factor><space>` can be used just before
- `\_loadumathfamily`, see section~\ref[math-preload] for more information.\nl
- The \`\_textmff`, \`\_scriptmff` and \`\_sscriptmff` are additional font
- features for text, script and sscript sizes respectively. They are
- locally re-defined in \^`\mathbox` macro.
- \_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}{\_textmff #3} at\_optsize
- \_textfont#1=\_mF \_ifnum#1=1 \_textfont2=\_mF \_textfont3=\_mF \_fi
- \_optsize=\_sizemscript \_font\_mF=\_umathname{#2}{\_scriptmff #3} at\_optsize
- \_scriptfont#1=\_mF \_ifnum#1=1 \_scriptfont2=\_mF \_scriptfont3=\_mF \_fi
- \_optsize=\_sizemsscript \_font\_mF=\_umathname{#2}{\_sscriptmff #3} at\_optsize
- \_scriptscriptfont#1=\_mF \_ifnum#1=1 \_scriptscriptfont2=\_mF \_scriptscriptfont3=\_mF \_fi
- \_optsize=\_optsizesave \_ptmunit=\_ptunit
-}
-\_def\_textmff{} \_def\_scriptmff{+ssty=0;} \_def\_sscriptmff{+ssty=1;}
-
- \_doc -----------------------------
- Unicode math font includes all typical math alphabets together, user needs not to
- load more \TeX/ math families. These math alphabets are encoded by
- different parts of Unicode table. We need auxiliary macros for setting
- mathcodes by selected math alphabet.
- \nl
- \`\_umathrange` `{<from->-<to>}<class><family>\<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 cause 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#3#4{\_umathnumB=#4\_def\_tmp{#2 #3 }\_umathrangeA#1}
-\_def\_umathrangeA#1-#2{\_umathnumA=`#1\_relax
- \_loop
- \_umathcorr\_umathprepare\_umathnumB
- \_Umathcode \_umathnumA = \_tmp \_umathcorr\_umathvalue{\_umathnumB}
- \_ifnum\_umathnumA<`#2\_relax
- \_advance\_umathnumA by1 \_advance\_umathnumB by1
- \_repeat
-}
-\_def\_umathrangeGREEK{\_umathrange{^^^^0391-^^^^03a9}}
-\_def\_umathrangegreek{\_umathrange{^^^^03b1-^^^^03d6}}
-\_def\_greekdef#1{\_ifx#1\_relax \_else
- \_begingroup \_lccode`X=\_umathnumB \_lowercase{\_endgroup \_def#1{X}}%
- \_advance\_umathnumB by 1
- \_ea\_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 the new Unicode-math 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 previous `\loadmath`. For example:
-
-\begtt
-\loadmath {[xitsmath-regular]}
-\loadboldmath {[xitsmath-bold]} \to {[xitsmath-regular]}
-\endtt
-There are very few Unicode-math fonts with full \^`\boldmath` support.
-I know only XITSMath-Bold and KpMath-Bold. If \^`\loadboldmath` is not used
-then \"faked bold" created from \^`\normalmath` is used by default.
-
-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
-\loadmath{[KpMath-Regular]} ... KP fonts 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
-
-\secc Printing all Unicode math slots in used math font
-
-\printdoctail print-unimath.opm
-\printdoc print-unimath.opm
-
-\_endinput
-
-2021-03-09 \_setunimathdimes: \_begin/end/group instead {}, bug fixed
-2021-02-15 \_textmff, \_scriptmff and \_sscriptmff introduced
-2021-02-15 \_expandafter -> \_ea
-2020-06-07 \Umathfractiondelsize (for \choose brackets) corrected, see https://tug.org/pipermail/luatex/2020-June/007365.html
-2020-04-15 \_setmathdimens -> \_setuniathdimens
-2020-02-25 implemented
diff --git a/macros/luatex/optex/base/mathclass.opm b/macros/luatex/optex/base/mathclass.opm
deleted file mode 100644
index 458431abca..0000000000
--- a/macros/luatex/optex/base/mathclass.opm
+++ /dev/null
@@ -1,1591 +0,0 @@
-# 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
diff --git a/macros/luatex/optex/base/more-macros.opm b/macros/luatex/optex/base/more-macros.opm
deleted file mode 100644
index d5ce88c1a6..0000000000
--- a/macros/luatex/optex/base/more-macros.opm
+++ /dev/null
@@ -1,284 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_codedecl \eoldef {OpTeX useful macos <2020-05-22>} % preloaded in format
-
- \_doc -----------------------------
- We define \`\opinput` `{<file name>}` macro which
- does `\input {<file name>}` but the catcodes are set to normal catcodes
- (like \OpTeX/ initializes them) and the catcodes setting is returned back to
- the current values when the file is read. You can use `\opinput`
- in any situation inside the document and you will be sure that the file
- is read correctly with correct catcode settings.
-
- To achieve this, we declare \`\optexcatcodes` catcode table
- and \`\plaintexcatcodes`. 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 catcodes
- from the catcode table stack.
-
- The `\opinput` works inside the catcode table stack. It reads `\optexcatcodes`
- table and stores it to \`\_tmpcatcodes` table.
- This table is actually used during `\input` (maybe catcodes are
- changed here). Finally, `\_restoretable` pops the stacks and returns
- to the catcodes used before `\opinput` is run.
- \_cod -----------------------------
-
-\_def\_opinput #1{\_setctable\_optexcatcodes
- \_savecatcodetable\_tmpcatcodes \_catcodetable\_tmpcatcodes
- \_input {#1}\_relax\_restorectable}
-
-\_newcatcodetable \_optexcatcodes
-\_newcatcodetable \_plaintexcatcodes
-\_newcatcodetable \_tmpcatcodes
-
-\_public \optexcatcodes \plaintexcatcodes \opinput ;
-
-\_savecatcodetable\_optexcatcodes
-{\_catcode`_=8 \savecatcodetable\plaintexcatcodes}
-
- \_doc -----------------------------
- The implementation of the catcodetable stack follows.
-
- The current catcodes 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 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 that 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 -----------------------------
- \`\scantoeol``\macro <text to end of line>` scans the
- `<text to end of line>` in verbatim mode and runs the
- `\macro{<text to end of line>}`. The `\macro`
- can be defined `\def\macro#1{...\scantextokens{#1}...}`.
- The new tokenization of the parameter is processed when the parameter is used,
- no when the parameter is scanned. This principle is used in definition
- of \^`\chap`, \^`\sec`, \^`\secc` and \^`\_Xtoc` macros.
- It means that user can write \code{\\sec text `&` text} for example.
- Inline verbatim works in title sections.
-
- The verbatim scanner of `\scatoeol` keeps category 7 for `^` in
- order to be able to use `^^J` as comment character which means that
- the next line continues.
- \_cod -----------------------------
-
-\_def\_scantoeol#1{\def\_tmp{#1}\_begingroup \_setscancatcodes \_scantoeolA}
-\_def\_setscancatcodes{\_setverb \_catcode`\^^M=12\_catcode`\^=7\_catcode`\ =10\_catcode`\^^J=14 }
-\_catcode`\^^M=12 %
-\_def\_scantoeolA#1^^M{\_endgroup \_tmp{#1}}%
-\_normalcatcodes %
-
-\_public \scantoeol ;
-
- \_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.
-
- How it works: `\replstring\foo{<textA>}{<textB>}` prepares
- `\_replacestringsA#1<textA>{...}` and runs
- `\_replacestringsA<foo-body>?<textA>!<textA>`.
- So, `#1` includes the first part of <foo-body> before first <textA>.
- It is saved to \`\_tmptoks` and `\_replacestringsB` is run in a loop.
- It finishes processing or appends the next part to `\_tmptoks` separated by
- <textB> and continues loop. The final part of the macro removes the last `?`
- from resulting `\_tmptoks` and defines a new version of the `\foo`.
- \_cod -----------------------------
-
-\_newtoks\_tmptoks
-\_catcode`!=3 \_catcode`?=3
-\_def\_replstring #1#2#3{% \replstring #1{stringA}{stringB}
- \_long\_def\_replacestringsA##1#2{\_tmptoks{##1}\_replacestringsB}%
- \_long\_def\_replacestringsB##1#2{\_ifx!##1\_relax \_else \_toksapp\_tmptoks{#3##1}%
- \_ea\_replacestringsB\_fi}%
- \_ea\_replacestringsA #1?#2!#2%
- \_long\_def\_replacestringsA##1?{\_tmptoks{##1}\_edef#1{\_the\_tmptoks}}%
- \_ea\_replacestringsA \_the\_tmptoks}
-\_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 `\verbchar` 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#1{\_catcode \_if`\_noexpand#1\_ea`\_else\_if"\_noexpand#1"\_else
- \_if'\_noexpand#1'\_else \_ea\_ea\_ea\_ea\_ea\_ea\_ea#1\_fi\_fi\_fi}
-
- \_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.
- \_cod -----------------------------
-
-\_def\_removespaces #1 {\_isempty{#1}\_iffalse #1\_ea\_removespaces\_fi}
-\_ea\_def \_ea\_ignorept \_ea#\_ea1\_detokenize{pt}{#1}
-
-\public \removespaces \ignorept ;
-
- \_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 the decimal point.
- The `<expression>` can include `+-*/()` and decimal numbers in common syntax.
-
- The usage of prefixed versions \`\_expr` or \`\_bp` is more recommended
- because a 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 \catcode`\<=13
- \_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-22 robust \catcode newly defined in order \catcode\string.... be possible
-2020-05-03 \load macro introduced
-2020-03-15 released
diff --git a/macros/luatex/optex/base/multicolumns.opm b/macros/luatex/optex/base/multicolumns.opm
deleted file mode 100644
index bf5b05f7db..0000000000
--- a/macros/luatex/optex/base/multicolumns.opm
+++ /dev/null
@@ -1,114 +0,0 @@
-%% This is part of the 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 a height of such free space. This is done only if we have
- enough amount of material in `\vbox 6` to fill the full page by columns.
- This is repeated in a loop until we have less amount of material in `\vbox 6`.
- Then we run `\_balancecolumns` which balances the last part of the columns.
- Each part of printed material is distributed to the 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 \_let\_setxhsize=\_relax \_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 % -------------------------------------
-
-
diff --git a/macros/luatex/optex/base/optex.ini b/macros/luatex/optex/base/optex.ini
deleted file mode 100644
index c695b7d809..0000000000
--- a/macros/luatex/optex/base/optex.ini
+++ /dev/null
@@ -1,107 +0,0 @@
-%% This is part of the 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{1.01 Mar.2021}
-\def\fmtname{OpTeX}
-\let\fmtversion=\optexversion
-
-% 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 keyval.opm % key=value dictionaries
-\input plain-macros.opm % plainTeX macros
-\input fonts-preload.opm % preloaded Latin Modern fonts
-\input fonts-resize.opm % font resizing (low-level macros)
-\input fonts-select.opm % font selection system
-\input math-preload.opm % math fams CM + AMS preloaded
-\input math-macros.opm % basic macros for math plus mathchardefs
-\input math-unicode.opm % macros for loading UnicodeMath fonts
-\input fonts-opmac.opm % font managing macros from OPmac
-\input output.opm % output routine
-\input margins.opm % macros for margins setting
-\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
-\input pdfuni-string.opm % PDFunicode strings for outlines
-\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
-\input languages.opm % languages
-\input others.opm % miscenaleous
-
-\_directlua{
- % preload OpTeX's lua code into format as bytecode
- lua.bytecode[1] = assert(loadfile(kpse.find_file("optex", "lua")))
-}
-
-\_everyjob = {%
- \_message{This is OpTeX (Olsak's Plain TeX), version <\optexversion>^^J}%
- \_mathchardef\_fnotestack=\_pdfcolorstackinit page {0 g 0 G}%
- \_directlua{lua.bytecode[1]()}% load OpTeX's Lua code
- \_mathsbon % replaces \int_a^b to \int _a^b
- \_inputref % inputs \jobname.ref if exists
-}
-
-\_dump
-
-\_endcode % ------------------------------
-
diff --git a/macros/luatex/optex/base/optex.lua b/macros/luatex/optex/base/optex.lua
deleted file mode 100644
index 2d83f38ed6..0000000000
--- a/macros/luatex/optex/base/optex.lua
+++ /dev/null
@@ -1,356 +0,0 @@
--- This is part of the OpTeX project, see http://petr.olsak.net/optex
-
--- The basic lua functions and declarations used in \OpTeX/ are here
-
--- GENERAL
-
--- Error function used by following functions for critical errors.
-local function err(message)
- error("\nerror: "..message.."\n")
-end
---
--- For a `\chardef`'d, `\countdef`'d, etc., csname return corresponding register
--- number. The responsibility of providing a `\XXdef`'d name is on the caller.
-function registernumber(name)
- return token.create(name).index
-end
---
--- ALLOCATORS
-alloc = alloc or {}
---
--- An attribute allocator in Lua that cooperates with normal \OpTeX/ allocator.
-local attributes = {}
-function alloc.new_attribute(name)
- local cnt = tex.count["_attributealloc"] + 1
- if cnt > 65534 then
- tex.error("No room for a new attribute")
- else
- tex.setcount("global", "_attributealloc", cnt)
- texio.write_nl("log", '"'..name..'"=\\attribute'..tostring(cnt))
- attributes[name] = cnt
- return cnt
- end
-end
---
--- `provides_module` is needed by older version of luaotfload
-provides_module = function() end
---
--- CALLBACKS
-callback = callback or {}
---
--- Save `callback.register` function for internal use.
-local callback_register = callback.register
-function callback.register(name, fn)
- err("direct registering of callbacks is forbidden, use 'callback.add_to_callback'")
-end
---
--- Table with lists of functions for different callbacks.
-local callback_functions = {}
--- Table that maps callback name to a list of descriptions of its added
--- functions. The order corresponds with `callback_functions`.
-local callback_description = {}
---
--- Table used to differentiate user callbacks from standard callbacks. Contains
--- user callbacks as keys.
-local user_callbacks = {}
--- Table containing default functions for callbacks, which are called if either
--- a user created callback is defined, but doesn't have added functions or for
--- standard callbacks that are \"extended" (see `mlist_to_hlist` and its pre/post
--- filters below).
-local default_functions = {}
---
--- Table that maps standard (and later user) callback names to their types.
-local callback_types = {
- -- file discovery
- find_read_file = "exclusive",
- find_write_file = "exclusive",
- find_font_file = "data",
- find_output_file = "data",
- find_format_file = "data",
- find_vf_file = "data",
- find_map_file = "data",
- find_enc_file = "data",
- find_pk_file = "data",
- find_data_file = "data",
- find_opentype_file = "data",
- find_truetype_file = "data",
- find_type1_file = "data",
- find_image_file = "data",
-
- open_read_file = "exclusive",
- read_font_file = "exclusive",
- read_vf_file = "exclusive",
- read_map_file = "exclusive",
- read_enc_file = "exclusive",
- read_pk_file = "exclusive",
- read_data_file = "exclusive",
- read_truetype_file = "exclusive",
- read_type1_file = "exclusive",
- read_opentype_file = "exclusive",
-
- -- data processing
- process_input_buffer = "data",
- process_output_buffer = "data",
- process_jobname = "data",
- input_level_string = "data",
-
- -- node list processing
- contribute_filter = "simple",
- buildpage_filter = "simple",
- build_page_insert = "exclusive",
- pre_linebreak_filter = "list",
- linebreak_filter = "exclusive",
- append_to_vlist_filter = "exclusive",
- post_linebreak_filter = "reverselist",
- hpack_filter = "list",
- vpack_filter = "list",
- hpack_quality = "list",
- vpack_quality = "list",
- process_rule = "exclusive",
- pre_output_filter = "list",
- hyphenate = "simple",
- ligaturing = "simple",
- kerning = "simple",
- insert_local_par = "simple",
- mlist_to_hlist = "exclusive",
-
- -- information reporting
- pre_dump = "simple",
- start_run = "simple",
- stop_run = "simple",
- start_page_number = "simple",
- stop_page_number = "simple",
- show_error_hook = "simple",
- show_error_message = "simple",
- show_lua_error_hook = "simple",
- start_file = "simple",
- stop_file = "simple",
- call_edit = "simple",
- finish_synctex = "simple",
- wrapup_run = "simple",
-
- -- pdf related
- finish_pdffile = "data",
- finish_pdfpage = "data",
- page_order_index = "data",
- process_pdf_image_content = "data",
-
- -- font related
- define_font = "exclusive",
- glyph_not_found = "exclusive",
- glyph_info = "exclusive",
-
- -- undocumented
- glyph_stream_provider = "exclusive",
- provide_charproc_data = "exclusive",
-}
---
--- Return a list containing descriptions of added callback functions for
--- specific callback.
-function callback.callback_descriptions(name)
- return callback_description[name] or {}
-end
-
-local valid_callback_types = {
- exclusive = true,
- simple = true,
- data = true,
- list = true,
- reverselist = true,
-}
---
--- Create a user callback that can only be called manually using
--- `call_callback`. A default function is only needed by "exclusive" callbacks.
-function callback.create_callback(name, cbtype, default)
- if callback_types[name] then
- err("cannot create callback '"..name.."' - it already exists")
- elseif not valid_callback_types[cbtype] then
- err("cannot create callback '"..name.. "' with invalid callback type '"..cbtype.."'")
- elseif ctype == "exclusive" and not default then
- err("unable to create exclusive callback '"..name.."', default function is required")
- end
-
- callback_types[name] = cbtype
- default_functions[name] = default or nil
- user_callbacks[name] = true
-end
---
--- Add a function to the list of functions executed when callback is called.
--- For standard luatex callback a proxy function that calls our machinery is
--- registered as the real callback function. This doesn't happen for user
--- callbacks, that are called manually by user using `call_callback` or for
--- standard callbacks that have default functions -- like `mlist_to_hlist` (see
--- below).
-function callback.add_to_callback(name, fn, description)
- if user_callbacks[name] or callback_functions[name] or default_functions[name] then
- -- either:
- -- a) user callback - no need to register anything
- -- b) standard callback that has already been registered
- -- c) standard callback with default function registered separately
- -- (mlist_to_hlist)
- elseif callback_types[name] then
- -- This is a standard luatex callback with first function being added,
- -- register a proxy function as a real callback. Assert, so we know
- -- when things break, like when callbacks get redefined by future
- -- luatex.
- assert(callback_register(name, function(...)
- return callback.call_callback(name, ...)
- end))
- else
- err("cannot add to callback '"..name.."' - no such callback exists")
- end
-
- -- add function to callback list for this callback
- callback_functions[name] = callback_functions[name] or {}
- table.insert(callback_functions[name], fn)
-
- -- add description to description list
- callback_description[name] = callback_description[name] or {}
- table.insert(callback_description[name], description)
-end
---
--- Remove a function from the list of functions executed when callback is
--- called. If last function in the list is removed delete the list entirely.
-function callback.remove_from_callback(name, description)
- local descriptions = callback_description[name]
- local index
- for i, desc in ipairs(descriptions) do
- if desc == description then
- index = i
- break
- end
- end
-
- table.remove(descriptions, index)
- local fn = table.remove(callback_functions[name], index)
-
- if #descriptions == 0 then
- -- Delete the list entirely to allow easy checking of "truthiness".
- callback_functions[name] = nil
-
- if not user_callbacks[name] and not default_functions[name] then
- -- this is a standard callback with no added functions and no
- -- default function (i.e. not mlist_to_hlist), restore standard
- -- behaviour by unregistering.
- callback_register(name, nil)
- end
- end
-
- return fn, description
-end
---
--- helper iterator generator for iterating over reverselist callback functions
-local function reverse_ipairs(t)
- local i, n = #t + 1, 1
- return function()
- i = i - 1
- if i >= n then
- return i, t[i]
- end
- end
-end
---
--- Call all functions added to callback. This function handles standard
--- callbacks as well as user created callbacks. It can happen that this
--- function is called when no functions were added to callback -- like for user
--- created callbacks or `mlist_to_hlist` (see below), these are handled either
--- by a default function (like for `mlist_to_hlist` and those user created
--- callbacks that set a default function) or by doing nothing for empty
--- function list.
-function callback.call_callback(name, ...)
- local cbtype = callback_types[name]
- -- either take added functions or the default function if there is one
- local functions = callback_functions[name] or {default_functions[name]}
-
- if cbtype == nil then
- err("cannot call callback '"..name.."' - no such callback exists")
- elseif cbtype == "exclusive" then
- -- only one function, atleast default function is guaranteed by
- -- create_callback
- return functions[1](...)
- elseif cbtype == "simple" then
- -- call all functions one after another, no passing of data
- for _, fn in ipairs(functions) do
- fn(...)
- end
- return
- elseif cbtype == "data" then
- -- pass data (first argument) from one function to other, while keeping
- -- other arguments
- local data = (...)
- for _, fn in ipairs(functions) do
- data = fn(data, select(2, ...))
- end
- return data
- end
-
- -- list and reverselist are like data, but "true" keeps data (head node)
- -- unchanged and "false" ends the chain immediately
- local iter
- if cbtype == "list" then
- iter = ipairs
- elseif cbtype == "reverselist" then
- iter = reverse_ipairs
- end
-
- local head = (...)
- local new_head
- local changed = false
- for _, fn in iter(functions) do
- new_head = fn(head, select(2, ...))
- if new_head == false then
- return false
- elseif new_head ~= true then
- head = new_head
- changed = true
- end
- end
- return not changed or head
-end
---
--- Create \"virtual" callbacks `pre/post_mlist_to_hlist_filter` by setting
--- `mlist_to_hlist` callback. The default behaviour of `mlist_to_hlist` is kept by
--- using a default function, but it can still be overriden by using
--- `add_to_callback`.
-default_functions["mlist_to_hlist"] = node.mlist_to_hlist
-callback.create_callback("pre_mlist_to_hlist_filter", "list")
-callback.create_callback("post_mlist_to_hlist_filter", "reverselist")
-callback_register("mlist_to_hlist", function(head, ...)
- -- pre_mlist_to_hlist_filter
- local new_head = callback.call_callback("pre_mlist_to_hlist_filter", head, ...)
- if new_head == false then
- node.flush_list(head)
- return nil
- elseif new_head ~= true then
- head = new_head
- end
-
- -- mlist_to_hlist means either added functions or standard luatex behavior
- -- of node.mlist_to_hlist (handled by default function)
- head = callback.call_callback("mlist_to_hlist", head, ...)
-
- -- post_mlist_to_hlist_filter
- new_head = callback.call_callback("post_mlist_to_hlist_filter", head, ...)
- if new_head == false then
- node.flush_list(head)
- return nil
- elseif new_head ~= true then
- head = new_head
- end
- return head
-end)
---
--- Compatibility with \LaTeX/ through luatexbase namespace. Needed for
--- luaotfload.
-luatexbase = {
- registernumber = registernumber,
- attributes = attributes,
- provides_module = provides_module,
- new_attribute = alloc.new_attribute,
- callback_descriptions = callback.callback_descriptions,
- create_callback = callback.create_callback,
- add_to_callback = callback.add_to_callback,
- remove_from_callback = callback.remove_from_callback,
- call_callback = callback.call_callback,
- callbacktypes = {}
-}
diff --git a/macros/luatex/optex/base/others.opm b/macros/luatex/optex/base/others.opm
deleted file mode 100644
index 6ff15d4332..0000000000
--- a/macros/luatex/optex/base/others.opm
+++ /dev/null
@@ -1,106 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_codedecl \uv {Miscenaleous <2020-05-22>} % 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\_ignoresecond\_currpage}
-\_def\_lastpage {\_openref\_ea\_usesecond\_currpage}
-\_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@x\_endcsname=\_voidbox
-
- \_doc ----------------------------
- We don't want to read `opmac.tex` unless `\input opmac` is specified.
- \_cod ----------------------------
-
-\_def\OPmacversion{OpTeX}
-
- \_doc ----------------------------
- We allow empty lines in math formulae. It is more comfortable.
- \_cod ----------------------------
-
-\_suppressmathparerror = 1
-
- \_doc ----------------------------
- Lorem ipsum can be printed by \`\lipsum``[<range>]` or \`\lorem``[<range>]`,
- for example `\lipsum[3]` or `\lipsum[112-121]`, max=150.
-
- First usage of `\lipsum` reads the \LaTeX/ file `lipsum.ltd.tex`
- by \`\_lipsumload`
- and prints the selected paragraph(s). Next usages of `\lipsum`
- prints the selected paragraph(s) from memory. This second and more
- usages of `\lipsum` are fully expandable. If you want to have all
- printings of `\lipsum` expandable, use dummy `\lipsum[0]` first.
-
- `\lipsum` adds `\par` after each printed paragraph. If you don't need
- such `\par` here, use \`\lipsumtext``[<number>]`.
- This macro prints only one selected paragraph <number> and does not add `\par`.
- \_cod ----------------------------
-
-\_def\_lipsumtext[#1]{\_lipsumload\_cs{_lip:#1}}
-\_def\_lipsum[#1]{\_lipsumA #1\_empty-\_empty\_end}
-\_def\_lipsumA #1-#2\_empty#3\_end{%
- \_fornum #1..\_ifx^#2^#1\_else#2\_fi \_do {\_lipsumtext[##1]\par}}
-\_def\_lipsumload{{%
- \_setbox0=\_vbox{\_tmpnum=0 % vertical mode during \input lipsum.ltd.tex
- \_def\ProvidesFile##1[##2]{}%
- \_def\NewLipsumPar{\_incr\_tmpnum \_sxdef{_lip:\_the\_tmpnum}}%
- \_opinput {lipsum.ltd.tex}%
- \_global\_let\_lipsumload=\_empty
- }}}
-\_public \lipsum \lipsumtext ;
-\_let \lorem=\lipsum
-
-\_endcode
-
-2021-01-04 \lipsumtext introduced
-2020-05-22 \lipsum uses \fornum (expandable after first usage)
-2020-04-02 released
diff --git a/macros/luatex/optex/base/outlines.opm b/macros/luatex/optex/base/outlines.opm
deleted file mode 100644
index 6230d8988b..0000000000
--- a/macros/luatex/optex/base/outlines.opm
+++ /dev/null
@@ -1,108 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_codedecl \outlines {PDF outlines <2021-02-09>} % preloaded in format
-
-\_def\_outlines#1{\_pdfcatalog{/PageMode/UseOutlines}\_openref
- \_ifx\_toclist\_empty
- \_opwarning{\_noexpand\outlines -- data unavailable. TeX me again}%
- \_incr\_unresolvedrefs
- \_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#7{%
- \_isequal{\relax}{#4}\_iffalse
- \_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
- \_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#7{%
- \_advance\_tocrefnum by1
- \_isequal{\relax}{#4}\_iffalse
- \_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
- \_isempty{#4}\_iftrue \_pdfunidef\_tmp{#5}\_else \_pdfunidef\_tmp{#4}\_fi
- \_outlinesC{toc:\_the\_tocrefnum}{\_ifnum#1<\_outlinelevel\_space\_else-\_fi}{\_tmpnum}{\_tmp}%
- \_fi
-}
-\_def\_outlinesC#1#2#3#4{\_pdfoutline goto name{#1} count #2#3{#4}\_relax}
-
-\_newcount\_oulnum
-\_def\_insertoutline#1{\_incr\_oulnum
- \_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`.
-
-The first step, the \`\outlines` macro sets `\_tocline` to \`\_outlinesA` and
-calculates the number of direct descendants of each record. The second step,
-the `\outlines` macro sets `\_tocline` to \`\_outlinesB` and it uses prepared
-data and creates outlines.
-
-Each outline 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), the third
-one for level 2 (sections) etc. The number of direct descendants will be stored
-in these macros after the first step is finished. Each new outline of a given level
-increases the `<num>` at the given level. When the first step is processed then
-(above that) the `\_ol:..` sequence of the parent increases 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 the second step is processed, then we only read the stored data about the
-number of descendants. And 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 a link destination of the type `oul:<num>` into the document
-(where \^`\insertoutline` is used) and the link itself is created too in the
-outline.
-
-\endinput
-
-2021-02-15 \_advance -> \_incr
-2021-02-09 \thisoutline implemented
-2020-03-12 released
diff --git a/macros/luatex/optex/base/output.opm b/macros/luatex/optex/base/output.opm
deleted file mode 100644
index 5bb93c2477..0000000000
--- a/macros/luatex/optex/base/output.opm
+++ /dev/null
@@ -1,267 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_codedecl \nopagenumbers {Output routine <2021-02-25>} % preloaded in format
-
- \_doc -----------------------------
- \`\_optexoutput` is the 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 are local in the `\output` group.
-
- The \`\_prepoffsets` can set `\hoffset` differently for the left or right
- page. It is re-defined by the \^`\margins` macro..
-
- The \^`\_regmark` tokens list includes accumulated `#2` from the \^`\regmacro`.
- Logos and other macros are re-defined here (locally) for their usage
- in headlines or footlines.
- \_cod -----------------------------
-
-\_def \_begoutput{\_incr\_gpageno
- \_immediate\_wref\_Xpage{{\_the\_gpageno}{\_folio}}%
- \_setxhsize \_prepoffsets \_the\_regmark}
-\_def \_endoutput{\_advancepageno
- {\_globaldefs=1 \_the\_nextpages \_nextpages={}}%
- \_ifnum\_outputpenalty>-20000 \_else\_dosupereject\_fi
-}
-\_def \_prepoffsets {}
-
- \_doc -----------------------------
- The `\hsize` value can be changed at various places in the document but
- we need to have a constant value \`\_xhsize` in the output routine
- (for headlines and footlines, for instance). This value is set
- from the current value of `\hsize` when \`\_setxhsize` macro is called.
- This macro destroys itself, so the value is set only once. Typically it is
- done in \^`\margins` macro or
- when first \^`\_optexoutput` routine is called (see \^`\_begoutput`).
- Or it is called at the begining of the \^`\begtt`...`\endtt` environment before
- `\hsize` value is eventually changed by the user in this environment.
- \_cod -----------------------------
-
-\_newdimen \_xhsize
-\_def\_setxhsize {\_global\_xhsize=\_hsize \_global\_let\_setxhsize=\_relax}
-
- \_doc -----------------------------
- \`\gpageno` counts pages from one in the whole document
- \_cod -----------------------------
-
-\_newcount\_gpageno
-\_public \gpageno ;
-
- \_doc -----------------------------
- The \`\_completepage` is similar to what plain \TeX/ does in its output routine.
- New is only \`\_backgroundbox`. It is `\vbox` with zero height with its
- contents (from \^`\pgbackground`) extended 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,
- the default value of the `\_ensureblack` macro is empty. But the 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 to\_zo{\_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 to\_zo{\_vss
- \_baselineskip=\_headlinedist \_lineskiplimit=-\_maxdimen
- \_hbox to\_xhsize{\_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 \_hbox to\_xhsize{\_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 \_decr\_pageno \_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 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 a 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=\_zo \_rightskip=\_zo \_spaceskip=\_zo \_xspaceskip=\_zo \_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\_unskip\_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
- watercolor 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 \_kern\_voffset \_kern4.5\_wd0
- \_hbox to0pt{\_kern.5\_xhsize \_kern\_hoffset \_kern-2\_wd0
- \_pdfsave \_pdfrotate{55}\_pdfscale{10}{10}%
- \_hbox to0pt{\_localcolor\_setgreycolor{.8}\_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
-
-\_endinput
-
-2021-02-25 \_draftbox improved
-2021-02-15 \_advance -> \_decr
-2020-05-12 \vfootB: \uskip -> \unskip bug fixed
-2020-03-28 Released
diff --git a/macros/luatex/optex/base/parameters.opm b/macros/luatex/optex/base/parameters.opm
deleted file mode 100644
index c8df6eec49..0000000000
--- a/macros/luatex/optex/base/parameters.opm
+++ /dev/null
@@ -1,588 +0,0 @@
-%% This is part of the 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 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 the following primitive registers.
- We prohibit orphans, set more information for tracing boxes, set page origin
- to the 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 paragraph building algoritmh
- % we need not 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[oparams] \OpTeX/ parameters
-
- The main principle of 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 an important difference: all "string-like"
- parameters are token lists in \OpTeX/ (OPmac uses macros for them). The reason of
- this difference: if a user sets parameter by unprefixed (public) control sequence,
- an \OpTeX/ macro can read {\em the same data} using a prefixed (private) control sequence.
-
- 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/ can find them). If you set a 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 dimensions 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 the height is given, the 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 setting these
- parameters locally in the group where \^`\inspic` is used in order to not
- influence the dimensions of other 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 the 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 the 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 \^`\verbchar` 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 has numbered lines from `\ttline+1`. The `\ttline`
- register is re-set to a 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
- show 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 the right.
- Despite the \^`\ttindent`, it does not shift the line numbers, only
- the text.
- \nl
- The \`\iindent` gives default indentations used in the 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 tabulator `^^I` has its category code like space: it behaves as a
- space in normal text. This is a common 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 tabulator 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.
- The full color set must be declared here.
- \_cod -----------------------------
-
-\_newtoks\_hicolors
-\_public \hicolors ;
-
- \_doc -----------------------------
- The default item mark used between \^`\begitems` and \^`\enditems` is the bullet.
- The \`\defaultitem` tokens list declares 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 the group is opened by \^`\begitems`
- \nl
- The \`\ilevel` keeps the value of the 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` and \^`\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 the definite result of the width of the columns.
- \_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 the style file here or you can modify the
- more declaration for printing (fonts, baselineskip, etc.) or you can
- define specific macros used in your `.bib` file.
- \_cod -----------------------------
-
-\_newtoks\_bibtexhook
-\_public \bibtexhook ;
-
- \_doc -----------------------------
- \`\everycapitonf` is used before printing caption in figures and
- \`\everycapitont` is used before printing caption in tables.
- \_cod -----------------------------
-
-\_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 the horizontal size of the marginal notes.
- \nl
- The \`\mnoteindent` is horizontal space between body-text and marginal note.
- \_cod -----------------------------
-
-\_newtoks\_everymnote
-\_newdimen\_mnotesize \_mnotesize=20mm % the width of the mnote paragraph
-\_newdimen\_mnoteindent \_mnoteindent=10pt % ditance between mnote and text
-\_public \everymnote \mnotesize \mnoteindent ;
-
- \_doc -----------------------------
- The \^`\table` parameters follow. 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 an 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.
- \nl
- \`\tabskipl` is `\tabskip` used before first column,
- \`\tabskipr` is `\tabskip` used after the last column.
- \nl
- \`\tsize` is virtual unit of the width of paragraph-like table items when
- `\table pxto<size>` is used.
- \_cod -----------------------------
-
-\_newtoks\_everytable \_newtoks\_thistable
-\_newtoks\_tabiteml \_newtoks\_tabitemr \_newtoks\_tabstrut
-\_newdimen\_tablinespace \_newdimen\_vvkern \_newdimen\_hhkern \_newdimen\_tsize
-\_newskip\_tabskipl \_newskip\_tabskipr
-\_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
-\_tabskipl=0pt\_relax % \tabskip used before first column
-\_tabskipr=0pt\_relax % \tabskip used after the last column
-\_public \everytable \thistable \tabiteml \tabitemr \tabstrut \tablinespace
- \vvkern \hhkern \tsize \tabskipl \tabskipr ;
-
- \_doc -----------------------------
- The \^`\eqalign` macro can be configured by \`\eqlines` and \`\eqstyle`
- tokens lists. The default values are set in order these macro beahaves
- as in Plain \TeX. The \`\eqspace` is horizontal space put
- between equation systems if more columns in \^`\eqalign` are used.
- \_cod -----------------------------
-
-\_newtoks \_eqlines \_eqlines={\_openup\_jot}
-\_newtoks \_eqstyle \_eqstyle={\_strut\_displaystyle}
-\_newdimen \_eqspace \_eqspace=20pt
-\_public \eqlines \eqstyle \eqspace ;
-
- \_doc -----------------------------
- \`\lmfil` is \"left matrix filler" (for `\matrix` columns). The default
- value does centering because the right matrix filler is directly set to `\hfil`.
- \_cod -----------------------------
-
-\_newtoks \_lmfil \_lmfil={\_hfil}
-\_public \lmfil ;
-
- \_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 the beginning 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 the bottom of
- page-text and `\footline` is \`\footlinedist`.
- More precisely: baseline of
- headline and baseline of the 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 by 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 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={\rmfixed \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
- can be re-set by \`\ovalparams`, \`\circleparams` tokens lists.
- The default values (documented in the user manual) are set in the macros.
- \_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 ;
-
- \_doc -----------------------------
- \OpTeX/ defines \"Standard \OpTeX/ markup language"%
- \fnote{Will be developed in 2021.}
- which lists selected commands from chapter~1 and gives their behavior when a
- converter from \OpTeX/ document to HTML or Markdown or \LaTeX/ is used.
- The structure-oriented commands are selected here, but the commands which
- declare typographical appearance (page layout, dimensions, selected font
- family) are omitted. More information for such a converter should be
- given in \`\cnvinfo``{<data>}`.
- \OpTeX/ simply ignores this but the converter can read its configuration
- from here. For example, a user can write:
- \begtt \catcode`\<=13
- \cnvinfo {type=html, <cnv-to-html-data>}
- \cnvinfo {type=markdown, <cnv-to-markdown-data>}
- \endtt
- and the document can be processed by \OpTeX/ to create PDF, or by a
- converter to create HTML, or by another converter to create Markdown.
- \_cod -----------------------------
-
-\_let\cnvinfo=\_ignoreit
-
-
-\_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 this control sequence then the appropriate register exists
-steadily and build-in algorithms are using it without change. But user
-cannot access its value in this case. \OpTeX/ declares two control sequences
-for each register: prefixed (private) and unprefixed (public). \OpTeX/ macros use only
-prefixed variants of control sequences. The user should use the unprefixed variant
-with the same meaning and set or read the 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 are only a few parameters declared by \OpTeX/ macros. All of them
-%are listed in this section. This is the desired feature of the \OpTeX/.
-%If you want to do more
-%changes which 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 declare the design of the document.
-
-\_endinput
-
-History:
-2020-04-04 ... \tabspaces added
-2020-04-03 ... \hicolors added
diff --git a/macros/luatex/optex/base/pdfuni-string.opm b/macros/luatex/optex/base/pdfuni-string.opm
deleted file mode 100644
index 25781ddfb4..0000000000
--- a/macros/luatex/optex/base/pdfuni-string.opm
+++ /dev/null
@@ -1,127 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_codedecl \pdfunidef {PDFunicode strings for outlines <2021-02-08>} % preloaded in format
-
- \_doc -----------------------------
- \`\_hexprint` is a command defined in Lua, that scans a number and expands
- to its UTF-16 Big Endian encoded form for use in PDF hexadecimal strings.
- \_cod -----------------------------
-
-\bgroup
-\_catcode`\%=12
-\_gdef\_hexprint{\_directlua{
- local num = token.scan_int()
- if num < 0x10000 then
- tex.print(string.format("%04X", num))
- else
- num = num - 0x10000
- local high = bit32.rshift(num, 10) + 0xD800
- local low = bit32.band(num, 0x3FF) + 0xDC00
- tex.print(string.format("%04X%04X", high, low))
- end
-}}
-\egroup
-
- \_doc -----------------------------
- \`\pdfunidef``\macro{<text>}` does more things than only converting to hexadecimal PDF string.
- The <text> can be scanned in verbatim mode (it is true becuase \^`\_Xtoc`
- reads the <text> in verbatim mode). First `\edef` do
- `\_scantextokens\unexpanded` and second `\edef` expands the parameter
- according to current values on selected macros from `\_regoul`. Then
- \`\_removeoutmath` converts `..$x^2$..` to `..x^2..`, i.e removes dollars.
- Then \`\_removeoutbraces` converts `..{x}..` to `..x..`.
- Finally, the <text> is detokenized, spaces are preprocessed using \^`\replstring`
- and then the \`\_pdfunidefB` is repeated on each character. It calls the
- `\directlua` chunk to print hexadecimal numbers in the macro \^`\_hexprint`.\nl
- Characters for quotes (and separators for quotes) are activated by first
- `\_scatextokens` and they are defined as the same non-active characters.
- But `\_regoul` can change this definition.
- \_cod -----------------------------
-
-\_def\_pdfunidef#1#2{%
- \_begingroup
- \_catcodetable\_optexcatcodes \_adef"{"}\_adef'{'}%
- \_the\_regoul \_relax % \_regmacro alternatives of logos etc.
- \_ifx\_savedttchar\_undefined \_def#1{\_scantextokens{\_unexpanded{#2}}}%
- \_else \_lccode`\;=\_savedttchar \_lowercase{\_prepinverb#1;}{#2}\fi
- \_edef#1{#1}%
- \_escapechar=-1
- \_edef#1{#1\_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
- \_catcode`\\=12 \_let\\=\_bslash
- \_edef\_out{<FEFF}
- \_ea\_pdfunidefB#1^% text -> \_out in octal
- \_ea
- \_endgroup
- \_ea\_def\_ea#1\_ea{\_out>}
-}
-\_def\_pdfunidefB#1{%
- \_ifx^#1\_else
- \_edef\_out{\_out \_hexprint `#1}
- \_ea\_pdfunidefB \_fi
-}
-
-\_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}
-
- \_doc -----------------------------
- The \`\_prepinverb``<macro><separator>{<text>}`,
- e.g.\ `\_prepinverb\tmpb|{aaa |bbb| cccc |dd| ee}`
- does `\def\tmpb{<su>{aaa }bbb<su>{ cccc }dd<su>{ ee}}` where
- <su> is `\scantextokens\unexpanded`. It means that in-line verbatim
- are not argument of `\scantextoken`. First `\edef\tmpb` tokenizes again
- the <text> but not the parts which were in the the in-line verbatim.
- \_cod -----------------------------
-
-\_def\_prepinverb#1#2#3{\_def#1{}%
- \_def\_dotmpb ##1#2##2{\_addto#1{\_scantextokens{\_unexpanded{##1}}}%
- \_ifx\_end##2\_else\_ea\_dotmpbA\_ea##2\_fi}%
- \_def\_dotmpbA ##1#2{\_addto#1{##1}\_dotmpb}%
- \_dotmpb#3#2\_end
-}
-
- \_doc -----------------------------
- 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.
- \_cod -----------------------------
-
-\_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.). The first one is PDFDocEncoding which is single-byte encoding, but it
-misses most international characters.
-
-The second encoding is Big Endian UTF-16 which is implemented in this file. It
-encodes a single character in either two or four bytes.
-This encoding is \TeX/-discomfortable because it looks like
-
-\begtt
-<FEFF 0043 0076 0069 010D 0065 006E 00ED 0020 006A 0065 0020 007A 00E1 0074
-011B 017E 0020 0061 0020 0078 2208 D835DD44>
-\endtt
-
-This example shows a hexadecimal PDF string (enclosed in \code{<>} as opposed
-to the literal PDF string enclosed in `()`). In these strings each byte is
-represented by two hexadecimal characters (`0-9`, `A-F`). You can tell the
-encoding is UTF-16BE, becuase it starts with \"Byte order mark" `FEFF`. Each
-unicode character is then encoded in one or two byte pairs. The example string
-corresponds to the text \"Cvičení je zátěž a ${\rm x} ∈ 𝕄$". Notice the 4 bytes
-for the last character, $𝕄$. (Even the whitespace would be OK in a PDF file,
-because it should be ignored by PDF viewers, but \LuaTeX\ doesn't allow it.)
-
-\_endinput
-
-2021-02-08 \_octalprint -> \_hexprint
-2020-03-12 Released
diff --git a/macros/luatex/optex/base/plain-macros.opm b/macros/luatex/optex/base/plain-macros.opm
deleted file mode 100644
index b4569ee969..0000000000
--- a/macros/luatex/optex/base/plain-macros.opm
+++ /dev/null
@@ -1,346 +0,0 @@
-%% This is part of the 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=\_zo \_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 to\_zo{#1\_hss}}
-\_def \_llap #1{\_hbox to\_zo{\_hss#1}}
-\_def\_underbar #1{$\_setbox0=\_hbox{#1}\_dp0=\_zo \_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 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=\_zo \_lineskip=.25ex
- \_ialign{##\_crcr#1\_crcr}}}
-\_def \_oalignA {\_lineskiplimit=\_zo \_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 accent commands like `\v`, `\.`, `\H`, etc. are not defined. Use the
- accented characters directly -- it is the best solution. But you can use the
- macro \`\oldaccents` which defines accented macros.
- \nl
- Much more usable is to define these control sequences for 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 plain \TeX/ macros
- \`\hrulefill`, \`\dotfill`, \`\rightarrowfill`, \`\leftarrowfill`,
- \`\downbracefill`, \`\upbracefill`.
- The last four are used in non-Unicode variants of `\overrightarrow`,
- `\overleftarrow`, `\overbrace` and `\underbrace` macros, see
- section~\ref[math-macros].
- \_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-$}
-
-\_mathchardef \_braceld="37A \_mathchardef \_bracerd="37B
-\_mathchardef \_bracelu="37C \_mathchardef \_braceru="37D
-\_def \_downbracefill {$\_math \_setbox0=\_hbox{$\_braceld$}%
- \_braceld \_leaders\_vrule height\_ht0 depth\_zo \_hfill \_braceru
- \_bracelu \_leaders\_vrule height\_ht0 depth\_zo \_hfill \_bracerd$}
-\_def \_upbracefill {$\_math \_setbox0=\_hbox{$\_braceld$}%
- \_bracelu \_leaders\_vrule height\_ht0 depth\_zo \_hfill \_bracerd
- \_braceld \_leaders\_vrule height\_ht0 depth\_zo \_hfill \_braceru$}
-
-\_public \hrulefill \dotfill
- \rightarrowfill \leftarrowfill \downbracefill \upbracefill ;
-
- \_doc -----------------------------
- The last part of plain \TeX/ macros: \`\magnification`, \`\bye`.
- Note that math macros are defined in the `math-macros.opm` file
- (section~\ref[math-macros]).
- \_cod -----------------------------
-
-\_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 \_byehook \_end}
-\_public \bye ;
-
-\_endcode % -------------------------------------
-
diff --git a/macros/luatex/optex/base/prefixed.opm b/macros/luatex/optex/base/prefixed.opm
deleted file mode 100644
index 61df791ddb..0000000000
--- a/macros/luatex/optex/base/prefixed.opm
+++ /dev/null
@@ -1,298 +0,0 @@
-%% This is part of the 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 _\_csstring #1\_endcsname}
-
-\_def \_private {\_xargs \_privateA}
-\_def \_privateA #1{\_ea\_let \_csname _\_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 once. 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 \_ea \_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 macros
- \`\_namespace` `{<pkg label>}`, \`\_resetnamespace` `{<pkg label>}`, \`\_endnamespace`,
- \`\_nspublic` and \`\_nsprivate`
- for package writers, see section~\ref[pkg-namespace].{\hbadness=2200\par}
- \_cod -----------------------------
-
-\_def \_pkglabel{}
-\_def\_namespace #1{%
- \_ifcsname namesp:#1\_endcsname \_errmessage
- {The name space "#1" is used already, it cannot be used twice}%
- \_endinput
- \_else \_resetnamespace{#1}\_fi
-}
-\_def\_resetnamespace #1{%
- \_ea \_gdef \_csname namesp:#1\_endcsname {}%
- \_gdef \_pkglabel{_#1}%
- \_directlua{
- callback.add_to_callback("process_input_buffer",
- function (str)
- return string.gsub(str, "\_nbb[.]([a-zA-Z])", "\_nbb _#1_\_pcent 1")
- end, "_namespace")
- }%
-}
-\_def\_endnamespace {%
- \_directlua{ callback.remove_from_callback("process_input_buffer", "_namespace") }%
- \_gdef \_pkglabel{}%
-}
-
-\_def \_nspublic {\_xargs \_nspublicA}
-\_def \_nspublicA #1{%
- \_unless\_ifx #1\_undefined
- \_opwarning{\_ea\_ignoreit\_pkglabel\_space redefines the meaning of \_string#1}\_fi
- \_ea\_let \_ea#1\_csname \_pkglabel _\_csstring #1\_endcsname}
-
-\_def \_nsprivate {\_xargs \_nsprivateA}
-\_def \_nsprivateA #1{\_ea\_let \_csname \_pkglabel _\_csstring #1\_endcsname =#1}
-
-
-\_endcode %----------------------------------------------------
-
-
-\sec[prefixed] Concept of namespaces 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 a user.
-
-\OpTeX/ sets the character `_` as the 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 \catcode`\<=13
-\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 this 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 an unprefixed variant of a 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
-the unprefixed variant. The code typically defines the prefixed variant
-and then the \^`\public` (or `\_public`) macro is used.
-
-\secc Namespace of control sequences for users
-
-Users 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 packages internal macros.
-* Control sequences (terminated by non-letter) in the form
- `\<word>_` or `\<word>_<one-letter>`, where
- <word> is a sequence of letters, are inaccessible, 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. Users 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 a 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 protects 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 to write repeatedly `\_pkg_foo` `\_pkg_bar`
-etc.\ again and again in the macro file.\fnote
-{We have not adopted 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 \^`\_endnamespace` command
-or when another \^`\_namespace` is used. This command checks
-if the same package label is not declared by the \^`\_namespace` twice.
-
-The \^`\_nspublic` macro does `\let\foo = \_<pkg>_foo` when
-\^`\_namespace{<pkg>}` is declared. Moreover, it prints a warning if `\foo` is
-defined already. The \^`\_nsprivate` macro does reverse
-operation to it without warnings. Example: you can define `\def\.macro{...}` and then
-set it to the user name space by `\_nspublic \macro;`.
-
-Don't load other packages (which are using their own namespace) inside your
-namespace. Do load them before your \^`\_namespace`~`{<pkg>}` is
-initialized. Or close your namespace by \^`\_endnamespace` and open it again
-(after other packages are loaded) by \^`\_resetnamespace`~`{<pkg>}`.
-
-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 writing a macro file that is intended to be published for
-\OpTeX/, then you are greatly welcome. You should follow these rules:
-
-\begitems
-* Don't use control sequences from the user namespace in the macro
- bodies if there is not explicit and documented reason to do this.
-* Don't declare control sequences in the user namespace if there are not
- explicit and documented reasons to do this.
-* Use control sequences from \OpTeX/ and primitive namespace
- in read-only mode, if there is not an 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 precedence before `.tex` when
-the \^`\load` macro is used.
-
-The `qrcode.opm` is the first example of how an external macro file for \OpTeX/
-can look like.
-
-\endinput
-
-2021-02-15 \_expandafter -> \_ea in \_codedecl
-2020-02-14 released
diff --git a/macros/luatex/optex/base/print-unimath.opm b/macros/luatex/optex/base/print-unimath.opm
deleted file mode 100644
index 2b1a07f30a..0000000000
--- a/macros/luatex/optex/base/print-unimath.opm
+++ /dev/null
@@ -1,56 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_codedecl \_undefined {Printing Unicode-math table \string<2020-06-08>}
-
-\_begingroup
- \_def\UnicodeMathSymbol#1#2#3#4{%
- \_ifnum#1>"10000 \_endinput \_else \_printmathsymbol{#1}{#2}{#3}{#4}\_fi
- }
- \_def\UnicodeMathSymbolA#1#2#3#4{%
- \_ifnum#1>"10000 \_printmathsymbol{#1}{#2}{#3}{#4}\_fi
- }
- \_def\_printmathsymbol#1#2#3#4{%
- \_hbox{\_hbox to2em{$#2{}$\_hss}\_hbox to3em
- {\small\_printop#3\_hss}{\_tt\_string#2\_trycs{_eq:\_string#2}{}}}
- }
- \_def\_eq#1#2{\_sdef{_eq:\_string#2}{=\_string#1}}
- \_eq \diamond\smwhtdiamond \_eq \bullet\smblkcircle \_eq \circ\vysmwhtcircle
- \_eq \bigcirc\mdlgwhtcircle \_eq \to\rightarrow \_eq \le\leq
- \_eq \ge\geq \_eq \neq\ne \_eq \emptyset\varnothing \_eq \hbar\hslash
- \_eq \land\wedge \_eq \lor\vee \_eq \owns\ni \_eq \gets\leftarrow
- \_eq \mathring\ocirc \_eq \lnot\neg \_eq \backepsilon\upbackepsilon
- \_eq \eth\matheth \_eq \dbkarow\dbkarrow \_eq \drbkarow\drbkarrow
- \_eq \hksearow\hksearrow \_eq \hkswarow\hkswarrow
-
- \_tracinglostchars=0
- \_fontdef\small{\_setfontsize{at5pt}\_rm}
- \_def\_printop{\_def\mathop{Op}}
- \_def\mathalpha{Alph}\_def\mathord{Ord}\_def\mathbin{Bin}\_def\mathrel{Rel}
- \_def\mathopen{Open}\_def\mathclose{Close}\_def\mathpunct{Punct}\_def\mathfence{Fence}
- \_def\mathaccent{Acc}\_def\mathaccentwide{Accw}\_def\mathbotaccentwide{AccBw}
- \_def\mathbotaccent{AccB}\_def\mathaccentoverlay{AccO}
- \_def\mathover{Over}\_def\mathunder{Under}
- \_typosize[7.5/9]\_normalmath \_everymath={}
-
- Codes U+00000 \_dots\ U+10000
- \_begmulti 3
- \_input unimath-table.opm
- \_endmulti
-
- \_medskip\_goodbreak
- Codes U+10001 \_dots\ U+1EEF1 \_let\UnicodeMathSymbol=\UnicodeMathSymbolA
- \_begmulti 4
- \_input unimath-table.opm
- \_endmulti
-\_endgroup
-
-\_endcode
-
-This file can be used for testing your Unicode-math font
-and/or for printing \TeX/ sequences which can be used in math.
-
-Load Unicode math font first (for example by `\fontfam[termes]` or by
-`\loadmath{<math-font>}`) and then you
-can do `\input print-unimath.opm`. The big table with all math symbols is printed.
-
-\_endinput
diff --git a/macros/luatex/optex/base/ref-file.opm b/macros/luatex/optex/base/ref-file.opm
deleted file mode 100644
index d594bf88c0..0000000000
--- a/macros/luatex/optex/base/ref-file.opm
+++ /dev/null
@@ -1,141 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_codedecl \openref {File for references <2021-02-05>} % 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 exist 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 a dummy in
- this case.
- \_cod --------------------------
-
-\_def\_wrefrelax#1#2{}
-\_let\_wref=\_wrefrelax
-
- \_doc ---------------------
- If a macro needs to create 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 open the file again.\nl
- The `\_wref``<csname>{<params>}` does exactly `\write\_reffile{\string<csname><params>}`
- in this case and \`\_ewref``<csname>{<params>}` does
- `\write\_reffile{\string<csname><expanded-params>}`.
- \_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{\_bslash\_csstring##1##2}}%
- \_immediate\_write\_reffile {\_pcent\_pcent\_space OPTeX <\_optexversion> - REF file (#1)}%
- \_immediate\_wref \Xrefversion{{\_REFversion}}%
-}
-\_def\_ewref #1#2{\_edef\_ewrefA{#2}\_ea\_wref\_ea#1\_ea{\_ewrefA}}
-\_def\openref{\_openref}
-
- \_doc ----------------------
- We are using the convention that the macros used in `.ref` file are named
- `\_X<foo>`. If there is a new version of \OpTeX/ with a 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 the 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 a different number of `<version>` form OPmac) here.
- The result: OPmac skips the `.ref` files produced by \OpTeX/ and vice
- versa.
- \_cod ----------------------
-
-\_def\_REFversion{5} % 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 the catcode of `#` is 12
- because we needn't 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 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 the title of the chapter (`<level>`=1,
-`<type>`=`chap`), section (`<level>`=2, `<type>`=`sec`), subsection
-(`<level>`=3, `<type>`=`secc`). The \^`\_Xpage` is written at the beginning 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 an empty `test.ref` file in your directory.
-
diff --git a/macros/luatex/optex/base/references.opm b/macros/luatex/optex/base/references.opm
deleted file mode 100644
index 03c8f6955c..0000000000
--- a/macros/luatex/optex/base/references.opm
+++ /dev/null
@@ -1,94 +0,0 @@
-%% This is part of the 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 ----------------------------
- Counter for the number of unresolved references \`\_unresolvedrefs`.
- \_cod ----------------------------
-
-\_newcount\_unresolvedrefs
-\_unresolvedrefs=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
- \_ewref \_Xlabel {{\_lastlabel}{#1}}%
- \_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 backward 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 the first run of \TeX/ and we print a 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}%
- \_incr\_unresolvedrefs \_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}%
- \_incr\_unresolvedrefs \_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 to\_zo{\_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.
-
diff --git a/macros/luatex/optex/base/sections.opm b/macros/luatex/optex/base/sections.opm
deleted file mode 100644
index 39759962bf..0000000000
--- a/macros/luatex/optex/base/sections.opm
+++ /dev/null
@@ -1,469 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_codedecl \chap {Titles, chapters, sections, subsections <2021-03-03>} % 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 using \^`\scantoeol` and \`\_printtit`.
- It means that the parameter is
- separated by end of line and inline verbatim is allowed. The same
- principle is used in the \^`\chap`, \^`\sec`, and \^`\secc` macros.
- \_cod ---------------------------
-
-\_def\_printtit #1{\_vglue\_titskip
- {\_leftskip=0pt plus1fill \_rightskip=\_leftskip % centering
- \_titfont \_noindent \_scantextokens{#1}\_par}%
- \_nobreak\_bigskip
-}
-\_def\_tit{\_scantoeol\_printtit}
-
-\_public \tit ;
-
- \_doc ---------------------------
- You can re-define \`\_printchap`, \`\_printsec` or \`\_printsecc` macros if
- another design of section titles is needed. These macros get 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 for such behavior: we don't want to duplicate vertical skip
- and we don't want to use the 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 for 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 the label (if
- \^`\label``[<label>]` precedes) and saves references for the 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 into 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
- \_vglue\_medskipamount % shifted by topkip+\medskipamount
- {\_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\_smallskip}
- {\_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, see the
- \ulink[http://petr.olsak.net/optex/optex-tricks.html\#seccc]{\OpTeX/ trick 0033})
- \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, figures, and display maths are numbered
- from one in each section -- subsections don'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.\_othe\_secnum.\_the\_tnum}
-\_def \_thefnum {\_othe\_chapnum.\_othe\_secnum.\_the\_fnum}
-\_def \_thednum {(\_the\_dnum)}
-
-\_def\_othe #1.{\_ifnum#1>0 \_the#1.\_fi}
-
- \_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 do the real work,
- First, we read the optional parameter `[<label>]`, if it exists.
- The `\chap`, `\sec` and `\secc` macro reads its parameter using
- \^`\scantoeol`. This causes that they cannot be used inside other macros.
- Use \`\_inchap`, \`\_insec`, and \`\_insecc` macros directly in such case.
- \_cod ----------------------------
-
-\_optdef\_chap[]{\_trylabel \_scantoeol\_inchap}
-\_optdef\_sec []{\_trylabel \_scantoeol\_insec}
-\_optdef\_secc[]{\_trylabel \_scantoeol\_insecc}
-\_def\_trylabel{\_istoksempty\_opt\_iffalse \_label[\_the\_opt]\_fi}
-
-\_def\_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{\_scantextokens{#1}}%
- \_resetnonumnotoc
-}
-\_def\_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{\_scantextokens{#1}}%
- \_resetnonumnotoc
-}
-\_def\_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{\_scantextokens{#1}}%
- \_resetnonumnotoc
-}
-\_public \chap \sec \secc ;
-
- \_doc ----------------------------
- The \`\_printrefnum``[<pre>@<post>]` macro is used in `\_print*` macros.
-
- Note that the `<tite-text>` is `\detokenize`d before `\_wref`, so the
- problem of \"fragile macros" from old \LaTeX/ never occurs.
- This fourth parameter is not delimited by `{...}` but by end of line.
- This gives possibility to have unbalanced braces in inline verbatim in titles.
- \_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]%
- \_ewref\_Xtoc{{\_the\_sectionlevel}{\_secinfo}%
- {\_therefnum}{\_theoutline}\_detokenize\_ea{\_savedtitle}}%
- \_fi
- \_gdef\_theoutline{}%
-}
-
- \_doc -----------------------------
- \`\thisoutline``{<text>}` saves text to the \`\_theoutline` macro.
- \^`\_printrefnum` uses it and removes it.
- \_cod -----------------------------
-
-\_def\_theoutline{}
-\_def\_thisoutline#1{\_gdef\_theoutline{#1}}
-\_public \thisoutline ;
-
- \_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 doesn'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 precede) 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>\_zo \_vskip-\_lastskip \_fi
- \_ifnum\_lastpenalty=11333 \_vskip-\_savedtitleskip \_else #1\_fi
- \_ifdim\_savedlastskip>\_zo \_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 the text (or titles), but space in toc or headlines or outlines.
- \_cod -----------------------------
-
-\_def\_nbpar{{\_interlinepenalty=10000\_endgraf}}
-
-\_protected\_def\_nl{\_unskip\_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 users 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 \`\_insertmark``{<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 \`\secl``<number> <title-text><eol>`
- should be used for various levels of sections (for example, when
- converting from Markdown to \OpTeX/). `\secl1` is `\chap`, `\secl2` is `\sec`,
- `\secl3` is `\secc` and all more levels (for <number>$>3$)
- are printed by the common \`\_seclp` macro. It declares only a simple design.
- If there is a requirement to use such more levels then the book designer can
- define something different here.
- \_cod -----------------------------
-
-\_def\_secl{\_afterassignment\_secla \_sectionlevel=}
-\_def\_secla{\_ifcase\_sectionlevel
- \_or\_ea\_chap\_or\_ea\_sec\_or\_ea\_secc\_else\_ea\_seclp\_fi}
-\_eoldef\_seclp#1{\_par \_ifnum\_lastpenalty=0 \_removelastskip\_medskip\_fi
- \_noindent{\_bf #1}\_vadjust{\_nobreak}\_nl\_ignorepars}
-\_def\_ignorepars{\_isnextchar\_par{\_ignoresecond\_ignorepars}{}}
-
-\_public \secl ;
-
- \_doc -----------------------------
- The \`\caption``/<letter>` increases `\_<letter>num` counter,
- edefines \`\_thecapnum` as `\_the<letter>num` and
- defines \`\_thecaptitle` as language-dependent word using \^`\_mtext`,
- runs the `\_everycaption<letter>` tokens register.
- The group opened by `\caption` is finalized by first `\par` from
- an 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 nonbreakable vertical space between the 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}}%
- \_ea\_the \_csname _everycaption\_tmpa\_endcsname
- \_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
- The \`\_captionsep` inserts a separator between auto-generated
- caption number and the following caption text. Default separator
- is `\_enspace` but if the caption text starts with dot or colon, then
- the space is not inserted. A user can wite `\caption/t: My table`
- and \"{\bf Table 1.1:} My table" is printed. You can re-define
- the \^`\_captionsep` macro if you want to use another separator.
- \_cod -----------------------------
-
-\_def \_printcaptiont {%
- \_noindent \_wlabel\_thecapnum {\_bf\_thecaptitle~\_thecapnum}%
- \_narrowlastlinecentered\_iindent \_futurelet\_next\_captionsep
-}
-\_def\_captionsep{\_ifx\_next.\_ea\_bfnext \_else\_ifx\_next:\_ea\_ea\_ea\_bfnext
- \_else \_enspace \_fi\_fi}
-\_def\_bfnext#1{{\_bf#1}}
-\_let \_printcaptionf = \_printcaptiont % caption of figures = caption of tables
-
- \_doc -----------------------------
- If you want to declare a new type of `\caption` with independent counter,
- you can use following lines, where `\caption/a` for Algorithms are
- declared:
- \begtt
- \let\_printcaptiona = \_printcaptionf \let\_everycaptiona = \_everycaptionf
- \newcount\_anum \addto\_secx {\_anum=0 }
- \def\_theanum {\_othe\_chapnum.\_the\_secnum.\_the\_anum}
- \sdef{_mt:a:en}{Algorithm} \sdef{_mt:a:cs}{Algoritmus} % + your language...
- \endtt
- The default format of `\caption` text is a 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\_relax
-}
-
- \_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 \_hbox{\_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 % -------------------------------------
-
-2021-03-03 \_captionsep introduced, \_othe used in \_thetnum, \_thefnum.
-2021-02-09 \thisoutline implemented
-2021-01-26 \_nl: \unskip added
-2021-01-11 \secl introduced
-2021-01-05 \_thednum printed in text mode in its both occurences.
-2020-04-28 \_secfonts etc: \_boldify is last.
-2020-04-22 \_chapx, \_secx, \_seccx rewritten
-2020-03-14 introduced
diff --git a/macros/luatex/optex/base/slides.opm b/macros/luatex/optex/base/slides.opm
deleted file mode 100644
index 94fa3afac8..0000000000
--- a/macros/luatex/optex/base/slides.opm
+++ /dev/null
@@ -1,247 +0,0 @@
-% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_codedecl \slideshow {Slides style for OpTeX <2021-03-10>} % 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
-
-\_ifx\_fontnamegen\_undefined \_fontfam[Heros]
- \_let\_ttfont=\_undefined \_famvardef\_ttfont{\_setfontsize{mag1.15}\_tt}
-\_fi
-\_typosize[16/19]
-\_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 the baseline of
- `\footline` is 2\,mm from the bottom page. This is the 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 transparency is set 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 a nested level of items and `\pg+` is used then
- `\egroups` macro expands to the right number of `\egroup`s
- to close the 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*{\_relax\_ifmmode*\_else\_ea\_startitem\_fi}
-\_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:.}{\_endslides}
-\_sdef{_spg:+}{\_par}
-
- \_doc -----------------------------
- The \`\_endslides` is defined as `\_end` primitive, but
- slide-designer can redefine it. For example,
- \ulink[http://petr.olsak.net/optex/optex-tricks.html\#slider]{OpTeX trick 0029}
- shows how to define clickable navigation to the pages and how to check
- the data integrity at the end of the document using `\_endslides`.
-
- The `\bye` macro is redefined here as an alternative to `\pg.`.
- \_cod -----------------------------
-
-\_def\_endslides{\_end}
-\_def\bye{\_pg.}
-
- \_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\_slideshow{\_slidelayer=1 \_slideshowactive
- \_let\slideopen=\_relax % first wins
- \_setbox\_slidepage=\_vbox\_bgroup\_bgroup}
-
-\_def\_slideshowactive{%
- \_sdef{_spg:;}{\_closepage \_global\_slidelayer=1 \_resetpage \_openslide}
- \_sdef{_spg:.}{\_closepage \_endslides}
- \_sdef{_spg:+}{\_closepage \_incr\_slidelayer \_decr\_pageno \_openslide}
- \_let\_layers=\_layersactive
- \_destboxslide % to prevent hyperlink-dests duplication
-}
-\_def\_destboxslide{\_def\_destbox[##1:##2]{\_isequal{##1}{ref}\_iffalse \_destboxori[##1:##2]\_fi}}
-
-\_def\_openslide{\_setbox\_slidepage=\_vbox\_bgroup\_bgroup \_setilevel
- \_ifvoid\_slidepage \_else \_unvbox\_slidepage \_nointerlineskip\_lastbox \_fi}
-\_def\_setilevel{\_loop \_decr\_gilevel \_ifnum\_gilevel<0 \_else \_begitems \_repeat}
-
-\_def\_closepage{\_egroups \_egroup
- \_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\_penalty0\_egroup
- \_gdef\_layertext{#2}%
- \_global\_maxlayers=#1
- \_setbox\_slidepageB=\_vbox\_bgroup
-}
-\_def\_slideopen{\_let\slideshow=\_relax % first wins
- \_sdef{_spg:;}{\_egroups\_vfil\_break \_lfnotenumreset\_bgroup \_setilevel}
- \_sdef{_spg:.}{\_egroups\_endslides}
- \_sdef{_spg:+}{\_egroups\_bgroup \_setilevel}
- \_bgroup
-}
-
-\_public \subtit \slideshow \slideopen \pg \wideformat \use \pshow \layernum ;
-
- \_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 a 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.
-
-2021-03-10 \slideopen introduced, bug with colors in \setbox fixed
-2021-03-10 \ifmmode* added to \adef*
-2021-02-15 \_def\_decr removed
-2021-01-16 \layers at empty page raises error: problem fixed
-2020-03-19 slides introduced
diff --git a/macros/luatex/optex/base/styles.opm b/macros/luatex/optex/base/styles.opm
deleted file mode 100644
index 534eb13663..0000000000
--- a/macros/luatex/optex/base/styles.opm
+++ /dev/null
@@ -1,120 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_codedecl \report {Basic styles of OpTeX <2021-03-10>} % 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
- \_opinput{slides.opm}
- \_adef*{\_relax\_ifmmode*\_else\_ea\_startitem\_fi}
-}
-\_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 %---------------------------------------------------------------------
-
-\endinput
-
-2021-03-10 \ifmmode* added to \adef*
-2020-03-28 released
diff --git a/macros/luatex/optex/base/table.opm b/macros/luatex/optex/base/table.opm
deleted file mode 100644
index a4a6511958..0000000000
--- a/macros/luatex/optex/base/table.opm
+++ /dev/null
@@ -1,526 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_codedecl \table {Basic macros for OpTeX <2021-03-09>} % 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 -----------------------------
- We save the `to<size>` or `pxto<size>` to `#1` and \`\_tableW` sets the
- `to<size>` to the \`\_tablew` macro.
- If `pxto<size>` is used then `\_tablew` is empty and `\_tmpdim` includes
- given <size>. The `\_ifpxto` returns true in this case.
-
- The `\table` continues by reading `{<declaration>}` in the \^`\_tableA` macro.
- Catcodes (for example the `|` character) have to be normal when reading
- `\table` parameters. This is the reason why we use `\catcodetable` here.
- \_cod -----------------------------
-
-\_newifi \_ifpxto
-\_def\_table#1#{\_tablebox\_bgroup \_tableW#1\_empty\_end
- \_bgroup \_catcodetable\_optexcatcodes \_tableA}
-\_def\_tableW#1#2\_end{\_pxtofalse
- \_ifx#1\_empty \_def\_tablew{}\_else
- \_ifx#1p \_def\_tablew{}\_tableWx#2\_end \_else \_def\_tablew{#1#2}\_fi\_fi}
-\_def\_tableWx xto#1\_end{\_tmpdim=#1\_relax \_pxtotrue}
-\_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.\nl
- The \`\_tableA``{<declaration>}` macro scans the `<declaration>` by
- `\_scantabdata#1\_relax` and continues by processing `{<data>}` by \^`\_tableB`.
- The trick `\_tmptoks={<data>}\_edef\_tmpb{\_the\_tmptoks}`
- is used here in order to keep the hash marks in the <data> unchanged.
- \_cod -----------------------------
-
-\_def\_tableA#1{\_egroup
- \_the\_thistable \_global\_thistable={}%
- \_ea\_ifx\_ea^\_the\_tabstrut^\_setbox\_tstrutbox=\_null
- \_else \_setbox\_tstrutbox=\_hbox{\_the\_tabstrut}%
- \_setbox\_tstrutbox=\_hbox{\_vrule width\_zo
- height\_dimexpr\_ht\_tstrutbox+\_tablinespace
- depth\_dimexpr\_dp\_tstrutbox+\_tablinespace}%
- \_offinterlineskip
- \_lineskip=-2\_tablinespace
- \_fi
- \_colnum=0 \_let\_addtabitem=\_addtabitemx
- \_def\_tmpa{}\_tabdata={\_colnum1\_relax}\_scantabdata#1\_relax
- \_the\_everytable \_bgroup \_catcode`\#=12 \_tableB
-}
-
- \_doc -----------------------------
- The \`\_tableB` saves `<data>` to `\_tmpb`
- and does four \^`\replstring`s to prefix each macro \^`\crl` (etc.)
- by `\_crcr`. The reason is: we want to use macros that scan its parameter
- to the delimiter written in the right part of the table item declaration.
- See \^`\fS` for example. The `\crcr` cannot be hidden in another macro in this case.
-
- The `\tabskip` value is saved for places between columns
- into the \`\_tabskipmid` macro. Then it runs
- \begtt \catcode`\<=13
- \tabskip=\tabskipl \halign{<converted declaration>\tabskip=\tabskipr \cr <data>\crcr}
- \endtt
- This sets the desired boundary values of `\tabskip`. The
- \"between-columns" values are set as `\tabskip=`\^`\_tabskipmid` in the
- `<converted declaration>` immediately after each column declarator.
-
- If `pxto` keyword was used, then we set the virtual unit \^`\tsize` to
- `\hsize` first. Then the first attempt of the table is created in box 0.
- Then the \^`\tsize` is re-calculated using `\wd0` and the real table is
- printed by `\halign` in the second pass.
-
- If no `pxto` keyword was used, then we print the table using `\halign`
- directly. The \^`\_tablew` macro is nonempty if the `to` keyword was used.
-
- Because the color selector with `\aftergroup` can be used inside the
- table item, we must create the second real group for each table item.
- This is reason why we start `<converted declaration>` by `\bgroup` and we
- end it by `\egroup` in the \`\_tableC` macro. Each `&` character
- is stored as `\egroup&\bgroup` in `<converted declaration>`. The
- `\halign\_tablew\_tableC` really does:
- \begtt \catcode`\<=13
- \halign\_tablew{\bgroup<converted declaration>\egroup\tabskip=\tabskipr \cr<data>\crcr}
- \endtt
- \relax
- The <data> are re-tokenized by `\_scantextokens` in order to be more
- robust to catcode changing inside the <data>. But inline verbatim cannot
- work in special cases here like \code{`\{`} for example.
- \_cod -----------------------------
-
-\_long\_def\_tableB #1{\_egroup \_def\_tmpb{#1}%
- \_replstring\_tmpb{\crl}{\_crcr\crl}\_replstring\_tmpb{\crll}{\_crcr\crll}%
- \_replstring\_tmpb{\crli}{\_crcr\crli}\_replstring\_tmpb{\crlli}{\_crcr\crlli}%
- \_replstring\_tmpb{\crlp}{\_crcr\crlp}%
- \_edef\_tabskipmid{\_the\_tabskip}\_tabskip=\_tabskipl
- \_ifpxto
- \_tsize=\_hsize \_setbox0 = \_vbox{\_tablepxpreset \_halign \_tableC}%
- \_tsize=\_dimexpr\_hsize-(\_wd0-\_tmpdim)\_relax
- \_setbox0=\_null \_halign \_tableC
- \_else
- \_halign\_tablew \_tableC
- \_fi \_egroup
-}
-\_def\_tableC{\_ea{\_ea\_bgroup\_the\_tabdata\_egroup\_tabskip=\_tabskipr\_cr
- \_scantextokens\_ea{\_tmpb\_crcr}}}
-
-\_def\_tablepxpreset{} % can be used to de-activate references to .ref file
-\_newbox\_tstrutbox % strut used in table rows
-\_newtoks\_tabdata % the \halign declaration line
-
- \_doc -----------------------------
- The \`\_scantabdata` macro converts `\table`'s `<declaration>` to
- `\halign` `<converted 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 template 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\_ifx:#1\_def\_next{\_scantabdataF}%
- \_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\_fi \_next
-}
-\_def\_scantabdataA#1{\_addtabitem
- \_ea\_addtabdata\_ea{#1\_tabstrutA \_tabskip\_tabskipmid\_relax}\_scantabdata}
-\_def\_scantabdataB#1#2{\_addtabitem
- \_ea\_addtabdata\_ea{#1{#2}\_tabstrutA \_tabskip\_tabskipmid\_relax}\_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\_scantabdataF {\_addtabitem\_def\_addtabitem{\_let\_addtabitem=\_addtabitemx}\_scantabdata}
-
- \_doc -----------------------------
- The \`\_addtabitemx` adds the boundary code (used between columns)
- to the <converted declaration>. This code is
- `\egroup &\bgroup \colnum=<value>\relax`. You can get the current number of
- column from the \`\colnum` register, but you cannot write
- `\the\colnum` as the first object in a <data> item because `\halign`
- first expands the front of the item and the left part of the declaration
- is processed after this. Use `\relax\the\colnum` instead. Or you can
- write:
- \begtt
- \def\showcolnum{\ea\def\ea\totcolnum\ea{\the\colnum}\the\colnum/\totcolnum}
- \table{ccc}{\showcolnum & \showcolnum & \showcolnum}
- \endtt
- This example prints 1/3 \ 2/3 \ 3/3, because the value of the `\colnum` is
- equal to the total number of columns before left part of the column declaration
- is processed.
- \_cod -----------------------------
-
-\_newcount\_colnum % number of current column in the table
-\_public \colnum ;
-
-\_def\_addtabitemx{\_ifnum\_colnum>0
- \_addtabdata{\_egroup &\_bgroup}\_addto\_ddlinedata{&\_dditem}\_fi
- \_advance\_colnum by1 \_let\_tmpa=\_relax
- \_ifnum\_colnum>1 \_ea\_addtabdata\_ea{\_ea\_colnum\_the\_colnum\_relax}\_fi}
-\_def\_addtabdata#1{\_tabdata\_ea{\_the\_tabdata#1}}
-
- \_doc -----------------------------
- This code converts `||` or `|` from `\table` <declaration> to the <converted declaration>.
- \_cod -----------------------------
-
-\_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 setting \`\_tabdeclarec`, \`\_tabdeclarel`, \`\_tabdeclarer` and
- \`\_paramtabdeclarep` macros. In general, define
- `\def\_tabdeclare<letter>{...}` for a non-parametric
- letter and `\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.
- 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=\_zo \_noindent##\_unsskip
- \_ifvmode\_vskip\_dp\_tstrutbox \_else\_lower\_dp\_tstrutbox\_hbox{}\_fi}\_the\_tabitemr}
-
- \_doc -----------------------------
- Users put optional spaces around the table item typically, i.e.\ they write
- `& text &` instead `&text&`. The left space is ignored by the internal \TeX/ algorithm but
- the right space must be removed by macros. This is a reason why we recommend 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{\_ifmmode\_else\_ifdim\_lastskip>\_zo \_unskip\_fi\_fi}
-
- \_doc -----------------------------
- The \`\fL`, \`\fR`, \`\fC` and \`\fX` macros only do special parameters settings
- for paragraph building algorithm. The \`\fS` prints the paragraph into
- box 0 first, measures the number of lines by the `\prevgraf` primitive
- and use (or don't use) `\hfil` (for centering) before the first line.
- \_cod -----------------------------
-
-\_let\_fL=\_raggedright
-\_def\_fR{\_leftskip=0pt plus 1fill \_relax}
-\_def\_fC{\_leftskip=0pt plus1fill \_rightskip=0pt plus 1fill \_relax}
-\_def\_fX{\_leftskip=0pt plus1fil \_rightskip=0pt plus-1fil \_parfillskip=0pt plus2fil \_relax}
-\_long\_def\_fS #1\_unsskip{\_noindent \_setbox0 =\_vbox{\_noindent #1\_endgraf \_ea}%
- \_ifnum\_prevgraf=1 \_hfil \_fi #1\_unsskip
-}
-\_public \fL \fR \fC \fX \fS ;
-
- \_doc -----------------------------
- The family of `\_cr*` macros
- \`\crl`, \`\crll`, \`\crli`, \`\crlli`, \`\crlp` and
- \`\tskip` `<dimen>` is implemented here.
- The \`\_zerotabrule` is used 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 height\_zo width\_zo depth\_zo}}
-
-\_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{,\_ea}\_ea\_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,\_ea\_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{\_incr\_tmpnum \_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``{<number>}[<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 \_afterassignment\_mspanA \_mscount=}
-\_def\_mspanA[#1]#2{\_loop \_ifnum\_mscount>1 \_cs{_span}\_omit \_advance\_mscount-1 \_repeat
- \_count1=\_colnum \_colnum=0 \_def\_tmpa{}\_tabdata={}\_scantabdata#1\_relax
- \_colnum=\_count1 \_setbox0=\_vbox{\_halign\_ea{\_ea\_bgroup\_the\_tabdata\_egroup\_cr#2\_cr}%
- \_global\_setbox8=\_lastbox}%
- \_setbox0=\_hbox{\_unhbox8 \_unskip \_global\_setbox8=\_lastbox}%
- \_unhbox8 \_ignorespaces}
-\_public \mspan ;
-
- \_doc -----------------------------
- The \`\vspan``<number>{<text>}` implementation is here.
- We need to lower the box by
- \begtt \catcode`\<=13
- (<number>-1)*(\ht+\dp of \tabstrut) / 2.
- \endtt
- The `#1` parameter must be a one-digit number. If you want to set more digits
- then use braces.
- \_cod -----------------------------
-
-\_def\_vspan#1#2#{\_vspanA{#1#2}}
-\_def\_vspanA#1#2{\_vtop to\_zo{\_hbox{\_lower \_dimexpr
- #1\_dimexpr(\_ht\_tstrutbox+\_dp\_tstrutbox)/2\_relax
- -\_dimexpr(\_ht\_tstrutbox+\_dp\_tstrutbox)/2\_relax \_hbox{#2}}\_vss}}
-\_public \vspan ;
-
- \_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
- overwritten 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 ;
-
- \_doc -----------------------------
- \`\eqbox` and \`\eqboxsize` are implemented here. The widths of
- all `\eqbox`es are saved to the `.ref` file in the format
- \`\_Xeqbox``{<label>}{<size>}`. The `.ref` file is read again and maximum
- box width for each <label> is saved to `\_eqb:<label>`.
- \_cod -----------------------------
-
-\_def\_Xeqbox#1#2{%
- \_ifcsname _eqb:#1\_endcsname
- \_ifdim #2>\_cs{_eqb:#1}\_relax \_sdef{_eqb:#1}{#2}\_fi
- \_else \_sdef{_eqb:#1}{#2}\_fi
-}
-\_def\_eqbox #1[#2]#3{\_setbox0=\_hbox{{#3}}%
- \_openref \_immediate\_wref \_Xeqbox{{#2}{\_the\_wd0}}%
- \_ifcsname _eqb:#2\_endcsname
- \_hbox to\_cs{_eqb:#2}{\_ifx r#1\_hfill\_fi\_hss\_unhbox0\_hss\_ifx l#1\_hfill\_fi}%
- \_else \_box0 \_fi
-}
-\_def\_eqboxsize [#1]#2{\_trycs{_eqb:#1}{#2}}
-
-\public \eqbox \eqboxsize ;
-
-\_endcode % -------------------------------------
-
-\secc[table.bound] The boundary declarator \code{:}
-
-The `<declaration>` part of `\table{<declaration>}{<data>}` includes
-column declarators (letters) and other material: the `|` or `(<cmd>)`.
-If the boundary declarator `:` is not used then
-the boundaries of columns are just before each column declarator
-with exception of the first one.
-For example, the declaration `{|c||c(xx)(yy)c}`
-should be written more exactly using the boundary declarator `:`
-by `{|c||:c(xx)(yy):c}`. But you can set these boundaries to
-other places using the boundary declarator~`:` explicitly,
-for example `{|c:||c(xx):(yy)c}`. The boundary declarator `:`
-can be used only once between each pair of column declarators.
-
-Each table item has its group. The `(<cmd>)` are parts of the given
-table item (depending on the boundary declarator position).
-If you want to apply a special setting for a given column, you can do this by
-`(<setting>)` followed by column declarator. But if the column is not
-first, you must use `:(<setting>)`. Example. We have three centered columns,
-the second one have to be in bold font and the third one have to be in red:
-`\table{c:(\bf)c:(\Red)c}{<data>}`
-
-\secc Usage of the \code{\\tabskip} primitive
-
-The value of `\tabskip` primitive is used between all columns of the table.
-It is glue-type, so it can be stretchable or shrinkable, see next
-section~\ref[table.w].
-
-By default, `\tabskip` is 0\,pt. It means that only \^`\tabiteml`,
-\^`\tabitemr` and `(<cmds>)` can generate visual spaces between columns. But they
-are not real spaces between columns because they are in fact the part of
-the total column width.
-
-The `\tabskip` value declared before the \^`\table` macro (or in
-\^`\everytable` or in \^`\thistable`) is used between all columns in the table.
-This value is equal to all spaces between columns. But you can set each such space
-individually if you use `(\tabskip=<value>)` in the <declaration> immediately
-before boundary character. The boundary character represents the column pair for
-which the `\tabskip` has individual value. For example
-`c(\tabskip=5pt):r` gives `\tabskip` value between `c` and `r` columns.
-You need not use boundary character explicitly, so `c(\tabskip=5pt)r` gives
-the same result.
-
-Space before the first column is given by the \^`\tabskipl`
-and space after the last column is equal to \^`\tabskipr`.
-Default values are 0\,pt.
-
-Use nonzero `\tabskip` only in special applications. If `\tabskip` is
-nonzero then horizontal lines generated by \^`\crli`, \^`\crlli` and \^`\crlp`
-have another behavior than you probably expected: they are interrupted in
-each `\tabskip` space.
-
-\secc[table.w] Tables to given width
-
-There are two possibilities how to create tables to given width:
-
-\begitems
-* `\table to<size>{<declaration>}{<data>}` uses stretchability or
- shrinkability of all spaces between columns generated by `\tabskip` value and
- eventually by \^`\tabskipl`, \^`\tabskipr` values. See example below.
-* `\table pxto<size>{<declaration>}{<data>}` expands the columns declared
- by `p{<size>}`, if the `<size>` is given by a virtual \^`\tsize` unit.
- See the example below.
-\enditems
-
-Example of `\table to<size>`:
-
-\begtt \catcode`\<=13
-\thistable{\tabskip=0pt plus1fil minus1fil}
-\table to\hsize {lr}{<data>}
-\endtt
-%
-This table has its width `\hsize`. The first column starts at the left boundary of
-this table and it is justified left (to the boundary). The second column ends at
-the right boundary of the table and it is justified right (to the boundary).
-The space between them is stretchable and shrinkable to reach
-the given width `\hsize`.
-
-\medskip
-Example of `\table pxto<size>` (means \"{\bf p}aragraphs e{\bf x}panded {\bf to}"):
-
-\begtt
-\table pxto\hsize {|c|p{\tsize}|}{\crl
- aaa & Ddkas jd dsjds ds cgha sfgs dd fddzf dfhz xxz
- dras ffg hksd kds d sdjds h sd jd dsjds ds cgha
- sfgs dd fddzf dfhz xxz. \crl
- bb ddd ggg & Dsjds ds cgha sfgs dd fddzf dfhz xxz
- ddkas jd dsjds ds cgha sfgs dd fddzf. \crl }
-\endtt
-
-\noindent\table pxto\hsize {|c|p{\tsize}|}{\crl
- aaa & Ddkas jd dsjds ds cgha sfgs dd fddzf dfhz xxz
- dras ffg hksd kds d sdjds h sd jd dsjds ds cgha
- sfgs dd fddzf dfhz xxz. \crl
- bb ddd ggg & Dsjds ds cgha sfgs dd fddzf dfhz xxz
- ddkas jd dsjds ds cgha sfgs dd fddzf. \crl }
-\medskip
-
-The first `c` column is variable width (it gets the width of the most wide item)
-and the resting space to given `\hsize` is filled by the `p` column.
-
-You can declare more than one `p{<coefficient>\tsize}` columns in the table
-when `pxto` keyword is used. The total sum of <coefficinets> must be exactly one.
-For example,
-
-\begtt \catcode`\<=13
-\table pxto13cm {r p{.3\tsize} p{.5\tsize} p{.2\tsize} l}{<data>}
-\endtt
-%
-This gives the ratio of widths of individual paragraphs in the table.
-
-\secc `\eqbox`: boxes with equal width across the whole document
-
-The \^`\eqbox` `[<label>]{<text>}` behaves like `\hbox{<text>}` in the first
-run of \TeX. But the widths of all boxes with the same label are saved to
-`.ref` file and the maximum box width for each label is calculated at the
-beginning of the next \TeX/ run. Then \^`\eqbox`~`[<label>]{<text>}` behaves
-like `\hbox to <dim:label> {\hss <text>\hss}`, where <dim:label> is
-the maximum width of all boxes
-labeled by the same `[<label>]`. The documentation of the \LaTeX/ package
-`eqparbox` includes more information and tips.
-
-The \^`\eqboxsize` `[<label>]{<dimen>}` expands to <dim:label> if this value is known,
-else it expands to the given <dimen>.
-
-The optional parameter `r` or `l` can be written before `[<label>]` (for example
-`\eqbox r[label]{text}`) if you want to put the text to the right or to the
-left side of the box width.
-
-Try the following example and watch what happens after first \TeX/ run and
-after the second one.
-
-\begtt
-\def\leftitem#1{\par
- \noindent \hangindent=\eqboxsize[items]{2em}\hangafter=1
- \eqbox r[items]{#1 }\ignorespaces}
-
-\leftitem {\bf first} \lorem[1]
-\leftitem {\bf second one} \lorem[2]
-\leftitem {\bf final} \lorem[3]
-\endtt
-
-
-\_endinput
-
-2021-03-09 \_tablepxpreset introduced
-2021-02-15 \_expandafter -> \_ea
-2021-01-27 \_tableB: \long\def added, \vspan syntax improved
-2020-05-26 \eqbox implemented
-2020-05-20 \colnum implemented.
- \vspan implemented.
-2020-05-19 \fL, \fR ets defined.
- \table to, \table pxto implemented.
-2020-05-10 \bgroup &\egroup added to tabdata (in order to \aftergroup from colors)
- boundary declarator : introduced
- \_unsskip: \ifmmode added.
-2020-04-10 second group for items in order to \localcolors
diff --git a/macros/luatex/optex/base/uni-lcuc.opm b/macros/luatex/optex/base/uni-lcuc.opm
deleted file mode 100644
index 2a99f52d66..0000000000
--- a/macros/luatex/optex/base/uni-lcuc.opm
+++ /dev/null
@@ -1,15944 +0,0 @@
-%% This is part of the 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 `\catcode`=12 for all codes above 127.
-
-The file `uni-lcuc.opm` does this work. It is not much interesting 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})
-}
diff --git a/macros/luatex/optex/base/unimath-codes.opm b/macros/luatex/optex/base/unimath-codes.opm
deleted file mode 100644
index 6e83ab94ad..0000000000
--- a/macros/luatex/optex/base/unimath-codes.opm
+++ /dev/null
@@ -1,439 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_codedecl \_ncharrmA {Uni math codes <2021-03-11>} % preloaded on demand by \loadmath
-
- \_doc -----------------------------
- The control sequences for `\alpha`, `\beta` etc are redefined here.
- The `\alpha` expands to the character with Unicode `"03B1`, this is a 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 {<range>}<class><family><starting-code>` 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}71\_ncharrmA \_umathrange{a-z}71\_ncharrma}
-\_protected\_def\_bfvariables {\_umathrange{A-Z}71\_ncharbfA \_umathrange{a-z}71\_ncharbfa}
-\_protected\_def\_itvariables {\_umathrange{A-Z}71\_ncharitA \_umathrange{a-z}71\_ncharita}
-\_protected\_def\_bivariables {\_umathrange{A-Z}71\_ncharbiA \_umathrange{a-z}71\_ncharbia}
-\_protected\_def\_calvariables {\_umathrange{A-Z}71\_ncharclA \_umathrange{a-z}71\_ncharcla}
-\_protected\_def\_bcalvariables {\_umathrange{A-Z}71\_ncharbcA \_umathrange{a-z}71\_ncharbca}
-\_protected\_def\_frakvariables {\_umathrange{A-Z}71\_ncharfrA \_umathrange{a-z}71\_ncharfra}
-\_protected\_def\_bfrakvariables {\_umathrange{A-Z}71\_ncharbrA \_umathrange{a-z}71\_ncharbra}
-\_protected\_def\_bbvariables {\_umathrange{A-Z}71\_ncharbbA \_umathrange{a-z}71\_ncharbba}
-\_protected\_def\_sansvariables {\_umathrange{A-Z}71\_ncharsnA \_umathrange{a-z}71\_ncharsna}
-\_protected\_def\_bsansvariables {\_umathrange{A-Z}71\_ncharbsA \_umathrange{a-z}71\_ncharbsa}
-\_protected\_def\_isansvariables {\_umathrange{A-Z}71\_ncharsiA \_umathrange{a-z}71\_ncharsia}
-\_protected\_def\_bisansvariables {\_umathrange{A-Z}71\_ncharsxA \_umathrange{a-z}71\_ncharsxa}
-\_protected\_def\_ttvariables {\_umathrange{A-Z}71\_ncharttA \_umathrange{a-z}71\_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\_itgreek {\_umathrangegreek71\_greekita}
-\_protected\_def\_rmgreek {\_umathrangegreek71\_greekrma}
-\_protected\_def\_bfgreek {\_umathrangegreek71\_greekbfa}
-\_protected\_def\_bigreek {\_umathrangegreek71\_greekbia}
-\_protected\_def\_bsansgreek {\_umathrangegreek71\_greeksna}
-\_protected\_def\_bisansgreek{\_umathrangegreek71\_greeksia}
-\_protected\_def\_itGreek {\_umathrangeGREEK71\_greekitA}
-\_protected\_def\_rmGreek {\_umathrangeGREEK71\_greekrmA}
-\_protected\_def\_bfGreek {\_umathrangeGREEK71\_greekbfA}
-\_protected\_def\_biGreek {\_umathrangeGREEK71\_greekbiA}
-\_protected\_def\_bsansGreek {\_umathrangeGREEK71\_greeksnA}
-\_protected\_def\_bisansGreek{\_umathrangeGREEK71\_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}71\_digitrmO}
-\_protected\_def\_bfdigits {\_umathrange{0-9}71\_digitbfO}
-\_protected\_def\_bbdigits {\_umathrange{0-9}71\_digitbbO}
-\_protected\_def\_sansdigits {\_umathrange{0-9}71\_digitsnO}
-\_protected\_def\_bsansdigits {\_umathrange{0-9}71\_digitbsO}
-\_protected\_def\_ttdigits {\_umathrange{0-9}71\_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\_bfGreek\_bfdigits}}
- \_protected\_def\_bi
- {\_tryloadbi\_tenbi \_inmath{\_bivariables\_bigreek\_bfGreek\_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 upright lowercase greek letters, you don't need
-% \bf and \bi behave as sans serif in math, ...
-
-\_protected\_def\_rm {\_tryloadrm \_tenrm \_inmath{\_rmvariables \_rmdigits}}
-\_protected\_def\_it {\_tryloadit \_tenit \_inmath{\_itvariables}}
-\_protected\_def\_bf
- {\_tryloadbf \_tenbf \_inmath{\_bsansvariables \_bsansgreek \_bsansGreek \_bsansdigits}}
-\_protected\_def\_bi
- {\_tryloadbi \_tenbi \_inmath{\_bisansvariables \_bisansgreek \_bsansGreek \_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 \_sansdigits}
-\_protected\_def\_mbisans {\_bisansvariables \_bisansgreek \_bsansGreek \_bsansdigits}
-\_protected\_def\_script {\_rmvariables \_fam4 }
-\_protected\_def\_mit {\_itvariables \_rmdigits \_itgreek \_rmGreek }
-
-\_public \rm \it \bf \bi \tt \bbchar \cal \frak \misans \mbisans \script \mit ;
-
- \_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}
- \_setbox0=\_vbox{\_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 the 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{%
- \_ifnum#1=\_Umathcodenum#1 % the code isn't set by mathclass.opm
- \_global\_Umathchardef#2=0 1 #1 \_global\_Umathcode#1=0 1 #1
- \_else \_global\_Umathcharnumdef#2=\_Umathcodenum#1 \_fi
- \_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
-
-\_mit % default math alphabets setting
-
-% hyphen character is transformed to minus:
-\_Umathcode `- = 2 1 "2212
-
-% mathclass defines : as Punct, plain.tex as Rel, we keep mathclass,
-% i.e. there is difference from plain.tex, you can use $f:A\to B$.
-
-\_let\{=\lbrace \_let\}=\rbrace
-
-% mathclas defines ! as Ord, plain.tex as Close
-\_Umathcode `! = 5 1 `! % keep plain.tex declaration
-\_Umathchardef \mathexclam = 5 1 `!
-% mathclas defines ? as Punct, plain.tex as Close
-\_Umathcode `? = 5 1 `? % keep plain.tex declaration
-\_Umathchardef \mathquestion = 5 1 `?
-
-\_Umathcode `* = 2 1 "02217 % equivalent to \ast, like in plain TeX
-
-\_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
-
-\_global\_Umathcode "22EF = 0 1 "22EF % mathclass says that it is Rel
-\_global\_Umathcode "002E = 0 1 "002E % mathclass says that dot is Punct
-\_global\_Umathchardef \unicodecdots = 0 1 "22EF
-
-\_global\_Umathcode `/ = 0 1 `/ % mathclass says that / is Bin, Plain TeX says that it is Ord.
-
-% compressed dots in S and SS styles (usable in \matrix when it is in T, S and SS style)
-\_protected\_def \vdots {\_relax \_ifnum \_mathstyle>3 \_unicodevdots \_else \_vdots \_fi}
-\_protected\_def \ddots {\_relax \_ifnum \_mathstyle>3 \_unicodeddots \_else \_ddots \_fi}
-\_protected\_def \adots {\_relax \_ifnum \_mathstyle>3 \_unicodeadots \_else \_adots \_fi}
-
-% Unicode superscripts (²) and subscripts as simple macros with \mathcode"8000
-\_bgroup
- \_def\_tmp#1#2{\_global\_mathcode#1="8000 \_lccode`\~=#1 \_lowercase{\_gdef~}{#2}}
- \_fornum 0..1 \_do {\_tmp{"207#1}{{^#1}}}
- \_tmp{"B2}{{^2}}\_tmp{"B3}{{^3}}
- \_fornum 4..9 \_do {\_tmp{"207#1}{{^#1}}}
- \_fornum 0..9 \_do {\_tmp{"208#1}{{_#1}}}
-\_egroup
-
- \_doc -----------------------------
- Aliases are declared here. They are names not mentioned in the `unimath-table.opm` file
- but commonly used in \TeX.
- \_cod -----------------------------
-
-\_let \setminus=\smallsetminus
-\_let \diamond=\smwhtdiamond
-\_let \colon=\mathcolon
-\_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 \longdivisionsign=\longdivision
-\_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. If the `\_not!<char>` is defined
- (by \`\_negationof`)
- then this macro is used. Else centered / is printed over the <char>.
- \_cod -----------------------------
-
-\_protected\_def\_not#1{%
- \_trycs{_not!\_csstring#1}{\_mathrel\_mathstyles{%
- \_setbox0=\_hbox{\_math$\_currstyle#1$}%
- \_hbox to\_wd0{\_hss$\_currstyle/$\_hss}\_kern-\_wd0 \_box0
-}}}
-\_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
-\_negationof \mid \nmid
-\_negationof \cong \ncong
-\_negationof \leftarrow \nleftarrow
-\_negationof \rightarrow \nrightarrow
-\_negationof \leftrightarrow \nleftrightarrow
-\_negationof \Leftarrow \nLeftarrow
-\_negationof \Leftrightarrow \nLeftrightarrow
-\_negationof \Rightarrow \nRightarrow
-\_negationof \exists \nexists
-\_negationof \ni \nni
-\_negationof \paralel \nparalel
-\_negationof \sim \nsim
-\_negationof \approx \napprox
-\_negationof \equiv \nequiv
-\_negationof \asymp \nasymp
-\_negationof \lesssim \nlesssim
-\_negationof \ngtrsim \ngtrsim
-\_negationof \lessgtr \nlessgtr
-\_negationof \gtrless \ngtrless
-\_negationof \prec \nprec
-\_negationof \succ \nsucc
-\_negationof \subset \nsubset
-\_negationof \supset \nsupset
-\_negationof \subseteq \nsubseteq
-\_negationof \supseteq \nsupseteq
-\_negationof \vdash \nvdash
-\_negationof \vDash \nvDash
-\_negationof \Vdash \nVdash
-\_negationof \VDash \nVDash
-\_negationof \preccurlyeq \npreccurlyeq
-\_negationof \succcurlyeq \nsucccurlyeq
-\_negationof \sqsubseteq \nsqsubseteq
-\_negationof \sqsupseteq \nsqsupseteq
-\_negationof \vartriangleleft \nvartriangleleft
-\_negationof \vartriangleright \nvartriangleright
-\_negationof \trianglelefteq \ntrianglelefteq
-\_negationof \trianglerighteq \ntrianglerighteq
-\_negationof \vinfty \nvinfty
-
-\_public \not ;
-
- \_doc -----------------------------
- Newly declared public control sequences are used in internal macros by
- \OpTeX/. We need to get new meanings for these control sequences in
- the private namespace.
- \_cod -----------------------------
-
-\_private
- \ldotp \cdotp \bullet \triangleleft \trianglerigt \mapstochar \rightarrow
- \prime \lhook \rightarrow \leftarrow \rhook \triangleright \triangleleft
- \Relbar \Rightarrow \relbar \rightarrow \Leftarrow \mapstochar
- \longrightarrow \Longleftrightarrow \unicodevdots \unicodeddots \unicodeadots ;
-
-\_endcode
-
-\secc More Unicode-math examples
-
-Example of using additional math font is in section 5.3 in the
-\ulink[http://petr.olsak.net/ftp/olsak/optex/optex-math.pdf]{\tt optex-math.pdf} documentation
-
-You can combine more Unicode math fonts in single formula simply
-by the `\addUmathfont` macro, see
-\ulink[http://petr.olsak.net/optex/optex-tricks.html#addumathfont]{\OpTeX/ trick 0030}.
-
-See \url{http://tex.stackexchange.com/questions/308749}
-for technical details about Unicode-math.
-
-\_endinput
-
-History:
-2021-03-11 Umathcode `* declaed as \ast
-2021-02-03 Unicode superscripts, subscripts declared
-2021-01-31 Mathcode of ! ? set to Close, codes undeclared in mathclass set correctly
-2021-01-23 Compressed \vdots, \ddots, \adots in script(script)style.
-2020-11-13 Bug fix: \colon declared
-2020-06-13 Umathcode of / declared as in Plain TeX
-2020-06-07 \_itgreek \_itGreek, \_rmgreek \_rmGreek etc. introduced, names changed
-2020-06-03 \not\mid = \nmid added, \not corrected
-2020-04-30 Bug fix: \phi, \varpi etc. were bad encoded
-2020-04-09 Bug fix: \Udelcode`<, \Udelcode`> added
diff --git a/macros/luatex/optex/base/unimath-table.opm b/macros/luatex/optex/base/unimath-table.opm
deleted file mode 100644
index 252c1fc26a..0000000000
--- a/macros/luatex/optex/base/unimath-table.opm
+++ /dev/null
@@ -1,2471 +0,0 @@
-%%^^A%% unicode-math-table.tex -- part of UNICODE-MATH <wspr.io/unicode-math>
-%%^^A%% Source file of the math symbols.
-
-% Only \ddots, \adots and \vdots are called differently:
-% \unicodeddots, \unicodeadots and \unicodevdots
-% \mathquestion: Ord -> Close (because plain.tex declares it as Close)
-
-\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 }{\mathclose}{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}{\unicodevdots }{\mathrel}{vertical ellipsis}%
-\UnicodeMathSymbol{"022EF}{\unicodecdots }{\mathord}{three dots, centered}%
-\UnicodeMathSymbol{"022F0}{\unicodeadots }{\mathrel}{three dots, ascending}%
-\UnicodeMathSymbol{"022F1}{\unicodeddots }{\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
-% ------------------------------------------------
-%
-% ©/
-
diff --git a/macros/luatex/optex/base/usebib.opm b/macros/luatex/optex/base/usebib.opm
deleted file mode 100644
index f37d21b315..0000000000
--- a/macros/luatex/optex/base/usebib.opm
+++ /dev/null
@@ -1,398 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_codedecl \MakeReference {Reading bib databases <2021-03-12>} % loaded on demand by \usebib
-
- \_doc -----------------------------
- Loading the `librarian.tex` macro package. See `texdoc librarian`
- for more information about it.
-
- We want to ignore `\errmessage` and we want not to create `\jobname.lbr`
- file.
- \_cod -----------------------------
-
-\_def\errmessage#1{}
-\_def\newwrite#1{\_csname lb@restoreat\_endcsname \_endinput}
-\_def\_tmpb{\_catcode`\_=12 \_input librarian \_catcode`\_=11 }\_tmpb
-\_let\errmessage=\_errmessage
-\_let\newwrite=\_newwrite
-
-\_private \BibFile \ReadList \SortList \SortingOrder \NameCount \AbbreviateFirstname
- \CreateField \RetrieveFieldInFor \RetrieveFieldIn ;
-
- \_doc -----------------------------
- The `\usebib` command.
- \_cod -----------------------------
-
-\_def\_usebib/#1 (#2) #3 {%
- \_let\_citeI=\_relax \_xdef\_citelist{\_citelist\_citelistB}%
- \_global\_let\_addcitelist=\_writeXcite
- \_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
- \_ea \_skiptoendinput \_input languages.opm
- \_input bib-#2.opm
- \_the \_bibtexhook
- \_ifcsname _mt:bib.and:\_cs{_lan:\_the\_language}\_endcsname \_else
- \_opwarning{\_string\usebib: No phrases for language
- "\_cs{_lan:\_the\_language}" (using "en")}%
- \_language=0 \_chardef\_documentlanguage=0
- \_fi
- \_def\_tmp##1[*]##2\_relax{\_def\_tmp{##2}}\_ea\_tmp\_citelist[*]\_relax
- \_ifx\_tmp\_empty\_else % there was \nocite[*] used.
- \_setbox0=\_vbox{\_hsize=\_maxdimen \_def\_citelist{}\_adef@{\_readbibentry}%
- \_input #3.bib
- \_ea}\_ea\_def\_ea\_citelist\_ea{\_citelist}%
- \_fi
- \_def\_citeI[##1]{\_csname lb@cite\_endcsname{##1}{\_bibpart}{}{}}\_citelist
- \_BibFile{#3}%
- \_if s#1\_SortList{\_bibpart}\_fi
- \_ReadList{\_bibpart}%
- \_restorectable
- \_egroup
- \_fi
-}
-\_long\_def\_skiptoendinput#1\_endinput{}
-\_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@checkmissingentries#1,{% we needn't \errmessage here, only \opmacwarning
- \_def\lb@temp{#1}%
- \_unless\_ifx\lb@temp\lb@eoe
- \lb@ifcs{#1}{fields}%
- {}%
- {\_opwarning{\_string\usebib: entry [#1] isn't found in .bib}}%
- \_ea\lb@checkmissingentries
- \_fi
-}
-\_def\lb@readentry#1#2#3,{% space before key have to be ingnored
- \_def\lb@temp{#2#3}% we need case sensitive keys
- \_def\lb@next{\_ea\lb@gotoat\lb@gobbletoeoe}%
- \lb@ifcs\lb@temp{requested}%
- {\_let\lb@entrykey\lb@temp
- \lb@ifcs\lb@entrykey{fields}{}%
- {\lb@defcs\lb@entrykey{fields}{}%
- \_lowercase{\lb@addfield{entrytype}{#1}}%
- \_let\lb@next\lb@analyzeentry}}{}%
- \lb@next
-}
-\_let\lb@compareA=\lb@compare
-\_let\lb@preparesortA=\lb@preparesort
-\_def\lb@compare#1\lb@eoe#2\lb@eoe{% SpecialSort:
- \_ifx\lb@sorttype\lb@namestring
- \_ifx\_sortfield\_undefined \lb@compareA#1\lb@eoe#2\lb@eoe
- \_else
- \_ea\_RetrieveFieldInFor\_ea{\_sortfield}\lb@entrykey\lb@temp
- \_ifx\lb@temp\_empty \_toks1={#1\lb@eoe}\_else \_toks1=\_ea{\lb@temp\lb@eoe}\_fi
- \_ea\_RetrieveFieldInFor\_ea{\_sortfield}\lb@currententry\lb@temp
- \_ifx\lb@temp\_empty \_toks2={#2\lb@eoe}\_else \_toks2=\_ea{\lb@temp\lb@eoe}\_fi
- \_edef\lb@temp{\_noexpand\lb@compareA\_space\_the\_toks1 \_space\_the\_toks2}\lb@temp
- \_fi
- \_else \lb@compareA#1\lb@eoe#2\lb@eoe \_fi
-}
-\_def\lb@preparesort#1#2\lb@eoe{%
- \_if#1-%
- \_def\lb@sorttype{#2}%
- \_else
- \_def\lb@sorttype{#1#2}%
- \_fi
- \lb@preparesortA#1#2\lb@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 each 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 + multilingual. Note that \`\_nobibwarnlist` is used in
- \`\_bibwarning` and it is set by \^`\nobibwarning` macro.
- \_cod -----------------------------
-
-\_def\_bibwarning{%
- \_ea\_isinlist \_ea\_nobibwarnlist\_ea{\_ea,\EntryKey,}\_iffalse
- \_opwarning{Missing field "\_bibfieldname" in [\EntryKey]}\_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
-bibliographic references (only those declared by \~`\cite[]` or
-\~`\nocite[]` in the text). The formatting of such references is defined in the style
-file.
-
-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 exceptions in your
-`local.bib` file for your document.
-
-The `bib-<style>.opm` declares entry types (like `@BOOK`, `@ARTICLE`) and declares
-their mandatory and optional fields (like `author`, `title`). When
-a mandatory field is missing in an entry in the `.bib` file then a warning is printed on the
-terminal about it. You can suppress such warnings by command
-\^`\nobibwarning`~`[<bib-labels>]`, where <bib-labels> is a comma-separated list
-of labels (without spaces) where missing mandatory fields will be no warned.
-
-Old `.bib` files may use the obscure notation for accents like `{\"o}`.
-Recommendation: convert such old files to Unicode encoding. If you are
-unable to do this then you can set \^`\bibtexhook={`\^`\oldaccents}`.
-
-\secc Notes for bib-style writers
-
-The `.bib` files include records in the format:
-
-\begtt \catcode`\<=13
-@<entry-type>{<label>,
- <field-name> = "<field-data>",
- <field-name> = "<field-data>",
- ...etc
-}
-\endtt
-%
-see the file `demo/op-biblist.bib` for a real example. The <entry-types> and
-<field-names> are case insensitive.
-
-Ancient Bib\TeX/ has read such files and has generated files appropriate for
-reading by \LaTeX. It has worked with a set of <entry-types>, see the www
-page \url{http://en.wikipedia.org/wiki/BibTeX}. The set of entry types
-listed on this www page is de facto the Bib\TeX/ standard. The \OpTeX/ bib
-style writer must \"declare" all such entry types and more non-standard
-entry types can be declared too if there is a good reason for doing it. The
-word \"declare" used in the previous sentence means that a bib-style writer must
-define the printing rules for each <entry-type>.
-The printing rules for <entry-type> include: which fields will be printed, in
-what order, by what format they will be printed on (italic, caps, etc.),
-which fields are mandatory, which are optional, and which are ignored in
-`.bib` records.
-
-The style writer can be inspired by two styles already done: `bib-simple.opm`
-and `bib-iso690.opm`. The second one is documented in detail in
-section~\ref[isobib].
-
-The printing rules for each <entry-type> must be declared by
-`\_sdef{_print:<entry-type>}` in `bib-<style>.opm` file.
-The `<entry-type>` has to be lowercase here. \OpTeX/ supports following
-macros for a more comfortable setting of printing rules:
-
-\begitems
-* \^`\_bprinta` `[<field-name>] {<if defined>} {<if not defined>}`. The part <if defined>
- is executed if <field-name> 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 <field-name>.
-* The part <if not defined> can include
- the \^`\_bibwarning` command if the <field-name> is mandatory.
-* \^`\_bprintb` `[<field-name>] {<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 the `####1` parameter for internal `\_bprintb`.
- But if `\_bprinta` commands are nested then the parameter is not duplicated.
-* \^`\_bprintc` `\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 parameters.
-\enditems
-
-There are two special field-names: `!author` and `!editor`. The processed list of
-authors or editors are printed here instead of raw data, see the commands
-\~`\_authorname` and \~`\_editorname` below.
-
-The bib-style writer can define `_print:BEGIN` and/or `_print:END`.
-They are executed at the beginning or
-end of each `<entry-type>`. 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).
-
-The \^`\bibmark={something}` can be declared, for instance in the `_print:END` macro.
-Such \"bibmark" is saved to the `.ref` file and used in next \TeX/ run as
-`\cite` marks when `\nonumcitations` is set.
-
-Moreover, the bib-style writer must declare the format of
-special fields `author` and `editor`. These fields include a
-list of names, each name is precessed individually in a loop. The
-\^`\_authorname` or \^`\_editorname` is called for each name on the list.
-The bib-style writer must define
-the \`\_authorname` and \`\_editorname` commands
-in order to declare the format of printing each individual name.
-The following control sequences can be used in these macros:
-
-\begitems
-* `\_NameCount`: the number of the currently processed author in the list
-* `\_namecont`: the total number of the authors in the list
-* `\_Lastname`, `\_Firstname`, `\_Von`, `\_Junior`: the parts of the name.
-\enditems
-
-The whole style file is read in the group during the `\usebib` command is executed
-before typesetting the reference list. Each definition or setting is local
-here.
-
-The auto-generated phrases (dependent on current language) can be used in
-bib-style files by `\_mtext{bib.<identifier>}`, where <ident> is an identifier of
-the phrase and the phrase itself is defined by
-`\_sdef{_mt:bib.<identifier>:<language>}{<phrase>}`. See section~\ref[langphrases]
-for more detail. Phrases for <identifiers>:
-and, etal, edition, citedate, volume, number, prepages, postpages, editor,
-editors, available, availablealso, bachthesis, masthesis, phdthesis
-are defined already, see the end of section~\ref[langphrases].
-
-If you are using non-standard field-names in .bib database and bib-style,
-you have to declare them by `\_CreateField {<fieldname>}`.
-
-You can declare `\_SortingOrder` in the manner documented by librarian package.
-
-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 auto-citations before other citations,
-then you can mark your entries in `.bib` file by `sortedby = "@"`, because this
-character is sorted before `A`.
-
-\_endinput
-
-History:
---------
-
-2021-03-12 \_citelistB added before first test.
-2021-02-15 \_expandafter -> \_ea
-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
-
diff --git a/macros/luatex/optex/base/verbatim.opm b/macros/luatex/optex/base/verbatim.opm
deleted file mode 100644
index 8fd20ee531..0000000000
--- a/macros/luatex/optex/base/verbatim.opm
+++ /dev/null
@@ -1,372 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_codedecl \begtt {Verbatim <2021-01-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 ----------------------------
- \`\verbchar``<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 character 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 `\verbchar"` 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\_verbchar#1{%
- \_ifx\_savedttchar\_undefined\_else \_catcode\_savedttchar=\_savedttcharc \_fi
- \_chardef\_savedttchar=`#1
- \_chardef\_savedttcharc=\_catcode`#1
- \_adef{#1}{\_begingroup \_setverb \_adef{ }{\_dsp}\_ttfont \_the\_everyintt\_relax \_readverb}%
- \_def\_readverb ##1#1{\_printinverbatim{##1}\_endgroup}%
-}
-\_let \_activettchar=\_verbchar % for backward compatibility
-\_public \verbchar \activettchar ;
-
- \_doc ----------------------------
- \`\begtt` is defined only as public. We don't need a private `\_begtt` variant.
- This macro opens a group and sets `%` as an active character (temporary).
- This will allow it to be used as the comment character at the same line after
- `\begtt`. Then \`\_begtti` is run. It is defined by \^`\eoldef`,
- so users can put a parameter at the
- same line where `\begtt` is. This `#1` parameter is used after \^`\everytt`
- parameters settings, so users can change them locally.
-
- The \^`\_begtti` macro 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 the 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.
- \_cod ---------------------------
-
-\_def\begtt{\_par \_begingroup \_adef\%##1\_relax{\_relax}\_begtti}
-\_eoldef \_begtti#1{\_wipeepar \_setxhsize
- \_vskip\_parskip \_ttskip
- \_setverb
- \_ifnum\_ttline<0 \_let\_printverblinenum=\_relax \_else \_initverblinenum \_fi
- \_adef{ }{\_dsp}\_adef\^^I{\t}\_parindent=\_ttindent \_parskip=0pt
- \_def\t{\_hskip \_dimexpr\_tabspaces em/2\_relax}%
- \_the\_everytt \_relax #1\_relax \_ttfont
- \_def\_testcommentchars##1\_iftrue{\_iffalse}\_let\_hicomments=\_relax
- \_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\_prepareverbdata#1#2{\_def#1{#2}}
-
- \_doc
- The \`\_printverb` macro calls \^`\_printverbline``{<line>}` repeatedly
- to each scanned line of verbatim text. The `\_printverb` is used from
- `\begtt...\endtt` and from `\verbinput` too.
-
- The \^`\_testcommentchars` replaces the following `\_iftrue` to
- `\_iffalse` by default unless the \~`\commentchars` are set. So, the main body
- of the loop is written in the `\_else` part of the `\_iftrue` condition.
- The \^`\_printverbline``{<line>}` is called here.
-
- The \`\_printverbline``{<line>}` expects that it starts in vertical mode and it must
- do `\par` 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`.
-
- \`\_putttpenalty` puts \^`\_ttpenalty` before second and next lines, but
- not before first line in each `\begtt...\endtt` environment.
- \_cod ----------------------------
-
-\_def\_printverb #1^^J#2{%
- \_ifx\_printverblinenum\_relax \_else \_incr\_ttline \_fi
- \_testcommentchars #1\_relax\_relax\_relax
- \_iftrue
- \_ifx\_end#2 \_printcomments\_fi
- \_else
- \_ifx\_vcomments\_empty\_else \_printcomments \_def\_vcomments{}\_fi
- \_ifx\_end#2
- \_bgroup \_adef{ }{}\_def\t{}% if the last line is emtpy, we don't print it
- \_ifcat&#1&\_egroup \_else\_egroup \_printverbline{#1}\_fi
- \_else
- \_printverbline{#1}%
- \_fi
- \_fi
- \_ifx\_end#2 \_let\_next=\_relax \_else \_def\_next{\_printverb#2}\_fi
- \_next
-}
-\_def\_printverbline#1{\_putttpenalty \_indent \_printverblinenum \_kern\_ttshift #1\par}
-\_def\_initverblinenum{\_tenrm \_thefontscale[700]\_ea\_let\_ea\_sevenrm\_the\_font}
-\_def\_printverblinenum{\_llap{\_sevenrm \_the\_ttline\_kern.9em}}
-\_def\_putttpenalty{\_def\_putttpenalty{\_penalty\_ttpenalty}}
-
- \_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 the beginning 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.
- A 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{\_string\verbinput: file "#3" unable to read}
- \_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 \_setxhsize
- \_begingroup
- \_ifnum\_ttline<-1 \_let\_printverblinenum=\_relax \_else \_initverblinenum \_fi
- \_setverb \_adef{ }{\_dsp}\_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}%
- \_catcode`\ =10 \_catcode`\%=9 % used in \commentchars comments
- \_ea\_printverb \_tmpb\_end
- \_global\_ttlinesave
- \_par
- \_endgroup
- \_ttskip
- \_isnextchar\_par{}{\_noindent}%
-}
-\_def\_vireadline{\_read\_vifile to \_tmp \_incr\_viline }
-\_def\_visaveline{\_ea\_addto\_ea\_tmpb\_ea{\_tmp}}
-
-\_public \verbinput ;
-
- \_doc -----------------------------
- If the language of your code\label[commentchars]\wlabel{}
- printed by \^`\verbinput` supports the
- format of comments started by two characters from the beginning of the
- line then you can set these characters by \^`\commentchars``<first><second>`.
- Such comments are printed in the non-verbatim mode without these two
- characters and they look like the verbatim printing is interrupted
- at the places where such comments are.
- See the section~\ref[lua] for good illustration.
- The file `optex.lua` is read by a single command
- `\verbinput (4-) optex.lua` here and the `\commentchars --` was set before it.
-
- If you need to set a special character by \^`\commentchars` then you must
- to set the catcode to 12 (and space to 13). Examples:
- \begtt
- \commentchars // % C++ comments
- \commentchars -- % Lua comments
- {\catcode`\%=12 \_ea}\commentchars %% % TeX comments
- {\catcode`\#=12 \catcode`\ =13 \_ea}\commentchars#{ } % bash comments
- \endtt
-
- There is one limitation when \TeX/ interprets the comments declared by
- \^`\commentchars`. Each block of comments is accumulated to one line
- and then it is re-interpreted by \TeX. So, the ends of lines in the
- comments block are lost. You cannot use macros which
- need to scan end of lines, for example `\begtt...\endtt` inside the comments
- block does not work. The character `%` is ignored in comments but you can use `\%`
- for printing or `%` alone for de-activating `\_endpar` from empty
- comment lines.
-
- Implementation: The \`\commentchars``<first><second>` redefines the \`\_testcommentchars`
- used in \^`\_printverb` in order to it removes the following `\_iftrue`
- and returns `\_iftrue` or `\_iffalse` depending on the fact that
- the comment characters are or aren't present at the beginning of tested line.
- If it is true (`\ifnum` expands to `\ifnum 10>0`) then the rest of the
- line is added to the \`\_vcomments` macro.
-
- The \`\_hicomments` is `\relax` by default but it is redefined by \^`\commentchars`
- in order to keep no-colorized comments if we need to use feature from
- \^`\commentchars`.
-
- The accumulated comments are printed whenever the non-comment line
- occurs. This is done by \`\_printcomments` macro.
- You can re-define it, but the main idea must be kept: it is printed in the
- group, `\_reloding \_rm` initializes normal font, `\catcodetable0`
- returns to normal catcode table used before `\verbinput` is started, and
- the text accumulated in `\_vcomments` must be printed by
- `\_scantextokens` primitive.
- \_cod -----------------------------
-
-\_def\_vcomments{}
-\_let\_hicomments=\_relax
-
-\_def\_commentchars#1#2{%
- \_def\_testcommentchars ##1##2##3\_relax ##4\_iftrue{\_ifnum % not closed in this macro
- \_ifx #1##1\_ifx#2##21\_fi\_fi 0>0
- \_ifx\_relax##3\_relax \_addto\_vcomments{\_endgraf}% empty comment=\enfgraf
- \_else \_addto\_vcomments{##3 }\_fi}%
- \_def\_hicomments{\_replfromto{\b\n#1#2}{^^J}{\w{#1#2####1}^^J}}% used in \hisyntax
-}
-\_def\_testcommentchars #1\_iftrue{\_iffalse} % default value of \_testcommentchar
-\_def\_printcomments{\_ttskip
- {\_catcodetable0 \_reloading \_rm \_everypar={}%
- \_noindent \_ignorespaces \_scantextokens\_ea{\_vcomments}\_par}%
- \_ttskip
-}
-\_public \commentchars ;
-
- \_doc -----------------------------
- The \`\visiblesp` sets spaces as visible characters \char9251.
- It redefines the \^`\_dsp`, so it is useful for verbatim modes only.
-
- The \`\_dsp` is equivalent to {\visiblesp`\ `} primitive.
- It is used in all verbatim environments: spaces are active and defined as
- `\_dsp` here.
- \_cod -----------------------------
-
-\_def \_visiblesp{\_ifx\_initunifonts\_relax \_def\_dsp{\_char9251 }%
- \_else \_def\_dsp{\_char32 }\_fi}
-\_let\_dsp=\ % primitive "direct space"
-
-\_public \visiblesp ;
-
-\_endcode
-
-\_endinput
-
-History:
-2020-01-22 ... \activettchar changed to \verbchar
-2020-12-30 ... \secc followed by \begtt must be unbreakable
-2020-11-13 ... \commentchars implemented
-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.
diff --git a/macros/luatex/optex/demo/op-biblist.bib b/macros/luatex/optex/demo/op-biblist.bib
deleted file mode 100644
index 691a02ea0e..0000000000
--- a/macros/luatex/optex/demo/op-biblist.bib
+++ /dev/null
@@ -1,298 +0,0 @@
-This is an example of .bib file using by OpTeX.
-Petr Olsak 2014
-----------------------------------------------------------
-See the section 1.5.3 of OpTeX documentation for more information.
-
-@BOOK{white,
- author = "David J. Whitehouse",
- title = "Handbook of surface and nanometrology",
- edition = "2nd",
- address = "Boca Raton",
- publisher = "CRC Press",
- year = 2011,
- isbn = "978-1-4200-8201-2",
- lang = "en",
-}
-@BOOK{lech,
- author = "Richard Lech",
- title = "Fundamental principles of engineering nanometrology",
- howpublished = "online",
- address = "Oxford",
- publisher = "Elsevier",
- year = 2009,
- isbn = "978-0-08-096454-6",
- citedate = "2011/08/29",
- url = "http://www.sciencedirect.com/science/book/9780080964546",
- option = "autrim:1",
-}
-@BOOK{Cmej,
- author = "Světla Čmejrková and František Daneš and Jindra Světlá",
- title = "Jak napsat odborný text",
- address = "Praha",
- publisher = "Leda",
- year = 1999,
- isbn = "80-85927-69-1",
- key = "Czzmejrkova",
-}
-@BOOK{ tbn,
- bibmark = "Ol00",
- author = "Petr Olšák",
- title = "\TeX{}book naruby",
- edition = "2.",
- address = "Brno",
- publisher = "Konvoj",
- year = 2001,
- isbn = "80-7302-007-6",
- url = "http://math.feld.cvut.cz/olsak/tbn.html",
- option = "urlalso",
-}
-@BOOK{ tst,
- author = "Petr Olšák",
- title = "Typografický systém \TeX{}",
- edition = "2.",
- address = "Brno",
- publisher = "Konvoj",
- year = 2000,
- url = "http://math.feld.cvut.cz/olsak/tst.html",
- isbn = "80-85615-91-6",
-}
-@BOOK{ tpp,
- author = "Petr Olšák",
- title = "\TeX{} pro pragmatiky",
- year = "2013",
- address = "Brno",
- publisher = "CsTUG",
- isbn = "978-80-901950-1-1",
- option = "titlepost:{\TeX{} -- CSplain -- OPmac}",
- howpublished = "online",
- url = "http://math.feld.cvut.cz/olsak/tpp.html",
-}
-@BOOK{texbook,
- author = "Donald Ervin Knuth",
- title = "The \TeX{}book",
- address = "Boston",
- publisher = "Addison-Wesley",
- year = 1984,
- isbn = "02-011-3448-9",
-}
-@BOOK{ rowling,
- author = "Robert Calbraith",
- option = "auprint:{\AU\space [pseudonym of J. K. Rowling]}",
- title = "The Cuckoo's Calling",
- address = "New York",
- publisher = "Mulholland Books",
- isbn = "0-316-20684-6",
- year = 2013,
-}
-@BOOK{ earle,
- author = "Richard Earle",
- title = "The art of cause marketing:
- how to use advertising to change personal behavior and public policy",
- ednote = "Cover and interior design by Monica \upper{Baziuk}",
- address = "New York",
- publisher = "McGraw-Hill",
- year = 2000,
- isbn = "0-07-138702-1",
- option = "yearprint:{\copyright2000}",
-}
-@BOOK{ novaci,
- author = "Jan Novák and Helena Nováková",
- title = "Alergenní rostliny",
- address = "Praha",
- publisher = "Knižní klub",
- year = 2010,
- isbn = "80-242-2591-3",
-}
-@BOOK{ adobe,
- author = "Adobe\ creative\ team",
- title = "Adobe Flash CS4 Professional: Oficiální výukový kurz",
- ednote = "Přeložil Lukáš \upper{Krejčí}",
- address = "Brno",
- publisher = "Computer Press",
- year = 2009,
- isbn = "80-251-2334-8",
-}
-@BOOK{ nierhaus,
- author = "Grehard Nierhaus",
- title = "Algorithmic Composition: Paradigms of Automated Music Generation",
- address = "Wien",
- publisher = "Springer",
- year = 2009,
- isbn = "3-211-77539-6",
- url = "http://www.springerlink.com/content/g7h129",
- option = "yearprint:{\copyright2009} urlalso",
-}
-@BOOK{ taschen,
- author = "Laszlo Taschen",
- title = "Modern architekture A-Z",
- ednote = "vol. 1, A-L",
- address = "Köln",
- publisher = "Tashen",
- year = 2010,
- isbn = "383-6521-321",
-}
-@ARTICLE{ opmactug,
- author = "Petr Olšák",
- title = "OPmac: Macros for Plain \TeX",
- journal = "TUGboat",
- publisher = "\TeX{} Users Group",
- year = 2013,
- volume = 34,
- number = 1,
- pages = "88--96",
- issn = "0896-3207",
- url = "http://petr.olsak.net/ftp/olsak/bulletin/tb106olsak-csplain.pdf",
- option = "urlalso",
- lang = "en",
-}
-@ARTICLE{ optextug,
- author = "Petr Olšák",
- title = "\OpTeX/ -- A new generation of Plain \TeX/",
- journal = "TUGboat",
- publisher = "\TeX{} Users Group",
- year = 2020,
- volume = 41,
- number = 3,
- pages = "348--354",
- issn = "0896-3207",
- url = "http://petr.olsak.net/ftp/olsak/bulletin/tb128olsak-optex.pdf",
- option = "urlalso",
- lang = "en",
-}
-@THESIS{ mirekB,
- author = "Miroslav Olšák",
- title = "Kvadratické rovnice na slovech",
- school = "Univerzita Karlova v~Praze, fakulta Matematicko-fyzikální",
- address = "Praha",
- year = 2013,
- url = "http://www.olsak.net/mirek/bakalarka/",
- type = "Bakalářská práce",
- option = "urlalso",
-}
-@THESIS{ mirekM,
- author = "Miroslav Olšák",
- title = "Součiny Fréchetovských prostorů",
- school = "Univerzita Karlova v~Praze, fakulta Matematicko-fyzikální",
- address = "Praha",
- year = 2015,
- url = "http://www.olsak.net/mirek/diplomka/",
- type = "Diplomová práce",
- option = "urlalso",
-}
-@THESIS{ mirekD,
- author = "Miroslav Olšák",
- title = "Generalizing CSP-related results to infinite algebras",
- school = "Univerzita Karlova v~Praze, fakulta Matematicko-fyzikální",
- address = "Praha",
- year = 2019,
- url = "https://dspace.cuni.cz/handle/20.500.11956/108756",
- type = "Disertační práce",
- option = "urlalso",
- lang = "en",
-}
-@INBOOK{ zakonVS,
- author = "Česko",
- title = "Zákon č. 111 ze dne 22. dubna 1998 o vysokých školách a o změně a
- doplnění dalších zákonů (zákon o vysokých školách)",
- booktitle = "Sbírka zákonů České republiky",
- year = 1998,
- series = "částka 39, s. 5388--5419",
- url = "http://aplikace.mvcr.cz/archiv2008/sbirka/1998/sb039-98.pdf",
- issn = "1211-1244",
- option = "urlalso unpublished",
- key = "Czzesko",
-}
-@INBOOK{ lonka,
- author = "Kristi Lonka",
- title = "Helping doctoral students to finish their theses",
- booktitle = "Teaching academic writing in European higher education",
- editor = "Lennart Björk and Gerd Bräuer and Lotte Reinecker and Peter Stray Jörgensen",
- address = "Dordrecht",
- publisher = "Kluwer Academic Publ.",
- year = 2003,
- pages = "113--131",
- isbn = "1-4020-1208-X",
- option = "edprint:{\ED,~eds.}",
-}
-@INBOOK{ demay,
- author = "Y. Demay",
- title = "Computation of 2D viscoelastic flows for a differential constitutive equation",
- editor = "J-M. Piau and J-F. Agassant",
- booktitle = "Rheology for Polymer Melt Processing",
- howpublished = "online",
- publisher = "Elsevier",
- year = 2011,
- numbering = "s.~237--255",
- isbn = "0444822369",
- citedate = "2011/08/29",
- url = "htpp://www.sciencedirect.com/science/article/pii/S0169310796800098",
- option = "nowarn",
-}
-@INPROCEEDINGS{ distler,
- author = "Tobias Distler and Rüdiger Kapitza",
- title = "Increasing performance in Byzantine fault-tolerant systems on-demand replica consistency",
- booktitle = "Proceedings of the Eurosys' 2011 conference. April 10 -- April 13, 2011, Salzburg, Austria",
- address = "New York",
- publisher = "Association of computer machinery",
- year = 2011,
- numbering = "pp.~91--105",
- isbn = "1-4503-0634-8",
-}
-@INPROCEEDINGS{ talich,
- author = "Milan Talich and Filip Antoš",
- title = "Metody a postupy doigitalizace a online zpřístupnění starých kartografických děl",
- howpublished = "online",
- booktitle = "INFORUM 2011: 17. ročník konference o profesionálních informačních zdrojích,
- 24.--26. května 2011, Vysoká škola ekonomická v Praze",
- option = "unpublished",
- url = "http://www.inforum.cz/pdf/2011/talich-milan.pdf",
- citedate = "2011/08/29",
- year = 2011,
- option = "nowarn",
-}
-@ARTICLE{ mansouri,
- author = "Majdi Mansouri and Quachani Ilham and Hicham Snoussi and Richard Cédric",
- title = "Adaptive quantized target tracking in wireless sensors networks",
- journal = "Wireles Networks",
- number = 7,
- volume = 17,
- pages = "1625--1639",
- lang = "en",
- option = "nowarn",
-}
-@ARTICLE{ calafiore,
- author = "Giuseppe C. Calafiore and Fabrizio Dabbene and Roberto Tempo",
- title = "Research~ on probabilistic methods for control system design",
- journal = "Automatica",
- howpublished = "online",
- Publisher = "Elsevier",
- month = "July",
- year = 2011,
- volume = 47,
- number = 7,
- pages = "1279--1293",
- issn = "0005-1090",
- citedate = "2011/07/17",
- doi = "10.1016/j.automatica.2011.02.029",
- lang = "en",
-}
-@MISC{ bowles,
- title = "What is fluid technology?",
- ednote = "Bowles Fluidics Corp.",
- citedate = "2011/10/10",
- url = "http://www.bowlesfluidics.com/capabilites/technology/",
- key = "zzzz"
-}
-@MISC{ biernatova,
- author = "Olga Biernátová and Jan Skůpa",
- title = "Bibliografické okazy a citace dokumentů: dle ČSN ISO 690 (01~0197) platné od 1. dubna 2011",
- ednote = "Brno, 2011. Vytvořeno ve spolupráci s portálem citace.com",
- url = "http://www.citace.com/dokumenty.php",
-}
-@MISC{ trtikova,
- author = "Ilona Trtíková and Ludmila Tichá",
- title = "Jak citovat",
- ednote = "Ústřední knihovna ČVUT, 2011, 2012, 2013",
- citedate = "2014/04/22",
- url = "http://knihovna.cvut.cz/studium/jak-psat-vskp/doporuceni/jak-citovat/",
-}
diff --git a/macros/luatex/optex/demo/op-demo.tex b/macros/luatex/optex/demo/op-demo.tex
deleted file mode 100644
index e17b2f0b2f..0000000000
--- a/macros/luatex/optex/demo/op-demo.tex
+++ /dev/null
@@ -1,127 +0,0 @@
-%% This is part of the 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
-\verbchar` % 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 the `\frame` sequence
-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 `\verbchar` 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 an 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
diff --git a/macros/luatex/optex/demo/op-letter-cs.tex b/macros/luatex/optex/demo/op-letter-cs.tex
deleted file mode 100644
index b6883cb74c..0000000000
--- a/macros/luatex/optex/demo/op-letter-cs.tex
+++ /dev/null
@@ -1,41 +0,0 @@
-%% This is part of the 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
diff --git a/macros/luatex/optex/demo/op-letter-en.tex b/macros/luatex/optex/demo/op-letter-en.tex
deleted file mode 100644
index 0154e48c01..0000000000
--- a/macros/luatex/optex/demo/op-letter-en.tex
+++ /dev/null
@@ -1,38 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\useOpTeX
-
-\letter % \letter OpTeX style activated
-\enlang \enquotes % Language and quote style
-\fontfam[bonum]
-
-\hfill\address
- Alice Author
- 123 Sender Street
- City 4567
-
-\bigskip
-
-\address
- Mr. Bobby Bureaucrat
- 456 Magnolia Street
- City 8901
-
-\hfill\today
-
-\subject Inquiry regarding \"lorem ipsum"
-
-Dear Mr. Bureaucrat,
-
-\lorem[1-2] % 2 paragraphs of blindtext
-
-Thank you for your time.
-
-With best regards,
-
-\bigskip % leave some space for signature
-\bigskip
-
-Alice Author
-
-\bye
-
diff --git a/macros/luatex/optex/demo/op-ring.png b/macros/luatex/optex/demo/op-ring.png
deleted file mode 100644
index de7811df83..0000000000
--- a/macros/luatex/optex/demo/op-ring.png
+++ /dev/null
Binary files differ
diff --git a/macros/luatex/optex/demo/op-slides-bg.png b/macros/luatex/optex/demo/op-slides-bg.png
deleted file mode 100644
index 4ac1ad8c38..0000000000
--- a/macros/luatex/optex/demo/op-slides-bg.png
+++ /dev/null
Binary files differ
diff --git a/macros/luatex/optex/demo/op-slides.tex b/macros/luatex/optex/demo/op-slides.tex
deleted file mode 100644
index 50bcdaffa6..0000000000
--- a/macros/luatex/optex/demo/op-slides.tex
+++ /dev/null
@@ -1,322 +0,0 @@
-%% This is part of the 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{op-slides-bg.png} % background picture
-
-\verbchar` % inline verbatim
-\enquotes % English quotes \"..."
-
-\slideshow %------------------------------------------------------------
-
-
-\tit \OpTeX/ slides
-
-\subtit Petr Olšák\nl petr@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 a 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.
-* No paragraph indentation, 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.\nl
- If `\fontfam[<famname>]` precedes `\slides` then it rewrites default.
-* The items in lists are started by a 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 on 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 to `\slideshow`
-
-* 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 this case.\pg+
-* If `\slideshow` then each part of page between two `\pg`'s or between
- `\slideshow` and the first `\pg` is processed in a local group.
-* If not `\slideshow` then the document is not separated to groups.
- This can lead to different results. So, you can put `\slideopen` command
- instead of `\slideshow`. Then local groups are opened exactly as when
- `\slideshow` is used but `\slideshow` is not activated. Example:
-
-\begtt
-\slides
-\def\foo...{...} % global definitions.
-%\slideshow % printing version, no slide show.
-\slideopen % opens group for first page.
-... first page
-\pg; % closes group and opens group for second page.
-... second page
-\pg. % closes group of the last page.
-\endtt
-
-\pg; %------------------------------------------------------------------
-
-\sec More about design
-
-* You can use `\backgroundpic{<image-file>}` for putting an image to the background.
-* You can re-declare `\footline` or re-define internal macros for design as
- you wish.
-* The TeXGyre Heros font is used as default text font, the FiraMath is used
- for math.
-* If you want to use another text font fmaily, use `\fontfam`
- {\em before} `\slides` command.
-* If you want to use different math font, use
- `\loadmath{[font]}` before `\fontfam` (if used) and before `\slides`. For example:
-
-\begtt
-\loadmath{[Asana-Math]} % Math font: Asana
-\fontfam[Termes] % Text font: Termes
-\slides
-...
-\endtt
-
-* 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 the 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
-`\use{=3}{do something}` does something only if `\layernum=3`.
-
-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 a 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 on the contents of your document, not on 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 eleven
- slides\fnote{this twelfth 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 ----------------------------
-
diff --git a/macros/luatex/optex/doc/omls.tex b/macros/luatex/optex/doc/omls.tex
deleted file mode 100644
index bcc5749a51..0000000000
--- a/macros/luatex/optex/doc/omls.tex
+++ /dev/null
@@ -1,832 +0,0 @@
-\fontfam[lm]
-
-\adef<#1>{\ifcsname s:#1\endcsname
- \link[s:#1]{}{\Blue$\langle$\hbox{\it#1\/}$\rangle$}%
- \else {\Blue$\langle$\hbox{\it#1\/}$\rangle$}\fi}
-\everyintt={\catcode`<=13 \Red}
-\verbchar`
-\enlang
-\enquotes
-
-\def\r[#1]{\label[#1]\wlabel{\the\_itemnum}}
-\def\:{$\to$}
-\let\_narrowlastlinecentered=\ignoreit
-\_def\_printsecc#1{\_par
- \_abovetitle{\_penalty-200}{\_medskip\_smallskip}
- {\_seccfont \_noindent \_raggedright \_printrefnum[@\_quad]%
- \_label[\the\_secnum.\the\_seccnum]\wlabel{\the\_secnum.\the\_seccnum}#1\_nbpar}%
- \_nobreak \_belowtitle{\_medskip}%
- \_firstnoindent
-}
-\def\.`{\bgroup\catcode`\ =12 \scancs}
-\def\scancs#1{\egroup
- \immediate\_wref\Xknowncs{\string#1{\the\_secnum.\the\_seccnum}}%
- \ea`\string#1%
-}
-\def\printcs#1{\ea\printcsred\csstring#1;~\ref[#1] \ }
-\def\printcsred,#1;{{\Red\tt \bslash#1}}
-\def\printknowncs{\ifx\knowncslist\undefined \let\knowncslist=\empty \fi
- \ifx\knowncslist\empty TeX me again...\else
- \_dosorting\knowncslist \ea\xargs \ea\printcs \knowncslist;\fi}
-
-\def\~`<#1>`{<#1>\sxdef{s:#1}{}\dest[s:#1]}
-
-\refdecl{
- \def\knowncslist{}^^J
- \def\Xknowncs#1#2{%
- \sxdef{,\csstring#1}{#2}%
- \global\ea\addto\ea\knowncslist\ea{\csname,\csstring#1\endcsname}%
- }
-}
-\sdef{_item:c}{\pdfsave\llap{\pdfscale{1.3}{1.3}$\circ$\enspace}\pdfrestore}
-
-%\parindent=15pt \iindent=\parindent \ttindent=\parindent
-%\ttindent=0pt
-\everylist={\advance\ttindent by-1em}
-\hyperlinks \Green \Green
-\def\cskip{\par\nobreak}
-\def\begblock{\medskip\hbox\bgroup\vrule\vbox\bgroup\hrule\smallskip
- \_fnset\leftskip=\parindent \rightskip=\parindent \medskip\noindent}
-\def\endblock{\medskip\hrule\egroup\vrule\egroup}
-
-\def\raggedright{\rightskip=10pt plus1fil\relax}
-\def\optexmanual{\ulink[http://petr.olsak.net/ftp/olsak/optex/optex-doc.pdf]{\OpTeX/ manual}}
-
-\titskip=1cm
-
-\hfill Version 0.1
-
-\tit \OpTeX/ Markup Language Standard
-
-{\it\hfil Petr Olšák, 2021}\bigskip
-
-The \OpTeX/ markup language standard (OMLS) declares a list of control
-sequences used in \OpTeX/ documents including their syntax and sematic. The
-listed control sequences in OMLS in section~\ref[listcs] in table~\ref[alistcs]
-are called {\it known} and other control sequences are {\it unknown}.
-
-The main reason for OMLS is to give instructions on how to program convertors
-from \OpTeX/ documents to another formats (Html, Markdown, \LaTeX/) or how
-to interpret the \OpTeX/ document sources in such applications as
-{\tt texcount} or text editors\fnote
-{We suppose advanced editor features: color highlighting, sections/chapters folding,
- auto-completions, etc.}.
-These converters and applications are called {\it cnv-programs} in this document.
-
-We suppose that if you need absolute control over the typography of the
-document when it is converted to PDF pages, then you use \OpTeX/ itself. If
-you need to create other formats of the same document then you can use a
-cnv-program which accepts OMLS. The result is a document without
-typographical instructions like dimensions of pages, margins, paginations
-and headers, selection of a font-family, dimensions of the fonts, etc.\ You can
-imagine the result of such a conversion as a single Html page where more
-typographical features can be controlled in a different way, for example by
-an external CSS file. This is a reason why control sequences like `\fontfam` or
-`\margins` are ignored by cnv-programs.
-
-Obviously, \TeX/ and \OpTeX/ itself gives possibility to declare various
-input formats for various purposes. Sometimes (in very special cases) there
-exists a good reason to declare a different and special input format by
-\TeX/ macros. But if the source of the document respects the OMLS then it is
-reasonably transformable to other formats by cnv-programs. We hope that
-OMLS-ready documents cover a very large set of typical documents used these
-days.
-
-We suppose that cnv-programs work internally with strings of source lines
-without tokenization. This is one of the great differences in processing the
-document directly by \OpTeX/ and using a cnv-program. The second difference is
-that the expansion process of macros is not implemented in cnv-programs in
-its full range. We respect that the result of cnv-programs will be different
-than from processing directly by \OpTeX/. But this is not a bug, this is
-the feature. We concentrate on the fixed syntax and sematic given by OMLS of the
-\OpTeX/ document and we throw behind the head the typographical
-exactness of the document which can be done only directly by \TeX/ (and it is
-exactly described in \TeX/book, for example).
-
-\notoc\nonum\sec Table of contents
-
-\begmulti 2
-\maketoc
-\endmulti
-\vfil\break
-
-\sec Syntactical rules
-
-The syntactical elements are described as strings here. No \TeX/'s tokenization is
-taken into account. The rule with a smaller number has precedence.
-
-\begitems \style n
-* end of line or end of file \: \~`<eol>`.\r[eol]
-* `%%:` at beginning of the line \: \~`<cnv-declarator>`, see section~\ref[cnv-decl].
-* `<cnv-declarator><text><eol>` is interpreted specially.
-* space or a tab-character \: \~`<space>`.
-* non-empty sequence of `<space>`s \: \~`<spaces>`.\r[spcs]
-* an empty line or a line only with `<spaces>` \: \~`<empty-line>`.
-* a character `a`--`z` or `A`--`Z` \: \~`<letter>`.
-* a `<letter>` or `_` \: \~`<specletter>`.
-* a character different from previous rule or `<eol>` or `<spaces>` \: \~`<non-specletter>`
-* `\<non-specletter>` \: \~`<singlechar-control-sequence>`.\r[scs]
-* a non-empty sequence of `<specletter>`s \: \~`<letters-seq>`.
-* `\<letters-seq><non-specletter>` \: \~`<multiletter-control-sequence>``<non-specletter>`.
-* `%<text><eol>` \: `<comment>` and it is completely ignored including `<eol>`.\r[com]
-* `<spaces>` at beginning of the line marks that the line as {\it indented}.
-* `<spaces>` at beginning of the line \: are ignored.\r[bspace]
-* `<spaces><eol>` or `<eol>` \: `<spaces>`.\r[eolrm]
-* `<multileter-control-sequence><spaces>` \: `<multileter-control-sequence>`.\r[csspace]
-* `<multiletter-control-sequence>` or `<singlechar-control-sequence>` \: \~`<control-sequence>`.\r[cs]
-* `<spaces>` \: `<space>`.\r[sspace]
-* `~` \: non-breakable space.
-* text where all pairs `{` and `}` match at arbitrary level \: \~`<balanced-text>`.\r[balt]
-* `{<balanced-text>}` can be interpreted as a parameter of a `<control-sequence>`, see section~\ref[listcs].
-* The `{` alone not used by previous rule opens a group and the `}` alone closes the same group.\r[group]
-* There are two main modes: h-mode, v-mode\fnote
- {this is great simplification of real \TeX/ modes.}.
- The document processing starts in v-mode.
-* In v-mode: a `<non-space>` character or a control sequence listed
- in table~\ref[vtohmode] swithes to h-mode.
-* In h-mode: an `<empty-line>` or a control sequence listed in table~\ref[htovmode] switches to v-mode.\r[htov]
-* The switching from v-mode to h-mode \: a paragraph begins.
-* The switching from h-mode to v-mode \: the current paragraph ends.
-* `$<text>$` or `$$<text>$$` \: process `<text>` in math-mode, see section~\ref[math].
-* a non-empty sequence of digits with optional `+` or `-` in the front \: \~`<number>`.
-* `<number>` with optional dot inside the sequence of digits \: \~`<decimal-number>`.
-* a pair of letters listed in the table~\ref[tex-units] \: \~`<tex-unit>`.
-* optional space, i.e.\ `<space>` or nothing \: \~`<o-space>`.
-* `<decimal-number><o-space><tex-unit><o-space>` \: \~`<dimen>`.
-* `<control-sequence>` not listed in table~\ref[alistcs] nor in configuration \: \~`<unknown-control-sequence>`.\r[unkncs]
-* `=<o-space>` or `<o-space>` \: \~`<o-equal>`.
-* `<unknown-control-sequence><o-equal><dimen>` \: should be completely ignored.\r[eqdim]
-* `<unknown-control-sequence><o-equal><number>` \: should be completely ignored.
-* `<unknown-control-sequence>=<o-space>{<balanced-text>}` \: should be completely ignored.
-* `<unknown-control-sequence>[<balanced-text>]` \: should be completely ignored.\r[ibkt]
-* `<unknown-control-sequence>` \: should be ignored.\r[ignore]
-* `<control-sequence>`s are processed as described in section~\ref[listcs] or
- by a configuration of the cnv-program.
-\enditems
-
-\bigskip
-\label[vtohmode]\caption/t
-List of control sequences which switch from v-mode to h-mode.
-\cskip
-\begblock
-`\`<space>,
-`\hfil`,
-`\hfill`,
-`\hskip`,
-`\hss`,
-`\indent`,
-`\leavevmode`,
-`\noindent`,
-`\quad`,
-`\qquad`,
-`\vrule`.
-\endblock
-
-\bigskip
-\label[htovmode]\caption/t
-List of control sequences which switch from h-mode to v-mode.
-\cskip
-\begblock
-`\begblock`,
-`\begitems`,
-`\begmulti`,
-`\begtt`,
-`\bib`,
-`\bigskip`,
-`\bye`,
-`\caption`,
-`\chap`,
-`\cskip`,
-`\end`,
-`\endblock`,
-`\enditems`,
-`\endmulti`
-`\hrule`,
-`\medskip`,
-`\par`,
-`\sec`,
-`\secc`,
-`\secl`,
-`\smallskip`,
-`\vfil`,
-`\vskip`.
-\endblock
-
-\bigskip
-\label[tex-units]\caption/t
-List of \TeX/ units.
-\cskip
-\begblock
-`bp`,
-`cc`,
-`cm`,
-`dd`,
-`em`,
-`ex`,
-`in`,
-`mm`,
-`pc`,
-`pt`,
-`sp`.
-\endblock
-
-\nonum\secc Examples
-
-\begitems
-* `\%` is `<control-sequence>` by rules \ref[scs], \ref[cs]. It does not start
- comment, because rule \ref[scs] has precedence before rule \ref[com].
-* `\%<space>`: the `<space>` is kept, but `\foo<space>`: the space is removed
- by rule~\ref[csspace].
-* `wordA<spaces><eol><spaces>wordB` is `wordA<space>wordB` by rules~\ref[bspace],
- \ref[eolrm], and~\ref[sspace].
-* `\kern-3pt` should be ignored, because `\kern` is `<unknown-control-sequence>` and rule
- \ref[eqdim] is applied.
-* `\vskip42mm` should finalize paragraph in h-mode by rule~\ref[htov] and then it
- is ignored by rule~\ref[eqdim] because `\vskip` is
- `<unknown-control-sequence>` not listed in table~\ref[alistcs].
-* `\typosize[12/16]` is ignored by rule~\ref[ibkt].
-* `\foo{text}` is `{text}` (i.e. `text` in a group) by rules~\ref[ignore] and~\ref[group].
-\enditems
-
-\sec Scanning parameters
-
-If a control sequence listed in rules above or in the section~\ref[listcs]
-has a parameter, the parameter is scanned
-as a string with interpretation only those rules which are needed to
-determine the boundary of the parameters. For example `\tit <title><eol>`
-applies only rule~\ref[eol] during scanning the parameter, i.e.\ `<title>`
-is a string telemetered by the end of the line or the end of the file.
-Or `\fnote{<balanced-text>}` applies only rule~\ref[balt].
-
-If the parameter is in the format `{<something>}` then the `<something>` is
-always meant as `<balanced-text>`. We don't specify the type `<balanced-text>`
-explicitly here, so we refer to `\fnote{<text>}` and not
-`\fnote{<balanced-text>}`, for example.
-
-The spaces before the scanned parameter are optional
-and they are ignored. Spaces inside `{`...`}` are not ignored.
-
-If the parameter is in the format `{<something>}` and the first non-space
-character is not `{` then the parameter is this first non-space character or
-a `<control-sequence>` if the first non-space character is~`\`. For example
-`\fnote a` is equal to `\fnote{a}`. The difference from this rule is given
-for `\input`, `\verbinput`,`\inspic` and `\inkinspic` control sequences in
-section~\ref[listcs].
-
-If the parameter is scanned as a string already then
-all syntactical rules are applied when it is used. For example:
-\begtt
-\tit This is a title
-\endtt
-the parameter is scanned as `This is a title` and the rules~\ref[spcs]
-and~\ref[sspace] are applied when it is used.
-
-
-\sec Declaration and text parts of the document
-
-A typical \OpTeX/ document has two parts. A declaration part, where
-macros are defined by `\def` and friends, fonts and sizes are declared, etc.
-This part should be ignored by cnv-programs.
-The second part includes the document text with a markup using well-declared control
-sequences. The cnv-program has to interpret the second part.
-
-So, the cnv-program starts in declaration-skipping mode and it switches to
-the text mode later.
-
-When cnv-program is in declaration-skipping mode then all indented lines are
-ignored. And lines which begins by `}` or by a <control-sequence> not listed
-in table~\ref[textopen] are ignored too.
-
-If the line begins by a character other than `}` or by a <control-sequence>
-listed in table~\ref[textopen] then cnv-program switches to text mode. All
-texts are interpreted from this line including this one.
-
-User can say explicitly where the second part of the document starts by
-`%%:text` given at beginning of a line. Moreover, if `%%:decl` is given at
-beginning of a line, then all text between `%%:decl` and `%%:text` is
-ignored, only other possible `<cnv-declarator>`s are processed here.
-It means that the declaration part and the text part of the document can be
-simply determined by the pair `%%:decl` and `%%:text`.
-
-\bigskip
-\label[textopen]\caption/t
-List of control sequences which start the text mode.
-\cskip
-\begblock \raggedright
-`\address`,
-`\begblock`,
-`\begitems`,
-`\begmulti`,
-`\begtt`,
-`\bf`,
-`\bi`,
-`\bib`,
-`\caption`,
-`\cite`,
-`\clipinoval`,
-`\clipincircle`,
-`\ecite`,
-`\fnote`,
-`\frame`,
-`\hfil`,
-`\hfill`,
-`\ii`,
-`\iid`,
-`\incircle`,
-`\inkinspic`,
-`\inoval`,
-`\inspic`,
-`\it`,
-`\LaTeX`,
-`\LuaTeX`,
-`\maketoc`,
-`\mnote`,
-`\OpTeX`,
-`\putpic`,
-`\puttext`,
-`\rcite`,
-`\rm`,
-`\rotbox`,
-`\sec`,
-`\secc`,
-`\secl`,
-`\table`,
-`\TeX`,
-`\tit`,
-`\usebib`,
-`\verbinput`.
-\endblock
-
-
-\sec[cnv-decl] The `%%:` declarators
-
-The `%%:` declarators are ignored when the document is processed by \TeX/
-but they can give instructions to cnv-programs. The `%%:` must be placed at
-beginning of the line. The list of `%%:` declarators follows:
-
-\begitems
-* `%%:decl` -- the following text is ignored until `%%:text` occurs. Only
- other `%%:` declarators are interpreted.
-* `%%:text` -- the following text must be interpreted in text mode.
-* `%%:to <format> <config-file>` -- if the cnv-program converts to the
- <format> then it has to use the <config-file>. For example:
- \begtt
- %%:to html html-mydocument.cfg
- %%:to markdown markdown-mydocument.cfg
- %%:to latex preamble-mydocument.cfg
- \endtt
- The language of the config files are not a part of this standard, we
- suppose something to be natural for used cnv-program. The config file should
- give additional rules for interpreting control sequences not listed in the
- section~\ref[listcs] (see rule~\ref[unkncs]). For example a tool for
- defining a behavior of unknown control sequences can be here.
- These definitions can depend on the converted document and on the output
- format and they can be given in the configuration files.
-* `%%:app <application> <config-file>` -- behaves like `%%;to` but the
- cnv-program name instead output format is given here.
-* `%%:do <format-or-app> <action>` -- does an `<action>` if `<format-or-app>`
- is output format or used cnv\hbox{-}program name. The `<action>` syntax depends
- on used cnv-program and it typicaly does a change in its configuration or
- give a command to it.
-* `%%:skip <formats-or-apps>` -- ignores all following lines until another `%%:` occurs
- if the output format or application name is included in the `<formats-or-apps>`
- space-separated list. Example:
- \begtt
- %%:skip html markdown
- This text is not interpreted when Html or Markdown output is generated.
- %%:
- \endtt
- If the `<formats-or-apps>` is empty then the `%%:skip` is applied for
- each cnv-program and for each output.
-* `%%:if <formats-or-apps>` -- processes following lines until another `%%:`
- only if the output format or application name is included in the
- `<formats-or-apps>` space-separated list. Other cnv-programs or output formats
- not mentioned here skip these lines. Note that \TeX/ processes such lines always.
- But you can use `\ignoreit{<text>}` which is processed as
- `{<text>}` by cnv-programs (see rule~\ref[ignore]) but it is ignored by \OpTeX.
- Example:
- \begtt
- %%:if html latex
- \ignoreit{\input{file.tex}}
- %%:
- \endtt
- The `file.tex` in this example is processed only if \LaTeX/ or Html output is generated.
-* `%%:use` -- the next single line is fully interpreted unless cnv-program ignores
- declarations by `%%:decl` or because it is in declaration-skipping mode.
- Example:
- \begtt
- %%:use
- \verbchar` \picdir={img/}
- \endtt
- The example shows how cnv-program is able to read `\verbchar` or
- `\picdir` settings in the declaration\hbox{-}skipping mode although these control
- sequences are not listed in table~\ref[textopen].
-* `%%:quotes <qql> <qqr> <ql> <qr>` -- declares \~`<qql>` and \~`<qqr>` (left
- and right double quotation marks), \~`<ql>` and \~`<qr>` (left and right single
- quotation mark). They are used when `\"` or `\'` control sequences are
- processed. Default: unset, i.e.\ `\"` and `\'` are interpreted as
- unknown control sequences.
-\enditems
-
-
-\sec[listcs] List of known control sequences
-
-The phrase \"should be" is used very often when the interpretation of
-control sequences is declared here. It means that this is only a common
-interpretation, but differences are possible due to the type of the output
-format and used cnv-program. For example, when we convert to \LaTeX\, then
-`\-` and `\/` are not ignored but they are re-written without change to the
-output of the \LaTeX/ source file.
-
-\bigskip
-\label[alistcs]
-\caption/t List of known control sequences alphabeticaly sorted.
-\cskip
-\begblock
-\raggedright \printknowncs
-\endblock
-
-
-\secc Character-like control sequences
-
-\begitems
-* \.`\%`, \.`\$`, \.`\&`,\.`\#` respectively \: should be normal characters
- `%`, `$`, `&`, `#` respectively.
-* \.`\bslash` \: normal character `\`.
-* \.`\space`, `\<space>`, `\<eol>` \: space.
-* `\,` \: should be small space or space.
-* \.`\quad`, \.`\qquad` \: should be bigger space or more spaces.
-* \.`\-`, \.`\/` \: should be ignored.
-* \.`\"<text>"` or \.`\'<text>'` \: `<qql><text><qqr>` or `<ql><text><qr>`,
- only if `%%:quotes` are set.
-\enditems
-
-\secc Input files
-
-\begitems
-* \.`\input {<file-name>}` or `\input <file-name><space>` should redirect the
- input to given file. At the end of the input-ed file or at \.`\endinput` the
- reading of the current file continues. The file is read from the current
- directory, but the <file-name> should include the full path to the file
- or relative path starting from the current directory. First, the file
- `<file-name>.tex` is tried to read and if it doesn't exist then
- the file `<file-name>` is read.
-* \.`\picdir <o-equal>{<text>}` saves `<text>` to `<picdir-value>`. By
- default, `<picdir-value>` is empty.
-* \.`\inspic {<file-name>}` or `\inspic <file-name><space>` should include the
- given picture from the `<picdir-value><file-name>`.
-* \.`\inkinspic {<file-name>}` or `\inkinspic <file-name><space>` behaves like
- `\inspic`.
-* \.`\verinput <ignore> (<lines>) <file-name><space>` should include the
- <file-name> (only given lines) as a verbatim text, i.\,e. without any
- syntactical interpretation.
-* \.`\usebib/<letter> (<style>) <file-names>` should use files from
- `<file-names>` to generate the list of bib references. The `<file-names>`
- is comma separated list (the `.bib` extension is appended to
- each such file name). Only cited bib records should be used in this
- bib-references, i.e. their label must be used in a `\cite[<labels>]` or
- `\rcite[<labels>]` or `\ecite[<label>]`.
- What bib fields are used in bib records depends on the cnv-program and
- on its configuration. Maybe, simple cnv-programs should generate nothing here.
-\enditems
-
-\secc Titles
-
-\begitems
-* \.`\tit <title><eof>` should be a title of the document.
-* \.`\chap <title><eof>` or `\chap [<label>] <title><eof>` is the title of
- first level.
-* \.`\sec <title><eof>` or `\sec [<label>] <title><eof>` is the title of
- second level.
-* \.`\secc <title><eof>` or `\secc [<label>] <title><eof>` is the title of
- third level.
-* \.`\secl<level> <title><eof>` is the title of given level.
-\enditems
-
-\secc Fonts
-
-\.`\rm` selects upright normal font (it is selected by default), \.`\it` selects
-italic, \.`\bf` selects upright bold font, \.`\bi` selects bold italic and
-\.`\tt` selects a monospaced font, \.`\em` select italic (if upright is current) or upright
-(if italic is current). The font sizes or other font features are typically ignored
-by cnv-programs. The actual font selection is closed at the end of the current group.
-The groups are given:
-\begitems
-* explicitly by `{` and `}` characters (which are not delimiters of
- parameters of known control sequences),
-* implicitly: parameters of control sequences listed in table~\ref[groupcs]
- are processed in a group and blocks of text enclosed by
- `\begitems`...`\enditems`, `\begblock`...`\endblock`, `\begmulti`...`\endmulti`
- are processed in a group.
- Each item in `\table` is in a group.
-\enditems
-
-\label[groupcs]
-\caption/t Parameters of following control sequences are processed in a group.
-\cskip
-\begblock
-`\caption`,
-`\chap`,
-`\fnote`,
-`\mnote`,
-`\sec`,
-`\secc`,
-`\tit`.
-\endblock
-
-\secc Colors
-
-\.`\Red`, \.`\Green`, \.`\Blue`, \.`\Cyan`, \.`\Magenta`, \.`\Yellow`, \.`\White`,
-\.`\Black`, and \.`\Brown` should select the given color of the font. The selection
-is closed at the end of the current group (like font selectors).
-
-\secc Blockquotes
-
-The blockquote\fnote
-{The terminology is borrowed from Markdown.}
-is opened by \.`\begblock` and closed by \.`\endblock`.
-Blockquotes can contain multiple paragraphs and can contain nested
-blockquotes.
-
-\secc Lists
-
-The list is opened by \.`\begitems` and closed by \.`\enditems`. The `*` starts
-a new item in this environment. Nested lists are allowed.
-
-The type of items (ordered/unordered)
-is given by \.`\style <character>`, see section 1.4.5 in the
-\optexmanual. Default type is unordered (bullets are used).
-
-
-\secc Code blocks (verbatim texts)
-
-Code blocks are inline verbatim or display verbatim.
-
-\begitems
-* \.`\begtt <ignored><eol><text>\endtt<ignored><eol>` processes `<text>` in
- \"display verbatim mode", i.\,e. there are no special characters, each character
- is processed without special interpretation, the <eol>s are end of lines.
- The text at the same line after `\begtt` and after `\endtt` (if any) is
- ignored.
-* \.`\verbchar <character>` declares `<verbchar>`. By default, it is undeclared.\nl
- New `\verbchar <character>` rewrites previous setting. The setting is
- local in the group.
-* Inline verbatim is enclosed in the pairs of `<verbchar>`s.
- The text between two `<verbchar>`s is processed without special interpretation.
- Only possibly <eol>s are replaced by space.
- Example:
- \begtt
- %%:use
- \verbchar`
- Now, `$this %text ~\` is processed as inline verbatim.
- \endtt
- gives: Now, `$this %text ~\` is processed as inline verbatim.
-* \.`\code{<text>}` processes `<text>` like inline verbatim, but
- all `\<character>` are processed as `<character>`, specially `\{` and `\}`
- are `{` and `}` but without taking them into `<balanced-text>` rule,
- `\\` is `\` but do not create a `<control-sequence>`, etc.
-\enditems
-
-
-\secc Multicolumns
-
-\.`\begmulti <number><space>` opens the group and \.`\endmulti`
-closes the group. If output format allows multi-columns then
-the text enclosed between `\begmulti <number><space>` and matching
-`\endmulti` should be printed in `<number>` balanced columns.
-
-
-\secc Links
-
-\begitems
-* \.`\url{<text>}` creates `<text>` as an external link which points to `<text>`.
- The `\<character>` is interpreted as `<character>` in `<text>` with one
- exception: `\|` is ignored.
-* \.`\ulink[<url>]{<text>}` creates `<text>` as an external link which points
- to `<url>`. The `\<character>` is interpreted as `<character>` only in
- `<url>` parameter.
-* \.`\label[<label>]` sets the `<label>`. First following occurence of `\chap`, `\sec`,
- `\secc`, `\caption` or `\eqmark` sets this `<label>` as bounded to its
- position in the document.
-* \.`\ref[<label>]` should create an internal link to the position given by
- `\chap`, `\sec`, `\secc`, `\caption` or `\eqmark`,
- if `[<label>]` is used as the parameter of this control sequence
- else if `<label>` is bounded here by previous `\label[<label>]`
- The visual aspect of the link
- is not declared by OMLS because we don't suppose that the chapters,
- sections, equations, etc.\ are automatically numbered by exactly the same way as in
- \OpTeX/. A recommendation should be: create a simple sequence of numbers over
- all internal links.
-* \.`\pgref[<label>]` should be replaced by `??` if cnv-program generates single-page
- output (like Html, Markdown). Unfortunately, we get the irrelevant phrases in the output:
- \"{\tt The problem is shown at the page ??}".
- Users can declare `%%:skip` for such cases.
-* \.`\bib[<label>]` or `\bib[<label>]<o-space>=<o-space>{<ignored>}` should open the new bib
- record. More exactly, it closes previous paragraph (if h-mode is current)
- and opens new h-mode. Then prints an auto-generated reference number in
- `[...]`. Following text is interpreted as a bib record until the h-mode ends.
-* \.`\cite[<labels>]` should create internal links to corresponding bib
- records generated by `\usebib` or by `\bib`. The `<labels>` is a comma-separated list
- of labels used in `.bib` files or in `\bib` commands to indicate
- the corresponding bib record. The labels should be replaced by auto-generated
- reference numbers used in bib records. All reference numbers created by
- single `\cite` should be enclosed by single `[...]`. These numbers are
- internal links. If the cnv-program does not implement this complicated
- bib machinery then `\cite[<labels>]` should print only `[<labels>]`.
-* \.`\rcite[<labels>]` does the same as `\cite[<labels>]` but doesn't print
- outer `[...]`.
-* \.`\ecite[<label>]{<text>}` creates the link to corresponding bib record,
- `<text>` is is hyperlinked (no the auto-generated reference number).
-* \.`\maketoc` should create a list of titles from all `\chap`, `\sec` and `\secc`
- used in the document if they are not preceded by \.`\notoc`. All lines in
- this list should include internal links to the position where the corresponding title
- is used.
-\enditems
-
-\secc Tables
-
-\begitems
-* \.`\caption/<letter>` opens a caption. More exactly, if current mode is
- h-mode, then switch to v-mode first (i.e.\ close the current paragraph).
- Then switch from v-mode to h-mode and put a <caption-head>. The following
- text should be interpreted as the caption text until h-mode ends.
- If <letter> is `t` then <caption-head> is `Table` followed
- by an auto-generated number. If the <letter> is `f` then <caption-head> is
- `Figure` followed by an auto-generated number. The configuration of
- cnv-programs shoud allow different words than default `Table` or `Figure` (for
- example, if another language is used).
-* \.`\table<ignored>{<declaration>}{<data>}` should create a table. The fidelity
- rate of created output depends heavily on the used cnv-program and the output
- format. We don't suppose that all aspects of \OpTeX/ tables are implemented.
- The following features are listed in their priority of implementation.
- \begitems \style c
- * Items in `<data>` are separated by `&`.
- The last item in each row is separated by end-row separator: \.`\cr`, \.`\crl`, \.`\crll`,
- \.`\crli`, \.`\crlli`, or \.`\crlp{<list>}`. If there are $n$ columns in
- the table then we have $n-1$ `&` separators and one end-row separator
- for each table row.
- There can be an optional end-row separator at the first item in `<data>` and
- it should be ignored. The `<data>` can end without the end-row separator, it
- should be added here.
- * Spaces around `&` and before end-row separator are ignored.
- * \.`\noalign{<text>}` and \.`\tskip <dimen>` should be ignored.
- * Colum declarators in <declaration> should be interpreted: `l` (left aligned), `c` (center
- aligned), `r` (right aligned) or `p{<ignored>}` (paragraph-like item).
- * The `<number><letter>` or `<number>{<text>}` should be interpreted as
- `<number>`-times repeated `<letter>` or `<text>` in `<declaration>`.
- * \.`\vspan<decimal-number>{<text>}` should be an item with only `<text>`.
- * \.`\mspan<number>[<decl>]{<text>}` should create `<text>` as an item which
- spans over `<number>` columns. It is used instead `<number>` real
- items, i.e.\ `<number>`$-1$ separators `&` aren't used here.
- * Rules in the table should be interpreted, i.e. `|` in <declaration>
- should be not ignored and
- various end-row separators should be distinguished (see \optexmanual,
- section 1.4.6).
- * The aligning of `p{<p-data>}` columns should be interpreded by reading
- \.`\fL`, \.`\fR`, \.`\fC`, \.`\fS` and \.`\fX` control sequences in `<p-data>`.
- See \optexmanual, section 1.4.6.
- \enditems
-\enditems
-
-\secc Footnotes, marginal notes
-
-\begitems
-* \.`\fnote{<text>}` should create a footnote link as an auto-generated
- reference number.
- The `<text>` should be appended at the end of the document labeled by this
- reference number. Another alternative (for Html output, for example): the mouse over
- the reference number riases an auto-popup `<text>`.
-* \.`\fnotemark<number>` should create a pointer to a next declared
- footnote as auto-generated reference number. The `<text>` of the footnote is
- declared after that by \.`\fnotetext{<text>}`. Exact behavior: if the
- reference number of the last processed `\fnote` is $n$ then
- `\fnotemark<number>` uses the value
- $n+{}$`<number>` as its reference number. A set of `\fnotemark`s
- is followed by an equally large set of `\fnotetext{<text>}`. First one
- have reference number $n+1$, second $n+2$, etc. When whole set of `\fnotetext{<text>}`
- is processed then $n$ is reset to the last reference number used here.
-* \.`\mnote <ignored>{<text>}` should be created as auto-popup `<text>` or the `<text>`
- is inserted at the margin.
-\enditems
-
-\secc Tagging for index
-
-We don't suppose that the cnv-program can generate the alphabetically sorted
-index. So, the markup for creating the index should be ignored:
-
-\begitems
-* \.`\ii <word><space>` (where `<word>` is a sequence of non-space characters)
- should be ignored.
-* \.`\iid <word><space>` is `<word><space>` by default, but
- if `,` or `.` follows after `<space>` then the `<space>` is removed.
-\enditems
-
-\secc Logos
-
-\.`\TeX`, \.`\LuaTeX`, \.`\OpTeX`, \.`\LaTeX`, respectively \:
-`TeX`, `LuaTeX`, `OpTeX`, `LaTeX`, respectively. If `/` follows
-these control sequences then it is ignored. Other logos should be declared
-in the configuration of the cnv-program.
-
-\secc What should be ignored
-
-\begitems
-* \.`\def<text>{<text>}` and other variants with \.`\gdef`, \.`\edef`, \.`\xdef`.
- Reason: user can insert a special definition in the `%%:text` part of the
- document in order to solve a problem. But cnv-program should ignore~it.
-* \.`\outlines{<text>}`, \.`\insertoutline{<text>}` and \.`\thisoutline{<text>}`.
-\enditems
-
-
-\sec[math] Math mode processing
-
-There are two math modes, inline: `$<formula>$` or display: `$$<formula>$$`.
-We suppose that `<formula>` will be processed by MathJax or similar
-software. So, the `<formula>` should be kept without changes in cnv-program
-output, but there are exceptions:
-
-\begitems
-* `$<sign><decimal-number>$` should be transformed to non-math text
- `<sign><decimal-number>`. The `<sign>` is~`+` or~`-` or nothing.
- The `<decimal-number>` can include `,` (comma) instead `.` (period).
- If the `<sign>` is~`-` (character U+002D) then
- it must be converted to `−` (character U+2212, math minus).
-* `{\bbchar <text>}` should be converted to `\mathbb{<text>}`, because
- MathJax doesn't understand `\bbchar`. `$\bbchar <text>$` should be
- converted to `$\mathbb{<text>}$`.
-* `{\frak <text>}` or `$\frak <text>$` \:
- `\mathfrak{<text>}` or `$\mathfrak{<text>}$`.
-* `{\script <text>}` or `$\script <text>$` \:
- `\mathscr{<text>}` or `$\mathscr{<text>}$`.
-* `\eqmark`, `\eqmark[<label>]` \: `\leqno (<num>)`, where `<num>` is
- auto-generated number. Or it should be completely ignored.
-* It is strongly recommended to allow users to declare another replacement
- rules over `<formula>` in configuration files of cnv-programs.
-\enditems
-
-
-\sec Notes on various conversions
-
-The cnv-programs behave differently because output formats have different
-concepts and are intended for different purposes. The following sections
-mention the main differences for typical conversions.
-
-\secc To Html
-
-The Html document is one single page. If we want to split the document to more
-pages, then we can use `%%:do html <action>` in positions where the document
-should be split (the syntax of `<action>` depends on the used cnv-program.)
-
-The design of Html pages should be declared by CSS files.
-
-Pictures inserted by `\inspic` should be inserted into the Html page as
-\code{<img src="...">}, so the picture files must be installed in
-the webserver to render the Html page correctly in a web browser.
-
-The `\maketoc` used in the \OpTeX/ document means that the Table of contents should
-be here. It should be generated by the cnv-program, two-pass processing is
-needed because the cnv-program needs to read all titles of `\chap`, `\sec` and
-`\secc`. Another approach is to read the `.ref` file produced by \OpTeX/.
-
-
-\secc To Markdown
-
-Markdown source file is \"one-page document" too. The principles a
-re similar to conversion to Html.
-
-\secc From Markdown
-
-The cnv-program which does such a reverse conversion should be very useful for
-people they prefer even clearer markup than in \OpTeX/.
-
-\secc To \LaTeX
-
-\LaTeX/ gives the same main feature as \OpTeX/: it can generate PDF
-output from a source file. But different macros, a different concept, and
-a different markup are used.
-
-The main reason for such conversion is that journal editors
-require \LaTeX/ source file, but user want to prepare their real document in
-more comfortable (\OpTeX/) markup and with more simple macros.
-
-This conversion should keep almost all features. For example, the
-`\pgref[<label>]` is converted to `\pageref{<label>}`. The cnv-program
-needs not to generate a Table of contents, bibliography references, etc. Only
-appropriate \LaTeX/ markup must be used.
-
-The contents of generated \LaTeX/ preamble should be configurable.
-
-
-\secc From \LaTeX
-
-The reverse conversion from \LaTeX/ to \OpTeX/ can be usable
-for people, they want to switch to creating their documents in \OpTeX/.
-
-The cnv-program must solve additional problem in this type of conversion.
-There are various math \LaTeX/ environments, they must be converted to
-plain~\TeX/ syntax of math typesetting. For example:\nl
-`\begin{array}...\end{array}` \: `\matrix{...}`,\nl
-`\begin{align*}...\end{align*}` \: `$$\eqalign{...}$$`\nl
-`\frac{...}{...}` \: `{...\over...}`.
-
-\bye
diff --git a/macros/luatex/optex/doc/optex-doc.pdf b/macros/luatex/optex/doc/optex-doc.pdf
deleted file mode 100644
index a4df4f013a..0000000000
--- a/macros/luatex/optex/doc/optex-doc.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/luatex/optex/doc/optex-doc.tex b/macros/luatex/optex/doc/optex-doc.tex
deleted file mode 100644
index 9f2fadeeb4..0000000000
--- a/macros/luatex/optex/doc/optex-doc.tex
+++ /dev/null
@@ -1,114 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-% Run optex optex-doc
-% (three times) to generate OpTeX documentation including references and the index.
-
-\load [doc.opm] \let\enddocument=\endinput
-
-\typosize[10/12] % Main size (used in techdoc)
-
-\begingroup \typosize [11/13.5] % Different size used in useroc.
-
-\insertoutline{OpTeX} % PDF outlines generated from TOC
-
-% Title:
-
-\vglue1cm
-\centerline{\setfontsize{at50pt}\rm\OpTeX}
-\vskip-8mm
-
-\tit Format Based on Plain \TeX/ and OPmac\fnotemark1
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\hfill Version 1.01
-
-\centerline{\it Petr Olšák, 2020, 2021}
-
-\bigskip
-\centerline{\url{http://petr.olsak.net/optex}}
-
-\fnotetext {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.}
-
-\bigskip
-\noindent
-\OpTeX/ is \LuaTeX/ format with Plain \TeX/ and OPmac. Only \LuaTeX/ engine
-is supported.
-
-\OpTeX/ should be a modern Plain \TeX/ with power from OPmac (Fonts
-Selection System, colors, graphics, references, hyperlinks,
-indexing, bibliography, ...) with preferred Unicode fonts.
-
-The main goal of \OpTeX/ is:
-
-\begitems
-* \OpTeX/ keeps the simplicity (like in Plain \TeX/ and OPmac macros).
-* There is no old obscurities concerning various 8-bit encodings and
- various engines.
-* \OpTeX/ provides a powerful Fonts Selection System (for Unicode font
- families, of course).
-* \OpTeX/ supports hyphenations of all languages installed in your \TeX/ system.
-* All features from OPmac macros are copied. For example sorting words in
- the Index\fnotemark1, reading `.bib` files directly\fnotemark1, syntax
- highlighting\fnotemark1, colors, graphics, hyperlinks, references).
- \fnotetext{All these features are implemented by \TeX/ macros, no external
- program is needed.}
-* Macros are documented in the same place where code is.
-* User namespace of control sequences is separated from the internal namespace
- of \OpTeX/ and primitives (`\foo` versus `\_foo`).
- The namespaces for macro writers are designed too.
-\enditems
-
-If you need to customize your document or you need to use something
-very specific, then you can copy relevant parts of \OpTeX/ macros into your macro
-file and do changes to these macros here. This is a significant difference from
-\LaTeX/ or ConTeXt, which is an attempt to create a new user level with a
-plenty of non-primitive parameters and syntax hiding \TeX/ internals.
-The macros from \OpTeX/ are simple and straightforward because they solve only
-what is explicitly needed, they do not create a new user level for
-controlling your document. We are using \TeX/ directly in this case.
-You can use \OpTeX/ macros, understand them, and modify them.
-
-\OpTeX/ offers a markup language for authors of texts (like \LaTeX),
-i.\,e.\ the fixed set of tags to define the structure of the document. This
-markup is different from the \LaTeX{} markup. It may offer to write the
-source text of the document somewhat clearer and more attractive.
-
-The manual includes two parts: user documentation and technical
-documentation. The second part is generated directly from the sources of
-\OpTeX/. There are many hyperlinks from one part to second and vice versa.
-
-This manual describes \OpTeX/ features only. We suppose that the user knows \TeX/
-basics. They are described in many books. You can see a short
-document \ulink[http://petr.olsak.net/ftp/olsak/optex/tex-nutshell.pdf]
-{\TeX/ in nutshell} too.
-
-\vfil\break
-
-\insertoutline{CONTENTS} \outlines{0}
-
-\notoc\nonum \sec Contents
-\maketoc
-
-\thisoutline {USER DOCUMENTATION}
-
-\chap User documentation
-
-\input optex-userdoc
-\endgroup
-
-%\end
-
-\input optex-techdoc
-
-\vfil\break
-
-\def\_printchap#1{\noindent{\_printrefnum[@]\_secfont #1}\medskip}
-
-\nonum\chap Index
-
-\begmulti 3 \tt \makeindex \endmulti
-
-\bye
diff --git a/macros/luatex/optex/doc/optex-math.tex b/macros/luatex/optex/doc/optex-math.tex
deleted file mode 100644
index 789dd5a187..0000000000
--- a/macros/luatex/optex/doc/optex-math.tex
+++ /dev/null
@@ -1,1662 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-% Run optex optex-math (two times) to generate this document
-% or look at PDF here: http://petr.olsak.net/ftp/olsak/optex/optex-math.pdf
-
-\fontfam[lmfonts]
-
-\font\ttlib=[LiberationMono-Regular]
-\def\ttspec{\let\_ttfont=\ttlib}
-
-\report
-
-\def\new #1 {\mnote{\Red$\blacktriangleleft$\,\sans\setfontsize{at9pt}\rm#1}}
-\fixmnotes\right
-\enquotes
-\verbchar`
-\catcode`\<=13
-\def<#1>{$\langle\hbox{\it#1\/}\rangle$}
-\everyintt={\catcode`\<=13 }
-\def\ss#1{$\vrule height3pt#1\vrule height3pt$}
-
-\addto\_secfont\Blue \addto\_seccfont\Blue
-\_def\_printsec#1{\_par
- \_abovetitle{\_penalty-400}\_bigskip
- {{\_secfont \_noindent \_raggedright \llap{\_printrefnum[@\_quad]}#1}\_nbpar}\_insertmark{#1}%
- \_nobreak \_belowtitle{\_medskip}%
- \_firstnoindent
-}
-\_def\_printsecc#1{\_par
- \_abovetitle{\_penalty-200}\_medskip
- {{\_seccfont \_noindent \_raggedright \llap{\_printrefnum[@\_quad]}#1}\_nbpar}%
- \_nobreak \_belowtitle{\_medskip}%
- \_firstnoindent
-}
-
-\def\i #1 {\ii .#1 \iis .#1 {{\code{\\#1}}}}
-\def\x`{\bgroup\_setverb\xx}
-\bgroup \lccode\string`\.=\string`\` \lowercase{\egroup \def\xx #1#2.{\i #2 \egroup `#1#2.}}
-
-
-\hyperlinks\Green\Green
-
-\insertoutline{MATH}
-\outlines{0}
-
-
-
-\tit Typesetting Math with \OpTeX/
-
-\hfill Version 03, January 2021
-
-\author Petr Olšák
-
-
-This document is a brief summary of typesetting math. It describes \TeX/,
-Plain \TeX/ and \OpTeX/ features concerned to math. The first two types of
-features are documented in \TeX/book in chapters 16, 17, and 18, but it is
-summarized here in short again in order to give a complete guide about math
-typesetting for \OpTeX/ users.
-
-\new {}
-The \OpTeX/ features which differs from standard \TeX/ or Plain \TeX/ are
-documented with the red triangle at the margin (like in this paragraph).
-Reader can simply distinguish between \"standard" features (given by
-\TeX/ or Plain \TeX/) and new \OpTeX/ features.
-
-There are more types of extensions: e\TeX, lua\TeX/, Unicode math and
-\OpTeX/ macros. The appropriate label (e\TeX, Lua\TeX/, Unicode, \OpTeX/)
-is appended to the red triangle to inform you about the extension type.
-Nevertheless, \OpTeX/ user doesn't have to worry about it, all extensions
-are available if Unicode Math font is loaded (e.g., by the command
-`\fonfam[lmfonts]`). See section 1.3.3 in \OpTeX/ documentation about
-loading Unicode math fonts.
-
-{\iindent=2em
-\bigskip
-\maketoc }
-\vfil\break
-
-\sec Basics structure of math formulas
-
-\secc General rules and terminology
-
-The \ii in-line/math in-line math (in the paragraph) is created by `$<math list>$`. The
-\ii display/math display math (a standalone line between paragraphs) is created by `$$<math list>$$`.
-More than one line can be here if an appropriate macro is used. In-line math is
-processed in a \TeX/ group in \ii in-line/math/mode {\em in-line math mode}. The display math is
-processed in a \TeX/ group in \ii display/math/mode {\em display math mode}. Spaces are
-ignored in math modes, so `$x+y$` and `$x + y$` gives the same result: $x+y$.
-
-The \ii math/list <math list> is a sequence of \ii math/atom,atom {\em math atoms} and
-\ii other/material {\em other material}.
-The math atoms are \ii single/math/object {\em single math objects} or
-\ii composed/math/atom composed math atoms.
-
-\begitems \hfuzz=.6pt
-* The single math object is a single character to be printed in math mode
- like `x`, `+`, `\int`.
-* The math atom is constructed in general by `{<math list 1>}^{<math list 2>}_{<math list 3>}`.
- It consists from \ii nucleus {\em nucleus} <math list 1>, \ii exponent exponent <math list 2>
- and \ii subscript subscript <math list 3>. Each part of the atom should be empty.
- If <math list 2> or <math list 3> is empty, we need not to write brackets and
- the prefix `^` or `_`.
- If the <math list 1> or <math list 2> or <math list 3>
- consist only from a single math object then we need not use brackets.
- For example
- `x^2` is a math atom with `x` in the nucleus, `2` in the exponent, and with empty subscript.
- Or `a_{i,j}` is a math atom with `a` in the nucleus, empty exponent, and `i,j` in the subscript.%
- \fnote{In \OpTeX/, the character `_` can be interpreted as a part of
- the control sequence name, not as the subscript constructor. But in common cases,
- constructions of math atoms are interpreted exactly as in plain \TeX. See sections
- 2.2.2 and 2.14 of \OpTeX/ documentation for more details. If you want to
- be sure that `_` is just a subscript constructor in \OpTeX/ then you can set \code{\\catcode`\\_=8}
- but after this, you cannot use control sequences with `_` character.}
- The constructors for exponent `^` and subscript `_` can be used in arbitrary order
- after the nucleus, for example, `z_1^{x+y}` is the same math atom as
- `z^{x+y}_1`. The single math objects not followed by `^` nor `_` are
- considered as math atoms with this object in the nucleus and with empty
- exponent and subscript (this is a very common case).
- \TeX/ assigns the \ii class {\em class} for each math atom, see section~\ref[class].
-* Other material can be \TeX/ box or glue (space) or `\kern` or `\vrule` etc.
-\enditems
-
-Example: The `Z = \int``_\Omega x^{2y} + z\, dx` generates
-$Z = \int_\Omega x^{2y} + z\, dx$ and it is <math list> which consists from:
-
-\begitems
-* `Z` is math atom with empty exponent and subscript, class: Ord,
-* `=` is math atom with empty exponent and subscript, class: Rel,
-* `\int``_\Omega` is math atom with empty exponent and with subscript `\Omega`, class: Op,
-* `x^{2y}` is math atom with exponent `2y` and empty subscript, class: Ord,
- \begitems \let\_bullet=\circ
- * `2` is math atom with empty exponent and subscript, class: Ord,
- * `y` is math atom with empty exponent and subscript, class: Ord,
- \enditems
-* `+` is math atom with empty exponent and subscript, class: Bin,
-* `z` is math atom with empty exponent and subscript, class: Ord,
-* `\,` is another material, the glue (space) in this case,
-* `d` is math atom with empty exponent and subscript, class: Ord,
-* `x` is math atom with empty exponent and subscript, class: Ord.
-\enditems
-
-\secc[class] Classes of math atoms
-
-\TeX/ assigns \ii class {\em a class} for each math atom.\fnote
-{Using terminology of \TeX/book, each single math object has its {\em class} but the
- math atom has its {\em kind} derived from this class. I use only one word
- for both meanings in this document.}
-This data type is used when
-\TeX/ decides about \ii horizontal/spacing horizontal spaces between atoms in the output. (Note
-that spaces in the input are ignored.) For example,
-`$xy$` prints two atoms without space between them but `$x+y$` is printed with
-small spaces around the `+` binary operator. Compare: $xy$ and $x+y$.
-
-The class is assigned depending on the nucleus of the atom. If the nucleus is
-not a single math object, i.e. it is constructed by `{<math list>}` with braces
-then the atom has its class Ord. If the nucleus is a single math object constructed
-without braces then the class of the atom depends on this single math
-object. Each single math object must be declared in \TeX/ with its default
-class. The following table lists the classes with typical examples.
-The full set of all math objects used in math typesetting
-is listed in section~\ref[objects] with their default classes.
-
-\bigskip
-\noindent\hfil\table{llll}{
- & \ii class Class & Meaning & Example \crl
- 0 & \iid Ord & ordinary object & variables, digits, $x, {\bbchar R}, \Gamma, 0, 1$ \cr
- 1 & \iid Op & big opertator & $\sum, \int, \bigcup$ \cr
- 2 & \iid Bin & binary operator & $+, \times, -, \pm, \cup$ \cr
- 3 & \iid Rel & reations & $=, \ne, \leq, \supseteq, \succsim$ \cr
- 4 & \iid Open & opening bracket & $\{, (, [, \langle$ \cr
- 5 & \iid Close & closing bracket & $\}, ), ], \rangle$ \cr
- 6 & \iid Punct & punctuation & comma \cr
- & \iid Inner & left-right & \code{\\left...\\right} outputs, see section~\ref[delims]
-}
-\bigskip
-
-There are \ii horizontal/spacing,spacing three space types used
-by the algorithm for horizontal spacing in the math formulas.
-
-\begitems
-* \ii thin/space Thin space: \x`\thinmuskip` primitive register, `\,` macro. Used around Op atoms.
-* \ii medium/space Medium space: \x`\medmuskip` primitive register, `\>` macro. Used around Bin atoms.
-* \ii thick/space Thick space: \x`\thickmusip` primitive register, `\;` macro. Used around Rel atoms.
-\enditems
-
-\puttext 7.8cm -3.7cm {\rotbox{90}{Left atom}}
-\puttext 11.5cm -.5cm {Right atom}
-\puttext 8.2cm -4.4cm {\typosize[9/11]
-\thistable{\def\_enspace{ }}%
-\table {l|8c|} {
- \omit & Ord & Op & Bin & Rel & Open & Close & Punct & \omit \hfil Inner \crlp{2-9}
- Ord & 0 & 1 & 2 & 3 & 0 & 0 & 0 & 1 \cr
- Op & 1 & 1 & & 3 & 0 & 0 & 0 & 1 \cr
- Bin & 2 & 2 & & & 2 & & & 2 \cr
- Rel & 3 & 3 & & 0 & 3 & 0 & 0 & 3 \cr
- Open & 0 & 0 & & 0 & 0 & 0 & 0 & 0 \cr
- Close & 0 & 1 & 2 & 3 & 0 & 0 & 0 & 1 \cr
- Punct & 1 & 1 & & 1 & 1 & 1 & 1 & 1 \cr
- Inner & 1 & 1 & 2 & 3 & 1 & 0 & 1 & 1 \crlp{2-9}
-}}
-
-\hangindent=-8.7cm \hangafter=0
-Ord atoms are printed without spaces between them. The spaces are not
-cumulated, so the rule about spaces mentioned above is only a rough idea.
-The exact rule for horizontal spaces is given for each pairs of atoms
-in the table here. The symbol 0 means no space, 1 thin space, 2 medium space,
-and 3 means thick space.
-
-\hangindent=-8.7cm \hangafter-2
-The Bin atom is automatically transformed to the
-Ord atom if no atom precedes or if Op, Bin, Rel, Open, or Punct atom
-precedes. And it is transformed to the Ord atom if Rel, Close or Punct atom
-follows. This corresponds to the empty cells in the table.
-Why such behavior? Compare \"\hbox{$0-3$}" and \"$-3$". The Bin atom in
-the second case behaves like Ord atom because it is \ii unary/minus {\em unary minus}.
-There is no space between the unary minus and the following object.
-
-All medium spaces and thick spaces and some thin spaces from this table are
-omitted if the <math list> is processed in
-\ii script/style,scriptscript/style script or scriptscript styles
-(smaller size). See section~\ref[styles] about math styles.
-
-You can overwrite the default class derived from the nucleus of the atom by
-\TeX/ primitives \x`\mathord`, \x`\mathop`, \x`\mathbin`, \x`\mathrel`, \x`\mathopen`,
-\x`\mathclose`, \x`\mathpunct` and \x`\mathinner`. They can precede a nucleus of
-the atom and they set the class of the atom.
-For example, `x \mathrel+ y` behaves like `x = y` from a spacing point of view but +
-is printed. Another example: `\mathop{\rm lim} z` creates the atom `lim` in
-roman font of class Op. So, the thin space is inserted between lim and $z$.
-
-There are more special kinds of math atoms: fractions, math accents,
-radicals. They are constructed in a special way (see next sections) but they behave
-like Ord atom in the horizontal spacing algorithm.
-
-\secc[styles] Math styles
-
-When a formula (or a sub-formula) is processed by \TeX/ then one from four
-\ii math/style,display/style,text/style,script/style,scriptscript/style
-styles is active: display style ($D$), text style ($T$), script style ($S$) or
-scriptscript style ($SS$).
-
-\ii T/style,D/style,S/style,SS/style The $T$ style is started in in-line math mode `$...$` and the $D$
-style is started in display math mode `$$...$$`. The first level of exponents or
-subscripts is processed in $S$ style and the second and more levels of
-exponents or indexes are processed in $SS$ style.
-There are special rules for math styles when fractions are constructed, see
-section~\ref[frac].
-
-The $D$ and $T$ styles use basic \ii font/size font size, $S$ uses smaller font size (typically
-70~\%) and $SS$ style uses more smaller font size (typically 50~\%). Next
-levels of \"more smaller fonts" are not used due to classical typographic rules.
-
-The \ii nucleus nucleus of \iid Op atoms (big operators, $\sum$, $\int$, etc.) have typically bigger versions
-of the character shape for $D$ style than for $T$ style.
-So, there are four sizes for such math
-objects: one size for each math style. All other math objects (with non Op
-class) are printed only in three sizes: The sizes for $T$ and $D$ styles are equal.
-
-The \iid Op atom puts its \iid exponent and \iid subscript above and below the nucleus in $D$
-style but right to the nucleus in other styles:
-$$
- `\sum``_{i=1}^\infty` \quad \hbox{gives}\quad \sum_{i=1}^\infty \hbox{ in $D$ style and}
- \quad \textstyle \sum_{i=1}^\infty \hbox{ in $T$ style}.
-$$
-This default behavior of the Op atom
-can be modified by placing \x`\limits` or \x`\nolimits` or
-\x`\displaylimits` \TeX/ primitive just after its nucleus before the constructors
-of exponent and/or index. The `\nolimits` puts exponent and subscript right
-to the nucleus (regardless of the current style) and `\limits` puts these
-objects above and below the nucleus (regardless of the current style). There
-can be more such primitives in a queue (due to a macro expansion, for
-instance). Then the last primitive in the queue wins.
-If the last primitive is \x`\displaylimits` then
-the default behavior is processed regardless there are \x`\limits` or \x`\nolimits`
-before it.
-$$
- `\sum\nolimits``_{i=1}^\infty` \quad \hbox{gives}\quad \sum\nolimits_{i=1}^\infty
- \hbox{ in $D$ style and}\quad \textstyle\sum\nolimits_{i=1}^\infty
- \hbox{ in $T$ style}.
-$$
-Atoms of all other classes have their exponents and/or subscripts only right
-to their nucleus without any exception.
-
-The primitives \x`\displaystyle`, \x`\textstyle`, \x`\scriptstyle` and
-\x`\scriptscriptstyle` set the given style regardless the default rules. For
-example, you can create a formula in in-line math mode and in $D$ style by
-`$\displaystyle <fomula>$` or a formula in display mode and $T$ style can be printed
-by `$$\textstyle <fomrula>$$`.
-
-If a subformula is placed below something (below a line from root symbol,
-below a fraction line), then the processed style $D, T, S$ or $SS$ is
-\ii cramped/style {\em cramped}.
-The exponents are positioned slightly lower than in
-\ii non-cramped/style non-cramped style. The selectors `\displaystyle`\,\dots
-`\scriptscriptstyle` mentioned above select non-cramped style. The
-non-cramped style is selected when math mode starts too.
-\new \OpTeX/
-You can select a cramped style by the macro \x`\cramped` at the start of the
-math formula or after the math-style selectors: `\scriptstyle\cramped` for
-example.
-
-Several macros need to know what math style is currently processed (for
-example they need to draw something in an appropriate size). But it
-not possible simply due to the syntax of fractions (section~\ref[frac]).
-This syntax requires to process all math lists in two steps: the first step
-expands all macros and creates structured data of processed math list. The
-second step reads the output of the first step, switches between math
-styles and creates definitive output. So, macros (working in the first step)
-cannot know the current math
-style because it is set only in the second step. \TeX/ supports the primitive
-\x`\matchchioce``{<D>}{<T>}{<S>}{<SS>}` which prepares four math lists in the
-first step and only one of these four lists are used in the second step. We
-can put different macros into each of the four parameters of `\mathchoice`.
-Plain \TeX/ supports the macro \x`\mathpalette` which gives a more comfortable
-interface of \x`\mathchoice` to the macro programmer.
-The cramped/non-cramped variants of the current style are kept when `\mathchioce`
-is used.
-
-\new \OpTeX/
-We describe another interface for creating macros depending on the current
-style. You can use \x`\mathstyles``{<math list>}`. It
-behaves like `{<math list>}`, moreover, you can use the following commands inside such
-<math list>:
-\begitems
-* The macro \x`\currstyle`. It expands to
- `\displaystyle`, `\textstyle`,
- `\scriptstyle` or `\scriptscriptstyle` depending on the current math style
- when the `\mathstyles` was opened.
-* The \x`\dobystyle``{<D>}{<T>}{<S>}{<SS>}` is expandable macro. It expands its
- parameter `<D>`, `<T>`, `<S>` or `<SS>` depending on the current math style
- when `\mathstyles` was opened.
-* The value of the \x`\stylenum` register is 0, 1, 2 or 3
- depending on the current math style when `\mathstyles` was opened.
-\enditems
-%
-Example of usage of \x`\mathstyles`:
-\def\mysymbol{\mathbin\mathstyles
- {\kern1pt\vrule height\mysymbolA width\mysymbolA\kern1pt}}
-\def\mysymbolA{\dobystyle{5pt}{5pt}{3.5pt}{2.5pt}}
-\begtt
-\def\mysymbol{\mathbin\mathstyles
- {\kern1pt\vrule height\mysymbolA width\mysymbolA\kern1pt}}
-\def\mysymbolA{\dobystyle{5pt}{5pt}{3.5pt}{2.5pt}}
-Test: $a\mysymbol b_{c \mysymbol d}$ or $a\mysymbol b\over c$.
-\endtt
-This example gives Test: $a\mysymbol b_{c \mysymbol d}$ or $a\mysymbol b\over c$.
-
-The \x`\mathstyles` macro mentioned above uses \TeX/ primitive \x`\mathchoice`, so it
-creates four math lists and only one is used. It may take more
-computer time in special cases.
-\new Lua\TeX/
-Lua\TeX/ supports the \x`\mathstyle` primitive
-(no \"`s`" at the end of this control sequence) which
-expands to values 0 to 7 depending on the current style:
-$D, D', T, T', S, S', SS, SS'$
-(where $X'$ means cramped variant of the style). This primitive does
-not use `\mathchoice` but it simply ignores the fraction syntax, so
-`$a\mysymbol b\over c$` cannot work if `\mysymbol` is defined using the `\mathstyle`
-primitive. See section 7.3.1 of Lua\TeX/ documentation for more information.
-
-
-\secc[frac] Fractions
-
-The \iid fraction can be constructed by `{<numerator>`\x`\over``<denominator>}`. If the
-fraction is only a single object in the whole math mode (between dollars),
-you need not use the outer braces, so you can write `$1\over2$` to get $1\over2$.
-
-The \ii numerator,denominator <numerator> and <denominator> are printed in \"smaller" math style than
-current math style. More exactly the following schema is used.
-$D$: $T\over T$., $T$: $S\over S$, $S$: $SS\over SS$, $SS$: $SS\over SS$.
-For example
-$$
- `{a+b \over c}` \quad \hbox{is printed as }
- {a+b\over c} \hbox{ in $D$ style and as }
- \textstyle {a+b\over c} \hbox{ in $T$ style}.
-$$
-
-The \LaTeX/ macro \x`\frac``{<numerator>}{<denominator>}` is not supported in
-Plain \TeX/ nor in \OpTeX/ but you can define such macro if you want.
-
-The syntax with \x`\over` is more preferred because it is more human-readable
-notation. You can write the fraction in the same manner as you can read it.
-You can compare: `$1\over2$` (one over two) with `$\frac12$` (frac twelve).
-
-Besides the `\over` primitive, there are analogical \TeX/ primitives which
-create \"generalized" fractions. The result is similar to `{<above>\over <below>}`
-but there is something extra:
-
-\begitems
-* `{<above>`\x`\atop``<below>}` does `{<above>\over<below>}` but
- without the fractional rule.
-* `{<above>`\x`\above``<dimen><below>}` creates fractional rule with <dimen> thickness.
-* `{<above>`\x`\overwithdelims``<delim-l><delim-r><below>}` adds the <delim-l> left to
- the fraction and the <delim-r> right to the fraction.
-* `{<above>`\x`\atopwithdelims``<delim-l><delim-r><below>}` is analogical to
- `\overwithdelims` but without fractional rule.
-* `{<above>`\x`\abovewithdelims``<delim-l><delim-r><dimen><below>}` behaves as
- `\overwithdelims` but the fractional rule has <dimen> thickness.
-\enditems
-%
-The `\...withdelims` variants read <delim-l> and <delim-r>, they must be
-declared as {\em math delimiter} in \TeX. They are vertically scalable
-math objects, typically brackets. See section~\ref[delims] for more
-information about math delimiters. Example:
-$$
- `{n \atopwithdelims() k}`\quad \hbox{ creates }
- {n \choose k} \hbox{ in $D$ style and }
- \textstyle {n \choose k} \hbox{ in $T$ style}.
-$$
-The \x`\choose` macro is defined by `\def\choose{\atopwithdelims()}`, so the
-user can write `{n\choose k}` in order to get binomial coefficients.
-
-
-\secc[delims] Vertically scalable objects: math delimiters
-
-The vertically scalable objects are called \ii delimiters {\em delimiters}. For example,
-all types of brackets are declared as delimiters.
-This means that you can use a bracket in arbitrary
-vertical size.\fnote{
-This is not exactly true, because traditional typography says that they
-cannot be scaled continuously but by visible steps. This means that there is
-a sequence of increasing brackets in the font, the reader must see a difference
-between every two sizes of brackets.}
-
-The following objects are declared as delimiters (i.e.\ vertically scalable):
-
-\bigskip
-{\tt \adef!{\bslash}
-\table{l 14c}{
- \rm source: & ( & ) & [ & ] & \code{\\\{} & \code{\\\}} & /
- & !backslash & !langle & !rangle
- & | & \code{\\|} & \cr
- \rm output: &$($&$)$&$[$&$]$& $\{$ & $\}$ & $/$
- & $\backslash$ & $\langle$ & $\rangle$
- & $|$ & $\|$
-}
-\medskip
-\table{l 14c}{
- \rm source: & !lfloor & !rfloor & !lceil & !rceil \cr
- \rm output: & $\lfloor$ & $\rfloor$ & $\lceil$ & $\rceil$
-}
-\medskip
-\table{l 14c}{
- \rm source: & !uparrow & !Uparrow & !dowarrow & !Downarrow
- & !updownarrow & !Updownarrow \cr
- \rm output: & $\uparrow$ & $\Uparrow$ & $\downarrow$ & $\Downarrow$
- & $\updownarrow$ & $\Updownarrow$
-}}
-\bigskip
-\noindent \new Unicode
-If you can produce the characters $\langle$, $\rangle$,\fnote
- {Do not confuse $\string<, >$ and $\langle, \rangle$. The first pair are Rel atoms
- with meaning \"less than" or \"greater than", but the second pair are special
- types of brackets. They are not directly available at computer keyboards without
- using a keyboard macro.}
-$\lfloor$, $\rfloor$, ... $\updownarrow$, $\Updownarrow$
-directly in your text editor then you can use these Unicode characters in your source instead of control
-sequences `\langle`, `\rangle`, `\lfloor`, `\rfloor` ... `\updownarrow`, `\Updownarrow`.
-For many users (including me), there is more simple to type `\lfloor` than to find
-how to create the $\lfloor$ character in my text editor. Note that there exist
-text editors (Emacs, for example)
-enabling you to type `\lfloor` and this control sequence is immediately
-converted to the $\lfloor$ Unicode character.
-Your source text looks pretty and you can use classical \TeX/ sequences.
-
-\new Unicode
-There are more \ii delimiters delimiters, but it heavily depends on loaded Unicode Math
-font. For example, this document is printed in `latinmodern-math` font and
-there are six more delimiters `\lBrack`~$\lBrack$, `\rBrack`~$\rBrack$,
-`\lAngle` $\lAngle$, `\rAngle` $\rAngle$, `\lgroup` $\lgroup$, `\rgroup` $\rgroup$.
-See section~\ref[objects] for table of all Unicode symbols for math typesetting.
-
-Arbitrary tall formula can be surrounded by a pair of delimiters using
-\x`\left` and \x`\right` \TeX/ primitives: `\left<delim> <formula> \right<delim>`.
-The delimiters are scaled to the height and depth of the <formula>
-and vertically centered to the {\em math axis}.\fnote
-{Math axis is a horizontal line passing through the center of symbols $+$
- and $-$. All vertically scalable objects are vertically centered with
- respect to this axis.}
-Example:
-$$
- `+ \left\{ \sum_{i=1}^\infty x_i \right)` \quad \hbox{ gives }
- + \left\{ \sum_{i=1}^\infty x_i \right).
-$$
-The pair `\left<delim> <formula> \right<delim>` creates the formula in a
-\TeX/ group. Such group can be nested with another groups.
-Each `\left` must have its `\right` counterpart at the same group level.
-If you don't want to create visible delimiter, use dot instead <delim>.
-Example:
-$$
- `\left. \int``_0^t e^{x^2}\,dx\, \right|_{t=42}` \quad \hbox{ gives }
- \left. \int_0^t e^{x^2} \,dx\, \right|_{t=42}
-$$
-
-\new e\TeX/
-You can use \x`\middle``<delim>` inside the <formula> which is surrounded by
-`\left...\right`. Then the given <delim> is scaled to the same size like
-their `\left` and `\right` counterparts.
-
-When a delimiter is used without `\left` nor `\right` prefix, then it is the
-Open, Close, Ord or Bin atom by its natural meaning:
-$(, [, \{, \ldots, \lfloor, \lceil$ are Open atoms,
-$], ], \}, \ldots, \rfloor, \rceil$ are Close atoms,
-$/, \backslash, |, \|$ are Ord atoms and
-$\uparrow, \Uparrow, \ldots, \Updownarrow$ are Bin atoms. You can overwrite
-this default setting, for example `\mathclose(`. If delimiters are used with
-`\left` and `\right` prefixes then `\left<delim>` behaves like Open atom,
-`\right<delim>` behaves like Close atom and the math list
-`\left<delim><formula>\right<delim>` is encapsulated as a single Inner atom.
-The `\middle<delim>` behaves like Open atom at its left side and like Close
-atom at its right side.
-
-The sequence of increasing delimiters can be printed by the following
-macros:
-$$
- `(` \to (,\quad \x`\big``(` \to \big(,\quad \x`\Big``(` \to \Big(,\quad
- \x`\bigg``(` \to \bigg(, \quad \x`\Bigg``(` \to \Bigg(.
-$$
-The `\Bigg<delim>` is not the maximal size of the bracket. Try
-`\left(\vbox to5cm{}\right.`, for example. You can see that the font
-\"cheats" from certain sizes, because there are not all infinity number of
-sizes of brackets drawn in the font, of course.
-
-The `\big<delim>` creates Ord atom. We need to create Open atom
-for opening bracket and Close atom for closing bracket more often.
-Then we can use macros
-\x`\bigl``<delim>`,
-\x`\Bigl``<delim>`,
-\x`\biggl``<delim>`,
-\x`\Biggl``<delim>` for creating Open atoms and
-\x`\bigr``<delim>`,
-\x`\Bigr``<delim>`,
-\x`\biggr``<delim>`,
-\x`\Biggr``<delim>` for creating Close atoms. Unfortunately, the source is not
-too attractive when more sizes of brackets are used, but typographic
-traditions say that we have to distinguish brackets by the size in math
-mode if they are in equal types:
-$$
- `\Bigl( f\bigl( 2(x+y) + z\bigr) \Bigr)'` \quad \hbox{gives }
- \Bigl(f\bigl(2(x+y)+z\bigr)\Bigr)'.
-$$
-
-\secc Horizontally scalable objects: math accents
-
-Arbitrary wide formula can be covered by \ii math/accent,accent {\em scalable math accent}.
-Example:
-$$
- \x`\overrightarrow`` {a+b+c+d+e+f}` \quad \hbox{gives } \overrightarrow {a+b+c+d+e+f}.
-$$
-The usage is: control sequence of selected math accent followed by `{<math list>}`.
-
-Standard scalable math accents are:
-\x`\overline` $\overline{abc}$,
-\x`\overbrace` $\overbrace{abc}$,
-\x`\overrightarrow` $\overrightarrow{abc}$,
-\x`\overleftarrow`~$\overleftarrow{abc}$,
-\x`\underline` $\underline{abc}$,
-\x`\underbrace` $\underbrace{abc}$.
-
-An Op atom is created. The exponents and subscripts are centered above
-and below the nucleus of this atom (regardless of the current style). Example:
-$$
- `\overbrace {b\cdot b\cdot b \cdots b}^{k\times}` \quad \hbox{gives }
- \overbrace {b\cdot b\cdot b \cdots b}^{k\times}
-$$
-There are scalable accents with a limited maximum width:
-\x`\widehat` $\widehat{abc}$ and \x`\widetilde` $\widetilde{abc}$. If the
-formula is wider than the font can cover then the widest variant from the
-font is used and it is horizontally centered.
-
-\new Unicode
-There are more scalable accents in Unicode math fonts:
-\x`\overparen` $\overparen{abc}$, \x`\underparen` $\underparen{abc}$,
-\x`\overbracket` $\overbracket{abc}$, \x`\underbracket` $\underbracket{abc}$,
-\x`\overleftrightarrow` $\overleftrightarrow{abc}$,
-\x`\overleftharpoon` $\overleftharpoon{abc}$,
-\x`\overrightharpoon` $\overrightharpoon{abc}$,
-
-
-\secc Fixed math accents
-
-Fixed \ii math/accent,accent math accents can be applied to single math object or to the `{<math list>}`.
-The accent is centered (with respect of slanting axis) and the result is a
-nucleus of Ord
-atom. For example `\dot x` gives $\dot x$. The list of fixed math accents
-follows: \x`\acute`` x` $\acute x$, \x`\bar`` x` $\bar x$,
-\x`\breve`` x` $\breve x$, \x`\check`` x` $\check x$,
-\x`\dot`` x` $\dot x$, \x`\ddot`` x` $\ddot x$,
-\x`\grave`` x` $\grave x$, \x`\hat`` x` $\hat x$,
-\x`\vec`` x` $\vec x$, \x`\tilde`` x` $\tilde x$.
-
-\new Unicode
-The additional fixed accents depends on used Unicode math font. The
-`latinmodern-math` supports:
-\x`\ovhook`` x` $\ovhook x$, \x`\ocirc`` x` $\ocirc x$,
-\x`\leftharpoonaccent`` x` $\leftharpoonaccent x$, \x`\rightharpoonaccent`` x` $\rightharpoonaccent x$,
-\x`\dddot`` x` $\dddot x$, \x`\ddddot`` x` $\ddddot x$,
-\x`\widebridgeabove`` x` $\widebridgeabove x$, \x`\asteraccent`` x` $\asteraccent x$.
-
-There exist one special math accent `'` (single quote, ASCII 39)
-which can be appended after a symbol like this: `f'`
-and it creates $f'$ (typical meaning is the
-derivation of the given function). You can put more such accents, for
-example `g'''` gives $g'''$.
-
-\secc Roots
-
-There is a macro \x`\sqrt``{<math list>}` to create \ii square/root square root. For example:
-$$
- `\sqrt{\sqrt{\sqrt{x+1}+1}+1}` \quad \hbox{gives }
- \sqrt{\sqrt{\sqrt{x+1}+1}+1}
-$$
-The \ii root $n$-th root is created by the macro \x`\root`` <n>\of{<math list>}`. For
-example `\root k+1\of x` gives $\root k+1\of x$.
-
-\secc Math alphabets
-
-Letters \ii math/alphabet $a\dots z$, $A\dots Z$ and $\alpha$\dots$\omega$ are printed in italic
-in math mode. This follows the traditional typographic rule.
-All other math symbols, digits, and uppercase Greek letters must be
-upright.\fnote
-{French typographic convention says that uppercase Greek letters have to be
- in italic too. Use `\_itGreek` declaration in this case.}
-These rules are independent of the current variant of surrounding text font.
-
-If we want to use the letters or digits
-in another than this default shape, then we can use
-\ii math/alphabet/selector {\em math alphabet selectors}:
-\x`\mit`, \x`\rm`, \x`\it`, \x`\bf`, \x`\cal`.
-\new \OpTeX/
-\OpTeX/ supports more such selectors \x`\script`, \x`\frak`, \x`\bbchar`, \x`\bi`, see
-section 1.3.3 in the \OpTeX/ documentation. The math selectors have local
-validity in the group.
-
-The control sequences \x`\rm`, \x`\it`, \x`\bf`, and \x`\bi` act as variant selectors
-of fonts in non-math mode (text mode) and they act
-as math alphabet selectors in math mode. This \"overlaying" concept
-is given by Plain \TeX/. Example: math operators lim, sin, cos,
-log, etc.\ must be printed unslanted. We are using `\lim`, `\sin`, `\cos`,
-`\log` etc.\ in math mode in order to comply with this typographic convention. For
-example `\sin` is defined as:
-\begtt
-\def\sin {\mathop{\rm sin}\nolimits}
-\endtt
-The `\rm` is used here as math alphabet selector, no variant selector of
-text fonts.
-
-The list of all predefined `\rm`-like math operators follows: \x`\arccos`,
-\x`\arcsin`, \x`\arctan`, \x`\arg`, \x`\cos`, \x`\cosh`, \x`\cot`, \x`\coth`, \x`\deg`.
-\x`\det`, \x`\dim`, \x`\exp`, \x`\gcd`, \x`\hom`, \x`\inf`, \x`\ker`, \x`\lg`, \x`\lim`,
-\x`\liminf`, \x`\limsup`, \x`\ln`, \x`\log`, \x`\max`, \x`\min`, \x`\Pr`, \x`\scs`, \x`\sin`,
-\x`\sinh`, \x`\sup`, \x`\tan`, \x`\tanh`, You can define another such operator
-analogically.
-
-\new Unicode
-Unicode font can include the following math alphabets:
-\begtt \typosize[9/11]
-\_rmvariables % upright letters A-Z, a-z
-\_bfvariables % bold letters A-Z, a-z
-\_itvariables % italic letters A-Z, a-z
-\_bivariables % bold italic letters A-Z, a-z
-\_calvariables % calligraphic letters A-Z, a-z
-\_bcalvariables % calligraphic letters A-Z, a-z
-\_frakvariables % fraktur A-Z, a-z
-\_bfrakvariables % bold fraktur A-Z, a-z
-\_sansvaraibales % sans serif letters A-Z, a-z
-\_bsansvaraibales % bold sans serif letters A-Z, a-z
-\_isansvaraibales % slanted sans serif letters A-Z, a-z
-\_bisansvaraibales % bold slanted sans serif letters A-Z, a-z
-\_ttvariables % monospace, typewriter letters A-Z, a-z
-\_bbvariables % double struck A-Z, a-z
-\_rmdigits % upright digits 0..9
-\_bfdigits % bold digits 0..9
-\_sansdigits % sans serif digits 0..9
-\_bsansdigits % bold sans serif digits 0..9
-\_ttdigits % monospace typewriter digits 0..9
-\_bbdigits % double-struck digits 0..9
-\_rmgreek % upright Greek letters \alpha-\omega
-\_itgreek % slanted Greek letters \alpha-\omega
-\_bfgreek % bold Greek letters \alpha-\omega
-\_bigreek % bold italic Greek letters \alpha-\omega
-\_bsansgreek % bold sans serif Greek letters \alpha-\omega
-\_bisansgreek % bold slanted snas serif Greek letters \alpha-\omega
-\_itGreek % slanted Greek letters \Alpha-\Omega
-\_bfGreek % bold Greek letters \Alpha-\Omega
-\_biGreek % bold italic Greek letters \Alpha-\Omega
-\_bsansGreek % bold sans serif Greek letters \Alpha-\Omega
-\_bisansGreek % bold slanted snas serif Greek letters \Alpha-\Omega
-\endtt
-%
-Not all Unicode math fonts include all math alphabets listed here. Typically,
-the lowercase letters of calligraphic shape and all letters of
-bold calligraphic shape are missing.
-
-\new \OpTeX/
-\OpTeX/ defines internal math alphabet selectors as mentioned in the
-previous listing of math alphabets and sets as default:
-\begtt \typosize[10/12]
-\_itvariables \_rmdigits \_itgreek \_rmGreek
-\endtt
-%
-Moreover, it defines the alphabet selectors at user level (see section 1.3.3
-of the \OpTeX/ manual). For example
-\begtt \typosize[10/12]
-\def\rm {\_tryload\_tenrm \_inmath{\_rmavariables \_rmdigits}}
-\endtt
-%
-The first part
-\new \OpTeX/
-`\_tryload\_tenrm` is applicable for text fonts and the
-`\_inmath` part is processed only in math mode and sets the math alphabets.
-You can see the file `unimath-codes.opm` where all user-level selectors are
-defined. You can redefine them. For example, \OpTeX/ defines `\bf` as a math
-alphabet selector that selects sans serif bold in math. This is the common
-notation for vectors, tensors, and matrices. If you dislike this, then you can define:
-\begtt \typosize[10/12]
-\def\bf {\_tryloadbf\_tenbf \_inmath{\_bfvariables\_bfdigits\_bfgreek\_bfGreek}}
-\endtt
-
-
-\secc[objects] List of single math objects
-
-\new Unicode
-All \ii single/math/object single math objects are listed in the `unimath-table.opm` or
-`unicode-math-table.tex` file. You can
-look into this file. The codes, \TeX/ sequences, classes, and comments
-for all possible math codes are here. Maybe, your Unicode math font which is loaded
-does not support all these codes.
-\new \OpTeX/
-You can try all codes of the currently loaded font by
-\begtt
-\input print-unimath.opm
-\endtt
-The `unimath-table` is printed with characters available in the loaded font.
-\new \OpTeX/
-If the character is unsupported by the font then the slot is empty and only
-\TeX/ sequence and the class of the code is printed in the table.
-For example, this document loads `latimodern-math.otf` font.
-And the result from `\input print-unimath.opm` looks like the following ten
-pages.
-
-Unsupported characters can be replaced by characters from other Unicode math
-font, see
-\ulink[http://petr.olsak.net/optex/optex-tricks.html\#addumathfont]{OpTeX trick 0030}
-or section~\ref[newfam].
-
-
-\label[listA]\wlabel{}
-
-\bigskip
-\input print-unimath.opm
-\bigskip
-
-\label[listB]\wlabel{}
-
-It isn't very comfortable to find something in the previous table
-if you know the shape. You can try the online web tool \ii Detexify
-\ulink[https://detexify.kirelabs.org/classify.html]{Detexify}.
-You can draw the symbol here and the suggestion of \TeX/ sequence is
-printed.
-
-\def\g#1{{\tt\string#1}~$#1$}
-
-The generic \TeX/ sequences for the Greek letters \ii Greek/letters can be used:
-\g\alpha, \g\beta, \g\gamma, \g\delta, \g\varepsilon, \g\zeta, \g\eta,
-\g\theta, \g\iota, \g\kappa, \g\lambda, \g\mu, \g\nu, \g\xi,
-\g\omicron, \g\pi, \g\rho, \g\varsigma, \g\sigma, \g\tau, \g\upsilon,
-\g\varphi, \g\chi, \g\psi, \g\omega, \g\vardelta, \g\epsilon, \g\vartheta,
-\g\varkappa, \g\phi, \g\varrho, \g\varpi\
-and
-\g\Alpha, \g\Beta, \g\Gamma, \g\Delta, \g\Epsilon, \g\Zeta, \g\Eta, \g\Theta,
-\g\Iota, \g\Kappa, \g\Lambda, \g\Mu, \g\Nu, \g\Xi, \g\Omicron, \g\Pi, \g\Rho,
-\g\Sigma, \g\Tau, \g\Upsilon, \g\Phi, \g\Chi, \g\Psi, \g\Omega.
-
-\new \OpTeX/
-The variant of Greek letters in the output
-(upright, italic, bold, bold sans serif, etc.)
-written by the sequences `\alpha`, `\beta` etc. depends on the math alphabet
-selected by `\_itgreek`, `\_rmgreek`, etc. selectors. The user-level
-selectors `\bf` and `\bi` set `\_bsansgreek` and `\_bisansgreek`, so
-`{\bi\delta}` produces $\bi\delta$.
-
-\new Unicode
-All characters available in the math font can be accessed by \TeX/ control
-sequence or by directly using the Unicode character in the document source.
-Example:
-\begtt \adef/{}
-$$
- \sum/_{k=0}^\infty e^{(\alpha+i\beta/_k)} =
- e^\alpha \sum/_{k=0}^\infty e^{i\beta/_k} =
- e^\alpha \sum/_{k=0}^\infty (\cos\beta/_k + i\sin\beta/_k).
-$$
-\endtt
-or
-\begtt \ttspec
-$$
- ∑_{k=0}^∞ e^{(α + iβ_k)} = e^α ∑_{k=0}^∞ e^{iβ_k}
- = e^α ∑_{k=0}^∞ (\cos β_k + i\sin β_k).
-$$
-\endtt
-both gives the same result:
-$$
- ∑_{k=0}^∞ e^{(α + iβ_k)} = e^α ∑_{k=0}^∞ e^{iβ_k}
- = e^α ∑_{k=0}^∞ (\cos β_k + i\sin β_k).
-$$
-\medskip
-
-
-\sec Other specialities
-
-\secc The `\not` prefix
-
-You can apply \x`\not` before a following math object.
-The slash $/$ is overprinted such math object, for example
-`$a \not= b$` gives $a \not= b$.
-
-\new \OpTeX/
-If there exists a direct Unicode character for the negation of a relation symbol
-(for example `\ne` creates $\ne$ directly as a character U+2260)
-then `\not<char>` expands to appropriate Unicode character.
-For example `\not=` expands to `\ne` or `\not\in` expands to `\notin`.
-If such character does not exist then
-the centered $/$ is overprinted over the next character.
-
-
-\secc The `\buildrel` macro: text over the relation
-
-The macro \x`\buildrel`` <text>\over <relation>` creates a new atom Rel with the
-<relation> and with the smaller <text> above this <relation>. Example:
-`$M \buildrel\rm def\over= X\cup Y$` gives $M\buildrel\rm def\over= X\cup Y$.
-
-
-\secc Spaces
-
-Spaces between atoms are created automatically as were mentioned in
-section~\ref[class]. But sometimes you have to help \TeX/ to create
-appropriate space. You can use following macros:
-
-\begitems
-* `\,` is \ii thin/space {\em thin space} used around Op atoms, after comma, etc.: \ss\,,
-* `\!` is \ii negative/thin/space negative thin space,
-* `\>` is \ii medium/space {\em medium space} used around Bin atoms: \ss\>,
-* `\;` is \ii thick/space {\em thick space} used around Rel atoms: \ss\;,
-* \x`\quad` is \ii em/space {\em em space}: \ss\quad,
-* \x`\qquad` is \ii double/em/space {\em double em space}: \ss\qquad.
-\enditems
-%
-Of course, you can use \ii direct/space {\em direct space} {\visiblesp`\ `} which is \TeX/ primitive
-and gives interword space: \ss\ \
-or you can use \x`\hskip`` <value>` to put arbitrary space.
-
-The space size of `\,`, `\!` resp. `\>`, resp. `\;` is given by
-`\thinmuskip`, resp. `\medmuskip`, resp. `\thickmuskip` values. You can see
-in the `plain.tex` file that these default values differ very little in their basic
-size but there is no stretchability/shrinkability in the `\,` space, there is small
-stretchability in the `\>` space, and more stretchability in the `\;` space.
-
-The registers \x`\thinmuskip`, \x`\medmuskip`, and \x`\thickmuskip` store so-called
-\ii mu/values {\em mu values} given by math unit `mu`. It is 1/18 em and this unit depends
-on the current font size used in the math formula ($S$ or $SS$ styles use
-smaller font size, the `mu` unit is smaller here). You can use \x`\muskip`
-instead `\hskip` or \x`\mukern` instead `\kern` if you want to use this
-special mu unit. It is allowed only in math mode.
-
-The \x`\quad` and \x`\qquad` spaces have fixed width and they can be used in text
-mode too. (\OpTeX/ allows to use `\,` in text mode too).
-Use `\quad` or `\qquad` if you want to separate more formulas created in
-single math mode. Examples of typical usage of spaces:
-
-\begtt \adef/{} \typosize[10/12]
-$$ \alpha\,(x+y), \qquad \int/_a^b \!\! f(x)\,{\rm d}x, \qquad \Gamma/_{\!i}. $$
-\endtt
-$$ \alpha\,(x+y), \qquad \int_a^b \!\! f(x)\,{\rm d}x, \qquad \Gamma_{\!i}. $$
-
-
-\secc Texts in math mode
-
-If you write `$Hello world!$` (i.e.\ Hello world in math mode), then you get
-$Hello world!$. It is interpreted as the product of variables $H$, and $e$, and
-$l^2$, and $o$, etc., followed by the symbol ! used for factorial.
-The non-ASCII letters (with accents) don't work at all because they are
-never used as symbols for variables. Spaces are ignored.
-
-If you want to write a short text in the math mode, then you can use
-`\hbox{<text>}`. The \x`\hbox` primitive initializes text mode regardless of
-the \"outer mode". Example:
-
-\begtt \adef/{} \typosize[10/12]
-$$ \sum/_{n=0}^\infty (-1)^n a_n \hbox{ converges, if $a_n\searrow 0$.} $$
-\endtt
-$$ \sum_{n=0}^\infty (-1)^n a_n \hbox{ converges, if $a_n\searrow 0$.} $$
-%
-Note the space before the word \"converges". The space before `\hbox` is
-irrelevant. Second notice: the example shows the text mode inside math mode
-and the in-line math mode inside this text mode. The same result can be
-produced by:
-
-\begtt \adef/{} \typosize[10/12]
-$$ \sum/_{n=0}^\infty (-1)^n a_n \hbox{ converges, if } a_n\searrow 0. $$
-\endtt
-%
-The difference can be visible if the formula $a_n\searrow 0$ includes a
-fraction, for example ${1\over2}a_n\searrow 0$. The first example prints the
-fraction in the text style and the second example prints it in the display style.
-
-The disadvantage of `\hbox` is that it starts in the text mode independently
-of the current style, but we want to use smaller font in $S$ or $SS$ styles.
-\new \OpTeX/
-You can use \x`\mathbox``{<text>}` in such situations. This macro behaves like
-`\hbox` but the text is appropriately smaller in $S$ and $SS$ styles.
-Example:
-$$
- `{\mathbox{cena}\over\mathbox{výkon}}` \quad \hbox{gives }
- {\mathbox{cena}\over\mathbox{výkon}} \hbox{ in $D$ style and }
- \textstyle {\mathbox{cena}\over\mathbox{výkon}} \hbox{ in $T$ style.}
-$$
-Note that $\mathbox{cena}\over\mathbox{výkon}$ means $\rm price\over performance$
-and you can write `$\rm price\over performance$` when you are using only
-words without spaces and accented letters. But phrases with spaces or accented letters
-should be printed in text mode using `\hbox` or `\mathbox`.
-
-\secc `\vcenter`
-
-The \x`\vcenter` primitive behaves like `\vbox`, but it can be used only in
-math mode and its result is vertically centered to the math axis.
-For example, matrices, are created by tables in `\vcenter`.
-
-All big objects in math formula are centered on the math axis and the baseline is
-ignored. In the following example, we create a new big math operator by
-`\vcenter`:
-\begtt
-$$
- \def\myop#1{\mathop{\vcenter{\frame{\vbox to2em{\vss\hbox{ $#1$ }\vss}}}}}
- F(x) = \myop{x(i)}_{i=1}^\infty
-$$
-\endtt
-\vskip-2em
-$$
- \def\myop#1{\mathop{\vcenter{\frame{\vbox to2em{\vss\hbox{ $#1$ }\vss}}}}}
- F(x) = \myop{x(i)}_{i=1}^\infty
-$$
-
-
-\secc Three dots
-
-You can write `$1,2,\dots,n$` to get $1,2,\dots,n$. The \x`\dots` macro puts
-thin space between dots and after the last dot, so the five object: comma,
-dots, comma are exactly equidistant.
-
-Typographic conventions say that you have to use the repeating symbol
-before and after three dots (comma in the previous example) and the three dots
-should be at baseline if the repeating symbol is at baseline. Or they should be
-at the math axis if the repeating symbol is at the math axis. We have to use \x`\cdots` instead
-`\dots` in the second case. Example:
-$$
- `a_1, a_2, \dots, a_n, \quad a_1 + a_2 + \cdots + a_n` \qquad
- a_1, a_2, \dots, a_n, \quad a_1 + a_2 + \cdots + a_n
-$$
-\vskip-.7em
-There are \x`\vdots` $\vdots$, \x`\ddots` $\ddots$ and \x`\adots` $\adots$ which
-can be used in matrices.
-
-\new Unicode
-Three dots like the output of the `\dots` macro are present as a single
-character in fonts too. This character is called ellipsis. Font designers
-typically suggest this character with smaller spaces between dots than we
-need in math mode. So the rule about equidistant \"comma, three dots, comma"
-is not met when this character is used. You can try `$1,2,\unicodeellipsis, n$`
-and `$1+2+\unicodecdots + n$`. You get $1,2,\unicodeellipsis, n$ and
-$1+2+\unicodecdots + n$. If you feel that this is better, then you can set:
-`\let\dots=\unicodeellipsis \let\cdots=\unicodecdots`.
-
-The Unicode fonts includes compact variants `\unicodevdots` $\unicodevdots$,
-`\unicodeddots` $\unicodeddots$ and `\unicodeadots` $\unicodeadots$ too.
-
-
-\secc Phantoms and `\smash`
-
-The \x`\phantom``{<math list>}` macro creates an invisible subformula equal to
-the formula generated by <math list>. It has its size, so it can
-interfere with surrounding visible subformulas. This macro is very useful for
-aligning with special requirements. Examples are shown in
-sections~\ref[matrix] and~\ref[elines].
-
-The \x`\vphantom``{<math list>}` has only its vertical size (i.e.\ its height
-and depth), the width is zero. The \x`\hphantom``{<math list>}` has only its
-width.
-
-The \x`\smash``{<math list>}` is the opposite of `\vphantom`. It creates visible
-subformula but it has only its width. Its height and depth are zero.
-
-The result of these macros is the nucleus of an Ord atom. You can use `\mathop`,
-`\mathbin`, etc. primitives to change this class. For example
-`$a\mathrel{\phantom{=}}b$` creates the same formula as $a=b$ with the same
-distance from $a$ to $b$ but without the equal sign:
-$a\mathrel{\phantom{=}}b$.
-
-These macros work in the text mode too. Then their argument is
-the <horizontal list>.
-
-
-\sec Structured objects
-
-\secc[matrix] Matrices
-
-The macro \x`\matrix``{<data>}` creates a vertically centered table of items.
-The <data> includes <items> separated by `&` and rows are separated by
-`\cr`. The number of columns and rows are unlimited. Columns are printed centered
-and separated by the `\quad` space. The vertically scalable
-brackets around the table are not printed. You can use \x`\pmatrix``{<data>}`
-instead `\matrix{<data>}`: the vertically scalable parentheses () are inserted
-around the table. Examples:
-
-\begtt
-$$
- {\bf A} = \pmatrix{a_{1,1} & a_{1,2} & \cdots & a_{1,n} \cr
- a_{2,1} & a_{2,2} & \cdots & a_{2,n} \cr
- \vdots & \vdots & \ddots & \vdots \cr
- a_{m,1} & a_{m,2} & \cdots & a_{m,n} },
-$$
-\endtt
-$$
- {\bf A} = \pmatrix{a_{1,1} & a_{1,2} & \cdots & a_{1,n} \cr
- a_{2,1} & a_{2,2} & \cdots & a_{2,n} \cr
- \vdots & \vdots & \ddots & \vdots \cr
- a_{m,1} & a_{m,2} & \cdots & a_{m,n} },
-$$
-or:
-
-\begtt
-\def\qmatrix[#1]{\left[\matrix{#1}\right]}
-$$
- \qmatrix[a&b&c\cr d&e&f\cr g&h&i] \cdot \qmatrix[x_1\cr x_2\cr x_3]
- = \qmatrix[b_1\cr b_2\cr b_3].
-$$
-\endtt
-$$
- \def\qmatrix[#1]{\left[\matrix{#1}\right]}
- \qmatrix[a&b&c\cr d&e&f\cr g&h&i] \cdot \qmatrix[x_1\cr x_2\cr x_3]
- = \qmatrix[b_1\cr b_2\cr b_3].
-$$
-
-If you need to align the columns by another way than to center, then you can
-use the phantom. Compare:
-
-\begtt
-$$
- \pmatrix{ 1 & -1 & 0 \cr
- 0 & 2 & 13 \cr
- -3 & 0 & 5 } \quad \hbox{or} \quad
- \def\0{\phantom0} \def\+{\phantom+}
- \pmatrix { \+1 & -1 & \00 \cr
- \+0 & \+2 & 13 \cr
- -3 & \+0 & \05 }
-$$
-\endtt
-$$
- \pmatrix{ 1 & -1 & 0 \cr
- 0 & 2 & 13 \cr
- -3 & 0 & 5 } \quad \hbox{or} \quad
- \def\0{\phantom0} \def\+{\phantom+}
- \pmatrix { \+1 & -1 & \00 \cr
- \+0 & \+2 & 13 \cr
- -3 & \+0 & \05 }
-$$
-
-\new\OpTeX/
-Another option to set the right aligned matrix is setting the \x`\lmfil`:
-Its value is used on the left side in each `\matrix` item. The right side is
-set directly to `\hfil`.
-\begtt
-$$
- \lmfil={\hfill} % left matrix filler = \hfill
- \pmatrix{ 1 & -1 & 0 \cr 0 & 2 & 13 \cr -3 & 0 & 5 }
-$$
-\endtt
-
-\new \OpTeX/
-If you want to draw a vertical line inside the matrix, you can use `\adef|`
-as in the following example:
-\begtt
-$$
- \adef|{\kern-.2em&\strut\vrule&\kern-.2em}
- \def\+{\phantom+}
- \pmatrix{1 & 2 & 3 | 0 \cr 4 & 5 & 6 | 1 \cr 7 & 8 & 9 | 2 } \sim
- \pmatrix{1 & \+2 & \+3 | 0 \cr 0 & -3 & -6 | 1 \cr 0 & -6 & -12 | 2} \sim
- \pmatrix{1 & 2 & 3 | 0 \cr 0 & 1 & 2 | -1/3 \cr 0 & 0 & 0 | 1 }
-$$
-\endtt
-$$
- \adef|{\kern-.2em&\strut\vrule&\kern-.2em}
- \def\+{\phantom+}
- \pmatrix{1 & 2 & 3 | 0 \cr 4 & 5 & 6 | 1 \cr 7 & 8 & 9 | 2 } \sim
- \pmatrix{1 & \+2 & \+3 | 0 \cr 0 & -3 & -6 | 1 \cr 0 & -6 & -12 | 2} \sim
- \pmatrix{1 & 2 & 3 | 0 \cr 0 & 1 & 2 | -1/3 \cr 0 & 0 & 0 | 1 }
-$$
-
-If you want to put something before the opening bracket in the matrix, you can
-use another `\matrix`. Example:
-
-\begtt
-$$
- \adef|{\kern-.2em&\strut\vrule&\kern-.2em}
- \def\+{\phantom+}
- \def\r{{\bf r}}
- \pmatrix{1 & 2 & 3 | 0 \cr 4 & 5 & 6 | 1 \cr 7 & 8 & 9 | 2 } \ \sim \
- \matrix{\cr 2.\r - 4\cdot 1.\r: \cr 3.\r -7\cdot 1.\r: }
- \pmatrix{1 & \+2 & \+3 | 0 \cr 0 & -3 & -6 | 1 \cr 0 & -6 & -12 | 2}
-$$
-\endtt
-$$
- \adef|{\kern-.2em&\strut\vrule&\kern-.2em}
- \def\+{\phantom+}
- \def\r{{\bf r}}
- \pmatrix{1 & 2 & 3 | 0 \cr 4 & 5 & 6 | 1 \cr 7 & 8 & 9 | 2 } \ \sim \
- \matrix{\cr 2.\r - 4\cdot 1.\r: \cr 3.\r -7\cdot 1.\r: }
- \pmatrix{1 & \+2 & \+3 | 0 \cr 0 & -3 & -6 | 1 \cr 0 & -6 & -12 | 2}
-$$
-
-Plain \TeX/ defines the \x`\bordermatrix` macro which allows you to create a
-top row above the brackets and left column before the opening bracket.
-\TeX/book shows the following example:
-
-\begtt
-$$
- M = \bordermatrix{ &C&I&C'\cr
- C&1&0&0 \cr I&1-b&0 \cr C'&0&a&1-a }
-$$
-\endtt
-$$
- M = \bordermatrix{ &C&I&C'\cr
- C&1&0&0 \cr I&1-b&0 \cr C'&0&a&1-a }
-$$
-
-The `\matrix` macro used in $D$ style creates all its items in $T$ style.
-\new \OpTeX/
-If you are using the `\matrix` macro in $T$ style or $S$ style (but not in
-fractions nor another matrices) then the resulting table is appropriately
-smaller and all its items are processed in $S$ style.
-If you are using `\matrix` in $SS$ style then the items are in $SS$ style too.
-The following example shows one-column matrix in script style:
-$$
- `\sum``_{\matrix{i\in M\cr j\in N\cr k\in P}} x_{i,j,k}` \ \hbox{ creates: }
- \sum_{\matrix{i\in M\cr j\in N\cr k\in P}} x_{i,j,k}
-$$
-
-
-\secc Cases
-
-The \x`\cases` macro can be used as in the following example:
-
-\begtt
-$$
- f(x) = \cases{ 1 & for $x\le 0$, \cr
- 100-x\over 100 & when $0 < x \le 100$, \cr
- 0 & in other cases. }
-$$
-\endtt
-$$
- f(x) = \cases{ 1 & for $x\le 0$, \cr
- 100-x\over 100 & when $0\string< x\le 100$, \cr
- 0 & in other cases. }
-$$
-
-The `\cases` macro behaves like a special `\matrix` with two left-aligned
-columns and with left vertically scaled brace $\{$.
-The first column is processed in math mode and $T$ style, the second column
-is processed in text mode. We have to use `$...$` in the second column if
-there is math material.
-
-
-\sec Lines in display mode
-
-\secc General principles
-
-The \ii display/math,display/math/mode
-`$$<formula>$$` finalizes previous paragraph, prints centered <formula> on
-single line with a vertical space above and below and opens next paragraph
-with no indentation.
-
-From \TeX/'s point of view, the text above `$$<formula>$$` plus text
-below is a single paragraph interrupted by display <formula>. If there is no
-text above (i.e. the opening `$$` are in vertical mode), then the internal
-`\noindent` is processed first and the empty line above <formula> is created.
-Thus, it is definitely a bad idea to open display mode in vertical mode: never
-put an empty line before `$$<formula>$$`. On the other hand, the empty line
-just after `$$<formula>$$` says that the paragraph is finalized by the
-<formula> and the next text (after the empty line) opens the next paragraph with
-indentation. Summary:
-
-\begitems
-* \"Text above `$$<formula>$$` text below": the <formula> interrupts the
- paragraph with \"Text above" and \"text below". The \"text below" is
- without indentation.
-* \"Text above `$$<formula>$$` empty line Text below": the \"Text below"
- opens new paragraph with indentation.
-* \"Empty line `$$<formula>$$`" is bad practice.
-\enditems
-
-In contrast with the paragraph breaking, there is no built-in algorithm for
-breaking display <formula> to more lines. If the <formula> is too wide then
-overfull `\hbox` occurs and human must decide about splitting the <formula>
-to more lines. The macros `\displaylines` and `\eqalign` are intended to
-such task, see sections~\ref[dlines] and~\ref[elines].
-
-On the other hand, the in-line math <formula>, i.e.\ the `$<formula>$` in a
-paragraph, can be broken after a Bin atom (with penalty `\binoppenalty`) or
-after a Rel atom (with penalty `\relpenalty`). If you don't want to break
-such a formula at a specific place then use `\nobreak`, for example
-`$a+\nobreak b$`. If you want never to break such formulas then you can set
-`\binoppenalty=10000`, `\relpenalty=10000`. (Default values are 700 and 500.)
-
-
-\secc References to display lines
-
-The `$$<formula>`\x`\eqno``<mark>$$` \ii mark prints centered <formula> and the <mark> at
-right margin. The `$$<formula>`\x`\leqno``<mark>$$` prints centered <formula> and
-the <mark> at left margin. Examples:
-
-\begtt
-$$ a^2 + b^2 = c^2 \eqno (1) $$
-\endtt
-$$
- a^2 + b^2 = c^2 \eqno (1)
-$$
-\begtt \aftergroup\nobreak
-$$ a^2 + b^2 = c^2 \leqno \rm Py $$
-\endtt
-$$\predisplaypenalty=10000
- a^2 + b^2 = c^2 \leqno \rm Py
-$$
-The <mark> \ii mark is processed in math mode and $T$ style. If you want to put a
-text here then you have to use `\rm <text>` or `\hbox{<text>}`.
-
-\new \OpTeX/
-The auto-generated <mark> can be created by `$$<formula>`\x`\eqmark``$$`. The
-<label> can be used previously declared by \x`\label``[<label>]`.
-Then it is associated to such
-auto-generated <mark> and you can write a reference in the form
-`see equation~\ref[<label>]`. You can write `\eqmark[<label>]` instead of
-`\label[<label>]...\eqmark`. See the \OpTeX/ manual, section~1.4.3.
-
-\secc[dlines] The `\displaylines` macro
-
-This macro creates more horizontally centered formulas in one display mode.
-The syntax is
-\begtt \catcode`\<=13
-$$ \displaylines{
- <formula> \cr
- <formula> \cr
- ... \cr
- <formula>
-} $$
-\endtt
-Usage of \x`\displaylines` is more
-prefered than doing more display modes just behind each other.
-Example:
-\begtt
-$$ \displaylines{
- (3x^3 + 4x^2 + 5x + 6) \cdot (x^6 + x^2 + 5) = \cr
- = 3x^9 + 4x^8 + 5x^7 + 6x^6 + 3x^5 + 4x^4 + 20x^3 + 26x^2 + 25x + 30.
-} $$
-\endtt
-$$ \displaylines{
- (3x^3 + 4x^2 + 5x + 6) \cdot (x^6 + x^2 + 5) = \cr
- = 3x^9 + 4x^8 + 5x^7 + 6x^6 + 3x^5 + 4x^4 + 20x^3 + 26x^2 + 25x + 30.
-} $$
-
-The output from `\displaylines` macro is breakable to more pages because
-the lines are not encapsulated in one box. The macro uses a special feature of
-`\halign` primitive. The disadvantage is that you cannot use `\eqno` nor
-`\leqno` nor `\eqmark`.
-
-\new \OpTeX/
-\OpTeX/ provides alternative form: `\displaylines to<dimen> {<data>}`.
-Then the centered formulas are encapsulated in a `\vcenter` box of width <dimen> and
-usage of `\eqno` or `\leqno` or `\eqmark` is allowed.
-The individual lines have the form `\hbox to<dimen>` and formulas are centered using
-`\hss` from both sides. This means that you can set arbitrary <dimen>
-without visual change of the formulas. Use smaller <dimen> value than
-`\hsize` (or `\displaywidth`\fnote
-{`\displaywith` = `\hsize` in most cases but it is
-real display width when `\parshape` or `\hangindent` is used.})
-if you want to center formulas with `\eqno` appended.
-The internal \TeX/ rule says: the formula with `\eqno` (or `\leqno`) is centered
-if its width is less or equal `\displaywidth-4<mark-width>`. So
-\begtt \catcode`\<=13
-$$ \displaylines to\hsize-8em {<formula>\cr<formula>}\eqno (1) $$
-\endtt
-does global centering, because size of `(1)` is less than 2\,em.
-You can do more experiments with this example,
-for example `\diplaylines to\hsize{...}`
-puts the `\eqno` mark to the next line in the display environment. Read
-\TeX/book or \TeX/book naruby, where the precise explanation about such
-positioning is.
-
-\new \OpTeX/
-You can use \"`\displaylines to<dimen>`" for more applications. For example,
-you can put more
-\"`\displaylines to<dimen>`" in single display mode, one next to second in order
-to creating more centered columns with formulas; the width of such columns
-are controlled by the <dimen> parameter.
-Or, you can give an exception for several lines:
-
-\begtt \catcode`\<=13
-$$\displaylines to 10cm {<formula>\hfill \cr
- <formula>\cr
- <formula>\cr
- \hfill <formula>}
-$$
-\endtt
-The example above gives similar result as the \LaTeX/ `multline` environment:
-$$\displaylines to \hsize {
- (3x^3 + 4x^2 + 5x + 6) \cdot (x^6 + x^2 + 5) = \hfill \cr
- = 3x^9 + 3x^5 + 15x^3 + 4x^8 + 4x^4 + 20x^2 + 5x^7 + 5x^3 + 25x
- + 6x^6 + 6x^2 + 30 = \cr
- \hfill = 3x^9 + 4x^8 + 5x^7 + 6x^6 + 3x^5 + 4x^4 + 20x^3 + 26x^2 + 25x + 30. }
-$$
-
-
-\secc[elines] The `\eqalign` macro
-
-The \ii .eqalign \iis .eqalign {{\code{\\eqalign}}} usage is:
-\begtt \catcode`\<=13
-$$ \eqalign { <left-side> & <right-side> \cr
- <left-side> & <right-side> \cr
- ... \cr
- <left-side> & <right-side>
-} $$
-\endtt
-The `\vcenter` box is created with two columns, left column is right aligned
-and right column is left aligned. Example:
-
-\vbox{
-\begtt
-$$ \eqalign{
- x + 2y + 3z &= 600 \cr
- 12x + y - 3z &= 7 \cr
- 4x - y + 5z &= -5 \cr
-} $$
-\endtt
-\vskip-5.7\baselineskip
-{\hsize=1.35\hsize
-$$ \eqalign{
- x + 2y + 3z &= 600 \cr
- 12x + y - 3z &= 7 \cr
- 4x - y + 5z &= -5 \cr
-} $$}}
-
-\bigskip\noindent
-The tab \"`&`" should be used just before a relation, i.e. `&=` is right, `=&`
-is wrong. All lines are aligned to the used tab.
-
-Maybe you want more precise alignment in the example above. You can use
-`\phantom`:
-
-\par\nobreak\vbox{
-\begtt
-$$ \def\1{\phantom1} \def\+{\phantom+}
- \eqalign{
- x + 2y + 3z &= 600 \cr
- 12x + \1y - 3z &= \+7 \cr
- 4x - \1y + 5z &= -5 \cr
-} $$
-\endtt
-\vskip-5.7\baselineskip
-{\hsize=1.35\hsize
-$$ \def\1{\phantom1} \def\+{\phantom+}
- \eqalign{
- x + 2y + 3z &= 600 \cr
- 12x + \1y - 3z &= \+7 \cr
- 4x - \1y + 5z &= -5
-} $$}}
-\bigskip
-Another typical usage of the `\eqalign` macro:
-
-\begtt \typosize[10/12]
-$$ \eqalign{
- p(x)\,q(x) &= (3x^3 + 4x^2 + 5x + 6) \cdot (x^6 + x^2 + 5) = \cr
- &= 3x^9 + 4x^8 + 5x^7 + 6x^6 + 3x^5 + 4x^4 + 20x^3 + 26x^2 + 25x + 30.
-} $$
-\endtt
-$$ \eqalign{
- p(x)\,q(x) &= (3x^3 + 4x^2 + 5x + 6) \cdot (x^6 + x^2 + 5) = \cr
- &= 3x^9 + 4x^8 + 5x^7 + 6x^6 + 3x^5 + 4x^4 + 20x^3 + 26x^2 + 25x + 30.
-} $$
-
-In \OpTeX/, \new\OpTeX/
-the `\eqalign` macro is more flexible. You can set the
-`\baselineskip` value by the \x`\eqlines` parameter and math style
-by the \x`\eqstyle` parameter.
-For example, you need to put the system of \"equations" as a subscript of a sum
-operator:
-\begtt \typosize[10/12] \adef/{}
-$$
- \sum/_{\eqlines{\baselineskip=.7\baselineskip}\eqstyle{\scriptstyle}\eqalign{
- i &\in A \cr
- \quad j &\in B\cup C \cr
- m &\in C }}
- i + j + m
-$$
-\endtt
-$$
- \sum_{\eqlines{\baselineskip=.7\baselineskip}\eqstyle{\scriptstyle}\eqalign{
- i &\in A \cr
- \quad j &\in B\cup C \cr
- m &\in C }}
- i + j + m
-$$
-
-\indent \new\OpTeX/
-You can write more equation systems one next second:
-\begtt
-$$\eqalign{
- x + y + z &= 1 && a + b + c &= -1 \cr
- u + v &= 20 && f + g &= -20 \cr
- i &= j
-}$$
-\endtt
-You can use the third column for centered equations
-without aligning point. For example:
-\begtt \catcode`\<=13
-$$ \left( \eqspace=0pt \eqalign{&& <first equation>\cr
- && <second equation>} \right) $$
-\endtt
-The \x`\eqspace` is additional space used in the third column to separate
-equation systems one next second.
-
-\new \OpTeX/
-\OpTeX/ extensions summary:
-\begitems
-* `\eqlines` and `\eqstyle` set baselineskip and math style of the formulas.
-* `\eqalign` allows more than two columns:
- The first column is right-aligned (no space). The second is left-aligned (no space).
- The third column (if used)
- is centered with `\eqspace/2` at the left and right boundary of the column.
- The fourth is the same as the first. The fifth is the same as second etc. The number
- of columns that can be used in `\eqalign` is unlimited.
-\enditems
-
-\secc The `\eqalign` macro with references
-
-You can give common mark to whole equation system by
-`$$\eqalign{<data>}\eqno <mark>$$`. If you want to give marks to individual
-lines of the equation system, then you can use another macro:
-\x`\eqalignno`. The usage is similar as `\eqalign` but the
-third column (if used) is intended to the equation mark. Example:
-
-\begtt
-$$ \eqalignno{
- x + 2y + 3z &= 600 & \rm(A) \cr
- 12x + y - 3z &= 7 & \rm(B) \cr
- 4x - y + 5z &= -5 & \rm(C) \cr
-} $$
-\endtt
-\vskip-\baselineskip
-$$ \eqalignno{
- x + 2y + 3z &= 600 & \rm(A) \cr
- 12x + y - 3z &= 7 & \rm(B) \cr
- 4x - y + 5z &= -5 & \rm(C) \cr
-} $$
-
-The `\leqalignno` macro is similar to `\eqalignno` but the marks are at the left
-margin. The \OpTeX/ extensions of `\eqalign` are not available in
-`\eqalignno` nor `\leqalignno` macros.
-
-\new \OpTeX/
-You can use auto-generated marks by `\eqmark` macro:
-`$$\eqalign{<data>}\eqmark$$` or:
-\begtt
-$$ \eqalignno{
- x + 2y + 3z &= 600 & \eqmark[A] \cr
- 12x + y - 3z &= 7 & \eqmark[B] \cr
- 4x - y + 5z &= -5 & \eqmark[C] \cr
-} $$
-\endtt
-
-
-\sec Concept of loading math fonts
-
-\secc[fams] Math families
-
-\TeX/ can use more than one math font in math mode. This was a
-necessity in the old days when only 128-characters fonts existed.
-Each math font used in math mode has its \ii math/family {\em math family} represented by a number.
-Math family is a collection of three (almost) equal fonts in three sizes:
-first for `\textstyle` and `\displaystyle`, second for `\scriptstyle`
-and third for `\scriptscriptstyle`.
-
-\new Unicode
-When Unicode math font is loaded then it includes all three optical sizes and
-all characters needed for typesetting math formula.
-Theoretically, we can use only one math family with this single font. But more math families
-(i.e.\ more fonts in math mode) is still possible. You can combine
-characters from more fonts (Unicode fonts and old TFM fonts together) in one math formula.
-
-\new \OpTeX/
-\OpTeX/ loads the main Unicode math font into math family 1. The math
-families 2 and 3 are reserved for specific \TeX/nical reasons, family 4 is
-used for `\script` font and families 5, 6, 7, etc. can be used by user for
-loading more fonts. The default macro for loading math fonts looks like:
-
-\begtt \typosize[10/12]
-\_def\_normalunimath{%
- \_loadumathfamily 1 {\_unimathfont}{} % Main Unicode math font
- \_loadmathfamily 4 rsfs % \script (old TFM font)
- \_setunimathdimens % set dimen parameters used in math formulas internally
-}%
-\let\_normalmath=\_normalunimath % this is done when Unicode math is initialized
-\endtt
-%
-Whenever \OpTeX/ needs to resize math fonts (for example in footnotes or
-titles), it calls the `\_normalmath` macro to reload all math
-families to the desired size. If you want to add the next font, you can add
-`\_loadunimathfamily <family> {<Unicode-font>}{<features>}` or
-`\_loadmathfamily <family> <TFM-font>` into the `\_normalmath` macro.
-The example in section~\ref[newfam] shows how to do it.
-
-\secc Two variants of math fonts: normal and bold
-
-All math formulas in the whole document need only one Unicode font (or only one collection
-of math fonts as mentioned in section~\ref[fams]). But this
-is not really true if titles are in bold font. If a math formula is present in
-such a bold title then all characters of this formula must be bolder.
-For example \"normal" variables must be in bold italic in titles, symbols
-like `+` `=` must be bold and \"normal bold" letters
-(e.g., indicating vectors in math formula) must be extra bold in titles.
-It means that all fonts from the collection of math fonts must be bolder.
-We need a second collection of math fonts with bolder
-shape. Unfortunately, it is not always available.
-
-\new \OpTeX/
-If you have bold variant of used Unicode math font, then you can use
-\ii .loadmath \iis .loadmath {{\code{\\loadmath}}} \x`\loadboldmath` command, for example:
-\begtt
-\loadmath {[xitsmath-regular]}
-\loadboldmath {[xitsmath-bold]} \to {[xitsmath-regular]}
-\endtt
-%
-\OpTeX/ uses `\_normalmath` macro for loading collection of math fonts in
-\"normal" cases and `\_boldmath` macro for bold titles. The font declared by
-\x`\loadboldmath` is used in second case. But if the bold variant of the font is
-not available (this is unfortunately more typical), then \OpTeX/ uses faked
-bold of main Unicode math font (the `embolden` internal font feature is
-used). So, the default `\_boldmath` macro defined by \OpTeX/ looks like:
-
-\begtt \typosize[10/12]
-\_def\_boldunimath{%
- \_ifx\_unimathboldfont \_undefined
- \_loadumathfamily 1 {\_unimathfont}{embolden=1.7;} % Main faked bold
- \_else
- \_loadumathfamily 1 {\_unimathboldfont}{} % Main real bold font
- \_fi
- \_loadmathfamily 4 rsfs % rsfs in not in bold, unfortunately
- \_setunimathdimens
-}%
-\let\_boldmath=\_boldunimath % this is done when Unicode math is initialized
-\endtt
-
-\secc[newfam] Example of using additional math font
-
-The font `bbold10.tfm` includes double stroked characters, for example,
-double stroked plus, double stroked Greek letters and digits.
-Try to run `pdftex testfont`, then answer the question about the name of the
-font: `bbold10` and then type command `\table\end`. The `testfont.pdf` is
-printed with the table of characters of this font.
-Most of these characters cannot be found in Unicode math fonts.
-
-\new \OpTeX/
-We show an example of how to add this font to the collection of used math fonts.
-We can re-define the `\_normalmath` macro by:
-\begtt \typosize[10/12]
-\addto\_normalmath {\_loadmathfamily 5 bbold }
-
-\_regtfm bbold 0 bbold5 5.5 bbold6 6.5 bbold7 7.5 bbold8 8.5 bbold9
- 9.5 bbold10 11.1 bbold12 15 bbold17 * % using all bbold*.tfm
-\_normalmath % reload the math fonts collection
-\endtt
-%
-The string \"`bbold`" is declared by `\_regtfm` as a collection of all
-`bbold*.tfm` fonts, the optical sizes are supported.
-
-\addto\_normalmath {\_loadmathfamily 5 bbold }
-\_regtfm bbold 0 bbold5 5.5 bbold6 6.5 bbold7 7.5 bbold8 8.5 bbold9
- 9.5 bbold10 11.1 bbold12 15 bbold17 * % using all bbold*.tfm
-\_normalmath
-\Umathchardef \bbplus 2 5 "2B
-\Umathchardef \bble 3 5 "3C
-\Umathchardef \bbge 3 5 "3E
-
-Finally, we must to declare new \TeX/ sequences for accessing the characters
-from the new font, for example:
-
-\begtt \typosize[10/12]
-\Umathchardef \bbplus 2 5 "2B
-\Umathchardef \bble 3 5 "3C
-\Umathchardef \bbge 3 5 "3E
-\endtt
-%
-The \x`\Umathchardef` \TeX/ primitive declares new \TeX/ sequence used in math
-typesetting. The first parameter is a class number (2 means Bin, 3 means Rel,
-see the table in the section~\ref[class]). The second parameter is a math
-family number. It is 5, see the redefinition of the `\_normalmath` macro above.
-The third parameter is a slot in the font. Now you can try to use these characters:
-$$
- `a \bbplus b \bbge c` \quad \hbox{gives} \quad a \bbplus b \bbge c.
-$$
-%
-Maybe, you want to declare a special math selector which can be used as
-`$\bball a+b>c$` in order to get $\bbchar a \bbplus b \bbge c$.
-Then you can define:
-
-\begtt \typosize[10/12]
-\def\bball {\bbchar \Umathcodenum `+ \bbplus
- \Umathcodenum `> \bbge
- \Umathcodenum `< \bble }
-\endtt
-
-If you want to add all double stroked Greek letters into `\bball`
-selector, then you can do something like this:
-
-\begtt \typosize[10/12]
-\def\setbbgreek #1 {\tmpnum=#1\xargs\setbbgreekA}
-\def\setbbgreekA #1{\Umathcode \_ea`#1 0 5 \tmpnum \advance\tmpnum by1 }
-
-\addto\bball {%
- \setbbgreek "0B \alpha \beta \gamma \delta \epsilon \zeta \eta
- \theta \iota \kappa \lambda \mu \nu \xi \pi \rho \sigma
- \tau \upsilon \phi \chi ;
- \setbbgreek "7F \omega ;
- \setbbgreek "00 \Gamma \Delta \Theta \Lambda \Xi \Pi \Sigma \Upsilon
- \Phi \Psi \Omega ; }
-\endtt
-%
-The \x`\Umathcode`` <input-code> <class> <family> <font-slot>` primitive is used
-here. The control sequences `\alpha`, `\beta`, `\gamma` etc. are macros which expand
-to the Unicode character of appropriate (non-math) Greek letter. We set the
-Umathcode to such character, for example
-\code{\\Umathcode `}$\_rmgreek\alpha$` 0 5 "0B` is processed.
-
-The bold variant of the font `bbold*.tfm` is not available, unfortunately.
-We have to settle for normal version of the font in the `\_boldmath` macro:
-
-\begtt \typosize[10/12]
- \addto \_boldmath {\_loadmathfamily 5 bbold }
-\endtt
-
-Another approach of using more Unicode math fonts in a single formula is
-shown in
-\ulink[http://petr.olsak.net/optex/optex-tricks.html\#addumathfont]{OpTeX trick 0030}.
-
-\sec Index
-
-Control sequences listed at pages \pgref[listA]--\pgref[listB] are not
-mentioned here again.
-
-\begmulti 3
-\makeindex
-\endmulti
-
-\bye
diff --git a/macros/luatex/optex/doc/optex-techdoc.tex b/macros/luatex/optex/doc/optex-techdoc.tex
deleted file mode 100644
index 4ae25a9c7e..0000000000
--- a/macros/luatex/optex/doc/optex-techdoc.tex
+++ /dev/null
@@ -1,290 +0,0 @@
-%% This is part of the 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 including all references and the index.
-
-\load [doc.opm]
-
-\thisoutline {TECHNICAL DOCUMENTATION}
-
-\chap Technical documentation
-
-This documentation is written in the source files `*.opm` between
-the `\_doc` and `\_cod` pairs or after the `\_endcode` command.
-When the format is generated by
-\begtt
-luatex -ini optex.ini
-\endtt
-then the text of the documentation is ignored and the format `optex.fmt` is
-generated. On the other hand, if you run
-\begtt
-optex optex-doc.tex
-\endtt
-then the same `*.opm` files are read when the second chapter of this
-documentation is printed.
-
-A knowledge about \TeX/ is expected from the reader.
-You can see a short document
-\ulink[http://petr.olsak.net/ftp/olsak/optex/tex-nutshell.pdf]{\TeX/ in a Nutshell}
-or more detail
-\ulink[https://eijkhout.net/texbytopic/texbytopic.html]{\TeX/ by topic}.
-
-Notices about hyperlinks.
-If a control sequence is printed in red color in this documentation then
-this denotes its \"main documentation point". Typically, the listing where
-the control sequence is declared follows immediately. If a control sequence is
-printed in the blue color in the listing or in the text
-then it is an active link that points (usually) to the main documentation point.
-The main documentation point can be an active link that points to a previous
-text where the control sequence was
-mentioned. Such occurrences are active links to the main documentation point.
-
-\sec[init] The main initialization file
-
-The `optex.ini` file is read as the main file when the format is generated.
-
-{\everytt={\typosize[8/10]\_let\_printverbline=\_printcodeline \medskip}
- \def\docfile{optex.ini}
-
-\verbinput (-4) optex.ini
-%
-Category codes are set first. Note that the `_` is set to category code
-\"letter", it can be used as a part of control sequence names.
-Other category codes are set as in the plain \TeX/.
-
-\verbinput (6-20) optex.ini
-%
-The \`\optexversion` and \`\fmtname` are defined.
-
-\verbinput (22-25) optex.ini
-%
-We check if \LuaTeX/ engine is used at `-ini` state. And the `^^J` character
-is set as `\newlinechar`.
-
-\verbinput (27-36) optex.ini
-%
-The basic macros for macro file syntax is defined, i.\,e.\
-`\_endcode`, `\_doc` and `\_cod`.
-The `\_codedecl` will be re-defined later.
-
-\verbinput (38-42) optex.ini
-%
-Individual `*.opm` macro files are read.
-
-\verbinput (44-87) optex.ini
-%
-The file `optex.lua` is embedded into the format as byte-code.
-It is documented in section~\ref[lua].
-
-\verbinput (89-92) optex.ini
-
-The `\everyjob` register is initialized and the format is saved by
-the `\dump` command.
-
-\verbinput (94-102) optex.ini
-
-}
-
-\printdoctail prefixed.opm
-\secc The implementation of the namespaces
-\printdoc prefixed.opm
-
-\sec pdf\TeX/ initialization
-\printdoctail luatex-ini.opm
-\printdoc luatex-ini.opm
-
-\sec Basic macros
-We define first bundle of basic macros.
-\printdoc basic-macros.opm
-
-\sec Allocators for \TeX/ registers
-\printdoctail alloc.opm
-\printdoc alloc.opm
-
-\sec If-macros, loops, is-macros
-\printdoc if-macros.opm
-
-\sec Setting parameters
-\printdoctail parameters.opm
-\printdoc parameters.opm
-
-\sec More \OpTeX/ macros
-The second bundle of \OpTeX/ macros is here.
-\printdoc more-macros.opm
-
-\sec Using key=value format in parameters
-\printdoctail keyval.opm
-\printdoc keyval.opm
-
-\sec Plain \TeX/ macros
-All macros from plain \TeX/ are rewritten here.
-Differences are mentioned in the documentation below.
-\printdoc plain-macros.opm
-
-\sec Preloaded fonts for text mode
-\printdoctail fonts-preload.opm
-\printdoc fonts-preload.opm
-
-\printdoctail fonts-resize.opm
-\printdoc fonts-resize.opm
-
-\printdoctail fonts-select.opm
-\secc Implementation of the Font Selection System
-\printdoc fonts-select.opm
-
-\sec [math-preload] Preloaded fonts for math mode
-\printdoctail math-preload.opm
-\printdoc math-preload.opm
-
-\sec[math-macros] Math macros
-\printdoc math-macros.opm
-
-\sec Unicode-math fonts
-\printdoctail math-unicode.opm
-
-\sec[opmac-fonts] Scaling fonts in document (high-level macros)
-These macros are documented in section~\ref[sizes] from the user point of view.
-\printdoc fonts-opmac.opm
-
-\sec[output] Output routine
-\printdoctail output.opm
-\printdoc output.opm
-
-\sec Margins
-The `\margins` macro is documented in the section~\ref[marg].
-\printdoc margins.opm
-
-\sec[colors] Colors
-\printdoctail colors.opm
-\printdoc colors.opm
-
-\sec[ref-file] The \code{.ref} file
-\printdoctail ref-file.opm
-\printdoc ref-file.opm
-
-\sec[references] References
-\printdoctail references.opm
-\printdoc references.opm
-
-\sec Hyperlinks
-\printdoctail hyperlinks.opm
-\printdoc hyperlinks.opm
-
-\sec[maketoc] Making table of contents
-\printdoc maketoc.opm
-
-\sec PDF outlines
-\secc Nesting PDF outlines
-\printdoctail outlines.opm
-\printdoc outlines.opm
-\secc Strings in PDF outlines
-\printdoctail pdfuni-string.opm
-\printdoc pdfuni-string.opm
-
-\sec[sections] Chapters, sections, subsections
-\printdoc sections.opm
-
-\sec[lists] Lists, items
-\printdoc lists.opm
-
-\sec Verbatim, listings
-\secc[verb] Inline and \"display" verbatim
-\printdoc verbatim.opm
-\secc[hisyntax] Listings with syntax highlighting
-\printdoctail hi-syntax.opm
-\printdoc hi-syntax.opm
-
-\sec Graphics
-\printdoctail graphics.opm
-\printdoc graphics.opm
-
-\sec[table] The \code{\\table} macro, tables and rules
-\printdoctail table.opm
-\secc[table.impl] Implemetation of the \code{\\table} macro and friends
-\printdoc table.opm
-
-\sec Balanced multi-columns
-\printdoc multicolumns.opm
-
-\sec Citations, bibliography
-\secc[bib] Macros for citations and bibliography preloaded in the format
-\printdoc cite-bib.opm
-\secc[usebib] The \code{\\usebib} command
-\printdoctail usebib.opm
-\secc The \code{usebib.opm} macro file loaded when \code{\\usebib} is used
-\printdoc usebib.opm
-
-\secc[isobib] Usage of the \code{bib-iso690} style
-{\everyintt={\catcode`\<=13 \visiblesp}
-\printdoctail bib-iso690.opm }
-
-\secc Implementation of the \code{bib-iso690} style
-\printdoc bib-iso690.opm
-
-\sec[makeindex] Sorting and making Index
-\printdoc makeindex.opm
-
-\sec[fnotes] Footnotes and marginal notes
-\printdoc fnotes.opm
-
-\sec Styles
- \OpTeX/ provides three styles: `\report`, `\letter` and `\slides`.
- Their behavior is documented in user part of the manual in the section
- \ref[styles] and `\slides` style (for presentations) is documented in
- `op-slides.pdf` which is an example of the presentation.
-\secc \code{\\report} and \code{\\letter} styles
-\printdoc styles.opm
-\secc[slides] \code{\\slides} style for presentations
-\printdoc slides.opm
-
-\sec Logos
-\printdoc logos.opm
-
-\sec Multilingual support
-\secc Lowercase, uppercase codes
-\printdoctail uni-lcuc.opm
-\secc Hyphenations
-\printdoc hyphen-lan.opm
-\printdoctail hyphen-lan.opm
-\secc[langphrases] Multilingual phrases and quotation marks
-\printdoc languages.opm
-
-\sec Other macros
-Miscellaneous macros are here.
-\printdoc others.opm
-
-\sec[lua] Lua code embedded to the format
-
-The file `optex.lua` is loaded into the format in `optex.ini` as byte-code
-and initialized by `\everyjob`, see section~\ref[init].
-
-The file implements part of the functionality from `luatexbase` namespace,
-nowadays defined by \LaTeX/ kernel. `luatexbase` deals with modules,
-allocators, and callback management. Callback management is a nice extension
-and is actually used in \OpTeX/. Other functions are defined more or less just
-to suit luaotfload's use.
-
-\newtoks \_hisyntaxlua
-\_hisyntaxlua={%
- \_hicolor C \Green
- \_replfromto {--}{^^J} {\z C{--#1}^^J}%
-}
-
-{\everytt={\typosize[8/10]\_let\_printverbline=\_printcodeline \medskip}
- \commentchars-- \def\docfile{optex.lua} \ttline=-1
- \_def\_printcomments{\_medskip
- {\_catcodetable0 \_typosize[10/12]\_everypar={}\_scantextokens\_ea{\_vcomments}\par}%
- \_bigskip
- }
-
-\verbinput \hisyntax{lua} (4-) optex.lua
-}
-
-
-\sec Printing documentation
-\printdoctail doc.opm
-\printdoc doc.opm
-
-\enddocument
-
diff --git a/macros/luatex/optex/doc/optex-userdoc.tex b/macros/luatex/optex/doc/optex-userdoc.tex
deleted file mode 100644
index a70cedcf4d..0000000000
--- a/macros/luatex/optex/doc/optex-userdoc.tex
+++ /dev/null
@@ -1,2019 +0,0 @@
-%% This is part of the 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.
-
-\let\new=\relax
-
-\sec Starting with \OpTeX/
-%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\new
-\OpTeX/ is compiled as a format for \LuaTeX/. Maybe there is a command
-`optex` in your \TeX/ distribution. Then you can write into the command line
-
-\begtt
-optex document
-\endtt
-%
-You can try to process `optex op-demo` or `optex optex-doc`.
-
-If there is no `optex` command, see more information about installation
-\OpTeX/ at \url{http://petr.olsak.net/optex}.
-
-A minimal document should be
-
-\begtt
-\fontfam[LMfonts]
-Hello World! \bye
-\endtt
-
-The first line \~`\fontfam[LMfonts]` tells that Unicode Latin Modern
-fonts (derived from Computer Modern) are used. If you omit this line then
-preloaded Latin Modern fonts are used but preloaded fonts cannot be in
-Unicode\fnote
-{This is a technical limitation of \LuaTeX/ for fonts downloaded in formats:
-only 8bit fonts can be preloaded.}.
-So the sentence `Hello World` will be OK without the first line, but you
-cannot print such sentence in other languages (for example `Ahoj světe!`)
-where Unicode fonts are needed
-because the characters like `ě` are not mapped correctly in preloaded
-fonts.
-
-A somewhat larger example with common settings should be:
-
-\begtt \catcode`!=0
-\fontfam[Termes] % selecting Unicode font family Termes (section !ref[fontfam])
-\typosize[11/13] % setting default font size and baselineskip (sec. !ref[sizes])
-\margins/1 a4 (1,1,1,1)in % setting A4 paper, 1 in margins (section !ref[marg])
-\cslang % Czech hyphenation patterns (section !ref[lang])
-
-Tady je zkušební textík v českém jazyce.
-\bye
-\endtt
-%
-You can look at `op-demo.tex` file for a more complex, but still simple example.
-
-\sec Page layout
-%%%%%%%%%%%%%%%%
-
-\secc[marg] Setting the margins
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-The \^`\margins` command declares margins of the document. This command have
-the following parameters:
-
-\begtt \catcode`\<=13
-\margins/<pg> <fmt> (<left>,<right>,<top>,<bot>)<unit>
- example:
-\margins/1 a4 (2.5,2.5,2,2)cm
-\endtt
-
-Parameters are:
-
-\begitems
-* <pg> \dots\ `1` or `2` specifies one-page or two-pages design.
-* <fmt> \dots\ paper format (a4, a4l, a5, letter, etc. or user defined).
-* <left>, <right>, <top>, <bot> \dots\ gives the amount of left, right,
- top and bottom margins.
-* <unit> \dots\ unit used for values <left>, <right>, <top>, <bot>.
-\enditems
-
-Each of the parameters <left>, <right>, <top>, <bot> can be empty.
-If both <left> and <right> are nonempty then `\hsize` is set. Else `\hsize`
-is unchanged. If both <left> and <right> are empty then typesetting area is
-centered in the paper format. The analogical rule works when <top> or <bot>
-parameter is empty (`\vsize` instead `\hsize` is used). Examples:
-
-\begtt
-\margins/1 a4 (,,,)mm % \hsize, \vsize untouched,
- % typesetting area centered
-\margins/1 a4 (,2,,)cm % right margin set to 2cm
- % \hsize, \vsize untouched, vertically centered
-\endtt
-
-If `<pg>=1` then all pages have the same margins. If `<pg>=2` then the
-declared margins are true for odd pages. The margins at the even pages are
-automatically mirrored in such case, it means that <left> is replaced by
-<right> and vice versa.
-
-\OpTeX/ declares following paper formats: a4, a4l (landscape~a4),
-a5, a5l, a3, a3l, b5, letter and user can declare another own format by \~`\sdef`:
-
-\begtt
-\sdef{_pgs:b5l}{(250,176)mm}
-\sdef{_pgs:letterl}{(11,8.5)in}
-\endtt
-
-The `<fmt>` can be also in the form `(<width>,<height>)<unit>` where `<unit>` is
-optional. If it is missing then `<unit>` after margins specification is
-used. For example:
-
-\begtt
-\margins/1 (100,200) (7,7,7,7)mm
-\endtt
-%
-declares the paper 100$\times$200\,mm with all four margins 7\,mm. The spaces
-before and after <fmt> parameter are necessary.
-
-The command \^`\magscale[<factor>]` scales the whole typesetting area.
-\new The fixed point of such scaling is the upper left corner of the paper sheet.
-Typesetting (breakpoints etc.) is unchanged. All units are relative after
-such scaling. Only paper format's dimensions stay unscaled. Example:
-
-\begtt
-\margins/2 a5 (22,17,19,21)mm
-\magscale[1414] \margins/1 a4 (,,,)mm
-\endtt
-%
-The first line sets the `\hsize` and `\vsize` and margins for final
-printing at a5 format. The setting on the second line centers the scaled
-typesetting area to the true a4 paper while breaking points for paragraphs
-and pages are unchanged. It may be usable for
-review printing. After the review is done, the second line can be commented out.
-
-\secc Concept of the default page
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\OpTeX/ uses \"output routine" for page design.
-It is very similar to the Plain \TeX/ output routine.
-There is \^`\headline` followed by \"page body" followed by
-\^`\footline`. The \^`\headline` is empty by default and it can be used
-for running headers repeated on each page. The \^`\footline` prints
-centered page number by default. You can set the \^`\footline` to empty
-using \^`\nopagenumbers` macro.
-
-The margins declared by \^`\margins` macro (documented in the previous
-section~\ref[marg]) is concerned to the page body,
-i.e.\ the \^`\headline` and \^`\footline` are placed to the top and bottom
-margins.
-
-The distance between the \^`\headline` and the top of the page body is given by
-the \^`\headlinedist` register. The distance between bottom of the page body and
-the \^`\footline` is given by \^`\footlinedist`. The default values are:
-
-\begtt
-\headline = {}
-\footline = {\_hss\_rmfixed \_folio \_hss} % \folio expands to page number
-\headlinedist = 14pt % from baseline of \headline to top of page body
-\footlinedist = 24pt % from last line in pagebody to baseline of footline
-\endtt
-
-The page body should be divided into top insertions (floating tables and
-figures) followed by a real text and followed by footnotes.
-Typically, the only real text is here.
-
-The \^`\pgbackground` tokens list is empty by default but it can be used for
-creating a background of each page (colors, picture, watermark for example).
-The macro \^`\draft` uses this register and puts big text DRAFT as a watermark
-to each page. You can try it.
-
-More about the page layout is documented in sections~\ref[oparams] and~\ref[output].
-
-\secc Footnotes and marginal notes
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-The Plain \TeX/'s macro \^`\footnote` can be used as usual. But a new macro
-\^`\fnote{<text>}` is defined. The footnote mark is added automatically and it
-is numbered
-\new
-on each chapter from one\fnote
-{You can declare \^`\fnotenumglobal` if you want footnotes numbered in whole
-document from one or \^`\fnotenumpages` if you want footnotes numbered at each
-page from one. Default setting is \^`\fnotenumchapters`}.
-The <text> is scaled to 80 \%.
-User can redefine footnote mark or scaling, as shown in the section~\ref[fnotes].
-
-The \^`\fnote` macro is fully applicable only in \"normal outer" paragraph.
-It doesn't work inside boxes (tables, for example). If you are solving such
-a case then you can use the command \^`\fnotemark``<numeric-label>` inside the box: only the
-footnote mark is generated here. When the box is finished you can use
-\^`\fnotetext{<text>}`. This macro puts the <text> to the footnote.
-The <numeric-label> has to be `1` if only one such command is in the box.
-Second \^`\fnotemark` inside the same box has to have the parameter `2` etc.
-The same number of \^`\fnotetext`s have to be written
-after the box as the number of \^`\fnotemark`s inserted inside the box.
-Example:
-
-\begtt
-Text in a paragraph\fnote{First notice}... % a "normal" footnote
-\table{...}{...\fnotemark1...\fnotemark2...} % two footnotes in a box
-\fnotetext{Second notice}
-\fnotetext{Third notice}
-...
-\table{...}{...\fnotemark1...} % one footnote in a box
-\fnotetext{Fourth notice}
-\endtt
-
-The marginal note can be printed by the \^`\mnote{<text>}` macro. The <text>
-is placed to the right margin on the odd pages and it is placed to the left
-margin on the even pages. This is done after second \TeX{} run because the
-relevant information is stored in an external file and read from it again.
-If you need to place the notes only to the fixed margin write
-\^`\fixmnotes\right` or \^`\fixmnotes\left`.
-
-The <text> is formatted as a little paragraph with the maximal width
-\^`\mnotesize` ragged left on the left margins or ragged right on the right
-margins. The first line of this little paragraph has its vertical position
-given by the position of \^`\mnote` in the text. The exceptions are possible
-by using the `up` keyword: \~`\mnote`` up<dimen>{<text>}`.
-You can set such <dimen> to each \^`\mnote` manually in final printing
-in order to margin notes do not overlap. The positive value of <dimen>
-shifts the note up and negative value shifts it down. For example
-\^`\mnote`` up 2\baselineskip{<text>}` shifts this marginal note two lines up.
-
-\sec Fonts
-%%%%%%%%%%
-
-\secc[fontfam] Font families
-%%%%%%%%%%%%%%%%%%%%%%%
-
-You can select the font family by \^`\fontfam[<Family-name>]`.
-The argument <Family-name> is case insensitive and spaces are ignored in it. For
-example, \^`\fontfam[LM Fonts]` is equal to \^`\fontfam[LMfonts]` and it is equal
-to \^`\fontfam[lmfonts]`. Several aliases are prepared, thus
-\^`\fontfam[Latin Modern]` can be used for loading Latin Modern family too.
-
-If you write \^`\fontfam[?]` then all font families registered in \OpTeX/
-are listed on the terminal and in the log file.
-If you write \^`\fontfam[catalog]` then a catalog of all fonts registered in
-\OpTeX/ and available in your \TeX/ system is printed. The instructions
-on how to register your own font family are appended in the catalog.
-
-If the family is loaded then {\em font modifiers} applicable in such font family
-are listed on the terminal: (`\caps`, `\cond` for example).
-And there are four basic {\em variant selectors} (\^`\rm`, \^`\bf`, \^`\it`, \^`\bi`).
-The usage of variant selectors is the same as in Plain \TeX:
-`{\it italics text}`, `{\bf bold text}` etc.
-
-The font modifiers (`\caps`, `\cond` for example) can
-be used before a variant selector and they
-can be (independently) combined: `\caps\it` or `\cond\caps\bf`. The
-modifiers keep their internal setting until the group ends or until another
-modifier that negates the previous feature is used. So
-`{\caps \rm First text \it Second text}`
-gives {\caps \rm First text \it Second text}.
-
-The font modifier without following variant selector does not change the font
-actually, it only prepares data used by next variant selectors.
-There is one special variant selector \^`\currvar` which does not change the
-selected variant but reloads the font due to (maybe newly
-specified) font modifier(s).
-
-The context between variants \^`\rm` $\leftrightarrow$ \^`\it` and
-\^`\bf` $\leftrightarrow$ \^`\bi` is kept by the \^`\em`
-macro (emphasize text).
-It switches from current \^`\rm` to \^`\it`, from current \^`\it` to \^`\rm`, from
-current \^`\bf` to \^`\bi` and from current \^`\bi` to \^`\bf`.
-The italics correction `\/` is inserted automatically, if needed. Example:
-
-\begtt
-This is {\em important} text. % = This is {\it important\/} text.
-\it This is {\em important} text. % = This is\/ {\rm important} text.
-\bf This is {\em important} text. % = This is {\bi important\/} text.
-\bi This is {\em important} text. % = This is\/ {\bf important} text.
-\endtt
-
-\new
-More about the \OpTeX/ Font Selection System is written in the technical
-documentation in the section~\ref[fontsystem].
-You can mix more font families in your document, you can
-declare your own variant selectors or modifiers, etc.
-
-\secc[sizes] Font sizes
-%%%%%%%%%%%%%%%%%%%%%
-
-The command \^`\typosize[<fontsize>/<baselineskip>]` sets the font size of text and
-math fonts and baselineskip. If one of these two parameters is empty, the
-corresponding feature stays unchanged. Don't write the unit of these
-parameters. The unit is internally set to \^`\ptunit` which is 1pt by default.
-You can change the unit by the command \^`\ptunit=<something-else>`,
-for instance \^`\ptunit=1mm` enlarges all font sizes declared by \^`\typosize`.
-Examples:
-
-\begtt
-\typosize[10/12] % default of Plain TeX
-\typosize[11/12.5] % font 11pt, baseline 12.5pt
-\typosize[8/] % font 8pt, baseline unchanged
-\endtt
-
-The commands for font size setting described in this section
-have local validity. If you put them into a group,
-the settings are lost when the group is finished. If you set
-something relevant with paragraph shape (baselineskip given by
-\^`\typosize` for example) then you must first finalize the
-paragraph before closing the group:
-`{\typosize[12/14] ...<text of paragraph>... \par}`.
-
-The command \^`\typoscale[<font-factor>/<baselineskip-factor>]`
-sets the text and math fonts
-size and baselineskip as a multiple of the current fonts size and
-baselineskip. The factor is written in \"scaled"-like way, it means that 1000
-means factor one. The empty parameter is equal to the parameter 1000,
-i.e. the value stays unchanged. Examples:
-
-\begtt
-\typoscale[800/800] % fonts and baselineskip re-size to 80 %
-\typoscale[\magstep2/] % fonts bigger 1,44times (\magstep2 expands to 1440)
-\endtt
-
-First usage of \^`\typosize` or \^`\typoscale` macro in your document sets so-called {\em main values}, i.\,e.\ main font size and main baselineskip. They are internally
-saved in registers \^`\mainfosize` and \^`\mainbaselineskip`.
-
-\new
-The \^`\typoscale` command does scaling with respect to current values by default.
-If you want to do it with respect to the main values, type \^`\scalemain` immediately
-before \^`\typoscale` command.
-
-\begtt
-\typosize[12/14.4] % first usage in document, sets main values internally
-\typosize[15/18] % bigger font
-\scalemain \typoscale[800/800] % reduces from main values, no from current.
-\endtt
-
-The \^`\typosize` and \^`\typoscale` macros initialize the font family by `\rm`.
-You can re-size only the current font by the command
-\^`\thefontsize[<font-size>]` or the font can be rescaled by
-\^`\thefontscale[<factor>]`. These macros don't change math fonts sizes nor
-baselineskip.
-
-\new
-There is \"low level" \^`\setfontsize{<size-spec>}` command which behaves like
-a font modifier and sets given font size used by next variant selectors.
-It doesn't change the font size immediately, but the following variant selector
-does it. For example \^`\setfontsize{at15pt}`\^`\currvar` sets current variant to 15pt.
-
-If you are using a font family with \"optical sizes feature" (i.\,e.\ there
-are more recommended sizes of the same font which are not scaled
-linearly; a good example is Computer Modern aka Latin Modern fonts)
-then the recommended size is selected by all mentioned commands automatically.
-
-More information about resizing of fonts is documented in the
-section~\ref[setfontsize].
-
-\secc Typesetting math
-%%%%%%%%%%%%%%%%%%%%%
-
-See the additional document
-\ulink[http://petr.olsak.net/ftp/olsak/optex/optex-math.pdf]
-{Typesetting Math with \OpTeX/} for more details about this issue.
-
-\OpTeX/ preloads a collection of 7bit Computer Modern math fonts
-and AMS fonts in its format for math typesetting.
-You can use them in any size and in the \^`\boldmath` variant.
-%
-\new
-Most declared text font families (see \^`\fontfam` in the section~\ref[fontfam])
-are configured with a recommended Unicode
-math font. This font is automatically loaded unless you specify
-\^`\noloadmath` before first \^`\fontfam` command. See log file for more
-information about loading text font family and Unicode math fonts. If you
-prefer another Unicode math font, specify it by \^`\loadmath{[<font-file>]}`
-or \^`\loadmath{<font-name>}` before first \^`\fontfam` command.
-
-Hundreds math symbols and operators like in AMS\TeX/ are accessible.
-For example `\alpha` $\alpha$, `\geq`~$\geq$, `\sum` $\sum$,
-`\sphericalangle` $\sphericalangle$, `\bumpeq`, $\bumpeq$. See AMS\TeX/
-manual or
-\ulink[http://petr.olsak.net/ftp/olsak/optex/optex-math.pdf]
-{Typesetting Math with \OpTeX/} for complete list of math symbols.
-
-The following math alphabets are available:
-
-\begtt \catcode`\$=3 \catcode`/=0 \medmuskip=0mu \adef{ }{ }
-\mit % mathematical variables $abc-xyz,ABC-XYZ$
-\it % text italics $/it abc-xyz,ABC-XYZ$
-\rm % text roman $/rm abc-xyz,ABC-XYZ$
-\cal % normal calligraphics $/cal ABC-XYZ$
-\script % script $/script ABC-XYZ$
-\frak % fracture $/frak abc-xyz,ABC-XYZ$
-\bbchar % double stroked letters $/bbchar ABC-XYZ$
-\bf % sans serif bold $/bf abc-xyz,ABC-XYZ$
-\bi % sans serif bold slanted $/bi abc-xyz,ABC-XYZ$
-\endtt
-
-The last two selectors \^`\bf` and \^`\bi` select the sans serif fonts in math regardless of the current text font family. This is a common notation for vectors and
-matrices. You can re-declare them, see section~\ref[unimath-codes] where
-definitions of Unicode math variants of \^`\bf` and \^`\bi` selectors are documented.
-
-The math fonts can be scaled by \^`\typosize` and \^`\typoscale` macros.
-Two math fonts collections are prepared: \^`\normalmath` for normal weight
-and \^`\boldmath` for bold. The first one is set by default, the second one
-is usable for math formulae in titles typeset in bold, for example.
-
-\new
-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).
-
-\sec Typical elements of the document
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\secc[chap] Chapters and sections
-%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-The documents can be divided into chapters (\^`\chap`),
-sections (\^`\sec`), subsections (\^`\secc`) and they can be titled
-by \^`\tit` command. The parameters are separated by the end of current line (no
-braces are used):
-
-\begtt \catcode`\<=13
-\tit Document title <end of line>
-\chap Chapter title <end of line>
-\sec Section title <end of line>
-\secc Subsection title <end of line>
-\endtt
-
-The chapters are automatically numbered by one number, sections by two numbers
-(chapter.section), and subsections by three numbers. If there are no chapters
-then sections have only one number and subsections two.
-
-The implicit design of the titles of chapter etc.\ is implemented in the
-macros \^`\_printchap`, \^`\_printsec` and \^`\_printsecc`. A designer can simply change
-these macros if he/she needs another behavior.
-
-The first paragraph after the title of chapter, section, and subsection is
-not indented but you can type `\let`\^`\_firstnoindent=\relax` if you need all
-paragraphs indented.
-
-If a title is so long then it breaks into more lines in the output. It is better to hint at the
-breakpoints because \TeX/ does not interpret the meaning of the title.
-Users can put the \^`\nl` (means newline) to the breakpoints.
-
-If you want to arrange a title to more lines in your source file then you can
-use `^^J` at the end of each line (except the last one).
-When `^^J` is used, then the reading of the title continues at the next line.
-The \"normal" comment character `%` doesn't work in titles.
-You can use \^`\nl`{\visiblesp` ^^J`} if you want to have corresponding lines in the source
-and the output.
-
-The chapter, section, or subsection isn't numbered if the \^`\nonum` precedes.
-And the chapter, section, or subsection isn't delivered to the table of
-contents if \^`\notoc` precedes. You can combine both prefixes.
-
-\secc[cap] Another numbered objects
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-Apart from chapters, sections, and subsections, there are another
-automatically numbered objects: equations, captions for tables and
-figures. The user can declare more numbered objects.
-
-If the user writes the \^`\eqmark` as the last element of the display mode then
-this equation is numbered. The equation number is printed in brackets. This number
-is reset in each section by default.
-
-If the \^`\eqalignno` is used, then user can put \^`\eqmark` to the last column
-before `\cr`. For example:
-
-\begtt
-\eqalignno{
- a^2+b^2 &= c^2 \cr
- c &= \sqrt{a^2+b^2} & \eqmark \cr}
-\endtt
-
-Another automatically numbered object is a caption which is tagged by \^`\caption/t` for
-tables and \^`\caption/f` for figures. The caption text follows.
-The \^`\cskip` can be used between \^`\caption` text and the real object (table
-or figure). You can use two orders: `<caption>\cskip <object>` or
-`<object>\cskip <caption>`.
-The \^`\cskip` creates appropriate vertical space between them. Example:
-
-\begtt
-\caption/t The dependency of the computer-dependency on the age.
-\cskip
-\noindent\hfil\table{rl}{
- age & value \crl\noalign{\smallskip}
- 0--1 & unmeasured \cr
- 1--6 & observable \cr
- 6--12 & significant \cr
- 12--20 & extremal \cr
- 20--40 & normal \cr
- 40--60 & various \cr
- 60--$\infty$ & moderate}
-\endtt
-
-This example produces:
-
-\medskip
-\caption/t The dependency of the computer-dependency on the age.
-\cskip
-\noindent\hfil\table{rl}{
- age & value \crl\noalign{\smallskip}
- 0--1 & unmeasured \cr
- 1--6 & observable \cr
- 6--12 & significant \cr
- 12--20 & extremal \cr
- 20--40 & normal \cr
- 40--60 & various \cr
- 60--$\infty$ & moderate}
-\medskip
-
-You can see that the word \"Table" followed by a number is added by the macro
-`\caption/t`.
-The caption text is centered. If it occupies more lines then the
-last line is centered.
-
-The macro \^`\caption/f` behaves like \^`\caption/t` but it is intended for
-figure captions with independent numbering.
-The word (Table, Figure) depends on the selected language (see
-section~\ref[lang] about languages).
-
-If you wish to make the table or figure as a floating object, you need to use
-Plain \TeX/ macros \^`\midinsert` or \^`\topinsert` terminated by \^`\endinsert`.
-Example:
-
-\begtt
-\topinsert % table and its caption printed at the top of the current page
- <caption and table>
-\endinsert
-\endtt
-%
-The pair \^`\midinsert`...\^`\endinsert` prefers to put the enclosed object
-to the current place. Only if this is unable due to page breaking, it
-behaves like \^`\topinsert`...\^`\endinsert`.
-
-\new
-There are five prepared counters `A`, `B`, `C`, `D` and `E`.
-They are reset in each chapter and section\fnote
-{This feature can be changed, see the section~\ref[sections] in the technical documentation.}.
-They can be used in context of \^`\numberedpar` `<letter>{<text>}`
-macro. For example:
-\begtt
-\def\theorem {\numberedpar A{Theorem}}
-\def\corollary {\numberedpar A{Corollary}}
-\def\definition {\numberedpar B{Definition}}
-\def\example {\numberedpar C{Example}}
-\endtt
-%
-Three independent numbers are used in this example. One for Theorems and Corollaries
-second for Definitions and third for Examples. The user can write
-`\theorem Let $M$ be...` and the new paragraph is started with the text:
-{\bf Theorem 1.4.1.} Let $M$ be...
-You can add an optional parameter in brackets. For example,
-`\theorem [(L'Hôpital's rule)] Let $f$, $g$ be...`
-is printed like {\bf Theorem 1.4.2 (L'Hôpital's rule).} Let $f$, $g$ be...
-
-\secc References
-%%%%%%%%%%%%%%%
-
-Each automatically numbered object documented in
-sections \ref[chap] and \ref[cap] can be referenced
-\new
-if optional parameter
-`[<label>]` is appended to \^`\chap`, \^`\sec`,
-\^`\secc`, \^`\caption/t`, \^`\caption/f` or \^`\eqmark`. The alternative syntax is
-to use \^`\label[<label>]` before mentioned commands (not necessarily directly
-before). The reference is realized by \^`\ref[<label>]` or \^`\pgref[<label>]`.
-Example:
-
-\begtt
-\sec[beatle] About Beatles
-
-\noindent\hfil\table{rl}{...} % the table
-\cskip
-\caption/t [comp-depend] The dependency of the comp-dependency on the age.
-
-\label[pythagoras]
-$$ a^2 + b^2 = c^2 \eqmark $$
-
-Now we can point to the section~\ref[beatle] on the page~\pgref[beatle]
-or write something about the equation~\ref[pythagoras]. Finally there
-is an interesting Table~\ref[comp-depend].
-\endtt
-
-If there are forward referenced objects then users have to run \TeX{} twice.
-During each pass, the working `*.ref` file (with references data) is created
-and this file is used (if it exists) at the beginning of the document.
-
-You can use the \^`\label[<label>]` before the `\theorem`, `\definition` etc.\
-(macros defined with `\numberedpar`) if you want to reference these numbered objects.
-You can't use `\theorem[<label>]` because the optional parameter
-is reserved to another purpose here.
-
-You can create a reference to whatever else by commands
-\^`\label[<label>]`\^`\wlabel{<text>}`. The connection between <label> and
-<text> is established. The \^`\ref[<label>]` will print <text>.
-
-By default, labels are not printed, of course. But if you are preparing a
-draft version of your document then you can declare \^`\showlabels`. The labels
-are printed at their destination places after such a declaration.
-
-\secc Hyperlinks, outlines
-%%%%%%%%%%%%%%%%%%%%%%%%%
-
-If the command \^`\hyperlinks` `<color-in> <color-out>` is used at the beginning of
-the document, then the following objects are hyperlinked in the PDF output:
-
-\begitems
-* numbers and texts generated by \^`\ref` or \^`\pgref`,
-* numbers of chapters, sections, subsections, and page numbers in the table of contents,
-* numbers or marks generated by \~`\cite` command (bibliography references),
-* texts printed by \~`\url` or \~`\ulink` commands.
-\enditems
-
-The last object is an external link and it is colored by
-<color-out>. Other links are internal and they are colored by
-<color-in>. Example:
-
-\begtt
-\hyperlinks \Blue \Green % internal links blue, URLs green.
-\endtt
-
-You can use another marking of active links: by frames which are visible in
-the PDF viewer but invisible when the document is printed. The way to do it
-is to define the macros \^`\_pgborder`, \^`\_tocborder`, \^`\_citeborder`,
-\^`\_refborder` and \^`\_urlborder` as the triple of RGB components of the used
-color. Example:
-
-\begtt
-\def\_tocborder {1 0 0} % links in table of contents: red frame
-\def\_pgborder {0 1 0} % links to pages: green frame
-\def\_citeborder {0 0 1} % links to references: blue frame
-\endtt
-
-By default, these macros are not defined. It means that no frames are created.
-
-The hyperlinked footnotes can be activated by \^`\fnotelinks` `<color-fnt> <color-fnf>`
-where footnote marks in the text have `<color-fnt>` and the same footnote marks
-in footnotes have <color-fnf>. You can define relevant borders
-\^`\_fntborder` and \^`\_fnfborder` analogically as \^`\_pgborder` (for example).
-
-There are \"low level" commands to create the links. You can specify the
-destination of the internal link by \^`\dest[<type>:<label>]`. The
-active text linked to the \^`\dest` can be created by
-\^`\ilink[<type>:<label>]{<text>}`. The `<type>` parameter is one of
-the `toc`, `pg`, `cite`, `ref`, or another special for your purpose.
-These commands create internal links only when \^`\hyperlinks` is declared.
-
-The \^`\url` macro prints its parameter in \~`\tt` font and creates a potential
-breakpoints in it (after slash or dot, for example). If the \^`\hyperlinks`
-declaration is used then the parameter of \^`\url` is treated as an external URL link.
-An example: `\url{http://www.olsak.net}` creates \url{http://www.olsak.net}.
-The characters \code{\%}, `\`, `#`, `{`, and `}` have to be protected by
-backslash in the \^`\url` argument, the other special characters `~`,
-`^`, `&` can be written as single character\fnote
-{More exactly, there are the same rules as for `\code` command, see
-section~\ref[verbatim].}.
-You can insert the `\|` command
-in the `\url` argument as a potential breakpoint.
-
-If the linked text have to be different than the URL, you can use
-\^`\ulink[<url>]{<text>}` macro. For example:
-`\ulink[http://petr.olsak.net/optex]{\OpTeX/ page}`
-outputs to the text
-\ulink[http://petr.olsak.net/optex]{\OpTeX/ page}.
-The characters \code{\%}, `\`, `#`, `{`, and `}` must by escaped in
-the <url> parameter.
-
-The PDF format provides {\em outlines} which are notes placed in the special frame of
-the PDF viewer. These notes can be managed as a structured and hyperlinked
-table of contents of the document. The command \^`\outlines{<level>}` creates
-such outlines from data used for the table of contents in the document. The
-<level> parameter gives the level of opened sub-outlines
-in the default view. The deeper levels can be opened by mouse click on the
-triangle symbol after that.
-
-\new
-If you are using a special unprotected macro in section titles then \^`\outlines` macro
-may crash. You must declare a variant of the macro for outlines case which is
-expandable. Use \~`\regmacro` in this case. See the section \ref[toc] for more information
-about \~`\regmacro`.
-
-The command \^`\insertoutline{<text>}` inserts a next entry into PDF outlines at
-the main level~0. These entries can be placed before the table of contents (created
-by \^`\outlines`) or after it. Their hyperlink destination is in the place
-where the \^`\insertoutline` macro is used.
-
-The command \^`\thisoutline{<text>}` uses <text> in the outline instead of default
-title text for the first following `\chap`, `\sec`, or `\secc`.
-Special case: \^`\thisoutline{\relax}` doesn't create any outline for the following
-`\chap`, `\sec`, or `\secc`.
-
-\secc Lists
-%%%%%%%%%%
-
-The list of items is surrounded by \^`\begitems` and \^`\enditems` commands.
-The asterisk (`*`) is active within this environment and it starts one item.
-The item style can be chosen by the \^`\style` parameter written after \^`\begitems`:
-
-\begtt
-\style o % small bullet
-\style O % big bullet (default)
-\style - % hyphen char
-\style n % numbered items 1., 2., 3., ...
-\style N % numbered items 1), 2), 3), ...
-\style i % numbered items (i), (ii), (iii), ...
-\style I % numbered items I, II, III, IV, ...
-\style a % items of type a), b), c), ...
-\style A % items of type A), B), C), ...
-\style x % small rectangle
-\style X % big rectangle
-\endtt
-
-For example:
-
-\begtt
-\begitems
-* First idea
-* Second idea in subitems:
- \begitems \style i
- * First sub-idea
- * Second sub-idea
- * Last sub-idea
- \enditems
-* Finito
-\enditems
-\endtt
-%
-produces:
-
-\begitems
-* First idea
-* Second idea in subitems:
- \begitems \style i
- * First sub-idea
- * Second sub-idea
- * Last sub-idea
- \enditems
-* Finito
-\enditems
-
-Another style can be defined by the command \~`\sdef{_item:<style>}{<text>}`.
-Default item can be set by \^`\defaultitem={<text>}`.
-The list environments can be nested. Each new level of items is indented by
-next multiple of \^`\iindent` value which is set to `\parindent` by default.
-The \^`\ilevel` register says what level of items is currently processed.
-Each \^`\begitems` starts \^`\everylist` tokens register. You can set, for
-example:
-\begtt
-\everylist={\ifcase\ilevel\or \style X \or \style x \else \style - \fi}
-\endtt
-
-You can say \^`\begitems` \^`\novspaces` if you don't want vertical spaces above
-and below the list. The nested item list is without vertical spaces
-automatically. More information about the design of lists of items should be
-found in the section~\ref[lists].
-
-A \"selected block of text" can be surrounded by
-\^`\begblock`\dots\^`\endblock`. The default design of blocks of text is
-indented text in smaller font. The blocks of text can be nested.
-
-\secc Tables
-%%%%%%%%%%%
-
-The macro \^`\table{<declaration>}{<data>}` provides similar <declaration>
-of tables as in \LaTeX: you can use letters `l`, `r`, `c`, each letter declares
-one column (aligned to left, right, center, respectively).
-These letters can be combined by the `|` character (vertical line). Example
-
-\begtt
-\table{||lc|r||}{ \crl
- Month & commodity & price \crli \tskip2pt
- January & notebook & \$ 700 \cr
- February & skateboard & \$ 100 \cr
- July & yacht & k\$ 170 \crl}
-\endtt
-%
-generates the result:
-
-\vskip-\medskipamount
-\noindent\hfil\table{||lc|r||}{ \crl
- Month & commodity & price \crli \tskip2pt
- January & notebook & \$ 700 \cr
- February & skateboard & \$ 100 \cr
- July & yacht & k\$ 170 \crl}
-\medskip
-
-Apart from `l`, `r`, `c` declarators, you can use the `p{<size>}` declarator
-which declares the column with paragraphs of given width. More precisely,
-a long text in the table cell is printed as a multiline paragraph with given width.
-By default, the paragraph is left-right justified. But there are
-alternatives:
-
-\begitems
-* `p{<size>`\^`\fL}` fit left, i.e.\ left justified, ragged right,
-* `p{<size>`\^`\fR}` fit right, i.e.\ right justified, ragged left,
-* `p{<size>`\^`\fC}` fit center, i.e.\ ragged left plus right,
-* `p{<size>`\^`\fS}` fit special, short one-line pararaph centered,
- long paragraph normal,
-* `p{<size>`\^`\fX}` fit extra, left-right justified but last line centered.
-\enditems
-
-You can use `(<text>)` in the <declaration>. Then this text is applied in
-each line of the table. For example `r(\kern10pt)l` adds more 10\,pt space
-between `r` and `l` rows.
-
-An arbitrary part of the <declaration> can be repeated by a <number>
-prefixed. For example `3c` means `ccc` or `c 3{|c}` means
-`c|c|c|c`. Note that spaces in the <declaration> are ignored and you
-can use them in order to more legibility.
-
-The command `\cr` used in the <data> part of the table
-is generally known from Plain \TeX. It marks the end of each row in the table.
-Moreover \OpTeX/ defines following similar commands:
-
-\begitems
-* \^`\crl` \dots\ the end of the row with a horizontal line after it.
-* \^`\crll` \dots\ the end of the row with a double horizontal line after it.
-* \^`\crli` \dots\ like \^`\crl` but the horizontal line doesn't intersect the
- vertical double lines.
-* \^`\crlli` \dots\ like \^`\crli` but horizontal line is doubled.
-* \^`\crlp{<list>}` \dots\ like \^`\crli` but the lines are drawn only in the
- columns mentioned in comma-separated `<list>` of their numbers.
- The <list> can include `<from>-<to>` declarators, for example
- \^`\crlp{1-3,5}` is equal to \^`\crlp{1,2,3,5}`.
-\enditems
-
-The \^`\tskip``<dimen>` command works like the `\noalign{\vskip<dimen>}`
-immediately after `\cr*` commands but it doesn't interrupt the vertical lines.
-
-\new
-You can use the following parameters for the \^`\table` macro. Default values are listed
-too.
-
-\begtt
-\everytable={} % code used in \vbox before table processing
-\thistable={} % code used in \vbox, it is removed after using it
-\tabiteml={\enspace} % left material in each column
-\tabitemr={\enspace} % right material in each column
-\tabstrut={\strut} % strut which declares lines distance in the table
-\tablinespace=2pt % additional vert. space before/after horizontal lines
-\vvkern=1pt % space between lines in double vertical line
-\hhkern=1pt % space between lines in double horizontal line
-\tabskip=0pt % space between columns
-\tabskipl=0pt \tabskipr=0pt % space before first and after last column
-\endtt
-
-Example: if you do \^`\tabiteml={$\enspace}`\^`\tabitemr={\enspace$}` then
-the \^`\table` acts like \LaTeX's array environment.
-
-If there is an item that spans to more than one column in the table then
-the macro \^`\multispan{<number>}` (from Plain \TeX) can help you. Another
-alternative is
-the command \^`\mspan``<number>[<declaration>]{<text>}`
-which spans <number> columns and formats the <text> by the
-<declaration>. The <declaration> must include a declaration of only one column
-with the same syntax as common \^`\table` <declaration>.
-If your table includes vertical rules and you want to
-create continuous vertical rules by \^`\mspan`, then use rule declarators `|`
-after `c`, `l` or `r` letter in \^`\mspan` <declaration>. The
-exception is only in the case when \^`\mspan` includes the first
-column and the table have rules on the left side. The example of \^`\mspan`
-usage is below.
-
-The \^`\frame{<text>}` makes a frame around <text>. You can put the whole \^`\table`
-into \^`\frame` if you need double-ruled border of the table. Example:
-
-\begtt
-\frame{\table{|c||l||r|}{ \crl
- \mspan3[|c|]{\bf Title} \crl \noalign{\kern\hhkern}\crli
- first & second & third \crlli
- seven & eight & nine \crli}}
-\endtt
-%
-creates the following result:
-
-\hfil\frame{\table{|c||l||r|}{\crl
- \mspan3[|c|]{\bf Title} \crl \noalign{\kern\hhkern}\crli
- first & second & third \crlli
- seven & eight & nine \crli}}
-\bigskip
-
-The \^`\vspan``<number>{<text>}` shifts the <text> down in order it looks
-like to be in the center of the <number> lines (current line is first).
-You can use this for creating tables like in the following example:
-
-\begtt \typosize[8.7/11]
-\thistable{\tabstrut={\vrule height 20pt depth10pt width0pt}
- \baselineskip=20pt \tablinespace=0pt \rulewidth=.8pt}
-\table{|8{c|}}{\crlp{3-8}
- \mspan2[c|]{} & \mspan3[c|]{Singular} & \mspan3[c|]{Plural} \crlp{3-8}
- \mspan2[c|]{} & Neuter & Masculine & Feminine & Masculine & Feminine & Neuter \crl
- \vspan2{I} & Inclusive & \mspan3[c|]{\vspan2{O}} & \mspan3[c|]{X} \crlp{2,6-8}
- & Exclusive & \mspan3[c|]{} & \mspan3[c|]{X} \crl
- \vspan2{II} & Informal & \mspan3[c|]{X} & \mspan3[c|]{X} \crlp{2-8}
- & Formal & \mspan6[c|]{X} \crl
- \vspan2{III} & Informal & \vspan2{O} & X & X & \mspan2[c|]{X} &\vspan2{O} \crlp{2,4-7}
- & Formal & & \mspan4[c|]{X} & \crl
-}
-\endtt
-
-\puttext 8.9cm -4cm {\pdfsave\pdfscale{.5}{.5}\rlap{%
-\thistable{\tabstrut={\vrule height 20pt depth10pt width0pt}
- \baselineskip=20pt \tablinespace=0pt \rulewidth=.8pt}
-\table{|8{c|}}{\crlp{3-8}
- \mspan2[c|]{} &\mspan3[c|]{Singular} &\mspan3[c|]{Plural} \crlp{3-8}
- \mspan2[c|]{} & Neuter & Masculine & Feminine & Masculine & Feminine & Neuter \crl
- \vspan2{I} & Inclusive & \mspan3[c|]{\vspan2{O}} &\mspan3[c|] X \crlp{2,6-8}
- & Exclusive & \mspan3[c|]{} &\mspan3[c|] X \crl
- \vspan2{II} & Informal & \mspan3[c|] X &\mspan3[c|] X \crlp{2-8}
- & Formal & \mspan6[c|] X \crl
- \vspan2{III} & Informal & \vspan2{O} & X & X &\mspan2[c|] X & \vspan2{O} \crlp{2,4-7}
- & Formal & &\mspan4[c|] X & \crl
-}}\pdfrestore}
-
-\hangindent=-7.5cm \hangafter=0
-You can use \^`\vspan` with non-integer parameter too if you feel that the
-result looks better, for example \^`\vspan2.1{text}`.
-
-\hangindent=-7.5cm \hangafter=0
-The rule width of tables and implicit width of all `\vrule`s and `\hrule`s
-can be set by the command \^`\rulewidth=<dimen>`. The default value given
-by \TeX/ is 0.4\,pt.
-
-\hangindent=-7.5cm \hangafter=-2
-The `c`, `l`, `r` and `p` are default \"declaration letters" but you can define
-more such letters by `\def\_tabdeclare<letter>{<left>##<right>}`.
-More about it is in technical documentation in section~\ref[table.impl].
-See the definition of the \^`\_tabdeclarec` macro, for example.
-
-The `:` columns boundary declarator is described in section~\ref[table.bound].
-The tables with given width can be declared by `to<size>` or `pxto<size>`.
-More about it is in section~\ref[table.w].
-Many tips about tables can be seen on the site
-\url{http://petr.olsak.net/optex/optex-tricks.html}.
-
-\label[verbatim]\secc Verbatim
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-The display verbatim text have to be surrounded by the \^`\begtt` and
-\^`\endtt` couple.
-The in-line verbatim have to be tagged (before and after)
-by a character which is declared by
-\^`\verbchar``<char>`. For example \code{\\verbchar`}
-declares the character \code{`}
-for in-line verbatim markup.
-And you can use \code{`\\relax`} for
-verbatim `\relax` (for example).
-\new
-Another alternative of printing in-line
-verbatim text is \~`\code{<text>}` (see below).
-
-If the numerical register \^`\ttline` is set to the non-negative value then
-display verbatim will number the lines. The first line has the number
-\^`\ttline+1` and when the verbatim ends then the \^`\ttline` value is equal to the
-number of the last line printed. Next \^`\begtt...`\^`\endtt` environment will follow
-the line numbering. \OpTeX/ sets \^`\ttline=-1` by default.
-
-The indentation of each line in display verbatim is controlled by
-\^`\ttindent` register. This register is set to the `\parindent` by default.
-Users can change the values of the `\parindent` and \^`\ttindent` independently.
-
-The \^`\begtt` command starts the internal group in which the catcodes are changed.
-\new
-Then the \^`\everytt` tokens register is run. It is empty by default and the user can
-control fine behavior by it. For example, the catcodes can be re-declared here. If
-you need to define an active character in the \^`\everytt`, use \~`\adef` as in the
-following example:
-
-\begtt \adef@{\string\endtt}
-\everytt={\adef!{?}\adef?{!}}
-\begtt
-Each occurrence of the exclamation mark will be changed to
-the question mark and vice versa. Really? You can try it!
-@
-\endtt
-%
-The \~`\adef` command sets its parameter as active {\it after\/}
-the parameter of \^`\everytt` is read. So you don't have to worry about active
-categories in this parameter.
-
-There is an alternative to \^`\everytt` named \^`\everyintt` which is used for
-in-line verbatim surrounded by an \^`\verbchar` or processed by the \~`\code`
-command.
-
-The \^`\everytt` is applied to all \^`\begtt...`\^`\endtt` environments (if it is not
-declared in a group). There are tips for such global `\everytt` definitions here:
-
-\begtt \adef!{\char9251 }
-\everytt={\typosize[9/11]} % setting font size for verbatim
-\everytt={\ttline=0} % each listing will be numbered from one
-\everytt={\visiblesp} % visualization!of!spaces
-\endtt
-
-\new
-If you want to apply a special code only for one \^`\begtt...`\^`\endtt`
-environment then don't set any \^`\everytt` but put desired material at the
-same line where \^`\begtt` is. For example:
-
-\begtt \adef@{\string\endtt}
-\begtt \adef!{?}\adef?{!}
-Each occurrence of ? will be changed to ! and vice versa.
-@
-\endtt
-
-The in-line verbatim surrounded by a \^`\verbchar` doesn't work in
-parameter of macros and macro definitions. (It works in titles declared by
-\~`\chap`, \~`\sec` etc. and in \~`\fnote`s, because these macros are
-specially defined in \OpTeX/).
-\new
-You can use more robust command \^`\code{<text>}` in problematic
-situations, but you have to escape the following characters in the <text>:
-`\`, `#`, `%`, braces (if the braces are unmatched in the <text>),
-and space or `^` (if there are more than one subsequent spaces or `^` in
-the <text>). Examples:
-
-\begtt
-\code{\\text, \%\#} ... prints \text, %#
-\code{@{..}*&^$ $} ... prints @{..}*&^$ $ without escaping, but you can
- escape these characters too, if you want.
-\code{a \ b} ... two spaces between a b, the second must be escaped
-\code{xy\{z} ... xy{z ... unbalanced brace must be escaped
-\code{^\^M} ... prints ^^M, the second ^ must be escaped
-\endtt
-
-You can print verbatim listing from external files by the \^`\verbinput` command.
-Examples:
-
-\begtt
-\verbinput (12-42) program.c % listing from program.c, only lines 12-42
-\verbinput (-60) program.c % print from begin to the line 60
-\verbinput (61-) program.c % from line 61 to the end
-\verbinput (-) program.c % whole file is printed
-\verbinput (70+10) program.c % from line 70, only 10 lines printed
-\verbinput (+10) program.c % from the last line read, print 10 lines
-\verbinput (-5+7) program.c % from the last line read, skip 5, print 7
-\verbinput (+) program.c % from the last line read to the end
-\endtt
-
-\new
-You can insert additional commands for \^`\verbinput` before
-the first opening bracket. They are processed in the local group.
-For example, `\verbinput \hsize=20cm (-) program.c`.
-
-The \~`\ttline` influences the line numbering by the same way as in
-\~`\begtt...`\~`\endtt` environment. If \~`\ttline=-1` then real line numbers are
-printed (this is the default). If \code{\\ttline<-1} then no line
-numbers are printed.
-
-The \^`\verbinput` can be controlled by \^`\everytt`, \^`\ttindent` just like
-in \~`\begtt...`\~`\endtt`.
-
-The \~`\begtt`...\~`\endtt` pair or \~`\verbinput` can be used for listings of
-codes. Automatic syntax highlighting is possible, for example
-`\begtt` \^`\hisyntax{C}` activates colors for C programs. Or
-`\verbinput` \^`\hisyntax{HTML} (-) file.html` can be used for HTML or XML codes.
-\OpTeX/ implements C, Python, \TeX/, HTML and XML syntax highlighting.
-More languages can be declared, see the section~\ref[hisyntax].
-
-If the code is read by \^`\verbinput` and there are comment lines prefixed
-by two characters then
-you can set them by \~`\commentchars``<first><second>`. Such comments are
-fully interpreted by \TeX/ (i.e. not verbatim).
-Section~\ref[verb] (page \pgref[commentchars]) says more about this feature.
-
-\sec Autogenerated lists
-%%%%%%%%%%%%%%%%%%%%%%%%
-
-\secc[toc] Table of contents
-%%%%%%%%%%%%%%%%%%%%%%
-
-The \^`\maketoc` command prints the table of contents of all \~`\chap`, \~`\sec`
-and \~`\secc` used in the document. These data are read from the external `*.ref` file, so
-you have to run \TeX/ more than once (typically three times if the table of
-contents is at the beginning of the document).
-
-Typically, we don't want to repeat the name of the section \"Table of contents"
-in the table of contents again. The direct usage
-of \~`\chap` or \~`\sec` isn't recommended here because the table of contents
-is typically not referenced to itself. You can print the unnumbered and unreferenced
-title of the section like this:
-
-\begtt
-\nonum\notoc\sec Table of Contents
-\endtt
-If you need a customization of the design of the TOC, read the
-section~\ref[maketoc].
-
-\new
-If you are using a special macro in section or chapter titles
-and you need different behavior of such macro in other cases then use
-\^`\regmacro{<case-toc>}{<case-mark>}{<case-outline>}`.
-The parameters are applied locally in given cases. The \^`\regmacro` can be
-used repeatedly: then its parameters are accumulated (for more macros).
-If a parameter is empty then original definition is used in given case.
-For example:
-
-\begtt
-% default value of \mylogo macro used in text and in the titles:
-\def\mylogo{\leavevmode\hbox{{\Red\it My}{\setfontsize{mag1.5}\rm Lo}Go}}
-% another variants:
-\regmacro {\def\mylogo{\hbox{\Red My\Black LoGo}}} % used in TOC
- {\def\mylogo{\hbox{{\it My}\/LoGo}}} % used in running heads
- {\def\mylogo{MyLoGo}} % used in PDF outlines
-\endtt
-
-\secc Making the index
-%%%%%%%%%%%%%%%%%%%%%
-
-The index can be included in the document by the \^`\makeindex` macro. No external
-program is needed, the alphabetical sorting is done inside \TeX/ at macro
-level.
-
-The \^`\ii` command (insert to index) declares the word separated by the space
-as the index item. This declaration is represented as an invisible item on the
-page connected to the next visible word. The page number of the page where
-this item occurs is listed in the index entry. So you can type:
-
-\begtt
-The \ii resistor resistor is a passive electrical component ...
-\endtt
-
-You cannot double the word if you use the \^`\iid` instead of \^`\ii`:
-
-\begtt
-The \iid resistor is a passive electrical component ...
-or:
-Now we'll deal with the \iid resistor .
-\endtt
-
-Note that the dot or comma has to be separated by space when \^`\iid` is
-used. This space (before dot or comma) is removed by the macro in
-the current text.
-
-The multiple-words entries are commonly arranged in the index as follows:
-
-\medskip
-
-linear~dependency 11, 40--50
-
---- independency 12, 42--53
-
---- space 57, 76
-
---- subspace 58
-
-\medskip
-
-To do this you have to declare the parts of the index entries by the `/` separator.
-Example:
-
-\begtt
-{\bf Definition.}
-\ii linear/space,vector/space
-{\em Linear space} (or {\em vector space}) is a nonempty set of...
-\endtt
-
-The number of the parts of one index entry (separated by `/`) is unlimited. Note, that you can
-spare your typing by the comma in the \~`\ii` parameter. The previous example
-is equivalent to `\ii linear/space \ii vector/space`~.
-
-Maybe you need to propagate to the index the similar entry to the
-linear/space in the form of space/linear. You can do this by the shorthand `,@`
-at the end of the \~`\ii` parameter. Example:
-
-\begtt
-\ii linear/space,vector/space,@
-is equivalent to:
-\ii linear/space,vector/space \ii space/linear,space/vector
-\endtt
-
-If you really need to insert the space into the index entry, write `~`.
-
-The \~`\ii` or \~`\iid` commands can be preceded by \^`\iitype` `<letter>`, then such
-reference (or more references generated by one \~`\ii`) has the specified type.
-The page numbers of such references should be formatted
-specially in the index. \OpTeX/ implements only \^`\iitype` `b`,
-\^`\iitype` `i` and \^`\iitype` `u`:
-the page number in bold or in italics or underlined is printed
-in the index when these types are used. The default index type is empty, which
-prints page numbers in normal font. The \TeX/book index is a good example.
-
-The \^`\makeindex` creates the list of alphabetically sorted index entries
-without the title of the section and without creating more columns. \OpTeX/
-provides other macros \^`\begmulti` and \^`\endmulti` for more columns:
-
-\begtt \catcode`\<=13
-\begmulti <number of columns>
-<text>
-\endmulti
-\endtt
-The columns will be balanced. The Index can be printed by the following
-code:
-
-\begtt
-\sec Index
-\begmulti 3 \makeindex \endmulti
-\endtt
-
-Only \"pure words" can be propagated to the index by the \~`\ii` command. It
-means that there cannot be any macro, \TeX/ primitive, math selector, etc.
-But there is another possibility to create such a complex index entry. Use
-\"pure equivalent" in the \~`\ii` parameter and map this equivalent to a
-real word that is printed in the index. Such mapping is done by
-\^`\iis` command. Example:
-
-\begtt
-The \ii chiquadrat $\chi$-quadrat method is ...
-If the \ii relax `\relax` command is used then \TeX/ is relaxing.
-...
-\iis chiquadrat {$\chi$-quadrat}
-\iis relax {\code{\\relax}}
-\endtt
-%
-The \^`\iis` `<equivalent> {<text>}` creates one entry in the \"dictionary
-of the exceptions". The sorting is done by the <equivalent> but the
-<text> is printed in the index entry list.
-
-The sorting rules when \^`\makeindex` runs depends on the current language.
-See section~\ref[lang] about languages selection.
-
-\secc Bib\TeX/ing
-%%%%%%%%%%%%%%%%
-
-The command \^`\cite[<label>]` (or
-\hbox{\^`\cite[<label-1>,<label-2>,...,<label-n>]`})
-creates the citation in the form [42] (or [15,~19,~26]).
-If \^`\shortcitations` is declared at the beginning of the document then
-continuous sequences of numbers are re-printed like this:
-\hbox{[3--5,~7,~9--11]}. If
-\^`\sortcitations` is declared then numbers generated by one \^`\cite` command
-are sorted upward.
-
-If \^`\nonumcitations` is declared then the marks instead of numbers are generated
-depending on the used bib-style. For example, the citations look like
-[Now08] or [Nowak, 2008].
-
-The \^`\rcite[<labels>]` creates the same list as \^`\cite[<labels>]` but without
-the outer brackets. Example: `[\rcite[tbn], pg.~13]` creates [4,~pg.~13].
-
-The \^`\ecite[<label>]{<text>}` prints the `<text>` only, but the entry labeled
-<label> is decided as to be cited. If \~`\hyperlinks` is used then <text>
-is linked to the references list.
-
-You can define alternative formating of \^`\cite` command. Example:
-
-\begtt \catcode`\<=13
-\def\cite[#1]{(\rcite[#1])} % \cite[<label>] creates (27)
-\def\cite[#1]{$^{\rcite[#1]}$} % \cite[<label>] creates^{27}
-\endtt
-
-The numbers printed by \^`\cite` correspond to the same numbers generated in
-the list of references. There are two possibilities to generate this
-references list:
-
-\begitems
-* Manually using \~`\bib[<label>]` commands.
-* By \~`\usebib/<type> (<style>) <bib-base>` command which reads `*.bib`
- files directly.
-\enditems
-
-\new
-Note that another two possibilities documented in OPmac (using external
-Bib\TeX/ program) isn't supported because Bib\TeX/ is an old program that does not
-support Unicode. And Biber seems to be not compliant with Plain \TeX.
-
-\medskip\noindent
-{\bf References created manually using \^`\bib[<label>]` command.}
-
-\begtt
-\bib [tbn] P. Olšák. {\it\TeX{}book naruby.} 468~s. Brno: Konvoj, 1997.
-\bib [tst] P. Olšák. {\it Typografický systém \TeX.}
- 269~s. Praha: CSTUG, 1995.
-\endtt
-
-If you are using \~`\nonumcitations` then you need to declare the <marks>
-used by \~`\cite` command. To do it you must use long form of the \^`\bib`
-command in the format \^`\bib[<label>] = {<mark>}`. The spaces around
-equal sign are mandatory. Example:
-
-\begtt
-\bib [tbn] = {Olšák, 2001}
- P. Olšák. {\it\TeX{}book naruby.} 468~s. Brno: Konvoj, 2001.
-\endtt
-
-\noindent
-{\bf Direct reading of `.bib` files} is possible by \^`\usebib` macro.
-This macro reads and uses macro package `librarian.tex` by Paul Isambert.
-The usage is:
-
-\begtt \catcode`\<=13
-\usebib/c (<style>) <bib-base> % sorted by \cite-order (c=cite),
-\usebib/s (<style>) <bib-base> % sorted by style (s=style).
-% example:
-\nocite[*] \usebib/s (simple) op-biblist % prints all from op-biblist.bib
-\endtt
-
-The <bib-base> is one or more `*.bib` database source files (separated by
-spaces and without extension) and the <style> is the part of the filename
-`bib-<style>.opm` where the formatting of the references list is
-defined. \OpTeX/ supports `simple` or `iso690` styles. The features of
-the `iso690` style is documented in the section~\ref[isobib] in detail.
-The \^`\usebib` command is more documented in section~\ref[usebib].
-
-Not all records are printed from <bib-base> files: the command \^`\usebib`
-selects only such bib-records which were used in \~`\cite` or \^`\nocite`
-commands in your document. The \^`\nocite` behaves as \~`\cite` but prints
-nothing. It tells only that the mentioned bib-record should be printed in the
-reference list. If \^`\nocite[*]` is used then all records from <bib-base>
-are printed.
-
-\sec Graphics
-%%%%%%%%%%%%%
-
-\secc Colors
-%%%%%%%%%%%
-
-\OpTeX/ provides a small number of color selectors:
-{\Blue `\Blue`},
-{\Red `\Red`},
-{\Brown `\Brown`},
-{\Green `\Green`},
-{\Yellow `\Yellow`},
-{\Cyan `\Cyan`},
-{\Magenta `\Magenta`},
-{`\White`},
-{\Grey `\Grey`},
-{\LightGrey `\LightGrey`} and
-`\Black`. User can define more
-such selectors by setting four CMYK components
-\new
-or three RGB components. For example
-
-\begtt
-\def \Orange {\setcmykcolor{0 0.5 1 0}}
-\def \Purple {\setrgbcolor{1 0 1}}
-\endtt
-
-\new
-The command \^`\morecolors` reads more definitions of color selectors from
-the \LaTeX/ file `x11nam.def`.
-There are about 300 color names like
-`\DeepPink`, `\Chocolate` etc. If there are numbered variants of the same
-name, then the letters B, C, etc. are appended to the name in \OpTeX/. For example
-`\Chocolate` is Chocolate1, `\ChocolateB` is Chocolate2 etc.
-
-\new
-The color selectors work locally in groups by default but with limitations. See
-the technical documentation, section~\ref[colors] for more information.
-
-The basic colors \^`\Blue`, \^`\Red`, \^`\Cyan`, \^`\Yellow` etc.\ are defined
-with CMYK components using \^`\setcmykcolor`.
-On the other hand, you can define a color with three
-RGB components and \^`\morecolors` defines such RGB colors.
-By default, the color model isn't converted but only stored to
-PDF output for each used color. Thus, there may be a mix of color
-models in the PDF output which is not a good idea. You can overcome this
-problem by declaration \^`\onlyrgb` or \^`\onlycmyk`. Then only the selected color
-model is used for PDF output and if a used color is declared by another color
-model then it is converted.
-The \^`\onlyrgb` creates colors more bright (usable for computer
-presentations). On the other hand, CMYK makes colors more true\fnote
-{Printed output is more equal to the monitor preview especially if you are
-using ICC profile for your printer.}
-for printing.
-
-\new
-You can define your color by a linear combination of previously defined colors using
-\^`\colordef`. For example:
-
-\begtt
-\colordef \myCyan {.3\Green + .5\Blue} % 30 % green, 50 % blue, 20% white
-\colordef \DarkBlue {\Blue + .4\Black} % Blue mixed with 40 % of black
-\colordef \myGreen{\Cyan+\Yellow} % exact the same as \Green
-\colordef \MyColor {.3\Orange+.5\Green+.2\Yellow}
-\endtt
-%
-The linear combination is done in CMYK subtractive color space by default
-(RGB colors used in \^`\colordef` argument are converted first).
-If the resulting component is greater than 1 then it is truncated to 1.
-If a convex linear combination (as in the last example above) is used then it
-emulates color behavior on a painter's palette.
-You can use \^`\rgbcolordef` instead of \^`\colordef` if you want to mix colors
-in the additive RGB color space.
-
-\def\coloron#1#2#3{%
- \setbox0=\hbox{{#2#3}}\leavevmode
- \localcolor \rlap{#1\strut \vrule width\wd0}\box0
-}
-The following example defines the macro for the
-\coloron\Yellow\Brown{colored text on the colored background}. Usage:
-`\coloron<background><foreground>{<text>}`
-
-The `\coloron` can be defined as follows:
-
-\begtt
-\def\coloron#1#2#3{%
- \setbox0=\hbox{{#2#3}}%
- \leavevmode \rlap{#1\strut \vrule width\wd0}\box0
-}
-\coloron\Yellow\Brown{The brown text on the yellow background}
-\endtt
-
-\secc Images
-%%%%%%%%%%%
-
-The \^`\inspic` `{<filename>.<extension>}` or
-\^`\inspic` `<filename>.<extension><space>`
-inserts the picture stored in
-the graphics file with the name `<filename>.<extension>` to the document.
-You can set the picture width by \^`\picw=<dimen>`
-before \^`\inspic` command which declares the width of the picture.
-The image files can be in the PNG, JPG, JBIG2 or PDF format.
-
-The \^`\picwidth` is an equivalent register to `\picw`. Moreover, there is an
-\^`\picheight` register which denotes the height of the picture. If both
-registers are set then the picture will be (probably) deformed.
-
-The image files are searched in \^`\picdir`. This token list is empty
-by default, this means that the image files are searched in the
-current directory. Example: \^`\picdir={img/}` supposes that image files are
-in `img` subdirectory. Note: the directory name must end by `/` in
-the \^`\picdir` declaration.
-
-Inkscape\fnote
-{A powerful and free Wysiwyg editor for creating vector graphics.}
-is able to save a picture to PDF and labels of the picture to another
-file\fnote
-{Chose \"Omit text in PDF and create LaTeX file" option.}.
-This second file should be read by \TeX/to print labels
-in the same font as document font. \OpTeX/ supports this feature by
-\^`\inkinspic` `{<filename>.pdf}` command. It reads and displays
-both: PDF image and labels generated by Inkscape.
-
-If you want to create vector graphics (diagrams, schema, geometry
-skicing) then you can do it by Wysiwyg graphics editor (Inkscape, Geogebra for
-example), export the result to PDF and include it by \^`\inspic`.
-If you want to \"program" such pictures then Tikz package is recommended.
-It works in Plain \TeX/ and \OpTeX.
-
-\secc PDF transformations
-%%%%%%%%%%%%%%%%%%%%%%%%
-
-All typesetting elements are transformed by linear
-transformation given by the current transformation matrix. The
-`\pdfsetmatrix` `{<a> <b> <c> <d>}` command makes the internal multiplication
-with the current matrix so linear transformations can be composed.
-One linear transformation given by the `\pdfsetmatrix` above transforms
-the vector $[0,1]$ to [<a>,\,<b>] and $[1,0]$ to [<c>,\,<d>].
-The stack-oriented commands `\pdfsave` and `\pdfrestore` gives a possibility of
-storing and restoring the current transformation matrix and the position of the current point.
-This position has to be the same from \TeX{}'s point of
-view as from the transformation point of view when `\pdfrestore` is processed.
-Due to this fact the `\pdfsave\rlap{<transformed text>}\pdfrestore`
-or something similar is recommended.
-
-\OpTeX/ provides two special transformation macros
-\^`\pdfscale` and \^`\pdfrotate`:
-
-\begtt \catcode`\<=13
-\pdfscale{<horizontal-factor>}{<vertical-factor>}
-\pdfrotate{<angle-in-degrees>}
-\endtt
-
-These macros simply call the properly `\pdfsetmatrix` command.
-
-It is known that the composition of transformations is not commutative. It
-means that the order is important. You have to read the transformation
-matrices from right to left. Example:
-
-\begtt
-First: \pdfsave \pdfrotate{30}\pdfscale{-2}{2}\rlap{text1}\pdfrestore
- % text1 is scaled two times and it is reflected about vertical axis
- % and next it is rotated by 30 degrees left.
-second: \pdfsave \pdfscale{-2}{2}\pdfrotate{30}\rlap{text2}\pdfrestore
- % text2 is rotated by 30 degrees left then it is scaled two times
- % and reflected about vertical axis.
-third: \pdfsave \pdfrotate{-15.3}\pdfsetmatrix{2 0 1.5 2}\rlap{text3}%
- \pdfrestore % first slanted, then rotated by 15.3 degrees right
-\endtt
-%
-\par\nobreak\bigskip\smallskip
-This gives the following result.
-First: \pdfsave \pdfrotate{30}\pdfscale{-2}{2}\rlap{text1}\pdfrestore
-second: \pdfsave \pdfscale{-2}{2}\pdfrotate{30}\rlap{text2}\pdfrestore
-third: \pdfsave \pdfrotate{-15.3}\pdfsetmatrix{2 0 1.5 2}\rlap{text3}\pdfrestore
-\par\nobreak\bigskip\penalty0%\bigskip
-
-You can see that \TeX/ knows nothing about dimensions of transformed material,
-it treats it as with a zero dimension object.
-\new
-The \^`\transformbox{<transformation>}{<text>}`
-macro solves the problem. This macro puts the transformed
-material into a box with relevant dimensions. The <transfromation> parameter
-includes one or more transformation commands `\pdfsetmatrix`, `\pdfscale`,
-`\pdfrotate` with their parameters. The <text> is transformed text.
-
-Example: \~`\frame{\transformbox{\pdfscale{1}{1.5}\pdfrotate{-10}}{moj}}`
-creates \frame{\transformbox{\pdfscale{1}{1.5}\pdfrotate{-10}}{moj}}.
-
-The \^`\rotbox{<deg>}{<text>}` is shortcut for
-\^`\transformbox{\pdfrotate{<deg>}}{<text>}`.
-
-\secc Ovals, circles
-%%%%%%%%%%%%%%%%%%%%
-
-\new
-The \^`\inoval{<text>}` creates a box like this: \inoval{text}.
-Multiline text can be put in an oval by the command \^`\inoval{\vbox{<text>}}`.
-Local settings can be set by
-\^`\inoval[<settings>]{<text>}` or you can re-declare global settings by
-\^`\ovalparams={<settings>}`. The default settings are:
-
-\begtt
-\ovalparams={\roundness=2pt % diameter of circles in the corners
- \fcolor=\Yellow % color used for filling oval
- \lcolor=\Red % line color used in the border
- \lwidth=0.5bp % line width in the border
- \shadow=N % use a shadow effect
- \overlapmargins=N % ignore margins by surrounding text
- \hhkern=0pt \vvkern=0pt} % left-righ margin, top-bottom margin
-\endtt
-The total distance from text to oval boundary is `\hhkern+\roundness` at the left and right
-sides and
-`\vvkern+\roundness` at the top and bottom sides of the text.
-
-If you need to set a parameters for the <text> (color, size, font etc.),
-put such setting right in front of the <text>:
-\^`\inoval{<text settings><text>}`.
-
-\new
-The \^`\incircle[\ratio=1.8]{<text>}` creates a box like this \incircle[\ratio=1.8]{text}.
-The \^`\ratio` parameter means width/height. The usage is analogical like for oval.
-The default parameters are
-
-\begtt
-\circleparams={\ratio=1 \fcolor=\Yellow \lcolor=\Red \lwidth=0.5bp
- \shadow=N \ignoremargins=N \hhkern=2pt \vvkern=2pt}
-\endtt
-
-\new
-The macros \^`\clipinoval` `<x> <y> <width> <height> {<text>}`
-and \^`\clipincircle` (with the same parameters)
-print the `<text>` when a clipping path (oval or cirle with given
-`<with>` and `<height>` shifted its center by `<x>` to right and by `<y>` to up)
-is used.
-The `\roundness=5mm` is default for \^`\clipinoval` and user can change it.
-Example:
-
-\begtt
-\clipincircle 3cm 3.5cm 6cm 7cm {\picw=6cm \inspic{myphoto.jpg}}
-\endtt
-
-\secc Putting images and texts wherever
-
-\new
-The \^`\puttext` `<x> <y> {<text>}` puts the `<text>` shifted by `<x>` right and by
-`<y>` up from the current point of typesetting and does not change the
-position of the current point. Assume a coordinate system with origin in the
-current point. Then \^`\puttext` `<x> <y> {<text>}` puts the text at the
-coordinates `<x>`, `<y>`. More exactly the left edge of its baseline is at that
-position.
-
-\new
-The \^`\putpic` `<x> <y> <width> <height> {<image-file>}` puts an image
-given by `<image-file>` (including extension) of given
-`<width>` and `<height>` at given position (its left-bottom corner).
-You can write \^`\nospec` instead `<width>` or `<height>` if this parameter
-is not specified.
-
-\sec Others
-%%%%%%%%%%%
-
-\secc[lang] Using more languages
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\OpTeX/ prepares hyphenation patterns for all languages if such patterns are
-available in your \TeX/ system.
-\new
-Only USenglish patterns (original from Plain \TeX/) are preloaded.
-Hyphenation patterns of all other languages are loaded on demand when you first use
-the `\<iso-code>lang` command in your document.
-For example \^`\delang` for German, \^`\cslang` for
-Czech, \^`\pllang` for Polish. The <iso-code> is a shortcut
-of the language (mostly from ISO 639-1).
-You can list all available languages by \^`\langlist`
-macro. This macro prints now:
-
-\medskip
-{\typosize[8.5/11.5]\emergencystretch=4em \hbadness=4000
-\noindent \langlist
-\par}
-\medskip
-
-\new
-For compatibility with e-plain macros, there is the command
-\^`\uselanguage{<language>}`. The parameter <language> is long-form of
-language name, i.e.\ \^`\uselanguage{Czech}` works the same as \^`\cslang`.
-The \^`\uselanguage` parameter is case insensitive.
-
-For compatibility with \csplain/, there are macros \^`\ehyph`, \^`\chyph`,
-\^`\shyph` which are equivalent to \^`\enlang`, \^`\cslang` and \^`\sklang`.
-
-You can switch between language patterns by `\<iso-code>lang` commands mentioned
-above. Default is \^`\enlang`.
-
-\OpTeX/ generates three phrases used for captions and titles in technical
-articles or books: \"Chapter", \"Table" and \"Figure". These phrases need to be known
-in used language and it depends on the previously used language selectors
-`\<iso-code>lang`. \OpTeX/ declares these words only for few languages:
-\new
-Czech, German, Spanish, French, Greek, Italian, Polish, Russian, Slovak and
-English, If you need to use these words in other languages or you want to
-auto-generate more words in your macros, then you can declare it by
-\~`\sdef` or \^`\_langw` commands as shown in section~\ref[langphrases].
-
-The \~`\makeindex` command needs to know the sorting rules used in your language.
-\OpTeX/ defines only a few language rules for sorting: Czech,
-Slovak and English. How to declare sorting rules for more languages are
-described in the section~\ref[makeindex].
-
-If you declare `\<iso-code>quotes`, then the control sequences `\"` and `\'`
-should be used like this: `\"<quoted text>"` or `\'<quoted text>'`
-(note that the terminating character is the same but it isn't escaped).
-This prints language-dependent normal or alternative quotes around
-<quoted text>. The language is specified by <iso-code>. \OpTeX/ declares
-quotes only for Czech, German, Spanish, French, Greek, Italian, Polish,
-Russian, Slovak and English (\^`\csquotes`, \^`\dequotes`, \dots, \^`\enquotes`).
-You can simply define your own quotes as shown in section~\ref[langphrases].
-The `\"` is used for quotes visually more similar to the `"` character which
-can be primary quotes or secondary quotes depending on the language rules.
-Maybe you want to alternate the meaning of these two types of quotes. Use
-`\<isocode>quotes\altquotes` in such case.
-
-\secc[styles] Pre-defined styles
-%%%%%%%%%%%%%%%%%%%%%%%
-
-\OpTeX/ defines three style-declaration macros \~`\report`, \~`\letter` and
-\~`\slides`. You can use them at the beginning of your document if you are
-preparing these types of documents and you don't need to create your own
-macros.
-
-The \^`\report` declaration is intended to create reports. It
-sets default font size to 11\,pt and `\parindent` (paragraph indentation) to 1.2\,em.
-The `\tit` macro uses smaller font because we assume that \"chapter level"
-will be not used in reports. The first page has no page number, but the next pages
-are numbered (from number~2). Footnotes are numbered from one in the whole
-document. The macro `\author <authors><end-line>` can be used when
-\^`\report` is declared. It prints `<authors>` in italics at the center of the
-line. You can separate authors by `\nl` to more lines.
-
-The \^`\letter` declaration is intended to create letters.
-See the files `op-letter-*.tex` for examples.
-The \^`\letter` style sets default
-font size to 11\,pt and `\parindent` to 0\,pt. It sets half-line space
-between paragraphs. The page numbers are not printed. The \^`\subject` macro
-can be used, it prints the word \"Subject:" or \"Věc" (or something else
-depending on current language) in bold. Moreover, the \^`\address` macro
-can be used when \^`\letter` is declared. The usage of the \^`\address` macro
-looks like:
-
-\begtt \catcode`\<=13
-\address
- <first line of address>
- <second line of address>
- <etc.>
- <empty line>
-\endtt
-
-It means that you need not use any special mark at the end of lines: the ends
-of lines in the source file are the same as in printed output. The
-\^`\address` macro creates `\vtop` with address lines. The width of such
-`\vtop` is equal to the widest line used in it. So, you can use
-`\hfill\address...` to put the address box to the right side of the
-document. Or you can use `<prefixed text>\address...` to put
-`<prefixed text>` before the first line of the address.
-
-The \^`\slides` style creates a simple presentation slides. See an example
-in the file `op-slides.tex`. Run `optex op-slides.tex` and see the documentation of
-\^`\slides` style in the file `op-slides.pdf`.
-
-Analogical declaration macro `\book` is not prepared. Each book needs
-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 (`\input`) is \TeX/ primitive command, it can be
-used in the alternative old syntax `\input <filename><space>` too. The
-second case (\^`\load`) allows specifying a comma-separated list of included files.
-Moreover, it 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>`, the 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 source document is structured
-to more files (with individual chapters or sections), use simply the `\input` primitive.
-
-The macro packages intended to \OpTeX/ have the name `*.opm`.
-The following packages are distributed as part of \OpTeX/:
-\begitems
-* `qrcode.opm` enables to create QR codes.
-* `vlna.opm` enables to protect of one-letter prepositions and more things automatically.
-* `emoji.opm` defines `\emoji{<name>}` command for colored emoticons.
-* `plain-at.opm` defines the old names from plain \TeX/.
-\enditems
-See the directory `optex/pkg/` and these files for more information about
-them.
-
-\secc Lorem ipsum dolor sit
-%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\new
-A designer needs to concentrate on the design of the output and maybe he/she
-needs material for testing macros. There is the possibility to generate a
-neutral text for such experiments. Use \^`\lorem[<number>]` or
-\^`\lorem[<from>-<to>]`. It prints a paragraph (or paragraphs) with neutral
-text. The numbers <number> or <from>, <to> must be in the range 1 to 150
-because there are 150 paragraphs with neutral text prepared for you.
-The \^`\lipsum` macro is equivalent to \^`\lorem`. Example: \^`\lipsum[1-150]`
-prints all prepared paragraphs.
-
-\secc Logos
-%%%%%%%%%%
-
-\new
-The control sequences for typical logos can be terminated by optional `/`
-which is ignored when printing. This makes logos more legible in the source file:
-
-\begtt
-We are using \TeX/ because it is cool. \OpTeX/ is better than \LaTeX.
-\endtt
-
-\secc The last page
-%%%%%%%%%%%%%%%%%%%
-
-The number of the last page (it may be different from the number of pages) is
-expanded by \^`\lastpage` macro. It expands to `?` in first \TeX/ run and to
-the last page in next \TeX/ runs.
-
-There is an example for footlines in the format \"current page / last page":
-
-\begtt
-\footline={\hss \fixedrm \folio/\lastpage \hss}
-\endtt
-
-\new
-The \^`\lastpage` expands to the last \^`\folio` which is a decimal
-number or Roman numeral (when \^`\pageno` is negative). If you need to know
-the total pages used in the document, use \^`\totalpages` macro. It expands to
-zero (in first \TeX/ run) or to the number of all pages in the document
-(in next \TeX/ runs).
-
-\secc Use \OpTeX/
-%%%%%%%%%%%%%%%%%
-
-\new
-The command \^`\useOpTeX` (or \^`\useoptex`) does nothing in \OpTeX/ but it causes
-an error (undefined control sequence) when another format is used. You can
-put it as the first command in your document:
-
-\begtt
-\useOpTeX % we are using OpTeX format, no LaTeX :)
-\endtt
-
-\sec Summary
-%%%%%%%%%%%%
-
-\def\ttref#1'{\ea\~\ea`\csname#1\endcsname`}
-
-\begtt \typosize[9/11]\adef&{\kern.25em}\adef~#1'{\ea\~\ea`\csname#1\endcsname`}
-~tit' Title (terminated by end of line)
-~chap' Chapter Title (terminated by end of line)
-~sec' Section Title (terminated by end of line)
-~secc' Subsection Title (terminated by end of line)
-
-~maketoc' % table of contents generation
-~ii' item1,item2 % insertion the items to the index
-~makeindex' % the index is generated
-
-~label' [labname] % link target location
-~ref' [labname] % link to the chapter, section, subsection, equation
-~pgref' [labname] % link to the page of the chapter, section, ...
-
-~caption'/t % a numbered table caption
-~caption'/f % a numbered caption for the picture
-~eqmark' % a numbered equation
-
-~begitems' % start a list of the items
-~enditems' % end of list of the items
-~begblock' % start a block of text
-~endblock' % end of block of text
-~begtt' % start a verbatim text
-~endtt' % end verbatim text
-~verbchar' X % initialization character X for in-text verbatim
-~code' % another alternative for in-text verbatim
-~verbinput' % verbatim extract from the external file
-~begmulti' num % start multicolumn text (num columns)
-~endmulti' % end multicolumn text
-
-~cite' [labnames] % refers to the item in the lits of references
-~rcite' [labnames] % similar to \cite but [] are not printed.
-~sortcitations' ~shortcitations' ~nonumcitations' % cite format
-~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
-~thefontsize' [size] ~thefontscale' [factor] % current font size
-
-~inspic' file.ext % insert a picture, extensions: jpg, png, pdf
-~table' {rule}{data} % macro for the tables like in LaTeX
-
-~fnote' {text} % footnote (local numbering on each page)
-~mnote' {text} % note in the margin (left or right by page number)
-
-~hyperlinks' {color-in}{color-out} % PDF links activate as clickable
-~outlines' {level} % PDF will have a table of contents in the left tab
-
-~magscale'[factor] % resize typesetting, line/page breaking unchanged
-~margins'/pg format (left, right, top, bottom)unit % margins setting
-
-~report' ~letter' ~slides' % style declaration macros
-\endtt
-
-\sec API for macro writers
-%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-All \TeX/ primitives and almost all \OpTeX/ macros are accesible by two
-names: `\foo` (public or user name space) and `\_foo` (private name space).
-For example `\hbox` and `\_hbox` means the same \TeX/ primitive. More about
-it is documented in section~\ref[prefixed].
-
-If this manual refers `\foo` then `\_foo` equivalent exists too. For example,
-we mention the `\addto` macro below. The `\_addto` equivalent exists too, but it
-is not explicitly mentioned here. If we refer only `\_foo` then its public
-equivalent does not exist. For example, we mention the `\_codedecl` macro below, so
-this macro is not available as `\codedecl`.
-
-If you are writing a document or macros specific for the document, then use
-simply user namespace (`\foo`). If you are writing more general macros,
-then use private namespace (`\_foo`), but you should declare your own namespace
-by \~`\_namespace` macro and you have to follow the naming discipline described in
-section~\ref[pkg-namespace].
-
-The alphabetically sorted list of macros typically usable for macro writers follows.
-More information about such macros can be found in the technical documentation.
-You can use hyperlinks here in order to go to the appropriate place of the technical
-documentation.
-
-\medskip \noindent
-\^`\addto`` \macro{<text>}` adds <text> at the end of `\macro` body.\nl
-\^`\adef` `<char>{<body>}` defines <char> active character with meaning <body>.\nl
-\^`\afterfi` `{<text>}<ignored>\fi` expands to `\fi<text>`.\nl
-\^`\bp`` {<dimen expression>}` expands \TeX/ dimension to decimal number in `bp` without unit.\nl
-\~`\_codedecl`` <sequence> {<info>}` is used at beginning of macro files.\nl
-\~`\colordef`` \macro {<mix of colors>}` declares `\macro` as color switch.\nl
-\^`\cs` `{<string>}` expands `\<string>`.\nl
-\~`\_doc` `...` \~`\_cod` encloses documenation text in the macro code.\nl
-\^`\eoldef`` \macro #1{<body>}` defines `\macro` with parameter separated to end of line.\nl
-\~`\_endcode` closes the part of macro code in macro files.\nl
-\~`\_endnamespace` closes name space declared by \~`\_namespace`.\nl
-\~`\eqbox`` [<label>]{<text>}` creates `\hbox{<text>}` with common width across whole document.\nl
-\^`\expr`` {<expression>}` expands to result of the <expression> with decimal numbers.\nl
-\~`\fontdef`` \f {<font spec.>}` declares `\f` as font switch.\nl
-\~`\fontlet` `\fa=\fb <sizespec.>` declares `\fa` as the same font switch
- like `\fb` at given <sizespec.>.\nl
-\^`\foreach` `<list>\do <parameters>{<what>}` is exapandable loop over <list>.\nl
-\^`\foreachdef` `\macro <parameters>{<what>}` declares expandable `\macro` as loop over <list>.\nl
-\^`\fornum` `<from>..<to>\do {<what>}` is expanadable loop with numeric variable.\nl
-\^`\incr` `<counter>` increases and \^`\decr` `<counter>` decreases `<counter>` by one globally.\nl
-\^`\ignoreit` `<one>`, \^`\ignoresecond` `<one><two>` ignores given parameter.\nl
-`\expandafter` \^`\ignorept` `\the<dimen>` expands to decimal number <dimen> without `pt`.\nl
-\~`\isempty`, \~`\istoksempty`, \~`\isequal`, \~`\ismacro`, \~`\isdefined`, \~`\isinlist`
-\~`\isfile`, \~`\isfont` do various tests. Example: \~`\isinlist\list{<text>}\iftrue` does
- `\iftrue` if <text> is in `\list`.\nl
-\^`\isnextchar`` <char>{<text1>}{<text2>}` performs <text1> if next
- character is <char>, else <text2>.\nl
-\~`\kv` `{<key>}` expands to value when key-value parameters are used.\nl
-\^`\loop` `...` \^`\repeat` is classical Plain \TeX/ loop.\nl
-\^`\mathstyles`` {<math list>}` enables to create macros dependent on current math style.\nl
-\~`\_namespace`` {<pkg>}` declares name space used by package writers.\nl
-\^`\newcount`, \^`\newdimen` etc. are classical Plain \TeX/ allocators.\nl
-\^`\newif` `\iffoo` declares boolean `\iffoo` as in Plain \TeX/.\nl
-\^`\_newifi` `\_iffoo` declares boolean `\_iffoo`.\nl
-\^`\opinput`` {<filename>}` reads file like `\input` but with standard catcodes.\nl
-\^`\optdef`` \macro [<opt-default>] <parameters>{<body>}` defines `\macro` with [opt.parameter].\nl
-\^`\opwarning` `{<text>}` prints <text> to the terminal and .log file as warning.\nl
-\~`\private`` <sequence> <sequence> ... ;` declares <sequence>s for private name space.\nl
-\~`\public`` <sequence> <sequence> ... ;` declares <sequence>s for public name space.\nl
-\~`\readkv` `\macro` reads parameters from `\macro` in key-value format.\nl
-\^`\replstring`` \macro{<stringA>}{<stringB>}` replaces all <stringA> to <stringB> in `\macro`.\nl
-\^`\sdef` `{<string>}<parameters>{<body>}` behaves like `\def\<string><parameters>{<body>}`.\nl
-\^`\setctable` and \^`\restorectable` manipulate with stack of catcode tables.\nl
-\^`\slet` `{<stringA>}{<stringB>}` behaves like `\let\<stringA>=\<stringB>`\nl
-\^`\sxdef` `{<string>}<parameters>{<body>}` behaves like `\xdef\<string><parameters>{<body>}`.\nl
-\^`\trycs`` {<string>}{<text>}` expands `\<string>` if it is defined else expands <text>.\nl
-\^`\useit` `<one>`, \^`\usesecond` `<one><two>` uses given parameter.\nl
-\^`\wlog`` {<text>}` writes <text> to .log file.\nl
-\^`\wterm`` {<text>}` writes <text> to the terminal and .log file.\nl
-\^`\xargs`` <what> <token> <token> ... ;` repeats <what><token> for each <token>.\nl
-\unpenalty\unskip
-
-\sec Compatibility with Plain \TeX/
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-All macros of Plain \TeX/ are re-written in \OpTeX/. Common macros should
-work in the same sense as in original Plain \TeX. Internal control sequences
-like `\p@` or `\f@@t` are removed and mostly replaced by control sequences
-prefixed by `_` (like `\_this`). If you need to use the basic set of old Plain
-\TeX/ control sequences like `\p@` (for example you are reading an old macro file),
-use `\load[plain-at]`.
-
-All primitives and common macros have two
-control sequences with the same meaning: in prefixed and unprefixed form.
-For example `\hbox` is equal to `\_hbox`.
-Internal macros of \OpTeX/ have and use only prefixed form. User should use
-unprefixed forms, but prefixed forms are accessible too because the `_` is
-set as a letter category code globally (in macro files and users document too). User
-should re-define unprefixed forms of control sequences without worries that
-something internal will be broken (only the sequence `\par` cannot be
-re-defined without change of internal \TeX/ behavior because it is
-hard-coded in \TeX/, unfortunately).
-
-\new
-The Latin Modern 8bit fonts instead Computer Modern 7bit fonts are
-preloaded in the format, but only a few ones. The full family set is ready to
-use after the command \~`\fontfam[LMfonts]` which reads the fonts in OTF
-format.
-
-\new
-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 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
-The default paper size is not set as the letter with 1\,in margins but as A4 with
-2.5\,cm margins. You can change it, for example by
-\^`\margins/1 letter (1,1,1,1)in`. This example sets the classical Plain \TeX/
-page layout.
-
-\new
-The origin for the typographical area is not at the top left 1\,in 1\,in coordinates
-but at the top left paper corner exactly. For example, `\hoffset` includes directly left
-margin.
-
-The tabbing macros `\settabs`\iindex{settabs} and `\+` (from Plain \TeX/)
-are not defined in \OpTeX/ because they are obsolete. But you can use the
-\ulink[http://petr.olsak.net/optex/optex-tricks.html\#tabs]{\OpTeX/ trick 0021}
-if you really need such feature.
-
-The `\sec` macro is reserved for sections but original Plain \TeX/ declares this
-control sequence for math secans.
-
-\enddocument
-
-
-\sec Dependencies
-%%%%%%%%%%%%%%%%%
-
-When `optex.fmt` is created then the following must be installed
-
-\begitems
-* The `\luatex` program.
-* Latin moder font metrics
- `ec-lmr10.tfm`, `ec-lmbx10.tfm`, `ec-lmri10.tfm`,
- `ec-lmbxi10.tfm`, `ec-lmtt10.tfm` (for basic text font initializing).
-* Computer rmodern font metrics
- `cmr10.tfm`, `cmmi10.tfm`, `cmsy10.tfm`, `cmex10.tfm` (for basic math
- initializing). If there are more Computer Modern fonts then they are read
- too.
-* The file `hyphen.tex` form plain \TeX.
-\enditems
-
-When `\fontfam` is used then the ability of Unicode fonts reading
-is initialized using Lua scripts: `ltluatex.lua` (from \LaTeX/ package),
-`luaotfload-main.lua` and more 20 similar `.lua` files (from `luaotfload`
-package).
-
-When a font family is needed using `\fontfam` then such font family must be
-installed in the OTF format otherwise, the `\fontfam` command is ignored
-(only warning about no-existent font family is printed).
-
-When `\cslang`, `\delang` etc. commands are used in the document
-then the hyphenation patterns of relevant languages must be installed.
-Moreover the Lua script `luatex-hyphen.lua` (from `hyph-utf8` package)
-and data file `language-dat.lua` (from `hyphen-base` package)
-must be installed.
-
-When `\usebib` command is used then `librarian.tex` file
-(from the `librarian` macro package) must be installed.
-
-When `\morecolors` command is used then `x11nam.def` file
-(from the `xcolor` package) must be installed.
-
-When `\lorem` command is used then `lipsum.ltd.tex` file
-(from the `lipsum` package) must be installed.
-
diff --git a/macros/luatex/optex/doc/optex.1 b/macros/luatex/optex/doc/optex.1
deleted file mode 100644
index 7b912e12a8..0000000000
--- a/macros/luatex/optex/doc/optex.1
+++ /dev/null
@@ -1,42 +0,0 @@
-.TH OPTEX 1 "17 Feb. 2020" "Petr Olsak"
-.\"=====================================================================
-.if t .ds TX \fRT\\h'-0.1667m'\\v'0.20v'E\\v'-0.20v'\\h'-0.125m'X\fP
-.if n .ds TX TeX
-.ie t .ds OX \fIT\v'+0.25m'E\v'-0.25m'X\fP\" for troff
-.el .ds OX TeX\" for nroff
-.\" the same but obliqued
-.\" BX definition must follow TX so BX can use TX
-.if t .ds BX \fRB\s-2IB\s0\fP\*(TX
-.if n .ds BX BibTeX
-.\" LX definition must follow TX so LX can use TX
-.if t .ds LX \fRL\\h'-0.36m'\\v'-0.15v'\s-2A\s0\\h'-0.15m'\\v'0.15v'\fP\*(TX
-.if n .ds LX LaTeX
-.\"=====================================================================
-.SH NAME
-optex \- OPmac and Plain TeX for LuaTeX engine.
-.SH SYNOPSIS
-.B optex
-[ first line ]
-.\"=====================================================================
-.SH DESCRIPTION
-This manual page was derived from the manual page for \*(LX and is not meant
-to be exhaustive. The complete
-documentation for this version of \*(TX can be found in the info file
-or manual
-.IR "Web2C: A TeX implementation" .
-.PP
-.B OpTeX
-is LuaTeX macro package initialized as the LuaTeX format optex.fmt.
-It is based on Plain TeX macros by Donlad Knuth and on OPmac macros from
-csplain package. For more information about it see
-http://petr.olsak.net/optex web page.
-.\"=====================================================================
-.SH "SEE ALSO"
-.BR luatex (1),
-.BR tex (1),
-.br
-.SH AUTHORS
-The author of
-.B OpTeX
-is Petr Olsak.
-.PP
diff --git a/macros/luatex/optex/pkg/emoji.opm b/macros/luatex/optex/pkg/emoji.opm
deleted file mode 100644
index e14579135f..0000000000
--- a/macros/luatex/optex/pkg/emoji.opm
+++ /dev/null
@@ -1,55 +0,0 @@
-% This is the macro package used by OpTeX, see http://petr.olsak.net/optex
-
-% emoji.opm, Petr Olšák <petr@olsak.net>, 2021
-
-% Emoji allows us to use colored emoticons as characters from the font.
-% The \emoji{<name>} command is available, see texdoc emoji (from
-% corresponding LaTeX package).
-
-\_namespace{emoji}
-
-\_codedecl \.emoji {Emotikons from the TwemojiMozilla.ttf font}
-
- \_doc -----------------------------
- Font TwemojiMozilla.ttf is loaded. The font feature +colr is needed.
- The `\emojifont` is implemented using `\_resizethefont` as size-dependent.
- \_cod -----------------------------
-
-\_initunifonts
-\_font\.tenemoji=[TwemojiMozilla]:+colr
-\_def\.emojifont{\.tenemoji\_resizethefont}
-\_def\.emoji#1{{\.emojifont\_trycs{_emoji_:#1}{\_opwarning{uknown emoji "#1"}}}}
-
- \_doc -----------------------------
- The mapping from names or aliases to the codes are declared in the
- `emoji-table.def` file from the \LaTeX/ package emoji.
- \_cod -----------------------------
-
-\_bgroup
- \_def\__emoji_def #1 #2#3#4#5#6{% #1=n, #2=data, #3=name, #4=aliases, #5=descr, #6=versi
- \_sxdef{_emoji_:#3}{#2}%
- \_ifx^#4^\_else \_foreach #4, \_do ##1, {\_global\_slet{_emoji_:##1}{_emoji_:#3}}\_fi
- }
- \_def\ProvidesExplFile#1#2#3#4{}
- \_def\__emoji_group#1 #2{}
- \_def\__emoji_subgroup#1 #2{}
- \_catcode`\#=12
- \_input {emoji-table.def}% defining emoji names
-\_egroup
-
-\_nspublic \emoji \emojifont ;
-
-\_endnamespace
-
-\_endcode
-
-\begtt % ----------------------- Testing file ---------------------------
-\load[emoji]
-We can use \emoji{grinning} or directly: {\emojifont 😀} too.
-\bye
-\endtt % ----------------------------------------------------------------
-
-More than 3000 emoticons are available.
-
-If you want black-and-white pictograms, see another font:
-\url{http://petr.olsak.net/optex/optex-tricks.html\#fawesome}
diff --git a/macros/luatex/optex/pkg/plain-at.opm b/macros/luatex/optex/pkg/plain-at.opm
deleted file mode 100644
index 3277d7b24e..0000000000
--- a/macros/luatex/optex/pkg/plain-at.opm
+++ /dev/null
@@ -1,43 +0,0 @@
-% This is macro package used by OpTeX, see http://petr.olsak.net/optex
-
-\_codedecl \_undefined {Obscure @ names from plain TeX <2020-05-22>}
-
-\_setctable \_optexcatcodes
-% PlainTeX obscure names:
-\_catcode`\@=11
-\_let\z@=\_zo
-\_let\z@skip=\_zoskip
-\_newdimen\p@ \p@=1pt
-\_chardef\@ne=1
-\_chardef\tw@=2
-\_chardef\thr@@=3
-\_chardef\sixt@@n=16
-\_mathchardef\@m=1000
-\_mathchardef\@M=10000
-\_mathchardef\@MM=20000
-\_countdef\m@ne=22 \m@ne=-1
-\_chardef\@cclv=255
-\_mathchardef\@cclvi=256
-\_skipdef\skip@=0
-\_dimendef\dimen@=0
-\_dimendef\dimen@i=1
-\_dimendef\dimen@ii=2
-\_countdef\count@=255
-\_def\m@th{\_mathsurround\z@}
-\_def\o@lign{\_lineskiplimit\z@ \_oalign}
-\_def\n@space{\_nulldelimiterspace\z@ \m@th}
-\_newdimen\p@renwd \p@renwd=8.75pt
-\_def\alloc@#1#2#3#4#5{\_allocator#5{\_csstring#2}#3}
-\_restorectable
-
-\_endcode
-
-We absolutely don't recommend to use such obscure names in your macros. But
-sometimes you need to read an old plain TeX document or a macro file. You
-can load this file in such cases. For example:
-
-\begtt
- \load [plain-at, shapepar.sty]
-\endtt
-
-\_endinput
diff --git a/macros/luatex/optex/pkg/qrcode.opm b/macros/luatex/optex/pkg/qrcode.opm
deleted file mode 100644
index 5df0ad2c07..0000000000
--- a/macros/luatex/optex/pkg/qrcode.opm
+++ /dev/null
@@ -1,2707 +0,0 @@
-% This is macro package used by OpTeX, see http://petr.olsak.net/optex
-% qrcode.opm, Petr Olšák <petr@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@numrows\_endcsname{#2}%
- \_ea\_gdef\_csname #1@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@numrows\_endcsname%
-}%
-
-\_def\.numberofcolsinmatrix#1{%
- \_csname #1@numcols\_endcsname%
-}%
-
-\_def\.setnumberofrows#1#2{%
- \_ea\_xdef\_csname #1@numrows\_endcsname{#2}%
-}%
-
-\_def\.setnumberofcols#1#2{%
- \_ea\_xdef\_csname #1@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@numrows\_endcsname{#2}%
- \_ea\_xdef\_csname #1@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@addchar@\.tempa\.tempb\_endcsname{\.Fresult}%
- }%
- }%
-
-\_def\.Faddchar#1#2{%
- \_ea\_def\_ea\.Fresult\_ea{\_csname F@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@twotothe@\_the\.i\_endcsname{\.poweroftwo_hex}%
- \_ea\_xdef\_csname F@logtwo@\.poweroftwo_hex\_endcsname{\_the\.i}%
- }%
-\_ea\_xdef\_csname F@twotothe@0\_endcsname{01}%
-\_ea\_xdef\_csname F@logtwo@01\_endcsname{0}%
-
-\_def\.Ftwotothe#1{%
- \_ea\_xdef\_ea\.Fresult\_ea{\_csname F@twotothe@#1\_endcsname}%
-}%
-\_def\.Flogtwo#1{%
- \_ea\_xdef\_ea\.Fresult\_ea{\_csname F@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
-}%
-
-\_nspublic \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{}
-
-\_endnamespace
-\_endcode
-
-This macro file is created for \OpTeX/. It is derived from:
-
-\begtt
-% qrcode.tex
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Petr Olsak <petr@olsak.net> Jul. 2015
-
-% This macro qrcode.tex is (roughly speaking) a copy of qrcode.sty
-% macro by Anders Hendrickson <ahendric@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.
-
diff --git a/macros/luatex/optex/pkg/vlna.opm b/macros/luatex/optex/pkg/vlna.opm
deleted file mode 100644
index 4db22aa0cc..0000000000
--- a/macros/luatex/optex/pkg/vlna.opm
+++ /dev/null
@@ -1,193 +0,0 @@
-% This is the macro package used by OpTeX, see http://petr.olsak.net/optex
-
-% vlna.opm, Petr Olšák <petr@olsak.net>, 2021
-
-% Vlna prevents breaks in spaces after single-letter prepositions, after (or
-% before) degrees, and between value and SI units. It enables or disables
-% split hyphens too. All folks are done at the postprocessing phase before TeX splits
-% the typesetting material into the paragraph lines.
-
-% vlna.opm is based on Lua code from the package `luavlna` (by Michal Hoftich
-% and Miro Hrončok). See `texdoc luavlna` or end of this file for more information.
-
-\_namespace{vlna}
-
-\_codedecl \.singlechars {Preventing single-chars prepositions and more <2021-01-08>}
-
- \_doc -----------------------------
- We declare new attribute, register callbacks, and define Lua functions that
- point to Lua functions from `luavlna.lua` package.
- We need this package installed.
-
- We need not `require ltluatex` because `luatexbase.callbaks` are defined
- in the `optex.lua` file and it is part of the OpTeX format.
- \_cod -----------------------------
-
-\_newattribute \.preventsinglestatus
-
-\_directlua{%
- luavlna = require "luavlna"
-
- luatexbase.add_to_callback("pre_linebreak_filter", luavlna.preventsingle,"LuaVlna")
- luatexbase.add_to_callback("hyphenate", luavlna.split_hyphens, "allow hyphen breaks")
- luavlna.preventsingleid = \_the\_attributealloc
-
- set_singlechars = function(lang,chars)
- if (lang == "") then return nil end
- local utf_gmatch = unicode.utf8.gmatch
- local chars = chars or ""
- local singlechars = {}
- for char in unicode.utf8.gmatch(chars,"(\_csstring\%a)") do
- singlechars[char] = true
- end
- luavlna.singlechars(lang,singlechars)
- end
-
- set_compounds = function(lang, compounds)
- if (lang == "") then return nil end
- local c = compounds:explode(",+") % match multiple colons as one
- local compoundstable = {}
- for _, compound in pairs(c) do
- compoundstable[compound] = true
- end
- luavlna.initials(lang, compoundstable)
- end
-
- set_main_language = function(lang)
- if (lang == "") then return nil end
- luavlna.set_main_language(tonumber(lang))
- end
-
- enable_split_hyphens = function(lang)
- if (lang == "") then return nil end
- luavlna.split_hyphen_langs[tonumber(lang)] = true
- end
-
- disable_split_hyphens = function(lang)
- if (lang == "") then return nil end
- luavlna.split_hyphen_langs[tonumber(lang)] = nil
- end
-}
-
- \_doc -----------------------------
- We need not `require luavlna-langno` because of the conversion from
- language name to the `\language` number is done by the macro
- `\.langtonum``<sequence>={<langname>}` defined here.
- It does `\def<sequence>{<langnumber>}` or `\def\sequence{}` if <langname>
- is unknown. The <langname> is case insensitive and these names are
- declared in the hyphen-lan.opm file, section 2.37.2 in OpTeX documentation.
- \_cod -----------------------------
-
-\_def\.langtonum#1=#2{\_lowercase{\_edef#1{\_trycs{_ulan:#2}{}}}%
- \_ifx#1\_empty \_opwarning{vlna: unknown language "#2", ignored}%
- \_else \_edef#1{\_the\_cs{_#1Patt}}\_fi}
-
- \_doc -----------------------------
- `\singlechars``{<langname>}{<prepositions>}` sets <prepositions> for
- given language.\nl
- `\compoundinitials``{<langname>}{<comma-separated-list>}` sets
- compound characters from the list for given language.
- \_cod -----------------------------
-
-\_def\.singlechars#1#2{\.langtonum\.l={#1}\_directlua{set_singlechars("\.l","#2")}}
-\_def\.compoundinitials#1#2{\.langtonum\.l={#1}\_directlua{set_compounds("\.l","#2")}}
-
- \_doc -----------------------------
- `\enablesplithyphens` and `\disablesplithyphens` are dependent on the language.
- \_cod -----------------------------
-
-\_def\.enablesplithyphens#1{\.langtonum\.l={#1}\_directlua{enable_split_hyphens("\.l")}}
-\_def\.disablesplithyphens#1{\.langtonum\.l={#1}\_directlua{disable_split_hyphens("\.l")}}
-
- \_doc -----------------------------
- By default, the language-dependent features of the `luavlna` depend on
- the current `\language` value, i.e. on the currently selected hyphenation.
- `\preventsinglelang``{<langname>}` activates the language-dependent
- features regardless of the current `\language` value.
- \_cod -----------------------------
-
-\_def\.preventsinglelang#1{\.langtonum\.l={#1}\_directlua{set_main_language("\.l")}}
-
- \_doc -----------------------------
- Switching on/off `luavlna` preposition features should be done using attribute
- setting. It will allow you to switch them on/off in the middle of the paragraph.
- \_cod -----------------------------
-
-\_def\.preventsingleon{\.preventsinglestatus=2 }
-\_def\.preventsingleoff{\.preventsinglestatus=1 }
-
- \_doc -----------------------------
- Switching on/off the other `luavlna` features is implemented only by
- setting a special `luavlna` variable.
- \_cod -----------------------------
-
-\_def\.preventsingledebugon{\_directlua{luavlna.debug(true)}}
-\_def\.preventsingledebugoff{\_directlua{luavlna.debug(false)}}
-
-\_def\.nopredegrees{\_directlua{luavlna.no_predegrees = true}}
-\_def\.nosufdegrees{\_directlua{luavlna.no_sufdegrees = true}}
-\_def\.nounits{\_directlua{luavlna.no_unit = true}}
-\_def\.noinitials{\_directlua{luavlna.no_initials = true}}
-
-\_nspublic
- \singlechars % declare single-letter prepositions per language
- \compoundinitials % declare compound characters per language
- \enablesplithyphens % enable split hyphens per language
- \disablesplithyphens % disable split hyphens per language
- \preventsinglelang % declare main language independent of current hyphenation
- \preventsingleon % switch on the prepositions feature (default)
- \preventsingleoff % switch off the prepositions feature
- \nopredegrees % switch off pre-degrees feature (default is on)
- \nosufdegrees % switch off post-degrees feature (default is on)
- \nounits % switch off SI units feature (default is on)
- \noinitials % switch off initials feature (default is on)
- \preventsingledebugon % switch on debug printing (purple squares)
- \preventsingledebugoff % switch off debug printing (default)
- ;
-
-\_endnamespace
-
-% Default values:
-\singlechars{Czech}{AIiVvOoUuSsZzKk}
-\singlechars{Slovak}{AIiVvOoUuSsZzKk}
-\compoundinitials{Czech}{Ch,CH} % doesn't work in version v0.1g of luavlna
-\enablesplithyphens{Czech}
-\enablesplithyphens{Slovak}
-% + predegrees, sufdegrees, units, initials (they are independent of language value)
-
-\_endcode
-
-What should be done automatically after `\load[vlna]`:
-
- Prepositions feature: v lese -> v~lese, (A taky zde) -> (A~taky zde).
-
- Pre-degrees feature: Mgr. Bown -> Mgr.~Brown.
-
- Post-degrees feature: John Brown, PhD. -> John Brown,~PhD.
-
- SI units feature: 42 cm -> 42~cm (with thin space)
-
- Initials feature: J. Brown -> J.~Brown
-
- Split hyphens feature: propan-butan -> propan\discretionary{-}{-}{-}butan.
-
-The prepositions and split-hyphens features are language-dependent, the other
-features are language-independent.
-
-A testing file:
-
-\begtt
-\load[vlna]
-\fontfam[LMfonts]
-\cslang
-\preventsingledebugon
-
-Mgr. J. Brown, PhD., zkusí v lese (A taky v závorce) zkontrolovat rozměr 42 m.
-Obejde se bez propan-butanových lahví.
-\bye
-\endtt
-
-Note, that versinon v0.1g 2020-06-02 of the luavlna package is an
-experimental code. It seems that `\compoundinitials` does not work in this
-version and when you use `\hbox{-}` in a paragraph when
-`\enablesplithyphens` then LuaTeX hangs.