texlive[57419] Master/texmf-dist: optex (13jan21)

commits+karl at tug.org commits+karl at tug.org
Thu Jan 14 22:53:33 CET 2021


Revision: 57419
          http://tug.org/svn/texlive?view=revision&revision=57419
Author:   karl
Date:     2021-01-14 22:53:33 +0100 (Thu, 14 Jan 2021)
Log Message:
-----------
optex (13jan21)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/luatex/optex/README
    trunk/Master/texmf-dist/doc/luatex/optex/optex-doc.pdf
    trunk/Master/texmf-dist/doc/luatex/optex/optex-doc.tex
    trunk/Master/texmf-dist/doc/luatex/optex/optex-math.tex
    trunk/Master/texmf-dist/doc/luatex/optex/optex-techdoc.tex
    trunk/Master/texmf-dist/doc/luatex/optex/optex-userdoc.tex
    trunk/Master/texmf-dist/tex/luatex/optex/base/alloc.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/basic-macros.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/bib-iso690.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/bib-simple.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/cite-bib.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/colors.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/doc.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/f-adventor.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/f-antt.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/f-baskerville.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/f-bonum.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/f-comicneue.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/f-cursor.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/f-dejavu.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/f-ebgaramond.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/f-garamondl.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/f-gfsbodoni.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/f-heros.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/f-kerkis.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/f-kpfonts.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/f-libertine-s.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/f-libertine.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/f-libertinus.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/f-lido.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/f-lmfonts.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/f-merriweather.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/f-pagella.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/f-poltawski.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/f-roboto.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/f-schola.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/f-sourcepro.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/f-technika.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/f-termes.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/f-xcharter.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/fams-ini.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/fnotes.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/fonts-catalog.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/fonts-opmac.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/fonts-preload.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/fonts-resize.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/fonts-select.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/graphics.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/hi-syntax.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/hisyntax-c.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/hisyntax-html.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/hisyntax-python.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/hisyntax-tex.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/hyperlinks.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/hyphen-lan.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/if-macros.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/keyval.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/languages.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/lists.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/logos.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/luatex-ini.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/makeindex.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/maketoc.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/margins.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/math-macros.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/math-preload.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/math-unicode.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/more-macros.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/multicolumns.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/optex.ini
    trunk/Master/texmf-dist/tex/luatex/optex/base/optex.lua
    trunk/Master/texmf-dist/tex/luatex/optex/base/others.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/outlines.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/output.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/parameters.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/pdfuni-string.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/plain-macros.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/prefixed.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/print-unimath.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/ref-file.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/references.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/sections.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/slides.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/styles.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/table.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/uni-lcuc.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/unimath-codes.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/usebib.opm
    trunk/Master/texmf-dist/tex/luatex/optex/base/verbatim.opm
    trunk/Master/texmf-dist/tex/luatex/optex/demo/op-demo.tex
    trunk/Master/texmf-dist/tex/luatex/optex/demo/op-letter-cs.tex
    trunk/Master/texmf-dist/tex/luatex/optex/demo/op-letter-en.tex
    trunk/Master/texmf-dist/tex/luatex/optex/demo/op-slides.tex

Added Paths:
-----------
    trunk/Master/texmf-dist/tex/luatex/optex/pkg/emoji.opm
    trunk/Master/texmf-dist/tex/luatex/optex/pkg/vlna.opm

Modified: trunk/Master/texmf-dist/doc/luatex/optex/README
===================================================================
--- trunk/Master/texmf-dist/doc/luatex/optex/README	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/doc/luatex/optex/README	2021-01-14 21:53:33 UTC (rev 57419)
@@ -19,6 +19,14 @@
 
 History:
 
+<0.19> Jan. 2020
+       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.

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

Modified: trunk/Master/texmf-dist/doc/luatex/optex/optex-doc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/luatex/optex/optex-doc.tex	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/doc/luatex/optex/optex-doc.tex	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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. 
@@ -20,9 +20,9 @@
 \tit Format Based on Plain \TeX/ and OPmac\fnotemark1
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-\hfill Version 0.18
+\hfill Version 0.19
 
-\centerline{\it Petr Olšák, 2020}
+\centerline{\it Petr Olšák, 2020, 2021}
 
 \bigskip
 \centerline{\url{http://petr.olsak.net/optex}}
@@ -45,7 +45,7 @@
 
 \begitems
 * \OpTeX/ keeps the simplicity (like in Plain \TeX/ and OPmac macros).
-* There is no old obscurities concerning with various 8-bit encodings and
+* 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).
@@ -56,20 +56,20 @@
   \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 name space of control sequences is separated from internal name space
-  of \OpTeX/ and primitives (`\foo` versus `\_foo`). The name spaces for
-  macro writers are designed too.
+* 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 of these macros here. This is significant difference from
-\LaTeX/ or ConTeXt, which are an attempt to create a new user level with a
+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 does not create a new user level for
-controlling your document. We have \TeX.
-You can use \OpTeX/ macros, understand them an modify them.
+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
@@ -80,7 +80,7 @@
 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 user knows \TeX/
+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.

Modified: trunk/Master/texmf-dist/doc/luatex/optex/optex-math.tex
===================================================================
--- trunk/Master/texmf-dist/doc/luatex/optex/optex-math.tex	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/doc/luatex/optex/optex-math.tex	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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
@@ -52,9 +52,9 @@
 \author Petr Olšák
 
 
-This document is a brief summary about typesetting math. It describes \TeX/,
+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
+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.
 
@@ -61,15 +61,15 @@
 \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 
+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/) 
+\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 
+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 
+`\fonfam[lmfonts]`). See section 1.3.3 in \OpTeX/ documentation about
 loading Unicode math fonts.
 
 {\iindent=2em
@@ -82,46 +82,46 @@
 \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 (standalone line between paragraphs) is created by `$$<math list>$$`.
-More than one line can be here if appropriate macro is used. In-line math is
+\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 
+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 genereal 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> 
+* 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 to use brackets.
+  consist only from a single math object then we need not use brackets.
   For example
-  `x^2` is a math atom with `x` in nucleus, `2` in exponent and with empty subscript.
-  Or `a_{i,j}` is a math atom with `a` in nucleus, empty exponent and `i,j` in subscript.%
+  `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
-  control sequence name, not as the subscript constructor. But in common cases,
-  constructions of math atoms are interpreded exactly as in plain \TeX. See sections
+  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 only subscript constructor in \OpTeX/ then you can set \code{\\catcode`\\_=8}
+  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 for subscript `_` can be used in arbitrary order 
-  after the nucleus, for example `z_1^{x+y}` is the same math atom as
+  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 nucleus and with empty
-  exponent and subscript (this is very common case). 
+  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. 
+* 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 
+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
@@ -135,15 +135,15 @@
   \enditems
 * `+` is math atom with empty exponent and subscript, class: Bin,
 * `z` is math atom with empty exponent and subscript, class: Ord,
-* `\,` is other material, the glue (space) in this case,
+* `\,` 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.
+* `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 
+{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
@@ -153,13 +153,13 @@
 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 single math object, i.e. it is constructed by `{<math list>}` with braces
-then the atom has its class Ord. If the nucleus is single math object constructed
+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.
-Full set of all math objects used in math typesetting 
-is listed in the section~\ref[objects] with their default classes.
+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}{
@@ -175,13 +175,13 @@
 }
 \bigskip
 
-There are \ii horizontal/spacing,spacing three space types used 
+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. 
+* \ii thick/space Thick space: \x`\thickmusip` primitive register, `\;` macro. Used around Rel atoms.
 \enditems
 
 \puttext 7.8cm -3.7cm {\rotbox{90}{Left atom}}
@@ -191,7 +191,7 @@
 \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  
+  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
@@ -202,22 +202,22 @@
 
 \hangindent=-8.7cm \hangafter=0
 Ord atoms are printed without spaces between them. The spaces are not
-cummulated, so the rule about spaces mentioned above is only 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
+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 automaticaly transformed to the
-Ord atom if no atom precedes or if Op, Bin, Rel, Open or Punct atom
+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 unary minus and the following object.
+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 
+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.
 
@@ -225,13 +225,13 @@
 \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` in spacing point of view but +
+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 by special way (see next sections) but they behaves
-like Ord atom in the horizontal spacing algorithm. 
+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
 
@@ -238,7 +238,7 @@
 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$). 
+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
@@ -247,12 +247,12 @@
 There are special rules for math styles when fractions are constructed, see
 section~\ref[frac].
 
-The $D$ and $T$ style uses basic \ii font/size font size, $S$ uses smaller font size (typically
+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. 
+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.
@@ -272,7 +272,7 @@
 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
-default behavior is processed regardless there are \x`\limits` or \x`\nolimits`
+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
@@ -289,18 +289,24 @@
 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 
+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 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]).  
+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 first step)
+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
@@ -307,23 +313,25 @@
 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 macro programmer.
+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 current
-style. You can use \x`\mathstyles``{<math list>}`. It 
-behaves like `{<math list>}`, moreover, you can use following commands inside such
+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 
+* The macro \x`\currstyle`. It expands to
   `\displaystyle`, `\textstyle`,
   `\scriptstyle` or `\scriptscriptstyle` depending on the current math style
-  when the `\mathstyles` was opened. 
+  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.  
+* 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`:
@@ -340,23 +348,23 @@
 
 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. 
+computer time in special cases.
 \new Lua\TeX/
-Lua\TeX/ supports the \x`\mathstyle` primitive 
+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'$ 
+$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.  
+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 single object in the whole math mode (between dollars), 
-you need not to use the outer braces, so you can write `$1\over2$` to get $1\over2$.
+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.
@@ -371,12 +379,12 @@
 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
+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 as `{<above>\over <below>}`
+create \"generalized" fractions. The result is similar to `{<above>\over <below>}`
 but there is something extra:
 
 \begitems
@@ -396,7 +404,7 @@
 math objects, typically brackets. See section~\ref[delims] for more
 information about math delimiters. Example:
 $$
- `{n \atopwithdelims() k}`\quad \hbox{ creates } 
+ `{n \atopwithdelims() k}`\quad \hbox{ creates }
   {n \choose k} \hbox{ in $D$ style and }
   \textstyle {n \choose k} \hbox{ in $T$ style}.
 $$
@@ -404,7 +412,7 @@
 user can write `{n\choose k}` in order to get binomial coefficients.
 
 
-\secc[delims] Vertically scalable objects: math delimiters 
+\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.
@@ -412,8 +420,8 @@
 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, reader must see a difference
-between each two sizes of brackets.}
+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):
 
@@ -420,21 +428,21 @@
 \bigskip
 {\tt \adef!{\bslash}
 \table{l 14c}{
- \rm source: & ( & ) & [ & ] & \code{\\\{} & \code{\\\}} & /  
-             & !backslash & !langle & !rangle 
-             & | & \code{\\|} & \cr   
- \rm output: &$($&$)$&$[$&$]$& $\{$  & $\}$ & $/$ 
-             & $\backslash$ & $\langle$ & $\rangle$ 
+ \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$ 
+ \rm output: &  $\lfloor$  & $\rfloor$ & $\lceil$ & $\rceil$
 }
 \medskip
 \table{l 14c}{
- \rm source: & !uparrow & !Uparrow & !dowarrow & !Downarrow 
+ \rm source: & !uparrow & !Uparrow & !dowarrow & !Downarrow
              & !updownarrow & !Updownarrow \cr
  \rm output: & $\uparrow$ & $\Uparrow$ & $\downarrow$ & $\Downarrow$
              & $\updownarrow$ & $\Updownarrow$
@@ -441,26 +449,26 @@
 }}
 \bigskip
 \noindent \new Unicode
-If you are able to produce the characters $\langle$, $\rangle$,\fnote
+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$ 
+$\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 
+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. 
+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$. 
+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
@@ -469,14 +477,14 @@
 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.} 
+ respect to this axis.}
 Example:
 $$
-  `+ \left\{ \sum_{i=1}^\infty x_i \right)` \quad \hbox{ gives }  
+  `+ \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. 
+\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:
@@ -484,17 +492,17 @@
   `\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. 
+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 
+$], ], \}, \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,
@@ -501,7 +509,7 @@
 `\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. 
+atom at its right side.
 
 The sequence of increasing delimiters can be printed by the following
 macros:
@@ -509,21 +517,21 @@
   `(` \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 maximal size of the bracket. Try 
-`\left(\vbox to5cm{}\right.`, for example. You can see that the font 
+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. 
+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`\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`\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
@@ -530,7 +538,7 @@
 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)'. 
+  \Bigl(f\bigl(2(x+y)+z\bigr)\Bigr)'.
 $$
 
 \secc Horizontally scalable objects: math accents
@@ -542,11 +550,11 @@
 $$
 The usage is: control sequence of selected math accent followed by `{<math list>}`.
 
-Standard scalable math accents are: 
-\x`\overline` $\overline{abc}$, 
+Standard scalable math accents are:
+\x`\overline` $\overline{abc}$,
 \x`\overbrace` $\overbrace{abc}$,
 \x`\overrightarrow` $\overrightarrow{abc}$,
-\x`\overleftarrow`~$\overleftarrow{abc}$, 
+\x`\overleftarrow`~$\overleftarrow{abc}$,
 \x`\underline` $\underline{abc}$,
 \x`\underbrace` $\underbrace{abc}$.
 
@@ -556,9 +564,9 @@
   `\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 limited maximum width:
+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 is able to cover then widest variant from 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
@@ -572,23 +580,23 @@
 
 \secc Fixed math accents
 
-Fixed \ii math/accent,accent math accents can be applied to single math object or to the `{<math list>}`. 
+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$, 
+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`\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$. 
+\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'`
@@ -608,9 +616,9 @@
 
 \secc Math alphabets
 
-Letters \ii math/alphapbet $a\dots z$, $A\dots Z$ and $\alpha$\dots$\omega$ are printed in italic
+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
+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.}
@@ -618,7 +626,7 @@
 
 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}: 
+\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
@@ -626,11 +634,11 @@
 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 
+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 this typographic convention. For
+`\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}
@@ -681,7 +689,7 @@
 \_bisansGreek      % bold slanted snas serif Greek letters \Alpha-\Omega
 \endtt
 %
-Not all Unicode math fonts include all math alphabets listed here. Typically, 
+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.
 
@@ -698,14 +706,14 @@
 \def\rm {\_tryload\_tenrm \_inmath{\_rmavariables \_rmdigits}}
 \endtt
 %
-The first part 
+The first part
 \new \OpTeX/
-`\_tryload\_tenrm` is applicable for text fonts and the 
+`\_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
+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 which selects sans serif bold in math. This is common
-notation for vectors, tensors and matrices. If you dislike this, then you can define:
+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
@@ -716,15 +724,15 @@
 \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. 
+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 currently loaded font by
+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 loaded font.
+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.
@@ -769,25 +777,25 @@
 
 \new Unicode
 All characters available in the math font can be accessed by \TeX/ control
-sequence or by direct using the Unicode character in the document source.
+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). 
 $$
+   \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). 
+   ∑_{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} 
+  ∑_{k=0}^∞ e^{(α + iβ_k)} = e^α ∑_{k=0}^∞ e^{iβ_k}
                            = e^α ∑_{k=0}^∞ (\cos β_k + i\sin β_k).
 $$
 \medskip
@@ -798,19 +806,19 @@
 \secc The `\not` prefix
 
 You can apply \x`\not` before a following math object.
-The slash $/$ is overprinted such math object, for example 
+The slash $/$ is overprinted such math object, for example
 `$a \not= b$` gives $a \not= b$.
 
 \new \OpTeX/
-If there exist a direct Unicode character for negation of a relation symbol
-(for example `\ne` creates $\ne$ directly as a character U+2260) 
-then `\not<char>` expands to appropriate Unicode character. 
+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. 
+the centered $/$ is overprinted over the next character.
 
 
-\secc The `\buildrel` macro: text over relation
+\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:
@@ -840,9 +848,9 @@
 `\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.
+stretchability in the `\>` space, and more stretchability in the `\;` space.
 
-The registers \x`\thinmuskip`, \x`\medmuskip` and \x`\thickmuskip` store so called
+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`
@@ -863,8 +871,8 @@
 \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 product of variables $H$ and $e$ and
-$l^2$ and $o$ etc., followed by the symbol ! used for factorial.
+$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.
 
@@ -912,8 +920,8 @@
 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 is centered to math axis and the baseline is
-ignored. In the following example we create a new big math operator by
+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
 $$
@@ -935,10 +943,10 @@
 dots, comma are exactly equidistant.
 
 Typographic conventions say that you have to use the repeating symbol
-before and after three dots (comma in previous example) and the three dots
-should be at baseline, if the repeating symbol is at baseline. Or they should be
-at math axis, if the repeating symbol is at math axis. We have to use \x`\cdots` instead
-`\dots` in second case. Example:
+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
@@ -1027,8 +1035,8 @@
   = \qmatrix[b_1\cr b_2\cr b_3].
 $$
 
-If you need to aling the columns by another way than to center, then you can
-use phantom. Compare:
+If you need to align the columns by another way than to center, then you can
+use the phantom. Compare:
 
 \begtt
 $$
@@ -1052,8 +1060,8 @@
 $$
 
 \new\OpTeX/
-Another option to set right aligned matrix is setting the \x`\lmfil`:
-Its value is used at left side in each `\matrix` item. The right side is
+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
 $$
@@ -1082,7 +1090,7 @@
   \pmatrix{1 & 2 & 3 | 0 \cr 0 & 1 & 2 | -1/3 \cr 0 & 0 & 0 | 1 }
 $$
 
-If you want to put something before opening bracket in the matrix, you can
+If you want to put something before the opening bracket in the matrix, you can
 use another `\matrix`. Example:
 
 \begtt
@@ -1149,11 +1157,11 @@
                         0       & in other cases. }
 $$
 
-The `\cases` macro behaves like a special `\matrix` with two left aligned
+The `\cases` macro behaves like a special `\matrix` with two left-aligned
 columns and with left vertically scaled brace $\{$.
-First column is processed in math mode and $T$ style, second column
+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 a math material.
+there is math material.
 
 
 \sec Lines in display mode
@@ -1160,19 +1168,19 @@
 
 \secc General principles
 
-The \ii display/math,display/math/mode 
+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 plus `$$<formula>$$` plus text
-below is single paragraph interrupted by display <formula>. If there is no
+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 empty line above <formula> is created.
-Thus, it is definitely bad idea to open display mode in vertical mode: never
-put empty line before `$$<formula>$$`. On the other hand, the empty line
+`\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 next paragraph with
+<formula> and the next text (after the empty line) opens the next paragraph with
 indentation. Summary:
 
 \begitems
@@ -1193,7 +1201,7 @@
 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 formula at a specific place then use `\nobreak`, for example
+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.)
 
@@ -1376,7 +1384,7 @@
 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 an subscript of sum
+For example, you need to put the system of \"equations" as a subscript of a sum
 operator:
 \begtt \typosize[10/12] \adef/{}
 $$
@@ -1418,11 +1426,11 @@
 \begitems
 * `\eqlines` and `\eqstyle` set baselineskip and math style of the formulas.
 * `\eqalign` allows more than two columns:
-   First column is right aligned (no space). Second is left aligned (no space).
-   Third column (if used)
-   is centered with `\eqspace/2` at left and right boundary of the column.
-   Fourth is the same as first. Fifth is the same as second etc. The number
-   of columns which can be used in `\eqalign` is unlimited.
+   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
@@ -1447,7 +1455,7 @@
     4x - y + 5z &= -5  & \rm(C) \cr
 } $$
 
-The `\leqalignno` macro is similar as `\eqalignno` but the marks are at the left
+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.
 
@@ -1467,8 +1475,8 @@
 
 \secc[fams] Math families
 
-\TeX/ is able to use more than one math font in math mode. This was a
-necessity in old days when only 128-characters fonts existed.
+\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`
@@ -1476,7 +1484,7 @@
 
 \new Unicode
 When Unicode math font is loaded then it includes all three optical sizes and
-all characters needed for typeseting math formula.
+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.
@@ -1497,8 +1505,8 @@
 \endtt
 %
 Whenever \OpTeX/ needs to resize math fonts (for example in footnotes or
-titles), it calls the `\_normalmath` macro in order to reload all math
-families to desired size. If you want to add a next font, you can add
+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.
@@ -1512,8 +1520,8 @@
 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 collection of math fonts must be bolder.
-We need second collection of math fonts with bolder
+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/
@@ -1546,15 +1554,15 @@
 
 \secc[newfam] Example of using additional math font
 
-The font `bbold10.tfm` includes double stroked characters, for example
+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 to the question about name of the
+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 how to add this font to the collection of used math fonts.
+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 }
@@ -1585,10 +1593,10 @@
 \endtt
 %
 The \x`\Umathchardef` \TeX/ primitive declares new \TeX/ sequence used in math
-typesetting. First parameter is class number (2 means Bin, 3 means Rel,
-see the table in the section~\ref[class]).  Second parameter is 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.
-Third parameter is the slot in the font. Now you can try to use these characters:
+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.
 $$
@@ -1632,7 +1640,7 @@
    \addto \_boldmath {\_loadmathfamily 5 bbold }
 \endtt
 
-Another approach of using more Unicode math fonts in single formula is
+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}.
 

Modified: trunk/Master/texmf-dist/doc/luatex/optex/optex-techdoc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/luatex/optex/optex-techdoc.tex	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/doc/luatex/optex/optex-techdoc.tex	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,7 +1,7 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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  
+% Use: optex optex-doc
 % (three times) to create whole documentation including all references and the index.
 
 \load [doc.opm]
@@ -22,9 +22,9 @@
 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} 
+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}.
 
@@ -32,15 +32,15 @@
 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 active link which points (usually) to the main documentation point. 
-The main documentation point can be active link which points to a previous 
+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 main file when the format is generated.
+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}
@@ -62,8 +62,8 @@
 
 \verbinput (27-36) optex.ini
 %
-The basic macros for macro file syntax is defined, i.\,e.\ 
-`\_endcode`, `\_doc` and `\_cod`. 
+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
@@ -77,7 +77,7 @@
 
 \verbinput (89-92) optex.ini
 
-The `\everyjob` register is initialized and the format is saved by 
+The `\everyjob` register is initialized and the format is saved by
 the `\dump` command.
 
 \verbinput (94-102) optex.ini
@@ -85,12 +85,12 @@
 }
 
 \printdoctail prefixed.opm
-\secc The implementation of the name spaces
+\secc The implementation of the namespaces
 \printdoc prefixed.opm
 
 \sec pdf\TeX/ initialization
 \printdoctail luatex-ini.opm
-\printdoc     luatex-ini.opm 
+\printdoc     luatex-ini.opm
 
 \sec Basic macros
 We define first bundle of basic macros.
@@ -116,7 +116,7 @@
 \printdoc     keyval.opm
 
 \sec Plain \TeX/ macros
-All macros from plain \TeX/ are rewritten here. 
+All macros from plain \TeX/ are rewritten here.
 Differences are mentioned in the documentation below.
 \printdoc plain-macros.opm
 
@@ -142,7 +142,7 @@
 \printdoctail math-unicode.opm
 
 \sec[opmac-fonts] Scaling fonts in document (high-level macros)
-These macros are documented in section~\ref[sizes] from user point of view.
+These macros are documented in section~\ref[sizes] from the user point of view.
 \printdoc fonts-opmac.opm
 
 \sec[output] Output routine
@@ -191,7 +191,7 @@
 \printdoc verbatim.opm
 \secc[hisyntax] Listings with syntax highlighting
 \printdoctail hi-syntax.opm
-\printdoc     hi-syntax.opm 
+\printdoc     hi-syntax.opm
 
 \sec Graphics
 \printdoctail graphics.opm
@@ -228,8 +228,8 @@
 
 \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 
+   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
@@ -259,7 +259,7 @@
 
 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
+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.
 

Modified: trunk/Master/texmf-dist/doc/luatex/optex/optex-userdoc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/luatex/optex/optex-userdoc.tex	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/doc/luatex/optex/optex-userdoc.tex	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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.
@@ -10,7 +10,7 @@
 
 \new
 \OpTeX/ is compiled as a format for \LuaTeX/. Maybe there is a command
-`optex` in your \TeX/ distribution. Then you can write into command line
+`optex` in your \TeX/ distribution. Then you can write into the command line
 
 \begtt
 optex document
@@ -19,7 +19,7 @@
 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}. 
+\OpTeX/ at \url{http://petr.olsak.net/optex}.
 
 A minimal document should be
 
@@ -28,16 +28,16 @@
 Hello World! \bye
 \endtt
 
-The first line \~`\fontfam[LMfonts]` tells that Unicode Latin Modern 
+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 another languages (for example `Ahoj světe!`) 
+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 of the characters like `ě` are not mapped correctly in preloaded
+because the characters like `ě` are not mapped correctly in preloaded
 fonts.
 
 A somewhat larger example with common settings should be:
@@ -52,9 +52,8 @@
 \bye
 \endtt
 %
-You can look at `op-demo.tex` file for more complex, but still simple example.
+You can look at `op-demo.tex` file for a more complex, but still simple example.
 
-
 \sec Page layout
 %%%%%%%%%%%%%%%%
 
@@ -87,7 +86,7 @@
 parameter is empty (`\vsize` instead `\hsize` is used). Examples:
 
 \begtt
-\margins/1 a4 (,,,)mm   % \hsize, \vsize untouched, 
+\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
@@ -95,14 +94,14 @@
 
 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 
+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`:
+\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:b5l}{(250,176)mm}
 \sdef{_pgs:letterl}{(11,8.5)in}
 \endtt
 
@@ -117,10 +116,10 @@
 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. 
+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 formats dimensions stays unscaled. Example:
+such scaling. Only paper format's dimensions stay unscaled. Example:
 
 \begtt
 \margins/2 a5 (22,17,19,21)mm
@@ -128,16 +127,16 @@
 \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 
+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 review is done, the second line can be commented out.
+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 default page
+\secc Concept of the default page
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 \OpTeX/ uses \"output routine" for page design.
-It is very similar to Plain \TeX/ output routine.
+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
@@ -150,50 +149,49 @@
 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 \^`\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 
+\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 to top insertions (floating tables and
-figures) followed by a real text and followed by footnotes. 
-Typically, only real text is here. 
+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 background of each page (colors, picture, watermark for example).
-The macro \^`\draft` uses this register and puts big text DRAFT as watermark
+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 
+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 
+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 \%. 
+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
-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> have to be `1` if only one such command is in the box. 
-Second \^`\fnotemark` inside the same box have to have the parameter `2` etc. 
-The same number of \^`\fnotetext`s have to be written 
+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:
 
@@ -200,7 +198,7 @@
 \begtt
 Text in a paragraph\fnote{First notice}...    % a "normal" footnote
 \table{...}{...\fnotemark1...\fnotemark2...}  % two footnotes in a box
-\fnotetext{Second notice}   
+\fnotetext{Second notice}
 \fnotetext{Third notice}
 ...
 \table{...}{...\fnotemark1...}                % one footnote in a box
@@ -210,8 +208,8 @@
 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 
+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
@@ -224,7 +222,6 @@
 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
 %%%%%%%%%%
 
@@ -234,26 +231,26 @@
 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 
+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/ 
+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
-how to register your own font family is appended in such catalog.
+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: 
+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 keeps their internal setting until group ends or until another
-modifier which negates the previous feature is used. So
+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}.
 
@@ -263,9 +260,9 @@
 selected variant but reloads the font due to (maybe newly
 specified) font modifier(s).
 
-The context between variants \^`\rm` $\leftrightarrow$ \^`\it` and 
+The context between variants \^`\rm` $\leftrightarrow$ \^`\it` and
 \^`\bf` $\leftrightarrow$ \^`\bi` is kept by the \^`\em`
-macro (emphasize text).  
+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:
@@ -281,7 +278,7 @@
 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.
+declare your own variant selectors or modifiers, etc.
 
 \secc[sizes] Font sizes
 %%%%%%%%%%%%%%%%%%%%%
@@ -290,7 +287,7 @@
 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>`, 
+You can change the unit by the command \^`\ptunit=<something-else>`,
 for instance \^`\ptunit=1mm` enlarges all font sizes declared by \^`\typosize`.
 Examples:
 
@@ -301,12 +298,12 @@
 \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}`. 
+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
@@ -320,13 +317,12 @@
 \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`. 
+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 in respect to current values by default. 
-If you want to do it in respect to main values, type \^`\scalemain` immediately
+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
@@ -344,13 +340,13 @@
 \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 following variant slelector
+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; good example is Computer Modern aka Latin Modern fonts) 
-then the recommended size is selected by all mentioned commands automatically. 
+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].
@@ -362,13 +358,13 @@
 \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. 
+\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 recommended Unicode
+\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
@@ -375,8 +371,8 @@
 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$, 
+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]
@@ -396,8 +392,7 @@
 \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
-the current text font family. This is common notation for vectors and
+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.
 
@@ -410,12 +405,9 @@
 You can use \^`\mathbox{<text>}` inside math mode. It behaves as `{\hbox{<text>}}`
 (i.e. the <text> is printed in horizontal non-math mode)
 but the size of the <text> is adapted to the context of math size (text or script or
-scriptscript). Moreover, there is the macro \^`\mathstyles{<math list>}` which depends on
-the current math style. It is documented at the end of the
-section~\ref[math-macros].
+scriptscript).
 
-
-\sec Typical elements of document
+\sec Typical elements of the document
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 \secc[chap] Chapters and sections
@@ -434,36 +426,36 @@
 \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 section have only one number and subsection two.
+(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.\ are implemented in the
+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
+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 to more lines in the output. It is better to hint the
+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.
-User can put the \^`\nl` (means newline) to the breakpoints.
+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 reading of the title continues at the next line.
+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 in the output.
+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
+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
+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.
 
@@ -483,7 +475,7 @@
 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 
+or figure). You can use two orders: `<caption>\cskip <object>` or
 `<object>\cskip <caption>`.
 The \^`\cskip` creates appropriate vertical space between them. Example:
 
@@ -492,7 +484,7 @@
 \cskip
 \noindent\hfil\table{rl}{
     age   & value \crl\noalign{\smallskip}
-    0--1  & unmeasured \cr 
+    0--1  & unmeasured \cr
     1--6  & observable \cr
     6--12 & significant \cr
    12--20 & extremal \cr
@@ -508,7 +500,7 @@
 \cskip
 \noindent\hfil\table{rl}{
                 age   & value \crl\noalign{\smallskip}
-                0--1  & unmeasured \cr 
+                0--1  & unmeasured \cr
                 1--6  & observable \cr
                 6--12 & significant \cr
                12--20 & extremal \cr
@@ -517,17 +509,17 @@
                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 
+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 actual selected language (see
-section~\ref[lang] about languages). 
+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 floating object, you need to use
+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:
 
@@ -545,7 +537,7 @@
 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>}` 
+They can be used in context of \^`\numberedpar` `<letter>{<text>}`
 macro. For example:
 \begtt
 \def\theorem    {\numberedpar A{Theorem}}
@@ -558,16 +550,15 @@
 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...` 
+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 
+sections \ref[chap] and \ref[cap] can be referenced
 \new
 if optional parameter
 `[<label>]` is appended to \^`\chap`, \^`\sec`,
@@ -586,18 +577,18 @@
 \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 
+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 user have to run \TeX{} twice.
+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.\ 
+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 
+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
@@ -605,10 +596,9 @@
 <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 declaration.
+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
 %%%%%%%%%%%%%%%%%%%%%%%%%
 
@@ -617,13 +607,13 @@
 
 \begitems
 * numbers and texts generated by \^`\ref` or \^`\pgref`,
-* numbers of chapters, sections, subsections and page numbers in the table of contents,
+* 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>. Others links are internal and they are colored by
+<color-out>. Other links are internal and they are colored by
 <color-in>. Example:
 
 \begtt
@@ -653,11 +643,11 @@
 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. 
+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 \^`\hyperlinks`
+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
@@ -665,7 +655,7 @@
 `^`, `&` 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 
+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
@@ -675,9 +665,9 @@
 \ulink[http://petr.olsak.net/optex]{\OpTeX/ page}.
 
 The PDF format provides {\em outlines} which are notes placed in the special frame of
-the PDF viewer. These notes can be managed as structured and hyperlinked
+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 table of contents in the document. The
+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.
@@ -684,16 +674,16 @@
 
 \new
 If you are using a special unprotected macro in section titles then \^`\outlines` macro
-may crash. You must declare variant of the macro for outlines case which is
-expandable. Use \~`\regmacro` in such case. See the section \ref[toc] for more information
+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 next entry into PDF outlines at
-the main level~0. These entries can be placed before table of contents (created
-by \^`\outlines`) or after it. Theirs hyperlink destination is in the place
+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.
 
-\secc Lists 
+\secc Lists
 %%%%%%%%%%
 
 The list of items is surrounded by \^`\begitems` and \^`\enditems` commands.
@@ -742,7 +732,7 @@
 * Finito
 \enditems
 
-Another style can be defined by the command \^`\sdef{_item:<style>}{<text>}`.
+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.
@@ -754,15 +744,19 @@
 \endtt
 
 You can say \^`\begitems` \^`\novspaces` if you don't want vertical spaces above
-and below the list. The nested item list are without vertical spaces
-automatically. More information about design of lists of items should be 
+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 
+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
 
@@ -785,7 +779,7 @@
 \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, 
+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:
@@ -794,21 +788,21 @@
 * `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, 
+* `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 
+* `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. 
+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 
+`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 
+
+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:
 
@@ -819,9 +813,9 @@
       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.
+  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}`. 
+  \^`\crlp{1-3,5}` is equal to \^`\crlp{1,2,3,5}`.
 \enditems
 
 The \^`\tskip``<dimen>` command works like the `\noalign{\vskip<dimen>}`
@@ -828,8 +822,8 @@
 immediately after `\cr*` commands but it doesn't interrupt the vertical lines.
 
 \new
-You can use following parameters for the \^`\table` macro. Default values are listed
-too. 
+You can use the following parameters for the \^`\table` macro. Default values are listed
+too.
 
 \begtt
 \everytable={}       % code used in \vbox before table processing
@@ -841,13 +835,13 @@
 \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 
+\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 which spans to more than one column in the table then
+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>}`
@@ -857,8 +851,8 @@
 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 first
-column and the table have rules on the left side. The example of \^`\mspan` 
+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`
@@ -884,48 +878,47 @@
 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} 
+\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 
-} 
+   \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} 
+\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 
+   \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 
-The <number> parameter of \^`\vspan` must be one-digit number. 
-If you want to set more digits then use braces. 
+\hangindent=-7.5cm \hangafter=0
+The <number> parameter of \^`\vspan` must be one-digit number.
+If you want to set more digits then use braces.
 You can use non-integer values too if you feel that the
 result is better, for example \^`\vspan{2.1}{text}`.
 
-\hangindent=-7.5cm \hangafter=0 
+\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 
+can be set by the command \^`\rulewidth=<dimen>`. The default value given
 by \TeX/ is 0.4\,pt.
 
 The `c`, `l`, `r` and `p` are default \"declaration letters" but you can define
-more such letters by `\def\_tabdeclare<letter>{<left>##<right>}`. 
+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.
 
@@ -935,51 +928,50 @@
 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) 
+\^`\endtt` couple.
+The in-line verbatim have to be tagged (before and after)
 by a character which is declared by
-\^`\activettchar``<char>`. For example \code{\\activettchar`} 
-declares the character \code{`} 
-for in-line verbatim markup. 
+\^`\activettchar``<char>`. For example \code{\\activettchar`}
+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). 
+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 last line printed. Next \^`\begtt...`\^`\endtt` environment will follow
+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.
-User can change values of the `\parindent` and \^`\ttindent` independently.
+Users can change the values of the `\parindent` and \^`\ttindent` independently.
 
-The \^`\begtt` command starts internal group in which the catcodes are changed. 
+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 user can
-control fine behavior by it. For example the catcodes can be re-declared here. If
-you need to define active character in the \^`\everytt`, use \^`\adef` as in the
+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! 
+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 \~`\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. 
+categories in this parameter.
 
 There is an alternative to \^`\everytt` named \^`\everyintt` which is used for
 in-line verbatim surrounded by an \^`\activettchar` or processed by the \~`\code`
@@ -996,12 +988,12 @@
 
 \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 
+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. 
+Each occurrence of ? will be changed to ! and vice versa.
 @
 \endtt
 
@@ -1011,9 +1003,9 @@
 specially defined in \OpTeX/).
 \new
 You can use more robust command \^`\code{<text>}` in problematic
-situations, but you have to escape 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 
+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
@@ -1020,12 +1012,12 @@
 \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, second one must be escaped
+\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. 
+You can print verbatim listing from external files by the \^`\verbinput` command.
 Examples:
 
 \begtt
@@ -1034,19 +1026,19 @@
 \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 (+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 the \^`\verbinput` before
-first opening bracket. They are processed in the local group. 
+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 default). If \code{\\ttline<-1} then no line 
+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
@@ -1065,7 +1057,6 @@
 fully interpreted by \TeX/ (i.e. not verbatim).
 Section~\ref[verb] (page \pgref[commentchars]) says more about this feature.
 
-
 \sec Autogenerated lists
 %%%%%%%%%%%%%%%%%%%%%%%%
 
@@ -1073,11 +1064,11 @@
 %%%%%%%%%%%%%%%%%%%%%%
 
 The \^`\maketoc` command prints the table of contents of all \~`\chap`, \~`\sec`
-and \~`\secc` used in the document. These data are read from external `*.ref` file, so
+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). 
+contents is at the beginning of the document).
 
-Typically, we don't want to repeat the name of the section \"table of contents"
+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
@@ -1090,8 +1081,8 @@
 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 
+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).
@@ -1107,15 +1098,15 @@
           {\def\mylogo{MyLoGo}}                    % used in PDF outlines
 \endtt
 
-\secc Making the index 
+\secc Making the index
 %%%%%%%%%%%%%%%%%%%%%
 
-The index can be included into document by the \^`\makeindex` macro. No external
-program is needed, the alphabetical sorting are done inside \TeX/ at macro
+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 invisible item on the
+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:
 
@@ -1123,7 +1114,7 @@
 The \ii resistor resistor is a passive electrical component ...
 \endtt
 
-You cannot double the word if you use the \^`\iid` instead \^`\ii`:
+You cannot double the word if you use the \^`\iid` instead of \^`\ii`:
 
 \begtt
 The \iid resistor is a passive electrical component ...
@@ -1131,8 +1122,8 @@
 Now we'll deal with the \iid resistor .
 \endtt
 
-Note that the dot or comma have to be separated by space when \^`\iid` is
-used. This space (before dot or comma) is removed by the macro in 
+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:
@@ -1163,7 +1154,7 @@
 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 space/linear. You can do this by the shorthand `,@`
+linear/space in the form of space/linear. You can do this by the shorthand `,@`
 at the end of the \~`\ii` parameter. Example:
 
 \begtt
@@ -1175,17 +1166,17 @@
 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 specified type.
+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`: 
+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. Default index type is empty, which
-prints page numbers in normal font. The \TeX/book index is good example.
+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 another macros \^`\begmulti` and \^`\endmulti` for more columns: 
+provides other macros \^`\begmulti` and \^`\endmulti` for more columns:
 
 \begtt \catcode`\<=13
 \begmulti <number of columns>
@@ -1201,10 +1192,10 @@
 \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 complex index entry. Use
-\"pure equivalent" in the \~`\ii` parameter and map this equivalent to the
-real word which is printed in the index. Such mapping is done by
+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
@@ -1215,11 +1206,11 @@
 \iis relax {\code{\\relax}}
 \endtt
 %
-The \^`\iis` `<equivalent> {<text>}` creates one entry in the \"dictionary 
+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. 
+The sorting rules when \^`\makeindex` runs depends on the current language.
 See section~\ref[lang] about languages selection.
 
 \secc Bib\TeX/ing
@@ -1227,15 +1218,15 @@
 
 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: 
+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 numbers are generated
-depending on the used bib-style. For example the citations look like
+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
@@ -1247,7 +1238,7 @@
 
 You can define alternative formating of \^`\cite` command. Example:
 
-\begtt
+\begtt \catcode`\<=13
 \def\cite[#1]{(\rcite[#1])}    % \cite[<label>] creates (27)
 \def\cite[#1]{$^{\rcite[#1]}$} % \cite[<label>] creates^{27}
 \endtt
@@ -1259,20 +1250,20 @@
 \begitems
 * Manually using \~`\bib[<label>]` commands.
 * By \~`\usebib/<type> (<style>) <bib-base>` command which reads `*.bib`
-  files directly. 
+  files directly.
 \enditems
 
 \new
 Note that another two possibilities documented in OPmac (using external
-Bib\TeX/ program) isn't supported because Bib\TeX/ is old program which does not
+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  
+\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.}  
+\bib [tst] P. Olšák. {\it Typografický systém \TeX.}
            269~s. Praha: CSTUG, 1995.
 \endtt
 
@@ -1282,16 +1273,16 @@
 equal sign are mandatory. Example:
 
 \begtt
-\bib [tbn] = {Olšák, 2001} 
+\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. 
+This macro reads and uses macro package `librarian.tex` by Paul Isambert.
 The usage is:
 
-\begtt
+\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:
@@ -1308,11 +1299,10 @@
 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 mentioned bib-record should be printed in the
+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
 %%%%%%%%%%%%%
 
@@ -1319,19 +1309,19 @@
 \secc Colors
 %%%%%%%%%%%
 
-\OpTeX/ provides a small number of color selectors: 
-{\Blue `\Blue`}, 
-{\Red `\Red`}, 
+\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`}, 
+{\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 
+such selectors by setting four CMYK components
 \new
 or three RGB components. For example
 
@@ -1343,29 +1333,29 @@
 \new
 The command \^`\morecolors` reads more definitions of color selectors from
 the \LaTeX/ file `x11nam.def`.
-There is about 300 color names like 
+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 
+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 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. 
+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 good idea. You can overcome this
-problem by declaration \^`\onlyrgb` or \^`\onlycmyk`. Then only selected 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 specially if you are
-using ICC profile for your printer.} 
+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
@@ -1373,18 +1363,18 @@
 \^`\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 \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 substractive color space by default 
-(RGB colors used in \^`\colordef` argument are converted first). 
+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 \^`\colordef` if you want to mix colors 
+You can use \^`\rgbcolordef` instead of \^`\colordef` if you want to mix colors
 in the additive RGB color space.
 
 \def\coloron#1#2#3{%
@@ -1411,35 +1401,35 @@
 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. 
+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 image files can be in the PNG, JPG, JBIG2 or PDF format.
 
-The \^`\picwidth` is an equivalent register to `\picw`. Moreover there is an
+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. 
+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 
+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 
+in `img` subdirectory. Note: the directory name must end by `/` in
 the \^`\picdir` declaration.
 
 Inkscape\fnote
-{A powerfull and free wysiwyg editor for creating vector graphics.} 
+{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/ in order to print labels
+{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 
+\^`\inkinspic` `{<filename>.pdf}` command. It reads and displays
 both: PDF image and labels generated by Inkscape.
 
-If you want to create a vector graphics (diagrams, schema, geometry
+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 \"programm" such pictures then Tikz package is recommended.
+If you want to \"program" such pictures then Tikz package is recommended.
 It works in Plain \TeX/ and \OpTeX.
 
 \secc PDF transformations
@@ -1448,14 +1438,14 @@
 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. 
+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 have to be the same from \TeX{}'s point of
-view as from transformation point of view when `\pdfrestore` is processed.
-Due to this fact the `\pdfsave\rlap{<transformed text>}\pdfrestore` 
+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
@@ -1462,11 +1452,11 @@
 \^`\pdfscale` and \^`\pdfrotate`:
 
 \begtt \catcode`\<=13
-\pdfscale{<horizontal-factor>}{<vertical-factor>} 
+\pdfscale{<horizontal-factor>}{<vertical-factor>}
 \pdfrotate{<angle-in-degrees>}
-\endtt 
+\endtt
 
-These macros simply calls the properly `\pdfsetmatrix` command.
+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
@@ -1484,25 +1474,25 @@
 \endtt
 %
 \par\nobreak\bigskip\smallskip
-This gives the following result. 
+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 transfomed material,
-it treats it as with a zero dimension object. 
+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 to a box with relevant dimension. The <transfromation> parameter
-includes one or more transfromation commands `\pdfsetmatrix`, `\pdfscale`,
+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 
+The \^`\rotbox{<deg>}{<text>}` is shortcut for
 \^`\transformbox{\pdfrotate{<deg>}}{<text>}`.
 
 \secc Ovals, circles
@@ -1509,7 +1499,7 @@
 %%%%%%%%%%%%%%%%%%%%
 
 \new
-The \^`\inoval{<text>}` creates a box like this: \inoval{text}. 
+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
@@ -1524,7 +1514,7 @@
              \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 
+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.
 
@@ -1534,11 +1524,11 @@
 
 \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 \^`\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 
+\circleparams={\ratio=1 \fcolor=\Yellow \lcolor=\Red \lwidth=0.5bp
                \shadow=N \ignoremargins=N \hhkern=2pt \vvkern=2pt}
 \endtt
 
@@ -1551,8 +1541,8 @@
 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}} 
+\begtt
+\clipincircle 3cm 3.5cm 6cm 7cm {\picw=6cm \inspic{myphoto.jpg}}
 \endtt
 
 \secc Putting images and texts wherever
@@ -1559,14 +1549,14 @@
 
 \new
 The \^`\puttext` `<x> <y> {<text>}` puts the `<text>` shifted by `<x>` right and by
-`<y>` up from current point of typesetting and does not change the
-position of the current point. Assume coordinate system with origin in the
+`<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. 
+position.
 
 \new
-The \^`\putpic` `<x> <y> <width> <height> {<image>}` puts the `<image>` of given 
+The \^`\putpic` `<x> <y> <width> <height> {<image>}` puts the `<image>` 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 given.
@@ -1578,15 +1568,15 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 \OpTeX/ prepares hyphenation patterns for all languages if such patterns are
-available in your \TeX/ system. 
+available in your \TeX/ system.
 \new
 Only USenglish patterns (original from Plain \TeX/) are preloaded.
-Hyphenation patterns of all another languages are loaded on demand when you first use
-the `\<iso-code>lang` command in your document. 
+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` 
+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
@@ -1597,7 +1587,7 @@
 
 \new
 For compatibility with e-plain macros, there is the command
-\^`\uselanguage{<language>}`. The parameter <language> is long form of
+\^`\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.
 
@@ -1612,27 +1602,27 @@
 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 another 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].
+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 few language rules for sorting: Czech,
+\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>'` 
+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 
+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`). 
+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 visualy more similar to the `"` character which
+The `\"` is used for quotes visually more similar to the `"` character which
 can be primary quotes or secondary quotes depending on the language rules.
-May be you want to alternate meaning of these two types of quotes. Use
+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
@@ -1640,19 +1630,19 @@
 
 \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 document and you don't need to create your own
+preparing these types of documents and you don't need to create your own
 macros.
 
-The \^`\report` declaration is intended to create reports. It 
+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 next pages
-are numbered (from number~2). Footnotes are numbered from one in whole
-document. The macro `\author <authors><end-line>` can be used when 
-\^`\report` is declared. It prints `<authors>` in italics at center of the
+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. 
+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
@@ -1670,21 +1660,21 @@
   <empty line>
 \endtt
 
-It means that you need not to use any special mark at the end of lines: end
+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 most wide line used in it. So, you can use
-`\hfill\address...` in order to put the address box to the right side of the
-document. Or you can use `<prefixed text>\address...` to put 
-`<prefixed text>` before first line of the address.
+`\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`. 
+\^`\slides` style in the file `op-slides.pdf`.
 
-Analogical declaration macro `\book` is not prepared. Each book needs an
+Analogical declaration macro `\book` is not prepared. Each book needs
 individual typographical care. You need to create specific macros for
-design. 
+design.
 
 \secc Loading other macro packages
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1692,30 +1682,40 @@
 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 to specify a comma separated list of included files.
+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>`, first occurence
-wins. Example: 
+load `<filename>.opm` or `<filename>.tex` or `<filename>`, the first occurence
+wins. Example:
 \begtt
-\load [qrcode, tikz] 
+\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.  
+`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
+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
+* `qrcodes.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 to the design of the output and maybe he/she 
-needs a material for testing macros. There is the possibility to generate a
+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
@@ -1728,7 +1728,7 @@
 
 \new
 The control sequences for typical logos can be terminated by optional `/`
-which is ignored when printing. This makes logos more legible in source file:
+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.
@@ -1737,11 +1737,11 @@
 \secc The last page
 %%%%%%%%%%%%%%%%%%%
 
-The number of the last page (it may be different from number of pages) is
+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. 
+the last page in next \TeX/ runs.
 
-There is an example for footlines in the format \"current page / last page": 
+There is an example for footlines in the format \"current page / last page":
 
 \begtt
 \footline={\hss \fixedrm \folio/\lastpage \hss}
@@ -1750,81 +1750,160 @@
 \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
-total pages used in the document, use \^`\totalpages` macro. It expands to 
+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). 
+(in next \TeX/ runs).
 
 \secc Use \OpTeX/
 %%%%%%%%%%%%%%%%%
 
 \new
-The command \^`\useOpTeX` (or \^`\useoptex`) does nothing in \OpTeX/ but it causes 
+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 :) 
+\useOpTeX % we are using OpTeX format, no LaTeX :)
 \endtt
 
 \sec Summary
 %%%%%%%%%%%%
 
-\begtt     \typosize[9/11]\adef!{\string\endtt}\adef&{\kern.25em}
-\tit Title (terminated by end of line)
-\chap Chapter Title (terminated by end of line)
-\sec Section Title (terminated by end of line)
-\secc Subsection Title (terminated by end of line)
+\def\ttref#1'{\ea\~\ea`\csname#1\endcsname`}
 
-\maketoc         % table of contents generation
-\ii item1,item2  % insertion the items to the index
-\makeindex       % the index is generated
+\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)
 
-\label [labname]  % link target location
-\ref [labname]    % link to the chapter, section, subsection, equation
-\pgref [labname]  % link to the page of the chapter, section, ...
+~maketoc'         % table of contents generation
+~ii' item1,item2  % insertion the items to the index
+~makeindex'       % the index is generated
 
-\caption/t  % a numbered table caption
-\caption/f  % a numbered caption for the picture
-\eqmark     % a numbered equation
+~label' [labname]  % link target location
+~ref' [labname]    % link to the chapter, section, subsection, equation
+~pgref' [labname]  % link to the page of the chapter, section, ...
 
-\begitems       % start list of the items
-\enditems       % end of list of the items
-\begtt          % start verbatim text
-!          % end verbatim text
-\activettchar 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
+~caption'/t  % a numbered table caption
+~caption'/f  % a numbered caption for the picture
+~eqmark'     % a numbered equation
 
-\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}
+~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
+~activettchar' 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
 
-\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
+~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}
 
-\inspic file.ext    % insert a picture, extensions: jpg, png, pdf
-\table {rule}{data} % macro for the tables like in LaTeX
+~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
 
-\fnote {text}   % footnote (local numbering on each page)
-\mnote {text}   % note in the margin (left or right by page number)
+~inspic' file.ext    % insert a picture, extensions: jpg, png, pdf
+~table' {rule}{data} % macro for the tables like in LaTeX
 
-\hyperlinks {color-in}{color-out} % PDF links activate as clickable
-\outlines {level}   % PDF will have a table of contents in the left tab
+~fnote' {text}   % footnote (local numbering on each page)
+~mnote' {text}   % note in the margin (left or right by page number)
 
-\magscale[factor]  % resize typesetting, line/page breaking unchanged
-\margins/pg format (left, right, top, bottom)unit % margins setting
+~hyperlinks' {color-in}{color-out} % PDF links activate as clickable
+~outlines' {level}   % PDF will have a table of contents in the left tab
 
-\report \letter \slides  % style declaration macros
+~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
+\^`\ignoreit` `<one>`, \^`\ignoresecond` `<one><two>`, \^`\usesecond` `<one><two>` ignores parameters.\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
+\^`\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/
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
@@ -1831,16 +1910,16 @@
 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 basic set of old Plain
+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`. 
+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 in users document too). User
+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
@@ -1848,7 +1927,7 @@
 
 \new
 The Latin Modern 8bit fonts instead Computer Modern 7bit fonts are
-preloaded in the format, but only few ones. The full family set is ready to
+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.
 
@@ -1859,7 +1938,7 @@
 
 \new
 The text accents macros `\"`, `\'`, `\v`, `\u`, `\=`, `\^`, `\.`, `\H`,
-`\~`, \code{\\`}, `\t`   are undefined\fnote 
+`\~`, \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.
@@ -1867,14 +1946,14 @@
 command. But we don't recommend it.
 
 \new
-The default paper size is not set as letter with 1\,in margins but as A4 with
-2.5\,cm margins. You can change it, for example by 
+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 typographical area is not at top left 1\,in 1\,in coordinates
-but at top left paper corner exactly. For example, `\hoffset` includes directly left
+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/)
@@ -1882,13 +1961,12 @@
 \ulink[http://petr.olsak.net/optex/optex-tricks.html\#tabs]{\OpTeX/ trick 0021}
 if you really need such feature.
 
-The `\sec` macro is reserved to sections but original Plain \TeX/ declares this
+The `\sec` macro is reserved for sections but original Plain \TeX/ declares this
 control sequence for math secans.
 
 \enddocument
 
 
-
 \sec Dependencies
 %%%%%%%%%%%%%%%%%
 
@@ -1896,7 +1974,7 @@
 
 \begitems
 * The `\luatex` program.
-* Latin moder font metrics 
+* 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
@@ -1906,27 +1984,27 @@
 * 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), 
+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
+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. 
+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) 
+and data file `language-dat.lua` (from `hyphen-base` package)
 must be installed.
 
-When `\usebib` command is used then `librarian.tex` file 
+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 
+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 
+When `\lorem` command is used then `lipsum.ltd.tex` file
 (from the `lipsum` package) must be installed.
 

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/alloc.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/alloc.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/alloc.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl \newdimen {Allocators for registers <2020-05-12>} % loaded in format
 
@@ -31,11 +31,11 @@
 \_countdef\_famalloc=18    \_famalloc=3
 
    \_doc -----------------------------
-   The common allocation macro 
+   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:). 
+   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{%
@@ -49,7 +49,7 @@
 }
 
    \_doc -----------------------------
-   The allocation macros 
+   The allocation macros
    \`\newcount`, \`\newdimen`, \`\newskip`, \`\newmuskip`, \`\newbox`,
    \`\newtoks`, \`\newread`, \`\newwrite` and \`\newfam`
    are defined here.
@@ -72,7 +72,7 @@
    \_cod -----------------------------
 
 \_newcount\_insertalloc   \_insertalloc=255
-\_chardef\_insertmin = 201 
+\_chardef\_insertmin = 201
 
 \_def\_newinsert #1{%
    \_global\_advance\_insertalloc by-1
@@ -90,7 +90,7 @@
    have their counter allocated by the `\newcount` macro.
    \_cod -----------------------------
 
-\_newcount \_attributealloc  \_attributealloc=0 
+\_newcount \_attributealloc  \_attributealloc=0
 \_chardef\_maiattribute=\_maicount
 \_def\_newattribute #1{\_allocator #1{attribute}\_attributedef}
 
@@ -112,7 +112,7 @@
    A few registers are initialized like in plain\TeX/. We absolutely
    don't support the `@`category dance, so `\z at skip`
    `\z@`, `\p@` etc. are not defined in \OpTeX/. If you need such
-   control sequences then you can initailaize them by `\load[plain-at]`.
+   control sequences then you can initialize them by `\load[plain-at]`.
 
    Only the \`\_zo` and \`\_zoskip` (equivalents to `\z@` and `\z at skip`)
    are declared here and used in some internal macros of \OpTeX/
@@ -130,7 +130,7 @@
 
 \_endcode %---------------------------------------------------
 
-Like plain\TeX, the allocators `\newcount`, `\newwrite`, etc. are defined. 
+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/.
 
@@ -137,15 +137,15 @@
 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 
+`\muskip`, `\box`, and `\toks` directly. User can use
 `\count20` to `\count200` directly too. This is the same
-philosophy like in old plain\TeX/, but the range of directly used registers
+philosophy as in old plain\TeX/, but the range of directly used registers
 is wider.
 
-Inserts are allocated form 254 to 201 using `\newinsert`.
+Inserts are allocated from 254 to 201 using `\newinsert`.
 
 You can define your own allocation concept (for example for allocation of
-arrays) from top of registers array. The example shows a definition of
+arrays) from the top of the registers array. The example shows a definition of
 the array-like declarator of counters.
 
 \nobreak

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/basic-macros.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/basic-macros.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/basic-macros.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,10 +1,10 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
-\_codedecl \sdef {Basic macros for OpTeX <2020-02-14>} % loaded in format
+\_codedecl \sdef {Basic macros for OpTeX <2021-01-08>} % loaded in format
 
    \_doc ------------------------------
-   \`\bgroup`, \`\egroup`, \`\empty`, \`\space`, \`\null` and \`\wlog` 
-   are classical macros from plain \TeX/. 
+   \`\bgroup`, \`\egroup`, \`\empty`, \`\space`, \`\null` and \`\wlog`
+   are classical macros from plain \TeX/.
    \_cod ------------------------------
 
 \_let\_bgroup={  \_let\_egroup=}
@@ -16,11 +16,23 @@
 \_public \bgroup \egroup \empty \space \null \wlog ;
 
    \_doc ------------------------------
-   \`\bslash` is \"normal backslash" with category code 12. 
-   \`\nbb` and \`\pcent` are double backslash and normal~`%`, 
-   they should be used in lua codes, for example.
+   \`\ignoreit` ignores next token or `{<text>}`, \`\ignoresecond`
+   uses first, ignores second parameter and \`\usesecond`
+   ignores first, uses second parameter.
    \_cod ------------------------------
 
+\_long\_def \_ignoreit #1{}
+\_long\_def \_ignoresecond #1#2{#1}
+\_long\_def \_usesecond #1#2{#2}
+
+\_public \ignoreit \ignoresecond \usesecond ;
+
+   \_doc ------------------------------
+   \`\bslash` is \"normal backslash" with category code 12.
+   \`\nbb` and \`\pcent` are double backslash and normal~`%`,
+   they should be used in Lua codes, for example.
+   \_cod ------------------------------
+
 \_edef \_bslash {\_csstring\\}
 \_edef \_nbb {\_bslash\_bslash}
 \_edef \_pcent{\_csstring\%}
@@ -45,7 +57,7 @@
 
    \_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 
+   as `{<body>}`. You can declare a macro with parameters too. For example
    `\adef @#1{...$1...}`.
    \_cod ------------------------------
 
@@ -56,7 +68,7 @@
    \`\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>` 
+   \`\trycs` `{<csname>}{<text>}` expands to `\<csname>`
    if it is defined else to the `<text>`.
    \_cod ------------------------------
 
@@ -75,33 +87,35 @@
    \`\opwarning` `{<text>}` prints warning on the terminal and to the log file.
    \_cod ------------------------------
 
-\_def \_opwarning #1{\_wterm{l.\_the\_inputlineno> WARNING: #1.}}
+\_def \_opwarning #1{\_wterm{WARNING l.\_the\_inputlineno: #1.}}
 \_public \opwarning ;
 
    \_doc ------------------------------
-   \`\loggingall` and \`\tracingall` are defined similarly as in 
+   \`\loggingall` and \`\tracingall` are defined similarly as in
    plain \TeX/, but they print
-   more logging information to the log file and to the terminal. 
+   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 
+\_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 ; 
+\_public \loggingall \tracingall ;
 
    \_doc ------------------------------
-   Write a warning if the user did not to load a Unicode Font {\em or}
+   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{Rerun to get references right}\_fi
+   \_ifnum\_unresolvedrefs>0 \_opwarning{Try to rerun to get references right}\_fi
 }
 
 \_endcode % -------------------------------------
 
-
+2021-01-08: \opwarning format changed (secondly, hope that conclusively)
+2020-10-12: \opwarning: line numbers added
+2020-02-14: introduced

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/bib-iso690.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/bib-iso690.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/bib-iso690.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-% This is part of OpTeX project, see http://petr.olsak.net/optex
+% 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
 
@@ -7,11 +7,11 @@
    \_endinput \_fi
 
    \_doc -----------------------------
-   \`\_maybetod` (alias `\.` in the style file group) does not put second dot.
+   \`\_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 
+\_tmpnum=\_sfcode`\. \_advance\_tmpnum by-2 \_sfcode`\.=\_tmpnum
 \_sfcode`\?=\_tmpnum \_sfcode`\!=\_tmpnum
 \_let\.=\_maybedot  % prevents from double periods
 
@@ -22,7 +22,7 @@
 \_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}% 
+      \_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}}%
@@ -47,7 +47,7 @@
    \_bprintc\_Firstname{* }\_bprintc\_Von{* }\_upper{\_Lastname}\_bprintc\_Junior{, *}%
 }
 \_def\_commonname{%
-  \_ifnum\_NameCount=1 
+  \_ifnum\_NameCount=1
      \_firstauthorformat
      \_ifx\_dobibmark\_undefined \_edef\_dobibmark{\_Lastname}\_fi
   \_else
@@ -55,7 +55,7 @@
         \_ifx\_maybeetal\_empty \_bibconjunctionand\_else , \_fi
      \_else , \_fi
      \_otherauthorformat
-  \_fi  
+  \_fi
 }
 \_def\_authorname{%
    \_ifnum\_NameCount>0\_namecount\_relax\_else \_commonname \_fi
@@ -65,12 +65,12 @@
 
 \_def\_prepareauedoptions#1{%
    \_def\_mabyetal{}\_csname lb at abbreviatefalse\_endcsname
-   \_biboptionvalue{#1max}\_authormax  
-   \_biboptionvalue{#1min}\_authormin  
-   \_biboptionvalue{#1pre}\_authorpre  
+   \_biboptionvalue{#1max}\_authormax
+   \_biboptionvalue{#1min}\_authormin
+   \_biboptionvalue{#1pre}\_authorpre
    \_biboptionvalue{#1print}\_authorprint
    \_isbiboption{#1etal}\_iftrue \_def\_maybeetal{\_Mtext{bib.etal}}\_fi
-   \_biboptionvalue{#1trim}\_autrim 
+   \_biboptionvalue{#1trim}\_autrim
    \_let\_namecountraw=\_namecount
    \_ifx\_authormax\_empty \_else
       \_ifnum 0\_authormax<0\_namecount
@@ -77,13 +77,13 @@
          \_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   
+   \_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\upper\_undefined
    \_ifx\caps \_undefined \_def\upper{\_uppercase\_ea}\_else
                           \_def\upper#1{{\caps\_rm #1}}\_fi
 \_fi
@@ -93,7 +93,7 @@
    Preparing bib-mark (used when `\nonumcitations` is set).
    \_cod -----------------------------
 
-\_def\_setbibmark{%  
+\_def\_setbibmark{%
    \_ifx\_dobibmark\_undefined \_def\_dobibmark{}\_fi
    \_RetrieveFieldIn{bibmark}\_tmp
    \_ifx\_tmp\_empty \_RetrieveFieldIn{year}\_tmp \_edef\_tmp{\_dobibmark, \_tmp}\_fi
@@ -123,7 +123,7 @@
 \_def\_Mtext#1{\_csname _mt:#1:\_csname _lan:\_the\_documentlanguage\_endcsname\_endcsname}
 
 \_CreateField {lang}
-\_def\_setlang#1{\_ifx#1\_empty \_else 
+\_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
@@ -130,7 +130,7 @@
 }
 
    \_doc -----------------------------
-   Non-standard fieldnames.
+   Non-standard field names.
    \_cod -----------------------------
 
 \_CreateField {ednote}
@@ -203,7 +203,7 @@
    \_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 
+   \_RetrieveFieldIn{lang}\_langentry \_setlang\_langentry
 }
 \_sdef{_print:END}{%
    \_bprinta [note]       {*.}{}%
@@ -237,7 +237,7 @@
    \_bprintb [!author]   {\_doauthor1{##1}\.\ }{\_bibwarning}%
    \_bprinta [title]     {*.\ \_bprintc\_titlepost{*.\ }}{\_bibwarning}%
    \_bprintb [journal]   {{\_em##1}\_bprintc\_journalpost{\.\ *}\_bprintv[howpublished]{}{\.}\ }%
-                                                                                     {\_bibwarninga}%   
+                                                                                     {\_bibwarninga}%
    \_bprinta [howpublished]  {[*].\ }{}%
    \_bprinta [address]   {*\_bprintb[publisher]{:}{,}\ }{}%
    \_bprinta [publisher] {*, }{}%
@@ -327,15 +327,15 @@
 fields in the form `name = "value"`, or `name = {value}`. No matter which form is
 used. If the value is pure numeric then you can say simply `name = value`.
 Warning: the comma after each field value is mandatory! If it is missing then the
-next field is ignored or bad interpreted.
+next field is ignored or badly interpreted.
 
-The entry names and field names are case insensitive. If there exist a data
+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, 
+several \"non-standard" fields: ednote, numbering, isbn, issn, doi, url,
 citedate, key, bibmark. They are documented here.
 
 Moreover, there are two optional special fields:
@@ -343,10 +343,10 @@
 \begitems
 * lang     = language of the entry. The hyphenation plus autogenerated phrases and
              abbreviations will be typeset by this language.
-* option   = options by which you can control special printing of various fields.
-\enditems 
+* 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 (may be) more options
+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={...}`.
 
@@ -353,8 +353,8 @@
 
 \seccc The author field
 
-All names in the author list have to be separated by \"\code{ and }". 
-Each author can be written by various formats (the `von` part is typically missing):
+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
@@ -375,35 +375,35 @@
 or
 da Vinci, painter, Leonardo Piero
 \endtt
-The separator \"\code{ and }" between authors 
+The separator \"\code{ and }" between authors
 will be converted to comma during
-printing, but between semifinal and final author the word \"and" (or something
-different depending on current language) is printed.
+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 others author are printed in normal order: \"Firstname(s)
+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 authors are ignored and 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. 
+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 
+There is an `aumin:<number>` option which denotes the definitive number of
 printed authors if the author list is not fully printed due to `aumax`.
-If `aumin` is unused then `aumax` authors is printed in such case.
+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 
+All authors are printed if `aumax:<number>` option isn't given.
+There is no internal limit. But you can set the global options in
 your document by setting the `\biboptions` tokens list. For example:
 
 \begtt
-\biboptions={aumax:7 aumin:1}  
-% if there is 8 or more authors then only first author is printed.
+\biboptions={aumax:7 aumin:1}
+% if there are 8 or more authors then only the first author is printed.
 \entdd
 
 Examples:
@@ -433,10 +433,10 @@
 \begtt
 author = "John Green and Bob Brown and Alice Black",
 option = "auetal",
-\endtt   
+\endtt
 output:    GREEN, John, Bob BROWN, Alice BLACK~et~al.
 
-If you need to add a text before or after authors list, you can use
+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:
@@ -448,9 +448,9 @@
 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 
+are trimmed (i. e. reduced to initials) iff the number of authors in the
 author field is greater than or equal to `<number>`. There is an exception:
-`autrim:0` means that no Firstnames are trimmed. This is default behavior.
+`autrim:0` means that no Firstnames are trimmed. This is the default behavior.
 Another example: `autrim:1` means that all Firstnames are trimmed.
 
 \begtt
@@ -459,12 +459,12 @@
 \endtt
 output:    GREEN, J., B. BROWN, A. BLACK~et~al.
 
-If you need to write a team name or institution instead authors, replace all
+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 comma. Example:
+can add the secondary name (interpreted as Firstname) after the comma. Example:
 
 \begtt
-   author = "Czech\ Technical\ University\ in\ Prague, 
+   author = "Czech\ Technical\ University\ in\ Prague,
              Faculty\ of\ Electrical\ Engeneering",
 \endtt
 output:  CZECH TECHNICAL UNIVERSITY IN PRAGUE, Faculty of Electrical Engeneering.
@@ -472,10 +472,10 @@
 
 \seccc The editor field
 
-The editor field is used for list of the authors of the collection. The
+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>`, 
+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
@@ -485,7 +485,7 @@
 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 
+depending on the entry language and on the singular or plural of
 the editor(s).
 
 
@@ -499,7 +499,7 @@
 \endtt
 output:   Illustrations by Robert AGARWAL, edited by Tom NOWAK.
 
-The `\upper` command have to be used for Lastnames in ednote field.
+The `\upper` command has to be used for Lastnames in the ednote field.
 
 
 \seccc The title field
@@ -506,8 +506,8 @@
 
 This is the title of the work. It will be printed (in common entry types) by
 italics. The ISO 690 norm declares, that the title plus optional subtitle
-are in italics and they are separated by colon. Next, the optional secondary
-title have to be printed in upright font. This can be added by
+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
@@ -526,7 +526,7 @@
 
 This field is used only for second or more edition of cited work. Write
 only the number without the word "edition". The shortcut "ed." (or something
-else depending on current language) is added automatically. Examples:
+else depending on the current language) is added automatically. Examples:
 
 \begtt
 edition = "Second",
@@ -543,7 +543,7 @@
 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.  
+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:
 
@@ -553,7 +553,7 @@
 \endtt
 Output:   Second full revised edition.
 
-You can use `\EDN` macro in `editionprint` value. This macro is expanded 
+You can use `\EDN` macro in `editionprint` value. This macro is expanded
 to the edition value. Example:
 
 \begtt
@@ -568,7 +568,7 @@
 \seccc The address, publisher, year fields
 
 This is an anachronism from ancient Bib\TeX/ (unfortunately no exclusive) that
-the address field includes only the city of the publisher residence. No more
+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
@@ -579,9 +579,9 @@
 Output:   Berlin: Springer Verlag, 2012.
 
 Note, that the year needn't to be inserted into quotes because it is pure
-numeric. 
+numeric.
 
-The letter a, b etc. are appended to the year automatically, if two or more
+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.
@@ -588,7 +588,7 @@
 
 You can use "yearprint:{<value>}" option. If it is set then the <value>
 is used for printing year instead the real field value. The reason: year is
-sort sensitive, may be you need to print something else than only sorting key.
+sort sensitive, maybe you need to print something else than only sorting key.
 Example:
 
 \begtt
@@ -603,7 +603,7 @@
 \endtt
 Output:  2012,   sorted by:  2012a.
 
-The address, publisher and year are typically mandatory fields. If they are
+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.
@@ -618,8 +618,8 @@
 \endtt
 
 The ISO 690 norm recommends to add the text \"Available from" (or
-something else if different current language is used) before URL. 
-It means, that the output of previous example is:
+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}.
 
@@ -647,7 +647,7 @@
 
 \seccc The howpublished field
 
-This declares the available medium for cited document if it is not in printed
+This declares the available medium for the cited document if it is not in printed
 form. Alternatives: online, CD, DVD, etc. Example:
 
 \begtt
@@ -654,14 +654,14 @@
 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 
+\"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
+the number by No.~, and the pages by pp.~. But these prefixes depends on the
 language of the entry.
 
 Example:
@@ -675,7 +675,7 @@
 
 \begtt
 volume = 31,
-number = 3, 
+number = 3,
 pages  = "37--42",
 lang   = "cs",
 \endtt
@@ -682,7 +682,7 @@
 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 
+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:
 
@@ -694,9 +694,9 @@
 \endtt
 Output:   Issue~31/3, pages~37--42
 
-Note: The volume, numbers and pages fields are printed without numbering
+Note: The volume, numbers, and pages fields are printed without numbering
 filed only in the `@ARTICLE` entry. It means, that if you need to visible them
-in the `@INBOOK`, `@INPROCEEDINGS` etc. entries, then you must to use numbering field.
+in the `@INBOOK`, `@INPROCEEDINGS` etc. entries, then you must use the numbering field.
 
 
 \seccc Common notes about entries
@@ -703,11 +703,11 @@
 
 The order of the fields in the entry is irrelevant. We use the printed order
 in this manual. The exclamation mark (!) denotes the mandatory field. If
-such field is missing then the warning occurs during processing.
+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 occurs.
+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.
@@ -714,10 +714,10 @@
 
 \secccc The `@BOOK` entry
 
-This is used for book-like entries. 
+This is used for book-like entries.
 
-Fields: author(!), title(!), howpublished, edition, ednote, address(!), 
-publisher(!), year(!), citedate, series, isbn(!), doi, url, note. 
+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.).
@@ -724,11 +724,11 @@
 
 \secccc The `@ARTICLE` entry
 
-This is used for articles published in a journal. 
+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. 
+doi, url, note.
 
 If the numbering is used then it is used instead volume, number, pages.
 
@@ -735,7 +735,7 @@
 
 \secccc The `@INBOOK` entry
 
-This is used for the part of a book. 
+This is used for the part of a book.
 
 Fields: author(!), title(!), booktitle(!), howpublished, edition, ednote,
 address(!), publisher(!), year(!), numbering, citedate, series, isbn or
@@ -742,7 +742,7 @@
 issn, doi, url, note.
 
 The author field is used for author(s) of the part, the editor field
-includes author(s) or editor(s) of whole document. The pages field specifies
+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.).
 
@@ -750,33 +750,32 @@
 
 \secccc The `@THESIS` entry
 
-This is used for student's thesis. 
+This is used for the student's thesis.
 
-Fields: author(!), title(!), howpublished, address(!), school(!), 
-month, year(!), citedate, type(!), ednote, doi, url, note. 
+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 
+The type field must include the text \"Master's Thesis" or something
 similar (depending on the language of the outer document).
 
 There are nearly equivalent entries: `@BACHELORSTHESIS`, `@MASTERSTHESIS` and
 `@PHDTHESIS`. These entries set the type field to an appropriate value
-automatically. The type field is optional in such case. If it is used then
-it has a precedence before default setting.
+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. 
+It is intended for various usage.
 
-Fields: author, title, howpublished, ednote, citedate, doi, url, note. 
+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
+edition, volume, number, pages, address, publisher, and year field values
 respectively.
 
-The reason of this entry is to give to you the possibility to set the format of
-entry by your own decision. The most of data are concentrated in ednote
-field.
+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
 
@@ -783,14 +782,14 @@
 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 
+cannot use these entries from the old databases without warnings and without
 some additional work with the `.bib` file.
 
 \seccc The cite-marks (bibmark) used when \code{\\nonumcitations} is set
 
-When `\nonumcitations` is set then `\cite` prints text orientes 
-bib-marks instead numbers. This style file autogenerates these marks in the
-form \"Lastname of the first author, comma, space, the year" if bibmark field
+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.
 
@@ -808,15 +807,15 @@
 ISO 690 norm.
 
 If you have the same authors and the same year, you can control the sorting
-by setting years as 2013, 2013a, 2013b, etc. You can print something
+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 (ie. not
-yearprint value) is also used in the text oriented bib-marks when 
+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)" 
+of authors. If the `key` field is unset then the \"Lastname Firstname(s)"
 is used for sorting normally. Example:
 
 \begtt
@@ -824,9 +823,9 @@
 key       = "Czzmejrkova Svetla",
 \endtt
 
-This entry is now sorted between C and D. 
+This entry is now sorted between C and D.
 
-The norm recommends to place the autocitations to the top of the list of
+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`.
 
@@ -835,20 +834,20 @@
 
 There is the language of the outer document and the languages of each entry.
 The ISO 690 norm recommends that the technical notes (the prefix before URL,
-the media type, the \"and" conjunction between semifinal and final author)
-may be printed in the language of the outer document. The data of the entry
+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 on the language
+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 have to add some
+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 have to be chosen?
+But what language has to be chosen?
 
 The current value of the `\language` register at the start of the `.bib`
-processing is descided as the language of the outer document. This language
+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
+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.
 
@@ -871,12 +870,12 @@
 
 \seccc Summary of non-standard fields
 
-This style uses the following fields unkown by bib\TeX/:
+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    ... editional info (secondary authors etc.) or
+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
@@ -889,19 +888,19 @@
 
 \seccc Summary of options
 
-\begtt
+\begtt \catcode`\<=13
 aumax:<number>       ... maximum number of printed authors
-aumin:<number>       ... number of printed authors if aumax exceedes
+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)
+auprint:{<value>}     ... text instead authors list (\AU macro may be used)
 edmax, edmin, edtrim ... similar as above for editors list
-edprint:{<value>}    ... text instead editors list (\ED macro may be used)
-titlepost:{<value>}  ... text after title
-yearprint:{<value>}  ... text instead real year (\YEAR macro may be used)
-editionprint:{<value>} . text instead real edition (\EDN macro may be used)
+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
 
-Another options in the option field are silently ignored.
+Other options in the option field are silently ignored.

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/bib-simple.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/bib-simple.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/bib-simple.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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
 

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/cite-bib.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/cite-bib.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/cite-bib.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl \cite {Cite, Biblioraphy <2020-03-09>} % loaded in format
 
@@ -11,23 +11,23 @@
 \_newcount\_bibnum                       % the bibitem counter
 \_newtoks\_bibmark                       % the bibmark used if \nonumcitations
 \_newcount\_lastcitenum \_lastcitenum=0  % for \shortcitations
-\_public \bibnum \bibmark ; 
+\_public \bibnum \bibmark ;
 
    \_doc -----------------------------
-   \`\cite` `[<label>,<label>,...,<label>]` manages <labes> using `\_citeA` 
+   \`\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. 
+    <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. 
+   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 group and it is used by
-   `\_printsavedcites` in the same group. Each `\cite`/`\rcite`/`\ecite`  macro 
+   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 -----------------------------
 
@@ -58,10 +58,10 @@
    \_if^#3^\_else\_sdef{_bim:#2}{#3}\_fi\_def\_lastbibnum{#2}}
 
    \_doc -----------------------------
-   \`\_citeA` `<label>,` processes one label from list of labels given in the
+   \`\_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 to know what <labels> are used in the document in order to pick-up
+   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:
@@ -76,15 +76,15 @@
    * `<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 
+     expands to empty. The <label> is saved by `\_addcitelist` and
      `\_bib:<label>` is re-defined directly as <number>.
    * `<label>` was declared by \^`\_Xbib` and it was used previously in the
      document. Then we do nothing (only data to `\_savedcites` are saved.
    \enditems
-   The `\_citeA` macro runs repeatedly over whole list of <labels>.
+   The `\_citeA` macro runs repeatedly over the whole list of <labels>.
    \_cod -----------------------------
 
-\_def\_citeA #1#2,{\_if#1,\_else 
+\_def\_citeA #1#2,{\_if#1,\_else
    \_if *#1\_addcitelist{*}\_ea\_skiptorelax \_fi
    \_ifcsname _bib:#1#2\_endcsname \_else
       \_addcitelist{#1#2}%
@@ -97,7 +97,7 @@
       \_addto\_savedcites{?,}\_def\_sortcitesA{}\_lastcitenum=0
       \_ea\_skiptorelax \_fi
    \_def\_bibnn##1{}%
-   \_if &\_csname _bib:#1#2\_endcsname 
+   \_if &\_csname _bib:#1#2\_endcsname
       \_def\_bibnn##1##2{##1}%
       \_addcitelist{#1#2}%
       \_sxdef{_bib:#1#2}{\_csname _bib:#1#2\_endcsname}%
@@ -107,7 +107,7 @@
    \_ea\_citeA\_fi
 }
 \_def\_addcitelist#1{\_global\_addto\_citelist{\_citeI[#1]}}
-\_def\_citelist{} 
+\_def\_citelist{}
 
    \_doc -----------------------------
    The `<bib-marks>` (in numeric or text form) are saved in \^`\_savedcites`
@@ -114,16 +114,16 @@
    macro separated by commas.
    The \`\_printsavedcites` prints them by normal order or sorted if
    \`\sortcitations` is specified or condensed if \`\shordcitations` is
-   specified.\nl 
-   The `\sortcitations` appends the dummy number 300000 and we suppose that normal 
-   numbers of bib-entries are less than this constant. 
-   This constant is removed after sorting algorithm.
+   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 
+\_def\_printsavedcites{\_sortcitesA
    \_chardef\_tmpb=0 \_ea\_citeB\_savedcites,%
    \_ifnum\_tmpb>0 \_printdashcite{\_the\_tmpb}\_fi
 }
@@ -136,10 +136,10 @@
   \_else
      \_mathchardef\_tmpa=#1
      \_edef\_savedcites{\_ea}\_ea\_sortcitesC \_savedcites\_end
-     \_ea\_sortcitesB 
+     \_ea\_sortcitesB
   \_fi
 }
-\_def\_sortcitesC#1,{\_ifnum\_tmpa<#1\_edef\_tmpa{\_the\_tmpa,#1}\_ea\_sortcitesD 
+\_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}}
 
@@ -173,7 +173,7 @@
 
 \_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}
+      \_else ##1\_opwarning{\_noexpand\nonumcitations + empty bibmark. Maybe bad bib-style}\_fi}
 }
 \_def\_citelinkA{}
 
@@ -184,7 +184,7 @@
    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 
+   immediately using `\_wbib`. This is the core of creation of mapping from
    `<labels>` to `<bib-marks>`.
    \_cod -----------------------------
 
@@ -204,14 +204,14 @@
 
    \_doc -----------------------------
    The \`\_printbib` prints the bib-entry itself. You can re-define it if you
-   want different design. The `\_pritbib` starts in horizontal mode after
+   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 
+   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.
@@ -224,7 +224,7 @@
 
    \_doc -----------------------------
    The \`\usebib` command is implemented in `usebib.opm` file which is loaded
-   when the `\usebib` command is firstly used. 
+   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.
@@ -237,7 +237,7 @@
    \_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
+   warning about it. List of bib labels are comma-separated case sensitive
    list without spaces.
    \_cod ------------------------------
 
@@ -267,5 +267,5 @@
 files `bib-<style>.opm`.
 
 See end of the `bib-iso690.opm` file for large documentation about `.bib` files
-structure and about usage of `iso690` bib-style.
+structure and about the usage of `iso690` bib-style.
 

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/colors.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/colors.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/colors.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl \colordef {Colors <2020-03-18>} % loaded in format
 
@@ -7,14 +7,14 @@
    \`\localcolor` as default.
    \_cod -----------------------------
 
-\_newifi \_iflocalcolor \_localcolortrue  
-\_protected\_def \_localcolor   {\_localcolortrue}  
+\_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` 
+   The basic colors in CMYK
+   \`\Blue` \`\Red` \`\Brown` \`\Green` \`\Yellow` \`\Cyan` \`\Magenta`
    \`\Grey` \`\LightGrey` \`\White` and \`\Black`
    are declared here.
    \_cod -----------------------------
@@ -39,7 +39,7 @@
    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.   
+   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 -----------------------------
@@ -58,14 +58,14 @@
    to its conversion to RGB <pdf-primitive>. This conversion is done by
    the \^`\_cmyktorgb` macro. Moreover, `\onlyrgb` re-defines three basic RGB
    colors for RGB color space and re-declares \^`\colordef` as \^`\rgbcolordef`.
-   The \hbox{\`\onlycmyk`} macro does a similar work, it re-defines \^`\_formatrgb`
+   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\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}}%
@@ -76,18 +76,18 @@
    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. 
-   
+   end of its parameter.
+
    The current color is saved into `\_currentcolor` macro and colorstack is pushed.
    Finally, the `\_colorstackpop` is initialized by `\aftergroup` if
    `\localcolor` is declared.
 
-   You can save current color to your macro  by `\let\yourmacro=\_currentcolor` 
+   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 
+   \_iflocalcolor \_edef\_currentcolor{#1}\_colorstackpush\_currentcolor
                   \_aftergroup\_colorstackpop
    \_else         \_xdef\_currentcolor{#1}\_colorstackset\_currentcolor \_fi
 }
@@ -97,7 +97,7 @@
    \_colorstackpush\_pdfblackcolor #1\_colorstackpop}
 
    \_doc -----------------------------
-   The colorstack is initialized here and the basic macros 
+   The colorstack is initialized here and the basic macros
    \`\_colorstackpush`, \`\_colorstackpop` and \`\_colorstackset`
    are defined here.
    \_cod -----------------------------
@@ -108,8 +108,8 @@
 \_def\_colorstackset#1{\_pdfcolorstack\_colorstackcnt set{#1}}
 
    \_doc -----------------------------
-   We need to open a special color stack for footnotes, because footnotes
-   can follow on next pages and their colors are independent on colors
+   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
@@ -120,7 +120,7 @@
 \_def \_openfnotestackA {\_pdfcolorstack\_fnotestack current}
 
    \_doc -----------------------------
-   We use lua codes for RGB to CMYK or CMYK to RGB conversions and for
+   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>`.
@@ -170,13 +170,13 @@
    \_doc -----------------------------
    We have a problem with the `%.3f` directive in Lua code. It prints trailed
    zeros: (0.300 instead desired 0.3) but we want to save PDF file space. The macro
-   \`\_stripzeros` removes these trailing zeros at expand processor
+   \`\_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\_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}
 
@@ -184,15 +184,15 @@
    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. 
+   real work. It initializes the Lua variables for summation.
    It expands <data> in the group where color selectors have
    special meaning, then it adjusts the resulting string by \^`\replstring`
    and runs it. Example shows how the <data> are processed:
-   \begtt
-   input <data>: ".3\Blue + .6^\KhakiC \useK -\Black"
+   \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"  
+                  \_useK \_addcolor -1!=G 0"
    and this is processed.
    \endtt
    \`\_addcolor` `<coef.>!<mod><type>` expands to `\_addcolor:<mod><type> <coef>`
@@ -203,9 +203,9 @@
    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 
+   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. 
+   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
@@ -226,7 +226,7 @@
      \_let\_useK=\_relax
      \_edef\_tmpb{+#6}%
      \_replstring\_tmpb{+ }{+}\_replstring\_tmpb{- }{-}%
-     \_replstring\_tmpb{+}{\_addcolor}\_replstring\_tmpb{-}{\_addcolor-}% 
+     \_replstring\_tmpb{+}{\_addcolor}\_replstring\_tmpb{-}{\_addcolor-}%
      \_replstring\_tmpb{^!=}{!^}\_replstring\_tmpb{-!}{-1!}%
      \_ifx K#2\_let\_useK=\_douseK \_fi
      \_tmpb
@@ -238,7 +238,7 @@
 \_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) 
+   \_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)
@@ -264,7 +264,7 @@
 \_let\_colordef=\_cmykcolordef  % default \_colordef is \_cmykcolordef
 
    \_doc -----------------------------
-   Public versions of \`\colordef` and \`\useK` macros are declared using 
+   Public versions of \`\colordef` and \`\useK` macros are declared using
    `\_def`, because the internal versions `\_colordef` and `\_useK` are
    changed during processing.
    \_cod -----------------------------
@@ -281,21 +281,21 @@
    \begtt
    \def\vr{\vrule height10pt depth2pt width20pt}
    \def\_showcolor{\hbox{\tt\_bslash\_tmpb: \csname\_tmpb\endcsname \vr}\space\space}
-   \begmulti 4 \typosize[11/14] 
+   \begmulti 4 \typosize[11/14]
    \morecolors
    \endmulti
-   \endtt 
+   \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}% 
+   \_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 
+      \_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
@@ -303,27 +303,27 @@
 
 \_endcode % -------------------------------------
 
-The colors have different behavior than fonts. A marks (whatsits) with color
-information are stored into PDF output and \TeX/ doesn't interpret them.  
-The PDF viewer (or PDF interpreter in a printer) reads these marks 
+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 totally independent on \TeX/ group mechanism. You can declare
+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 to return back to black color
+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 back to a previous color at the end of current group, so you cannot
-write `\Black` explicitly. This is implemented using `\aftergroup` feature.
+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 previous color are processed at `\setbox` time, no in the
-box itself. You must correct it by double group: 
-\begtt 
-\setbox0=\hbox{\Red text}   % bad:  \Black is done after \setbox 
-\setbox0=\hbox{{\Red text}} % good: \Black is done after group inside the box 
+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
@@ -333,15 +333,15 @@
 or\nl \^`\setgreycolor``{<Grey>}` should be used in color selectors or user can
 specify these macros explicitly.
 
-The color mixing processed by the \^`\colordef` is done in the substractive color
+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 maximal component is
+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 
+used in `\colordef`. For example
 \begtt
 \colordef \myColor {.3\Green + .4\Blue \useK}
 \endtt
@@ -353,26 +353,26 @@
 }
 $$
 
-You can use minus instead plus in the linear combination in `\colordef`. The
+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} 
+\colordef \Color {\Brown-\Black}
 \endtt
-can be used for removing black component from the color. You can use
-the `-\Black` trick after `\useK` command in order to remove grey components
-occured during color mixing.
+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 preceeded before macro name of the
+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} 
+\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 
+If a CMYK to RGB or RGB to CMYK conversion is needed then
 the following simple formulae are used
 (ICC profiles are not supported):
 $$
@@ -380,11 +380,11 @@
    \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'. 
+   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. 
+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.
 
@@ -391,4 +391,4 @@
 \_endinput
 
 2020-04-22 \replstring\tmpb{+ }{+}, {- }{-} added in \colordef, bug fixed
-2020-03-18 introduced 
+2020-03-18 introduced

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/doc.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/doc.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/doc.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl \printdoc {Macros for documentation printing <2020-04-28>}
 
@@ -25,7 +25,7 @@
 \_let\enddocument=\_bye
 
    \_doc -----------------------------
-   Full page of listing causes underfill `\vbox` in output routine.
+   A full page of listing causes underfull `\vbox` in output routine.
    We need to add a small tolerance.
    \_cod -----------------------------
 
@@ -32,7 +32,7 @@
 \_pgbottomskip=0pt plus10pt minus2pt
 
    \_doc -----------------------------
-   The listing mode is implemented here. The \`\maxlines` 
+   The listing mode is implemented here. The \`\maxlines`
    is maximal lines of code printed in the listing mode.
    \_cod -----------------------------
 
@@ -39,13 +39,13 @@
 \_newcount \_maxlines   \_maxlines=100000
 \_public \maxlines ;
 
-\_eoldef\_cod#1{\_par \_wipeepar 
+\_eoldef\_cod#1{\_par \_wipeepar
    \_vskip\_parskip \_medskip \_ttskip
    \_begingroup
-   \_typosize[8/10] 
+   \_typosize[8/10]
    \_let\_printverbline=\_printcodeline
    \_ttline=\_inputlineno
-   \_setverb 
+   \_setverb
    \_ifnum\_ttline<0 \_let\_printverblinenum=\_relax \_else \_initverblinenum \_fi
    \_adef{ }{\ }\_adef\^^I{\t}\_parindent=\_ttindent \_parskip=0pt
    \_relax \_ttfont
@@ -100,14 +100,14 @@
 \_def\_remfirstunderscoreA#1#2\_relax#3{\_if _#1\_def#3{#2}\_fi}
 
    \_doc -----------------------------
-   The lines in the listing mode have Yellow background.
-   \_cod -----------------------------   
+   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
-   \_penalty \_ttpenalty \_kern-4pt
+   \_ifx\_printfilename\_relax \_penalty \_ttpenalty \_fi \_vskip-4pt
    \_noindent\_rlap{\Yellow \_vrule height8pt depth5pt width\_hsize}%
    \_printfilename
    \_indent \_printverblinenum #1\par}
@@ -124,16 +124,16 @@
    \_doc -----------------------------
    `\docfile` is currently documented file.\nl
    \`\printdoc` and \`\printdoctail` macros are defined here.
-   \_cod -----------------------------   
+   \_cod -----------------------------
 
 \_def\docfile{}
 \_def\_printdoc #1 {\_par \_def\docfile{#1}%
    \_everytt={\_ttshift=-15pt \_let\_printverblinenum=\_relax}%
-   \_ea\_cod \input #1 
+   \_ea\_cod \input #1
    \_everytt={\_let\_printverblinenum=\_relax}%
    \_def\docfile{}%
 }
-\_def\_printdoctail #1 {\_bgroup 
+\_def\_printdoctail #1 {\_bgroup
    \_everytt={}\_ttline=-1 \_ea\_printdoctailA \_input #1 \_egroup}
 {\_long\_gdef\_printdoctailA#1\_endcode{}}
 
@@ -142,17 +142,17 @@
    \_doc -----------------------------
    You can do `\verbinuput \vitt{<filename>} (<from>-<to>) <filename>`
    if you need analogical design like in listing mode.
-   \_cod -----------------------------   
+   \_cod -----------------------------
 
-\_def\_vitt#1{\_def\docfile{#1}\_ttline=-1 
+\_def\_vitt#1{\_def\docfile{#1}\_ttline=-1
    \_everytt={\_typosize[8/10]\_let\_printverbline=\_printcodeline \_medskip}}
 
 \_public \vitt ;
 
    \_doc -----------------------------
-   The Index entries are without the trailing backslash. We must to add it
+   The Index entries are without the trailing backslash. We must add it
    when printing Index.
-   \_cod -----------------------------   
+   \_cod -----------------------------
 
 \_addto \_ignoredcharsen {_}  % \foo, \_foo is the same in the fist pass of sorting
 \_def\_printii #1#2&{%
@@ -160,15 +160,15 @@
    \_gdef\_currii{#1#2}\_the\_everyii\_noindent
    \_hskip-\_iindent \_ignorespaces\_printiiA\bslash#1#2//}
 
-\_def\_printiipages#1&{\_let\_pgtype=\_undefined \_tmpnum=0 
+\_def\_printiipages#1&{\_let\_pgtype=\_undefined \_tmpnum=0
    {\_rm\_printpages #1,:,\_par}}
 
-\_sdef{_tocl:1}#1#2#3{\_nofirst\_bigskip 
+\_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 -----------------------------   
+   \_cod -----------------------------
 
 \_let\lt=<
 \_catcode`\<=13
@@ -184,14 +184,14 @@
 \_def\_afterload{\_catcode`\<=13 \_catcode`\`=13 }
 
    \_doc -----------------------------
-   Main documentation point and hyperlinks to/from it.
+   Main documentation points and hyperlinks to/from it.
    Main documentation point: \code{\\`\\foo`}.
    User-level documentation point: \code{\\^`\\foo}, first occurence only.
-   Next occurences are only links to main documentation point.
+   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 -----------------------------   
+   \_cod -----------------------------
 
 \_activettchar`
 
@@ -198,7 +198,7 @@
 \_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 
+   \_hbox{\_ifcsname cs:^\_tmp\_endcsname
             \_link[cs:^\_tmp]{\Red}{\_tt\_csstring\\\_tmp}\_else
             {\_tt\Red\_csstring\\\_tmp}\_fi}%
 }
@@ -219,34 +219,34 @@
 \_endcode %-------------------------------------------
 
 \noindent
-The \^`\printdoc` `<filename><space>` and \^`\printdoctail` `<filename><space>` 
-commands are defined after the file `doc.opm` is load by \^`\load`~`[doc]`. 
+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 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 
+first occurrence of the `\_encode`. The file is read
 in normal mode (like `\input <filename>`).
 
-The {\em listing mode} prints the lines as listing of a code. This mode is
+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. 
+hand, the `\_encode` must be at the left edge of the line without spaces.
 If this rule is not met then the listing mode continues.
 
 If the first line or the last line of the listing mode is empty then such
 lines are not printed. The maximal number of printed lines in the listing
-mode is \^`\maxlines`. Is is set to almost infinity (100000). You can set it
-to a more sensible value. Such setting is valid only for the first following
+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 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 
+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 a compensation of this indentation.
+is compensation for this indentation.
 
-The `\_cod` macro ignores the rest of current line and starts the listing
+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
@@ -256,17 +256,17 @@
 mode.
 
 The listing mode creates all control sequences which are listed in the
-index as active link to the main documentation point of such control sequence
-and prints them in blue. Other text is printed in black.
+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 
+The user documentation point is the first occurrence of
 \code{\\^`\\}`<sequence>`\code{`}, for example \code{\\^`\\foo`}.
 There can be more such markups, all of them are hyperlinks to the main
-documentation point. 
-And main documentation point is hyperlink to the user documentation point,
-if such point exists. Finally, the 
+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.
 

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/f-adventor.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/f-adventor.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/f-adventor.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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} {}

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/f-antt.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/f-antt.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/f-antt.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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}

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/f-baskerville.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/f-baskerville.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/f-baskerville.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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} {}

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/f-bonum.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/f-bonum.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/f-bonum.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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}

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/f-comicneue.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/f-comicneue.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/f-comicneue.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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} {}

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/f-cursor.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/f-cursor.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/f-cursor.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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} {}

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/f-dejavu.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/f-dejavu.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/f-dejavu.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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}

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/f-ebgaramond.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/f-ebgaramond.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/f-ebgaramond.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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}

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/f-garamondl.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/f-garamondl.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/f-garamondl.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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}

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/f-gfsbodoni.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/f-gfsbodoni.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/f-gfsbodoni.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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} {}

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/f-heros.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/f-heros.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/f-heros.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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}
@@ -23,13 +23,13 @@
 
 \_endcode
 
-The font family file declares the font family for selecting fonts from such
-family at arbitrary size and with various shapes. Unicode fonts (OTF)
+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 font file, you need to keep following rules.
+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:
@@ -43,35 +43,34 @@
   terminal and prevents loading such file twice. Moreover, it probes
   existence of `<font-for-testing>` in your system. If it doesn't exist, the
   file loading is skipped with a warning on the terminal.
-  The \^`\_ifexistfam` macro returns false in such case.
+  The \^`\_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
-  log file.
+* 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 does not produce any space in
-  horizontal mode. For example check: `X\caps Y`, the letters `XY` must 
-  be printed without any space. 
+* 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` in order to start the family (it is mandatory).
+* 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} 
+{\noindent \bf The \`\_fontnamegen` macro}
 (declared in the last parameter of the \^`\_famdecl`)
-must expand (at expand processor level only) to a file name of loaded font (or to its font
-name) and to optional font features appended. The Font Selection 
-System uses this macro at primitive level in the following sense:
+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
+\begtt \catcode`\<=13
 \font \<selector> {\_fontnamegen} \_sizespec
 \endtt
 %
-Note that the extended `\font` syntax 
+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.
@@ -119,7 +118,7 @@
 general form:
 
 \begtt \catcode`\<=13
-   \_fsetV <word-a>=<value-a>,<word-b>=<value-b>  ...etc. terminated by a space 
+   \_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.
@@ -128,7 +127,7 @@
 
 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 user needs the `\bf` variant at 11\,pt now then
+by these font modifiers. If a user needs the `\bf` variant at 11\,pt now then
 the
 
 \begtt
@@ -147,7 +146,7 @@
 
 Recommendation: use the \^`\_fontfeatures` macro at the end of the `\_fontnamegen`
 macro in order to the \^`\setff`, \^`\setfontcolor`, \^`\setletterspace`
-macros can work. 
+macros can work.
 
 \seccc The \code{\\moddef} macro
 
@@ -155,9 +154,9 @@
 
 \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 font
-  modifier) then it is re-defined with warning.
+* 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.
@@ -169,34 +168,34 @@
 \protected\def\<Familyselector> {%
    \_def\_currfamily {<Familyselector>}%
    \_def\_fontnamegen {...}% this is copied from 7-th parameter of \_famdecl
-   \resetmod 
+   \resetmod
    <run all family-dependent font modifiers used before Familyselector without warnings>
 \endtt
 
 {\noindent\bf The \^`\_initfontfamily`}\nl
-must be run after modifers decaration.
+must be run after modifier's decaration.
 It runs the `\<Familyselector>` and it runs `\_rm`,
-so first font from new family is loaded and it is ready to use it.
+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 name space without `_` prefix. We assume that if user re-defines them then he/she needs
-not them, so we have no problems. If user's definition done before loading
-font family file is re-defined then \OpTeX/ warns about it. See the end of
+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 uppercase letter.
+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 own font family file and use the same names for
-analogical font modifiers (like `\cond`, `\caps`, `\sans`, `\mono` etc.)\ 
+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 family is changend. For example:
+such modifiers are kept when the family is changed. For example:
 
 \begtt
 \fontfam [Termes] \fontfam[Heros]
@@ -210,9 +209,9 @@
 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 another
+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 name does not influence the private name space used by \OpTeX/.
+sure that such a name does not influence the private namespace used by \OpTeX/.
 
 \seccc Additional notes
 
@@ -220,12 +219,12 @@
 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 a documentation about
+the example of the optical sizes declaration including documentation about
 it.
 
-If you need to create font family file with non-Unicode font, you can do it.
-The `\_fontnamegen` must expand to the name of TFM file in such case. But we
+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
+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 condition is not true.
+such a condition is not true.

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/f-kerkis.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/f-kerkis.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/f-kerkis.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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} {}

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/f-kpfonts.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/f-kpfonts.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/f-kpfonts.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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}

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/f-libertine-s.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/f-libertine-s.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/f-libertine-s.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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} {}

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/f-libertine.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/f-libertine.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/f-libertine.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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}

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/f-libertinus.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/f-libertinus.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/f-libertinus.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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}

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/f-lido.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/f-lido.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/f-lido.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,7 +1,7 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_famdecl [Lido] \Lido {by StormType Foundry designed for "lidove noviny"}
-        {\caps \cond} {\rm \bf \mf \mi \it \bi} {Termes}
+        {\cond} {\rm \bf \mf \mi \it \bi} {Termes}
         {[LidoSTF]}
         {\_def\_fontnamegen {[LidoSTF\_condV\_currV]:script=latn;\_capsV\_fontfeatures}}
 

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/f-lmfonts.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/f-lmfonts.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/f-lmfonts.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,7 +1,7 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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 
+        {\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}}
@@ -62,7 +62,7 @@
 \_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} 
+\_optfontalias {lmtt.bisl} {lmtt.bi}
 
 \_LMregfont lmtp.r     LMMonoPropLt?-Regular      \_regoptT  % 10
 \_LMregfont lmtp.bx    LMMonoPropLt?-Bold         \_regoptT  % 10
@@ -99,12 +99,12 @@
 
 % 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 \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}} 
+\_def \_tryloadtt {\_fontdef\_tentt{\_LMfonts \_addto\_fontfeatures{-tlig;}\_ttset \_rm}}
 \_private \LMfonts \ttset ; % used in \_tryloadtt
 
 \_initfontfamily % new font family must be initialized
@@ -117,19 +117,19 @@
 
 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 
+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. 
+given `<internal-template>` by the \^`\_regoptsizes` macro.
 The syntax is shown for one real case:
 
-\begtt 
+\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 <* 
+    5 <5.5 6 <6.5 7 <7.5 8 <8.5 9 <9.5 10 <11.1 12 <15 17 <*
 \endtt
 
-In general: 
+In general:
 
 \begtt \catcode`\<=13
 \_regoptsizes <internal-template> <general-ouput-template> <resizing-data>
@@ -145,14 +145,14 @@
 <resizing-data> must be terminated by \code{<*} which means "less than infinity".
 
 If `\_optname` gets an argument which is not registered <internal-template>
-then it expands to `\_failedoptname` which typically ends to error message
+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`. 
+We are using a special macro `\_LMregfont` in `f-lmfonts.opm`.
 It sets the file names to
-lowercase and enables to use a shortcasts isntead real <resizing-data>.
-There are shortcats `\_regoptFS`, `\_regoptT`, etc. here. The collection of
+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.
 
@@ -179,7 +179,7 @@
 \fontalias crea-b-bolditalic    {Creative Bold subfam Oblique}
 \endtt
 
-Another example of font family with optical sizes is Antykwa Półtawskiego.
+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:
 

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/f-merriweather.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/f-merriweather.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/f-merriweather.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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} {}

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/f-pagella.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/f-pagella.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/f-pagella.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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}

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/f-poltawski.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/f-poltawski.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/f-poltawski.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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} {}

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/f-roboto.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/f-roboto.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/f-roboto.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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} 

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/f-schola.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/f-schola.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/f-schola.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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}

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/f-sourcepro.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/f-sourcepro.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/f-sourcepro.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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}

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/f-technika.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/f-technika.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/f-technika.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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} {}

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/f-termes.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/f-termes.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/f-termes.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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}

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/f-xcharter.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/f-xcharter.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/f-xcharter.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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} {}

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/fams-ini.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/fams-ini.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/fams-ini.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,8 +1,8 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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 catalogue:}
+\_famtext {Special name for printing a catalog :}
 
 \_faminfo [Catalogue] {Catalogue of all registered font families} {fonts-catalog} {}
 \_famalias [Catalog]
@@ -72,7 +72,7 @@
 
 \_famfrom {Zygfryd Gardzielewski, Janusz M. Nowacki}
 \_faminfo [Antykwa Torunska] {Traditional Polish font family} {f-antt}
-   { -,\cond,\caps, \caps\cond: {\rm\bf\it\bi} 
+   { -,\cond,\caps, \caps\cond: {\rm\bf\it\bi}
     \medium,\cond\medium, \light, \cond\light:{\rm\it} }
 \_famalias [Antt]
 
@@ -147,24 +147,24 @@
 
 \_endcode
 
-Once you have prepared a font family file with the name `f-<famname>.opm` and \TeX/ is
-able to see it in your filesystem then you can type \^`\fontfam``[<famname>]` and
+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 
+`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 previous paragraph without
+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 font catalogue when
-`\fontfam[catalog]` is printed. The list of families taken in the catalogue and
+`\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. User can create it and write to
+`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`. 
+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
@@ -189,21 +189,21 @@
      { <mod-plus-vars> }
 \endtt
 %
-The `<mod-plus-vars>` data is used only when printing catalogue. It consists with
+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 modifiers (separated by comma) is applied to each
+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. 
+declared family.
 
-The \^`\_famtext` writes a line to the terminal and to the log file when all
+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`
-in order to print `\_famfrom` info into the catalogue.
+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.

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/fnotes.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/fnotes.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/fnotes.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,25 +1,24 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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 conter which counts footnotes globally in the document.
-                  whole document, chapters, pages.\nl
-   \`\_lfnotenum` is counter which counts footnotes at each chapter from one.
-                  It is used for local page footnote counters too.\nl   
+   \`\_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 such case.\nl
-   \`\fnotenum` is a macro which expands to footnote number counted in declared part.\nl
+                   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. 
+   document from one and \`\fnotenumpages` declares footnotes numbered
+   at each page from one.
    \_cod -----------------------------
 
 \_newcount\_gfnotenum \_gfnotenum=0
 \_newcount\_lfnotenum
 
-\_newifi \_ifpgfnote  
+\_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}
@@ -32,15 +31,15 @@
    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 
+   \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.\ 
+   This code gives footnotes* and ** and*** and$^\mathbox{†}$ etc.\
    and it supposes that there are no more than 6 footnotes at one page.
 
    If you want to distinguish between footnote marks in the text and in the front of
-   footnote itself, then you can define `\_printfnotemarkA` and `\_printfnotemarkB`.
+   the footnote itself, then you can define `\_printfnotemarkA` and `\_printfnotemarkB`.
 
    The \`\fnotelinks``<colorA><colorB>` implements the hyperlinked footnotes
    (from text to footnote and backward).
@@ -50,7 +49,7 @@
 \_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 \_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}%
@@ -59,7 +58,7 @@
 \public \fnotelinks ;
 
    \_doc ----------------------------
-   Each footnote saves the \`\_Xfnote` (without parameter) to the `.ref` 
+   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.
@@ -70,7 +69,7 @@
 
    \_doc ----------------------------
    The \`\fnote` `{<text>}` macro is simple, \`\fnotemark` and \^`\fnotetext`
-   does the real work.  
+   does the real work.
    \_cod ----------------------------
 
 \_def\_fnote{\_fnotemark1\_fnotetext}
@@ -79,13 +78,13 @@
    \_doc ----------------------------
    The \`\fnotetext` calls \^`\_opfootnote` which is equivalent to plain \TeX/
    \^`\vfootnote`. It creates new data to Insert \^`\footins`. The only
-   difference is that we are able to propagate a macro parameter into Insert group
-   before the text is printed (see section \ref[output]). 
+   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` does't read the text as a
-   parameter but during normal horizontal mode. This is reason why catcode
-   changes (for example in-line verbatim) can be used here. 
+   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
@@ -106,9 +105,9 @@
    margin at even pages. The `\mnote` macro saves its position to `.ref`
    file as \`\_Xmnote` without parameter. We define `\_mn:<mnotenum>` as
    `\right` or `\left` when the `.ref` file is read.
-   The `\ifnum 0`$\le$`0#2` trick returns true if `<pageno>` has numeric type and false 
-   if it is non-numeric type (Roman numeral, for example). We prefer to use
-   `<pageno>`, but only if it has numeric type. We use `<gpageno>` in other cases.
+   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
@@ -119,8 +118,8 @@
 
    \_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. 
+   \`\_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}}}
@@ -127,10 +126,10 @@
 \_public \fixmnotes ;
 
    \_doc -----------------------------
-   The \`\_mnoteD``{<text>}` macro sets the position the marginal note.
+   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.  
+   as a box with `\vskip-\baselineskip` followed.
    \_cod -----------------------------
 
 \_def\_mnote #1#{\_ifx^#1^\_else \_mnoteC#1\_end \_fi \_mnoteD}
@@ -142,10 +141,10 @@
 \_public \mnote ;
 
    \_doc -----------------------------
-   The \`\mnoteskip` is a dimen which denotes the vertical shift of marginal
-   note from its normal position. Positive value means shift up, negative
+   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 sytax `\mnote up<dimen>{<text>}`
+   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 -----------------------------
 
@@ -160,7 +159,7 @@
 
 \_long\_def\_mnoteA #1{\_incr\_mnotenum
    \_ifx\_mnotesfixed\_undefined
-      \_ifcsname _mn:\_the\_mnotenum \_endcsname 
+      \_ifcsname _mn:\_the\_mnotenum \_endcsname
           \_edef\_mnotesfixed{\_cs{_mn:\_the\_mnotenum}}%
       \_else
           \_opwarning{unknown \_noexpand\mnote side. TeX me again}\_openref
@@ -175,7 +174,7 @@
              {\_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} 
+\_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

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/fonts-catalog.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/fonts-catalog.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/fonts-catalog.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,9 +1,9 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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  
+\_initunifonts
 \_begingroup
 
 \_istoksempty\_catalogmathsample \_iftrue \_noloadmath \_fi
@@ -24,7 +24,7 @@
 \_fi
 
 \_def\_faminfo [#1]#2#3#4{%
-   \_bgroup   
+   \_bgroup
        \_lowercase{\_edef\_famname{\_ea\_removespaces #1 {} }}%
        \_edef\_act{\_noexpand\_isinlist{,\_cataloglist,}{,\_famname,}}\_act
        \_iftrue \def\_cataloglist{}\_fi
@@ -32,11 +32,11 @@
        \_iftrue \def\_cataloglist{.}\_fi
        \_ifx\_cataloglist\_empty
        \_ifx^#4^\_else
-          \_bigskip {\_ttfixed\_string\fontfam [#1] -- (#2)\_par}          
+          \_bigskip {\_ttfixed\_string\fontfam [#1] -- (#2)\_par}
           \_input #3.opm
           \_ifexistfam \_nobreak\_medskip \_dosamples #4:{}
-              \_ifx\_mathfaminfo\_empty 
-              \_else \_istoksempty\_catalogmathsample 
+              \_ifx\_mathfaminfo\_empty
+              \_else \_istoksempty\_catalogmathsample
                   \_iftrue {\_ttfixed \$Default math font\$: \_mathfaminfo \_par}
                   \_else Default math font (\_mathfaminfo): \_the\_catalogmathsample \_par
               \_fi\_fi
@@ -50,7 +50,7 @@
    \_ea\_dosamples\_fi
 }
 \_def\_dosamplesA#1,{%
-   \_ifx^#1^\_else 
+   \_ifx^#1^\_else
       \_ifx-#1\_def\_usemodifiers{}\_else \_def\_usemodifiers{#1}\_fi
       \_ea \_dosamplesB \_printvars \_relax
       \_ea \_dosamplesA \_fi
@@ -58,8 +58,8 @@
 \_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.% 
+      {\_usemodifiers #1\_ea\_ifx\_the\_font \_nullfont
+          \_ttfixed ... This font isn't available in your system.%
       \_else \_the\_catalogsample \_fi }\_par
       \_ea \_dosamplesB \_fi
 }
@@ -87,7 +87,7 @@
 
 \parindent=0pt
 
-\nonum\sec Customization of the catalogue
+\nonum\sec Customization of the catalog
 
 
 You can redeclare the printed sample of each font by:
@@ -110,7 +110,7 @@
 only the family of default math font is listed.
 
 \bigskip
-You can restrict the families to be printed in catalogue by:
+You can restrict the families to be printed in the catalog by:
 
 \begtt
 \catalogonly={Termes, Latin Modern, Heros}
@@ -128,10 +128,9 @@
 \bigskip The font families printed in the catalogue must be declared by the
 \code{\\_faminfo} command in the file \code{fams-ini.opm} (declarations used
 as default for \OpTeX/) or in the file \code{fams-local.opm}. The second file
-does not exist by default but user can create it. The syntax rules are
+does not exist by default but users can create it. The syntax rules are
 described in the \code{fams-ini.opm} file.
 
 
 \_endcode % -------------------------------------
 
- 
\ No newline at end of file

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/fonts-opmac.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/fonts-opmac.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/fonts-opmac.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl \typosize {Font managing macros from OPmac <2020-12-12>} % loaded in format
 
@@ -9,7 +9,7 @@
    \^`\_sizemsscript`. It uses common concept font thes sizes: 100\,\%,
    70\,\% and 50\,\%.
    The \^`\_setmainvalues` sets the parameters as main values when
-   the `\_typosize` is called first. 
+   the `\_typosize` is called first.
    \_cod -----------------------------
 
 \_protected\_def \_typosize [#1/#2]{%
@@ -30,7 +30,7 @@
 \_public \typosize ;
 
    \_doc -----------------------------
-   \`\typoscale` `[<font-factor>/<baseline-factor>]` scales 
+   \`\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 -----------------------------
@@ -42,7 +42,7 @@
    \_ifx$#2$\_edef\_tmp{\_tmp]}\_else
       \_settmpdim{#2}\_baselineskip
       \_edef\_tmp{\_tmp \_ea\_ignorept\_the\_tmpdim]}\_fi
-   \_ea\_typosize\_tmp 
+   \_ea\_typosize\_tmp
 }
 \_def\_settmpdim#1#2{%
    \_tmpdim=#1pt \_divide\_tmpdim by1000
@@ -51,7 +51,7 @@
 \_public \typoscale ;
 
    \_doc -----------------------------
-   \`\_setbaselineskip` `{<baselineskip>}` sets new `\baselineskip` and 
+   \`\_setbaselineskip` `{<baselineskip>}` sets new `\baselineskip` and
    more values of registers which are dependent on the `<baselineskip>`
    including the \^`\strutbox`.
    \_cod -----------------------------
@@ -58,7 +58,7 @@
 
 \_def \_setbaselineskip #1{\_if$#1$\_else
    \_tmpdim=#1\_ptunit
-   \_baselineskip=\_tmpdim \_relax 
+   \_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
@@ -70,12 +70,12 @@
 }
 
    \_doc -----------------------------
-   \`\_setmainvalues` sets the current font size and `\baselineskip` 
+   \`\_setmainvalues` sets the current font size and `\baselineskip`
    values to the \`\mainfosize` and \hbox{\`\mainbaselineskip`} registers.
-   It redefines itself in order to set the main values only first.
+   It redefines itself to set the main values only first.
    \nl
    \`\scalemain` returns to these values if they were set. Else they are set
-   to 10/12\,pt. 
+   to 10/12\,pt.
    \_cod -----------------------------
 
 \_newskip   \_mainbaselineskip   \_mainbaselineskip=0pt \_relax
@@ -94,7 +94,7 @@
 \_def\_scalemain {%
    \_ifdim \_mainfosize=\_zo
        \_mainfosize=10pt  \_mainbaselineskip=12pt
-       \_let \_setmainvalues=\_setmainvaluesL       
+       \_let \_setmainvalues=\_setmainvaluesL
     \_fi
    \_optsize=\_mainfosize  \_baselineskip=\_mainbaselineskip
 }
@@ -101,12 +101,12 @@
 \_public \scalemain \mainfosize \mainbaselineskip ;
 
    \_doc -----------------------------
-   \`\thefontsize` `[<size>]` and \`\thefontscale` `[<factor>]` 
+   \`\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 
+\_protected\_def\_thefontsize[#1]{\_if$#1$\_else
      \_tmpdim=#1\_ptunit
      \_newcurrfontsize{at\_tmpdim}%
   \_fi
@@ -122,10 +122,10 @@
 \_public \thefontsize \thefontscale ;
 
    \_doc -----------------------------
-   \`\em` keeps the weight of the current vaiant and switches 
+   \`\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. 
+   add italic correction if the next character is dot or comma.
    \_cod -----------------------------
 
 \_protected\_def\_em {%
@@ -145,7 +145,7 @@
    \_cod -----------------------------
 
 \_protected\_def \_boldify {%
-   \_let \_setmainvalues=\_setmainvaluesL   
+   \_let \_setmainvalues=\_setmainvaluesL
    \_let\it =\_bi \_let\rm =\_bf \_let\_normalmath=\_boldmath \_bf
 }
 \_public \em \boldify ;
@@ -153,9 +153,9 @@
    \_doc -----------------------------
    We need to use a font selector for default pagination. Because we don't
    know what default font size will be selected by the user, we use this
-   \`\_rmfixed` macro. It sets the `\rm` font from default font size
+   \`\_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 next pages.   
+   the font switch for the next pages.
    \_cod -----------------------------
 
 \_def \_rmfixed {% used in default \footline
@@ -162,7 +162,7 @@
    {\_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 
+   \_rmfixed
 }
 \_let \rmfixed = \_tenrm % user can redefine it
 

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/fonts-preload.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/fonts-preload.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/fonts-preload.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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
 
@@ -11,22 +11,23 @@
 \_font\_tentt=ec-lmtt10  % typewriter
 \_tenrm
 
-\_public \tenrm \tenbf \tenit \tenbi \tentt ; 
+\_public \tenrm \tenbf \tenit \tenbi \tentt ;
 
 \_endcode %---------------------------------------------------
 
-Format in lua\TeX/ can download only non-Unicode fonts. Latin Modern EC is
+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
-few 8bit fonts here especially for simple testing the format. 
-But, if the user needs to do a more serious work, he/she can 
-use `\fontfam` macro in order to load a selected font family of Unicode fonts.
+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 format then basic
-font set can be loaded by `\everyjob`. But why to load a set of fonts ta the
-beginning of every job when there is highly likely that the user will
+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 and user will load the font at beginning of the document.
+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

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/fonts-resize.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/fonts-resize.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/fonts-resize.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,13 +1,13 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
-\_codedecl \setfontsize {Font resizing macros <2020-04-17>} % preloaded in format 
+\_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>`. 
+   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. 
+   the `\_sizespec` macro is re-calculated to the `at<dimen>` format using
+   previous `\_optsize` value.
    \par \goodbreak
    \_cod -----------------------------
 
@@ -26,7 +26,7 @@
 \_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 
+   \_optsize=#1\_optsize
    \_lastmagsize=\_optsize
    \_edef\_sizespec{at\_the\_optsize}%
 }
@@ -33,10 +33,10 @@
 \_public \setfontsize \defaultoptsize ;
 
    \_doc -----------------------------
-   \`\_resizefont` `{<variant-name>}\<font switch>`, 
+   \`\_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 
+   The \`\_doresizefont``\fontswitch` is used. It works in
    TFM mode (\`\_doresizetfmfont`) or OTF mode (\^`\_doresizeunifont`).
    In both modes, it does
    \begtt \catcode`\<=13
@@ -44,9 +44,9 @@
    \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 
+   The `<fontname>` is generated differently in OTF mode, see
    \^`\_doresizeunifont` macro.\nl
-   The \`\_whatresize` is defined as `<variant-name>`.    
+   The \`\_whatresize` is defined as `<variant-name>`.
    \_cod -----------------------------
 
 \_def\_resizefont#1#2{%
@@ -57,14 +57,14 @@
     \_slet{_tryload#1}{_relax}%
 }
 \_def\_doresizetfmfont#1{\_logfont{#1}%
-   \_ea\_font\_ea#1\_ea\_rfontskipat 
+   \_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\_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\_rfskipatX #1" #2\_relax{"\_whichtfm{#1}"}
 \_def\_rfskipatN #1 #2\_relax{\_whichtfm{#1}}
 
    \_doc -----------------------------
@@ -73,13 +73,13 @@
    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. 
+   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> 
+   \font <font switch A> = <fontname> <sizespec>
    \endtt
-   The `<fontname>` is extracted using the primitive command `\_fontname <font switch B>`.  
+   The `<fontname>` is extracted using the primitive command `\_fontname <font switch B>`.
    \_cod -----------------------------
 
 \_def \_fontdef #1#2{\_begingroup
@@ -114,7 +114,7 @@
 }
 \_protected\_def \_resizethefont{\_newcurrfontsize\_sizespec}
 
- \_public \newcurrfontsize \resizethefont ; 
+ \_public \newcurrfontsize \resizethefont ;
 
    \_doc -----------------------------
    The variant selector is defined by `\protected\def\XX{\_tryloadXX \_tenXX}`
@@ -138,8 +138,8 @@
     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 ----------------------------   
+    sequence. Then `\currvar` expands to `\_rm` or `\_it` etc.
+    \_cod ----------------------------
 
 \_protected \_def \_currvar{\_cs{_currvar:\_ea \_csstring \_the\_font}}
 \_sdef{_currvar:_tenrm}{\_rm}
@@ -150,7 +150,7 @@
 \_public \currvar ;
 
    \_doc -----------------------------
-   The \`\_regtfm` `<font id> <optical size data>` 
+   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.
@@ -157,18 +157,18 @@
    \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 
+   \^`\_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) 
+   corrected `<fontname>` (depending on the optical data does not exist or exist)
    is the output of the expansion before `\font` primitive takes this output
    as its parameter.
 
    The implementation detail: The `\_<font id>:reg` is defined as the
    `<optical size data>` and all control sequences `\_<fontname>:reg`
-   from this data line has the same meaning because of the 
+   from this data line have the same meaning because of the
    \`\_reversetfm` macro. The `\_whichtfm` expands this data line and apply
-   \`\_dowhichtfm`. This macro select the right result from the data line
+   \`\_dowhichtfm`. This macro selects the right result from the data line
    by testing with the current `\_optsize` value.
    \_cod -----------------------------
 
@@ -175,7 +175,7 @@
 \_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 
+\_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
@@ -200,7 +200,7 @@
 
 \_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 
+\_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 *
@@ -215,7 +215,7 @@
 
 \secc The `\setfontsize` macro
 
-The \^`\setfontsize` `{<size spec>}` 
+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:
@@ -226,7 +226,7 @@
   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. 
+  \^`\setfontsize` command.
 \enditems
 The initialization value in \OpTeX/ is given by `\setfontsize{at10pt}`.
 
@@ -234,9 +234,9 @@
 \^`\setfontsize`. For example
 
 \begtt
-                     Here is 10 pt text, 
-\setfontsize{at12pt} 10 pt text here unchanged...
-\resizethefont       and 12 pt text is here.
+                     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
@@ -262,15 +262,15 @@
 \font\tencomfortaa=Comfortaa-Regular-T1 at10pt
 \def\comfortaa{\tencomfortaa\resizethefont}
 
-\comfortaa Here is 10 pt text
+\comfortaa The 10 pt text is here
 \setfontsize{at12pt}
-\comfortaa Here is 12 pt text
+\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 to initialize
+If you didn't use this command, you must initialize
 these features by the \^`\initunifonts` command explicitly, for example:
 
 \begtt
@@ -278,9 +278,9 @@
 \font\tencyklop=[cyklop-regular] at10pt % the font cyklop-regular.otf is loaded
 \def\cyklop{\tencyklop\resizethefont}
 
-\cyklop Here is 10 pt text
+\cyklop The 10 pt text is here
 \setfontsize{at12pt}
-\cyklop Here is 12 pt text
+\cyklop The 12 pt text is here
 \endtt
 
 \secc[fontdef] The \code{\\fontdef} declarator
@@ -297,8 +297,8 @@
 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 
-fixed font switch when it is used but it can depend on the current font
+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
@@ -307,9 +307,9 @@
 
 \secc[fontlet] The \code{\\fontlet} declarator
 
-We have another command for scaling: \^`\fontlet` which is able to resize
+We have another command for scaling: \^`\fontlet` which can resize
 arbitrary font given by its font switch.
-This font switch was declared it by the
+This font switch was declared by the
 `\font` primitive or the \~`\fontdef` macro.
 
 \begtt \catcode`\<=13
@@ -318,7 +318,7 @@
   \fontlet \bigfont = \_tenbf at15pt
 \endtt
 
-The resulted `\bigfont` is the same as in previous example where \~`\fontdef`
+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.
@@ -343,7 +343,7 @@
 
 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) 
+\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

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/fonts-select.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/fonts-select.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/fonts-select.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl \fontfam {Fonts selection system <2020-12-12>} % preloaded in format
 
@@ -24,9 +24,9 @@
       luaotfload.main()
       print = print_bak % "print hack" until luaotfload will be corrected
    }%
-   \_gdef\_rfskipatX ##1" ##2\_relax{"##1"}% 
+   \_gdef\_rfskipatX ##1" ##2\_relax{"##1"}%
    \_global\_let \_doresizefont=\_doresizeunifont
-   \_gdef\_tryloadtt {\_fontdef\_tentt{\_def\_fontnamegen{[lmmono10-regular]}\_rm}}% 
+   \_gdef\_tryloadtt {\_fontdef\_tentt{\_def\_fontnamegen{[lmmono10-regular]}\_rm}}%
    \_global\_let \_initunifonts=\_relax % we need not to do this work twice
    \_global\_let \initunifonts=\_relax
 }
@@ -35,12 +35,12 @@
        \_font#1={\_fontnamegen} \_sizespec \_relax \_setwsp#1\_relax
    \_fi
 }
-\_public \initunifonts ; 
+\_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 
+   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
@@ -49,7 +49,7 @@
    `<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 catalogue.
+   The \`\_mathfaminfo` is saved for usage in the catalog.
    \_cod -----------------------------
 
 \_def\_famdecl [#1]#2#3#4#5#6#7#8{%
@@ -63,7 +63,7 @@
             \_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 
+      \_fi
    \_else \_csname _f:\_csstring#2:main.fam\_endcsname \_reloading \_rm \_ea \_endinput \_fi
 }
 \_def\_initfontfamily{%
@@ -74,11 +74,11 @@
    \`\_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>` 
+   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>`. 
+   \`\_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* }}
@@ -108,7 +108,7 @@
    \`\_fsetV` `<key>=<value>,...,<key>=<value>` expands to
    `\def\_<key>V{<value>}` in the loop.
    \nl
-   \`\_onlyif` `<key>=<value-a>,<value-b>...,<value-z>: {<what>}` 
+   \`\_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
@@ -144,13 +144,13 @@
    performed and the `\<modifier>` is defined as
    \`\_famdepend``\<modifier>{_f:\_currfamily:<modifier>}`. It expands to
    `\_f:\_currfamily:<modifier>` value if it is defined or it prints
-   warning. When the `\_currfamily` value is
-   changed then we can declare the same `\<modifier>` with different meaning.
+   the warning. When the `\_currfamily` value is
+   changed then we can declare the same `\<modifier>` with a different meaning.
 
-   When user declare a prefixed variant of the `\<modifier>` then unprefixed
-   modifier name is used in internal macros, this is reason why we are using
+   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` 
+   `_<something>` or to `<something>`. The `\_remifirstunderscore`
    redefines `\_tmp` in the way that it
    expands only to `<something>` without the first `_`.
 
@@ -159,10 +159,10 @@
    selector or font modifier.
 
    \`\_addtomodlist` `<font modifier>` adds given modifier to \`\_modlist`
-   macro. This list is used after `\resetmod` when new family is selected by
+   macro. This list is used after `\resetmod` when a new family is selected by
    a family selector, see \`\_resetfam` macro.
-   This allows to reinitialize the same current modifiers in the font context
-   after family is changed.
+   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}%
@@ -194,9 +194,9 @@
 \_public \moddef ;
 
    \_doc -----------------------------
-   The \`\famvardef` `\<XX> {<data>}` 
+   The \`\famvardef` `\<XX> {<data>}`
    uses analogical trick like \^`\moddef` with
-   the \^`\_famdepend` macro. The auxiliary 
+   the \^`\_famdepend` macro. The auxiliary
    \`\_famvardefA` `\<XX> \_ten<XX> \_tryload<XX> {<data>}` is used.
    It does:
    \begitems
@@ -216,7 +216,7 @@
 }
 \_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: 
+      \_opwarning{\_string\famvardef:
          You cannot re-declare standard variant selector \_string#1}%
    \_else
       \_def#3{\_fontdef#2{#4}}%
@@ -239,7 +239,7 @@
    * Print the list of declared families.
    \enditems
    The `fams-local.opm` is read by the \`\_tryloadfamslocal` macro. It sets
-   itself to `\_relax` because we need not to load this file twice.
+   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 -----------------------------
@@ -281,8 +281,8 @@
    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 infrormation is used and printed.\nl
+   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>}`
@@ -305,9 +305,9 @@
    \_def\_famfile{#3}%
 }
 \_def\_famalias [#1]{%
-   \_lowercase{\_edef\_famname{\_ea\_removespaces #1 {} }}%
-   \_sdef{_famf:\_famname\_ea}\_ea{\_famfile}%
-}   
+   \_lowercase{\_edef\_tmpa{\_ea\_removespaces #1 {} }}%
+   \_sdef{_famf:\_tmpa\_ea}\_ea{\_famfile}%
+}
 \_newtoks\_famfrom
 \_input fams-ini.opm
 \_let\_famfile=\_undefined
@@ -315,18 +315,18 @@
 
    \_doc -----------------------------
    When the \^`\fontfam``[catalog]` is used then the file
-   `fonts-tatalog.opm` is read. The macro \^`\_faminfo` is redefined here
+   `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 
+   The default parameters
    \`\catalogsample`, \`\catalogmathsample`, \`\catalogonly` and
    \`\catalogexclude` of the catalog are declared here.
    \_cod -----------------------------
 
 \_newtoks \_catalogsample
-\_newtoks \_catalogmathsample 
-\_newtoks \_catalogonly 
+\_newtoks \_catalogmathsample
+\_newtoks \_catalogonly
 \_newtoks \_catalogexclude
 \_catalogsample={ABCDabcd Qsty fi fl áéíóúüů řžč ÁÉÍÓÚ ŘŽČ 0123456789}
 
@@ -333,9 +333,9 @@
 \_public \catalogonly \catalogexclude \catalogsample \catalogmathsample ;
 
    \_doc -----------------------------
-   The font features are managed in the \`\_fontfeatures` macro. 
+   The font features are managed in the \`\_fontfeatures` macro.
    They have their implicit values saved in the \`\_defaultfontfeatures`
-   and the \`\setff` `{<features>}` 
+   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 -----------------------------
@@ -350,7 +350,7 @@
 \_def\_removefeature #1{%
     \_isinlist\_fontfeatures{#1}\_iftrue
         \_def\_tmp ##1#1##2;##3\_relax{\_def\_fontfeatures{##1##3}}%
-        \_ea \_tmp \_fontfeatures \_relax 
+        \_ea \_tmp \_fontfeatures \_relax
     \_fi
 }
 \_public \setff ;
@@ -362,7 +362,7 @@
    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). 
+   `\fontdimen` registers).
    \_cod -----------------------------
 
 \_def\_savedfontcolor{}
@@ -379,7 +379,7 @@
     \_reloading
 }
 \_def \_setwordspace #1{%
-   \_if^#1^\_def\_setwsp##1{}\_removefeature{+Ws}% 
+   \_if^#1^\_def\_setwsp##1{}\_removefeature{+Ws}%
    \_else \_def\_setwsp{\_setwspA{#1}}\_setff{+Ws}\_fi
    \_reloading
 }
@@ -401,7 +401,7 @@
 \sec[fontsystem] The Font Selection System
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-The basic principles of the Font Selection System used in \OpTeX/ 
+The basic principles of the Font Selection System used in \OpTeX/
 was documented in the section~\ref[fontfam].
 
 \secc Terminology
@@ -408,12 +408,12 @@
 
 We distinguish between
 \begitems
-* {\em font switchers}, they are declared by the `\font` primitive or by 
+* {\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 given variant and on the {\em font context}
+  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.
@@ -421,20 +421,20 @@
   \"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`), 
+* {\em family selectors} (for example `\Termes`, `\LMfonts`),
   they are declared typically in the {\em font family files}.
-  They enable to swithch between font families, they do appropriate
+  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
-leaved then selected font and the {\em font context} are returned back to the values
+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 which will affect the
-selection of real font when variant selector is processed. It includes the
-value of {\em current family}, current font size and
+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
@@ -442,14 +442,14 @@
 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 user can give more
+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 \^`\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.
@@ -456,14 +456,14 @@
 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 font family is load. Or you can print
+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 arbitrary combined (in arbitrary order) and if the font family disposes
-with all such sub-variants then the desired font is selected (after variant
-selector is used). On the other hand there are font modifiers which negates
-the previous font modifier, for example `\cond`, `\extend`. You can reset
+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
@@ -480,10 +480,10 @@
 The Termes roman is here.
 \endtt
 
-There is one special command \^`\currvar` which acts as variant selector. 
-It keeps the current variant and the font of such variant is 
-reloaded with respect to the current font context by previously given family
-selector and font modifiers. 
+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
@@ -490,15 +490,15 @@
 context. See section~\ref[setfontsize]. Example:
 
 \begtt
-\rm default size \setfontsize{at14pt}\rm here is 14pt size \it italic is 
+\rm default size \setfontsize{at14pt}\rm here is 14pt size \it italic is
 in 14pt size too \bf bold too.
 \endtt
 
-Much more comfortable way to resize fonts is using OPmac-like commands
+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. 
+See section~\ref[opmac-fonts] for more information.
 
 
 \secc Math Fonts
@@ -508,7 +508,7 @@
 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. 
+font family.
 
 If you want to use your specially selected Unicode-math font then use
 \^`\loadmath` `{[<font_file>]}` or \^`\loadmath` `{<font_name>}` before first
@@ -526,10 +526,10 @@
   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 given font independently
-  of current font context. They can be used
-  in `\output` routine (for example) becuase we need to set fixed fonts
-  in hedares and footers.
+  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].
@@ -542,15 +542,15 @@
     \~`\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 typicaly declared in font family files, see
+    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 family-dependent font
+  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 arbitrary by `\def` primitive by user.
+* Font macros can be defined arbitrarily by `\def` primitive by users.
   See an example in section~\ref[fontmacros].
 \enditems
 
@@ -567,10 +567,10 @@
 where `\<family selector>` and `<font modifiers>` are optional and
 `\<variant selector>` is mandatory.
 
-The \^`\fontdef` does following steps.
-It pushes current font context to a stack, it do modifications of the font
+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
-find the real font by `\<variant selector>`. This font is not selected but
+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.
@@ -592,8 +592,8 @@
 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 normal text then it does
-following steps: pushes current font context to a stack, modifies font
+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.
@@ -601,10 +601,10 @@
 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 warning is
-printed on the terminal \"<var selector> is undeclared in current family"
+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 new family. Then the same command
+\^`\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
@@ -622,8 +622,8 @@
 the `\<family selector>`.
 
 When you are mixing fonts from more families then you probably run
-into problem with incompatible ex-heights. This problem can be solved using
-\^`\setfontsize` and \^`\famvardef` macros: 
+into a problem with incompatible ex-heights. This problem can be solved using
+\^`\setfontsize` and \^`\famvardef` macros:
 \begtt
 \fontfam[Heros]  \fontfam[Termes]
 
@@ -638,7 +638,7 @@
 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 name space can be here. For example: if `\mf` is defined by user and then
+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:
@@ -654,8 +654,8 @@
 
 \secc[tt] The `\tt` variant selector
 
-\^`\tt` is additional special variant selector which is defined as \"select typewriter
-font independently of current font family". By default, the typewriter font-face
+\^`\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
@@ -673,10 +673,10 @@
 Test in URL \url{http://something.org}.
 \endtt
 %
-You can see that `\tt` stay family independent. This is special feature only
+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}` in order to supress the
-liguatures in typewriter fonts.
+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
@@ -687,10 +687,10 @@
 \secc[fontmacros] Font commands defined by `\def`
 
 Such font commands can be used as fonts selectors for titles, footnotes,
-ctitations etc. User can define them.
+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 bold variant. When the user puts
+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:
@@ -711,7 +711,7 @@
 %----------------------------
 
 Each OTF font provides \"font features". You can list these font features
-by `otfinfo -f font.otf`. For example LinLibertine fonts provide `frac` font
+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.
 
@@ -728,11 +728,11 @@
 Compare 1/2 or 1/10 \fraclig to 1/2 or 1/10.
 \endtt
 
-If the used font does not supports given font feature then font is realoaded
+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 to
+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}`.
 
 
@@ -739,7 +739,7 @@
 \secc[specff] Special font modifiers
 %---------------------------
 
-Despite the font modifiers declared in the font family file (and dependent on 
+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):
 
@@ -755,26 +755,26 @@
 The \^`\setff` command was described in previous subsection.
 
 \^`\setfontcolor` `{<color>}` specifies the color and the opacity of the text.
-The <color> parameter should be in hexadecimal format of four bytes
+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 backslash) 
-instead of the hexadecimal specification. 
+`yellow`, `cyan`, `magenta`, `white`, `grey`, `lgrey` (without the backslash)
+instead of the hexadecimal specification.
 The empty parameter `<color>` means default black color.
 
-That colors of fonts are implemented using \LuaTeX/ internal font feature. This
+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 letter spacing of the font. The
-`<number>` is decimal number without unit. The unit is supposed as 1/100 of
+\^`\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 default.
+empty parameter `<number>` means no letter spacing which is the default.
 
-\^`\setwordspace` `{<scaling>}` scales the default inter word space (defined in the
+\^`\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 inter word space by 2.5.
+factor. For example `\setwordspace{2.5}` multiplies interword space by 2.5.
 
-If you need another font transformations, you can use `\setff` 
+If you need another font transformations, you can use `\setff`
 with following font features provided by Lua\TeX/:
 
 \begtt
@@ -782,16 +782,17 @@
 \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 default
-setting in every font, of course. If you really needs to set a different
-letter spacing then it is strongly recommended to add `\setff{-liga}` in
-order to disable ligatures. And setting a positive letter spacing probably
-needs to scale inter word spacing too.
+\^`\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 (with the exception of `\setfontsize`) work only
+All mentioned font modifiers (except for `\setfontsize`) work only
 with Unicode fonts loaded by \^`\fontfam`.
 
 \secc[fontfamfiles] How to create the font family file
@@ -809,22 +810,22 @@
 \secc[exfont] Notices about extension of `\font` primitive
 %---------------------------------------------------------
 
-Unicode fonts are dealed by extended `\font` primitive. This extension is
+Unicode fonts are loaded by extended `\font` primitive. This extension is
 not activated in \OpTeX/ by default, \^`\initunifonts` macro activates it.
-You need not to use \^`\initunifonts` explicitly if \^`\fontfam` macro is
+You need not use \^`\initunifonts` explicitly if \^`\fontfam` macro is
 used because \^`\fontfam` runs it internally.
 
-The \^`\initunifonts` loads the lua code from Luaotfload package which
-actually implements the `\font` primitive extension. See its
+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 of build-in font renderer
+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 fontfeatures field when `\font` is used. Moreover, when
+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
@@ -831,7 +832,7 @@
 \font\devafont=[NotoSansDevanagari-Regular]:mode=harf;script=dev2
 \endtt
 %
-If `luahbtex` engine is not used then `mode=harf` is ignored. See
+If the `luahbtex` engine is not used then `mode=harf` is ignored. See
 Luaotfload documentation for more information.
 
 \endinput

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/graphics.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/graphics.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/graphics.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl \inspic {Graphics <2020-04-12>} % preloaded in format
 
@@ -27,13 +27,13 @@
 \_public \inspic ;
 
    \_doc -----------------------------
-   Inkscape is able to save a picture to `*.pdf` file and labels for the picture
-   to `*.pdf_tex` file. The second file is in \LaTeX/ format (unfortunately) 
-   and it is intended to read immediately it after `*.pdf` in included 
-   in order to place labels of this picture in the same font as document is printed.
-   We need to read this \LaTeX/ file by plain \TeX/ macros when \`\inkinspic` is used. 
+   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. 
+   locally in the group. The solution is borrowed from OPmac trick 0032.
    \_cod -----------------------------
 
 \_def\_inkinspic{\_hbox\_bgroup\_isnextchar\_bgroup\_inkinspicB\_inkinspicA}
@@ -44,10 +44,10 @@
   \_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}% 
+\_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}%
@@ -55,11 +55,11 @@
       \_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\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}% 
+  \_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{}%
@@ -67,9 +67,9 @@
 \_public \inkinspic ;
 
    \_doc ----------------------------
-   \`\pdfscale``{<x-scale>}{<y-scale>}` and \`\pdfrotate``{<degrees>}` 
+   \`\pdfscale``{<x-scale>}{<y-scale>}` and \`\pdfrotate``{<degrees>}`
    macros are implemented by `\pdfsetmatrix`
-   primitive. We need to know values of sin, cos function in
+   primitive. We need to know the values of sin, cos function in
    the `\pdfrotate`. We use Lua code for this.
    \_cod ----------------------------
 
@@ -86,51 +86,51 @@
 \_public \pdfscale \pdfrotate ;
 
    \_doc -----------------------------
-   The \`\transformbox``{<transformation>}{<text>}` 
+   The \`\transformbox``{<transformation>}{<text>}`
    is copied from OPmac trick 0046.\nl
-   The \`\rotbox``{<degrees>}{<text>}` is a combination of 
+   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. 
+   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. 
+   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\_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}% 
+   \_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 }% 
+   \_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 
+   \_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\_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}%
@@ -156,10 +156,10 @@
    \`\putpic` `<right> <up> <width> <height> {<image-file>}`
    does `\puttext` with the image scaled to desired <width> and <height>.
    If <with> or <height> is zero, natural dimension is used.
-   The \`\nospec` is a shortcut to such natural dimension.
+   The \`\nospec` is a shortcut to such a natural dimension.
    \nl
-   \`\backgroundpic``{<image-file>}` puts the image to 
-   the background of each page. It it used in the slides style, for example.
+   \`\backgroundpic``{<image-file>}` puts the image to
+   the background of each page. It is used in the \~`\slides` style, for example.
    \_cod ---------------------------
 
 \_def\_scantwodimens{%
@@ -172,7 +172,7 @@
 \_def\_puttextB{%
    \_ifvmode
       \_ifdim\_prevdepth>\_zo \_vskip-\_prevdepth \_relax \_fi
-      \_nointerlineskip 
+      \_nointerlineskip
    \_fi
    \_wd0=\_zo \_ht0=\_zo \_dp0=\_zo
    \_vbox to\_zo{\_kern-\_dimen2 \_hbox to\_zo{\_kern\_dimen1 \_box0\_hss}\_vss}}
@@ -190,33 +190,33 @@
 \_public \puttext \putpic \backgroundpic ;
 
    \_doc -----------------------------
-   \`\_circle``{<x>}{<y>}` creates an ellipse with `<x>` axis and `<y>` axix.
+   \`\_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
-   given `<roundness>`. The real size is bigger by 2`<roundness>`. The
+   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 back the current point.
+   `<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 
+\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 
+\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{-.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}
@@ -234,7 +234,7 @@
    color and drawing color.
    \_cod -----------------------------
 
-\_newdimen \_lwidth 
+\_newdimen \_lwidth
 \_def\_fcolor{\_let\_fcolorvalue}
 \_def\_lcolor{\_let\_lcolorvalue}
 \_def\_shadow{\_let\_shadowvalue}
@@ -251,7 +251,7 @@
    \_edef#1{#1\_space\_lcolorvalue\_space}%
 }
 \_optdef\_inoval[]{\_vbox\_bgroup
-   \_roundness=2pt \_fcolor=\Yellow \_lcolor=\Red \_lwidth=.5bp 
+   \_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
@@ -266,23 +266,23 @@
                                \_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 
+   \_else                      \_dimen0=-\_hhkern   \_dimen1=-\_vvkern \_fi
    \_setflcolors\_tmp
-   \_hbox{\_kern\_dimen0 
+   \_hbox{\_kern\_dimen0
       \_vbox to\_zo{\_kern\_dp0
-         \_ifx\_shadowvalue N\_else 
+         \_ifx\_shadowvalue N\_else
             \_edef\_tmpb{{\_bp{\_wd0+\_lwidth}}{\_bp{\_ht0+\_dp0+\_lwidth}}{\_bp{\_roundness}}}%
-            \_doshadow\_oval 
+            \_doshadow\_oval
          \_fi
-         \_pdfliteral{q \_bp{\_lwidth} w \_tmp 
+         \_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 
+      \_box0
       \_kern\_dimen0}%
    \_egroup % of \vbox\bgroup
 }
 \_optdef\_incircle[]{\_vbox\_bgroup
-   \_ratio=1 \_fcolor=\Yellow \_lcolor=\Red \_lwidth=.5bp 
+   \_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
@@ -300,11 +300,11 @@
    \_setflcolors\_tmp
    \_ifx\_overlapmarginsvalue N\_dimen0=\_zo \_dimen1=\_zo
    \_else \_dimen0=-\_hhkern \_dimen1=-\_vvkern \_fi
-   \_hbox{\_kern\_dimen0 
-      \_ifx\_shadowvalue N\_else 
+   \_hbox{\_kern\_dimen0
+      \_ifx\_shadowvalue N\_else
          \_edef\_tmpb{{\_bp{\_dimen2+\_lwidth}}{\_bp{\_dimen3+\_lwidth}}{}}%
          \_doshadow\_circlet
-      \_fi      
+      \_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
@@ -319,7 +319,7 @@
 
    \_doc -----------------------------
    A shadow effect is implemented here. The shadow is equal to the
-   silhouette of the given path in gray-transparent color shifted by
+   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
@@ -334,8 +334,8 @@
 
    \_doc -----------------------------
    The `\_pdfpageresources` primitive is used to define transparency.
-   It does not work when used in a box. So, we use it at the begining of
-   the output routine. The modification of the output routine is done 
+   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 -----------------------------
 
@@ -342,7 +342,7 @@
 \_def\_insertshadowresources{%
    \_global\_addto\_begoutput{\_setshadowresources}%
    \_xdef\_setshadowresources{%
-      \_pdfpageresources{/ExtGState 
+      \_pdfpageresources{/ExtGState
       <<
       /op1  <</Type /ExtGState /ca \_shadowdarknessA>>
       /op2  <</Type /ExtGState /ca \_shadowdarknessB>>
@@ -371,12 +371,12 @@
         \_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 
+        \_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 
+    \_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}
 }}
@@ -430,7 +430,7 @@
 
 My picture: \copy\mypic, again my picture: \copy\mypic, etc.
 \endtt
-This code downloads the picture data to the PFD oputput only once (when
+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.
 

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/hi-syntax.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/hi-syntax.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/hi-syntax.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,24 +1,24 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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 
+   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 
+   first `<to>` following by `<from>` pattern and the
    `<text>` between them is packed to `#1`.
    Then `<from><text><to>` is replaced by `<what>`. The `<what>` parameter
    can use `#1` which is replaced by the `<text>`.
 
    The `\replfromto` continues by finding next `<from>`, then, next `<to>`
-   repeatedly over the whole verbatim text. If the verbatim text is ended by 
-   opened `<from>` but not closing by `<to>` then `<to>` is appended to the 
-   verbatim text automatically and the last part of verbatim text is replaced too.
+   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. 
+   use `\csstring\%` or something else here.
    \_cod -----------------------------
 
 \_def\_replfromto #1#2{\_edef\_tmpa{{#1}{#2}}\_ea\_replfromtoE\_tmpa}
@@ -26,10 +26,10 @@
    \_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 
+      \_ifx\_end##2\_afterfi{\_replfin##1}\_else
         \_addto\_tmpb{#3}%
         \_afterfi{\_replfrom##2}\_fi}%
-   \_def\_replfin##1#1\_end{\_addto\_tmpb{#3}\_replstop}%   
+   \_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{}
@@ -55,7 +55,7 @@
 
    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 
+   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 -----------------------------
@@ -67,7 +67,7 @@
 
    \_doc -----------------------------
    The \`\hicolor` `<letter> <color>` defines `\_z<letter>{<text>}`
-   as `{<color><text>}`. It should be used in the context of 
+   as `{<color><text>}`. It should be used in the context of
    `\x <letter>{<text>}` macros.
    \_cod -----------------------------
 
@@ -76,9 +76,9 @@
    \_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>` 
+   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}`.
@@ -138,12 +138,12 @@
 \endtt
 and the code is colorized by C syntax.
 The user can write `\everytt={\hisyntax{C}}` and all verbatim listings are
-colorized. 
+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:
+file name must include it in lowercase letters. For example, the file
+`hisyntax-c.opm` looks like this:
 
 \printdoc hisyntax-c.opm
 
@@ -153,8 +153,8 @@
 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. 
+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.
@@ -162,15 +162,13 @@
 the `hicolors-<name>.opm` file.
 This is useful when there are more hi-syntax languages used in one document.
 
-\medskip
-\noindent{\bf Notes for hi-syntax macro writers}
+\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 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. 
+`\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
@@ -183,12 +181,12 @@
   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 `\_end` control
+* 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 post-processing phase.
-\enditems 
+  sequences are removed in the post-processing phase.
+\enditems
 
-There are special macros working only in a group when processing the verbatim
+Special macros are working only in a group when processing the verbatim
 text.
 
 
@@ -209,12 +207,12 @@
   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>} 
+  \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 
+  `\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

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/hisyntax-c.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/hisyntax-c.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/hisyntax-c.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,11 +1,11 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
-\_codedecl \_hisyntaxc {Syntax highlighting for C sources <2020-04-03>} 
+\_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 K \Red      % Keywords
    \_hicolor S \Magenta  % Strings
    \_hicolor C \Green    % Comments
    \_hicolor N \Cyan     % Numbers
@@ -25,19 +25,19 @@
    \_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}% 
+      {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 
+   \_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-}   
+   \_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}}
 }
@@ -47,20 +47,20 @@
 
 Each `hisyntax-<name>.opm` file must declare the token list
 `\_hisyntax<name>` using `\newtoks` and must declare the syntax declaration
-in it. The second cotken list `\_hicolors<name>` is optional but recommended.
+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 name space. But it is not explicitly needed.
+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 to read it repeatedly in before each code chunk
+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 to each non-letters (expanded via \string
-because we needn't to treate with active or special TeX characters). The
-keyword are applied in the `\foreach` loop too.
+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.

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/hisyntax-html.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/hisyntax-html.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/hisyntax-html.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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>} 
 

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/hisyntax-python.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/hisyntax-python.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/hisyntax-python.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl \_hisyntaxpython {Syntax highlighting for Python sources <2020-04-04>} 
 

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/hisyntax-tex.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/hisyntax-tex.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/hisyntax-tex.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl\_hisyntaxtex {Syntax highlighting for TeX sources <2020-04-03>} 
 

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/hyperlinks.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/hyperlinks.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/hyperlinks.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,6 +1,6 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
-\_codedecl \ulink {Hyperlinks <2020-04-22>} % preloaded in format 
+\_codedecl \ulink {Hyperlinks <2020-04-22>} % preloaded in format
 
    \_doc ----------------------------
    \`\dest``[<type>:<spec>]` creates a destination of internal links. The
@@ -8,9 +8,9 @@
    command in not used, then `\dest` does nothing else it is set to `\_destactive`.
    The \`\_destactive` is implemented by `\_pdfdest` primitive. It creates a box
    in which the destination is shifted by \`\_destheight`. The reason is that
-   the destination is exactly at top border of the PDF viewer but we want to see
-   the line where destination is. The destination box is positioned by
-   different way dependent on current vertical or horizontal mode.
+   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}
@@ -28,7 +28,7 @@
    \`\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 
+   command is not used, then `\link` only prints `<text>` else it is set to
    `\_linkactive`.
    The \`\_linkactive` is implemented by `\_pdfstartlink...\_pdfendlink`
    primitives.
@@ -48,7 +48,7 @@
    \`\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 
+   The `<url>` is detokenized with `\escapechar=-1` before it is used, so
    `\%`, `\#` etc. can be used in the `<url>`.
    \_cod ----------------------------
 
@@ -67,7 +67,7 @@
    expands to `attr{/C[? ? ?] /Border[0 0 .6]}` if the
    `\_<type>border` (i.e.\ \`\_refborder`, \`\_citeborder`, \`\_tocborder`,
    \`\_pgborder`, \`\_urlborder`, \`\_fntborder` or \`\_fnfborder`)
-   is defined. User can define it in
+   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).
@@ -96,9 +96,9 @@
    \`\url``{<url>}` does approximately the same as \^`\ulink``[<url>]{<url>}`, but
    more work is done before the `\ulink` is processed. The link-version of <url>
    is saved to `\_tmpa` and the printed version in `\_tmpb`. The printed
-   version is modified in order to set a breakpoints to special places of the
-   `<url>`. For example `//` is replaced by `\_urlskip/\_urlskip/\_urlbskip` 
-   where `\urlskip` adds a small nobreakable glue between these two slashes and
+   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`.
@@ -127,27 +127,27 @@
 \_endcode % ----------------------------------------
 
 
-There are four types of the internal links and one type of external link:
+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, 
+* `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, 
+* `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, 
+* `cite:<bibnum>`   -- the destination is created in bibliography reference,
                        see also the section \ref[bib].
 * `url:<url>`       -- used by `\url` or `\ulink`,
                        see also the end of this section.
 \enditems
 
-The `<tocrefnum>`, `<gpageno>` and `<bibnum>` are numbers starting from one and
-globally incremented by one in whole document. The registers \^`\tocrefnum`,
+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: 
+of internal links are created at the same destination place:
 `toc:<tocrefnum>` and `ref:<label>`.
 
 \_endinput

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/hyphen-lan.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/hyphen-lan.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/hyphen-lan.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,6 +1,6 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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  
+\_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).
@@ -7,26 +7,26 @@
    The following control sequences are used for language switching:
    \begitems
    * `\_lan:<number>` expands to `<iso-code>` of the language.
-     The number is internal number of languages used as a value of
+     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`) 
+   * `\<iso-code>lang`
+     (for example \`\enlang`, \`\cslang`, \`\sklang`, \`\delang`, \`\pllang`)
      is language selector.  It exists in two states
      \begitems
      * Initialization state: when `\<iso-code>lang` is used first then it
-       must load the patterns into memory using Lua code. If it is done then 
-       the `\<iso-code>lang` re-defines itself to processing state.
+       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 user or macro designer.
+     should include language-specific macros declared by the user or macro designer.
    \enditems
-   The USenglish patters are preloaded first: 
+   The USenglish patters are preloaded first:
    \_cod -----------------------------
 
 \_chardef\_enPatt=0
@@ -57,7 +57,7 @@
    \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 
+   \^`\_uselang` first (in initialization state) and it runs
    only \^`\_uselang` when it is called again (in processing state).
    \_cod -----------------------------
 
@@ -83,7 +83,7 @@
    `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 comma, see the language Serbian below for example.
+   separated by commas, see the language Serbian below for an example.
    \_cod -----------------------------
 
 \_def\_loadpattrs#1 #2 #3 {%
@@ -102,7 +102,7 @@
 }
 
    \_doc -----------------------------
-   \`\_uselang``{<iso-code>}\_<iso-code>Patt <pre-hyph><post-hyph>`\nl 
+   \`\_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
@@ -115,16 +115,16 @@
    \_cs{_langspecific:#1}%
 }
    \_doc -----------------------------
-   The \`\uselanguage` `{<long-lang>}` is defined here 
+   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 ; 
+\_public \uselanguage ;
 
    \_doc -----------------------------
    The numbers for languages are declared as fixed constants (no
-   auto-generated). This concept is inspired from CSplain. 
+   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.
@@ -211,8 +211,8 @@
 
    \_doc -----------------------------
    The \`\langlist` includes names of all languages which are ready to load
-   and use their hyphenation patterns. This list is printed to terminal and
-   to log at ini\TeX/ state here. It can be used when processing document too.
+   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.
@@ -224,12 +224,12 @@
 \_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 selected language, you can define a macros for
-quotation marks depending on the language etc.
+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.
+The example shows how to declare such language-specific things.
 
 \begtt
 \def\langset #1 #2{\sdef{_langspecific:#1}{#2}}
@@ -237,9 +237,9 @@
 \langset fr {... declare French quotation marks}
 \langset de {... declare German quotation marks}
 \langset gr {... switch to Greek fonts family}
-... etc. 
+... etc.
 \endtt
 
-Note that you need not to set language specific phrases (like `\today`) 
-by this code. Another concept is used for such tasks. See the 
+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.

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/if-macros.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/if-macros.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/if-macros.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,10 +1,10 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl \newif {Special if-macros, is-macros and loops <2020-05-22>} % preloaded in format
 
    \_doc ----------------------------
    \secc Classical \code{\\newif}
-   The \`\newif` macro implements boolean value. 
+   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`
@@ -11,7 +11,7 @@
    to test this value. The default value is false.
 
    The macro \`\_newifi` enables to declare `\_ifxxx` and to use `\_xxxtrue` and
-   `\_xxxfalse`. This means that it is usable for internal name space 
+   `\_xxxfalse`. This means that it is usable for the internal namespace
    (`_`prefixed macros).
    \_cod ----------------------------
 
@@ -48,7 +48,7 @@
    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. 
+   \`\_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.
@@ -81,7 +81,7 @@
    private variants use \`\_do` separator instead `\do` separator.
    \_cod -----------------------------
 
-\_newcount\_frnum        % the numeric variable used in \fornum 
+\_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
@@ -101,8 +101,12 @@
    \`\fornumstep` `<num>: <from>..<to>` \`\do` `{<what>}`
    repeats `<what>` for each number from `<from>` to `<to>` (with step `<num>`
    or with step one). The `<what>` can include `#1` which is substituted by
-   current number. The sequence `<from>..<to>` can be decreasing too.
-   The macro is expandable.
+   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}
@@ -109,18 +113,14 @@
 \_long\_def\_fornumstep#1:#2..#3\_do#4{\_putforstack
    \_immediateassigned{%
       \_gdef\_fbody##1{#4}%
-      \_gdef\_fornumsgn{}%
-      \_gdef\_fornumrel{<}%
       \_global\_frnum=\_numexpr#2\_relax
-      \_ifnum\_numexpr#3<\_frnum \_gdef\_fornumrel{>}\_fi %decreasing sequence
-      \_ifnum\_numexpr#1\_fornumrel0 \_gdef\_fornumsgn{-}\_fi % correction
    }%
-   \_fornumB{#3}{#1}%
+   \_ea\_fornumB\_ea{\_the\_numexpr#3\_ea}\_ea{\_the\_numexpr#1}%
 }
-\_def\_fornumB #1#2{\_ifnum\_numexpr#1\_fornumrel\_frnum \_getforstack \_else 
-   \_ea\_fbody\_ea{\_the\_frnum}%
-   \_immediateassignment\_global\_advance\_frnum by\_numexpr\_fornumsgn#2\_relax
-   \_afterfi{\_fornumB{#1}{#2}}\_fi
+\_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}
@@ -132,11 +132,11 @@
    \begtt
    \foreach ABC \do {\fornum 1..5 \do {letter:#1, number: ##1. }}
    \endtt
-   Implementation note: 
+   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 
+   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 ----------------------------
@@ -146,7 +146,7 @@
    \_ifnum\_forlevel>0
       \_sxdef{_frnum:\_the\_forlevel\_ea}{\_the\_frnum}%
       \_global\_slet{_fbody:\_the\_forlevel}{_fbody}%
-   \_fi 
+   \_fi
    \_global\_advance\_forlevel by1
 }}
 \_def\_getforstack{\_immediateassigned{%
@@ -183,11 +183,11 @@
    \secc Is-macros
    There are a collection of macros
    \^`\isempty`, \^`\istoksempty`, \^`\isequal`, \^`\ismacro`,
-   \^`\isdefined`, \^`\isinlist` and \^`\isfile`
+   \^`\isdefined`, \^`\isinlist`, \^`\isfile` and \^`\isfont`
    with common syntax:
    \begtt \catcode`\<=13
-   \issomething <params> \iftrue <codeA> \else <codeB> \fi 
-   or 
+   \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
@@ -194,10 +194,10 @@
    `\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 
+   The `\iftrue` or `\iffalse` is an integral part of this syntax
    because we need to keep skippable nested `\if` conditions.
 
-   Implementation note: 
+   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.
 
@@ -204,7 +204,7 @@
    \medskip\noindent
    \`\isempty` `{<text>}\iftrue`
    is true if the `<text>` is empty. This macro is expandable.\nl
-   \`\istoksempty` `<tokens variable>\iftrue` 
+   \`\istoksempty` `<tokens variable>\iftrue`
    is true if the `<tokens variable>` is empty. It is expandable.
    \_cod ----------------------------
 
@@ -213,7 +213,7 @@
 \_public \isempty \istoksempty ;
 
    \_doc ----------------------------
-   \`\isequal` `{<textA>}{<textB>}\iftrue` 
+   \`\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.
@@ -220,7 +220,7 @@
    \_cod ----------------------------
 
 \_def\_isequal#1#2#3{\_directlua{%
-   if "\_luaescapestring{\_detokenize{#1}}"=="\_luaescapestring{\_detokenize{#2}}" 
+   if "\_luaescapestring{\_detokenize{#1}}"=="\_luaescapestring{\_detokenize{#2}}"
    then else tex.print("\_nbb unless") end}#3}
 \_public \isequal ;
 
@@ -242,11 +242,11 @@
 
    \_doc ----------------------------
    \`\isinlist` `\list{<text>}\iftrue` is true if the
-   `<text>` is included the macro body of the `\list`. 
-   The category code are relevant here. The macro is not expandable.
+   `<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\_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/_%
@@ -269,8 +269,8 @@
 
    \_doc -----------------------------
    \`\isfont` `{<fontname or [fontfile]>}\iftrue`
-   is true if given font exists. The result of this testing 
-   is saved to the \`\_ifexistfam`. 
+   is true if a given font exists. The result of this testing
+   is saved to the \`\_ifexistfam`.
    \_cod -----------------------------
 
 \_newifi \_ifexistfam
@@ -285,9 +285,9 @@
 \_public \isfont ;
 
    \_doc ----------------------------
-   The last macro \`\isnextchar` `<char>{<codeA>}{<codeB>}` 
-   has different syntax than all others is-macros.
-   It executes `<codeA>` if next character is equal to <char>. 
+   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 ----------------------------
 
@@ -299,7 +299,7 @@
 \_public \isnextchar ;
 
 
-\_endcode 
+\_endcode
 
 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)

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/keyval.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/keyval.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/keyval.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl \readkv {Key-value dictionaries <2020-12-21>} % preloaded in format
 
@@ -5,10 +5,10 @@
    \_doc ----------------------------
    {\bf Implementation.}
    The \`\readkv` expands its parameter and does replace-strings in order to
-   remove spaces around equal signs and after comma. Double comma is
-   removed. Then \`\_kvscan` reads the parameters list finished by double
+   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 is not
+   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 ----------------------------
 
@@ -18,15 +18,15 @@
    \_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{???} 
+\_def\_kvunknown{???}
 
 \public \readkv \kv ;
 
-\_endcode 
+\_endcode
 
-User or macro programmer can define macros with options in key=value format.
-It means a comma separated list of equations key=value. First, we give an
-example. 
+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
@@ -42,7 +42,7 @@
 
 \begtt
 \def\myframedefaults{%    defaults:
-   frame-color=\Black, % color of frame rules 
+   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.
@@ -51,16 +51,16 @@
    \ea\addto\ea\myframedefaults\ea{\ea,\the\opt}%
    \readkv\myframedefaults
    \rulewidth=\kv{rule-width}
-   \hhkern=\kv{margins}\vvkern=\kv{margins}\relax 
+   \hhkern=\kv{margins}\vvkern=\kv{margins}\relax
    \kv{frame-color}\frame{\kv{text-color}\strut #1}%
    \egroup}
 \endtt
 %
-We recommend to use \^`\optdef` for defining macros with optional parameters
+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 
+register. First: we append the \^`\opt` (actual optional parameters) to
 `\myframedefault` by \^`\addto` macro.
-Lua\TeX/ primitive. Second: we read the parameters by
+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.
@@ -67,10 +67,10 @@
 
 You can use keys without values in the parameters list too, but with
 additional care. For example, suppose `draft` option without parameter.
-If user write `\myframe [..., draft, ...]{text}` then `\myframe` should behave differently.
-We have to add `DRAFTv=0,` in `\myframedefault` macro,.
+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 occurence of `draft` by `DRAFTv=1`.
+\^`\replstring` which replaces the occurrence of `draft` by `DRAFTv=1`.
 \begtt
 \optdef\myframe [] #1{...
    \ea\addto\ea\myframedefaults\ea{\the\opt}%
@@ -79,4 +79,4 @@
    ...
    \ifnum\kv{DRAFTv}=1 draft mode\else normal mode\fi
    ...}
-\endtt 
+\endtt

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/languages.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/languages.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/languages.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,16 +1,16 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl \_mtext {Languages <2020-12-05>} % 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 
+   \"Table", \"Figure" and \"Subject". These phrases can be generated depending
+   on the current value of `\language` register, if you use \`\_mtext``{<phrase-id>}`,
+   specially `\_mtext{chap}`, `\_mtext{t}`, `\_mtext{f}` or `\_mtext{subj}`.
+   If your macros generate more words then
    you can define such words by `\sdef{_mt:<phrase-id>:<lang>}` where
-   `<phrase-id>` is a label for declared word and `<lang>` is language shortcut
-   (iso code). 
+   `<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}}
@@ -23,7 +23,7 @@
 
    \_doc -----------------------------
    Using \`\_langw` `<lang> <chapter> <table> <figure> <subject>` you can
-   declare these words more effectively: 
+   declare these words more effectively:
    \maxlines=13
    \_cod -----------------------------
 
@@ -66,8 +66,8 @@
              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}
@@ -76,16 +76,16 @@
 \_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`). 
+   Quotes should be tagged by `\"<text>"` and `\'<text>'` if `\<iso-code>quotes`
+   is declared at beginning of the document (for example `\enquotes`).
    If not, then the control
    sequences `\"` and `\'` are undefined. Remember, that they are used in
-   another meaning when `\oldaccents` command is used.
+   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 meaning of these two types of 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 -----------------------------
@@ -105,10 +105,10 @@
    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 reason why the quotes parameter is read in verbatim mode and retokenized
-   again by `\scantextokens`. We want to allow to quote the quoutes mark
-   itself by \code{\\"{`"`}"}. This is reason why the sub-verbatim mode is
-   used when first character is \code{\{} in the parameter.\nl
+   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>"`.
    \_cod -----------------------------
@@ -125,8 +125,8 @@
    \_doc -----------------------------
    Sometimes should be usable to leave the markup `"such"` or `'such'` i.e.~without
    the first backslash. Then you can make the characters `"` and `'` active
-   by the \`\activequotes` macro and leave quotes without first backslash. 
-   First, declare `\<iso-code>quotes`, then \^`\altquotes` (if needed) and finally 
+   by the \`\activequotes` macro and leave quotes without the first backslash.
+   First, declare `\<iso-code>quotes`, then \^`\altquotes` (if needed) and finally
    \^`\activequotes`.
 
    \`\_resetaquotes` redefines expandable version of `\"<text>"` and `\'<text>'`
@@ -143,20 +143,20 @@
       \_regmacro{}{}{\_edef\"##1~{\"##1"}\_edef\'##1,{\'##1'}}}
 }
 
-\_public \quoteschars \activequotes \enquotes \csquotes \skquotes \frquotes \plquotes 
+\_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 format, so the trick with {`\_endinput`}
-   is used here. When \^`\usebib` is processed then following part of the file
+   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 email with new
-   phrarses for your language (or language you know:). I am ready to put them here.
+   \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 -----------------------------
 
@@ -180,7 +180,7 @@
            {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 the field "citedate" is used.
+% 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}

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/lists.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/lists.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/lists.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,14 +1,14 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl \begitems {Lists: begitems, enditems <2020-04-21>} % preloaded in format
 
    \_doc -----------------------------
-   \`\_aboveliskip` is used above the list of items,\nl 
-   \`\_belowliskip` is used below the list of items and\nl 
+   \`\_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 
+   \`\_setlistskip` sets the skip dependent on the current level of items
    \_cod -----------------------------
 
 \_def\_aboveliskip {\_removelastskip \_penalty-100 \_vskip\_listskipamount}
@@ -19,18 +19,18 @@
 
 \_def\_setlistskip {%
    \_ifnum \_ilevel = 1 \_listskipamount = \_listskipA \_relax
-   \_else  \_listskipamount = \_listskipB \_relax 
+   \_else  \_listskipamount = \_listskipB \_relax
    \_fi}
 
    \_doc -----------------------------
    The \`\itemnum` is locally reset to zero in each group declared by
-   `\begitems`. So nested lists are numbered independently. User can set
-   initial value of `\itemnum` to another value after `\beitems` if he/she want.
+   `\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 new `\iindent` from left.
-   Default item mark is `\_printitem`.
+   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, 
+   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
@@ -42,7 +42,7 @@
 \_newcount\_itemnum  \_itemnum=0
 \_newtoks\_printitem
 
-\_def\_begitems{\_par 
+\_def\_begitems{\_par
   \_bgroup
   \_advance \_ilevel by1
   \_setlistskip
@@ -93,17 +93,34 @@
 
    \_doc -----------------------------
    \`\_athe``{<num>}` returns the `<num>`s lowercase letter from the alphabet.\nl
-   \`\_fullrectangle``{<dimen>}` prints full rectangle with given `<dimen>`.  
-   \_cod ----------------------------- 
+   \`\_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 
+\_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 % -------------------------------------
 
 2020-04-21 \isnextchar\par added to \enditems

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/logos.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/logos.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/logos.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,11 +1,11 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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 next slash if it is present. 
-   You can `use \TeX/ like this` for protecting the space following the logo. 
+   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 ----------------------------
@@ -16,14 +16,13 @@
 \_protected\_def \_XeTeX {X\_kern-.125em\_phantom E%
    \_pdfsave\_rlap{\_pdfscale{-1}{1}\_lower.5ex\_hbox{E}}\_pdfrestore \_kern-.1667em \_TeX}
 
-\_def\_ignoreslash {\_futurelet\_next \_ignoreslashA}
-\_def\_ignoreslashA {\_ifx\_next/\_ea\_ignoreit\_fi}
+\_def\_ignoreslash {\_isnextchar/\_ignoreit{}}
 
 \_public \TeX \OpTeX \LuaTeX \XeTeX \ignoreslash ;
 
    \_doc -----------------------------
-   The \`\_slantcorr` macro expands to slant-correction of current font. It is
-   used to shifting A if the \`\LaTeX` logo is in italic. 
+   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
@@ -45,7 +44,7 @@
 \_public \OPmac \CS \csplain ;
 
    \_doc ----------------------------
-   The expandable versions of logos used in Outlines needs the expandable
+   The expandable versions of logos used in Outlines need the expandable
    \`\ingnslash` (instead of the \^`\ignoreslash`).
    \_cod \_fin ----------------------
 

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/luatex-ini.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/luatex-ini.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/luatex-ini.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl \pdfprimitive {LuaTeX initialization code <2020-02-21>} % preloaded in format
 

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/makeindex.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/makeindex.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/makeindex.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl \makeindex {Makeindex and sorting <2020-04-26>} % loaded in format
 
@@ -6,19 +6,19 @@
    \^`\makeindex` implements sorting algorithm at \TeX/ macro-language level.
    You need not any external program.
 
-   There are two passes in sorting algorithm. Primary pass does not
-   distinguish between a group o letters (typically non-accented and
+   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 secondary pass is started. It distinguish between variously accented
-   letters. Czech rules, for example says: not accented before dieresis
+   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. 
+   letters must be before uppercase letters.
 
    The \`\_sortingdata``<iso-code>` implements these rules for the language
    <iso-code>. The groups between commas are not distinguished in the first
    pass. The second pass distinguishes all characters mentioned in the
-   `\_sortingdata<iso-code>` (commas are ignored). The order of letters 
-   in the `\_sortingdata<iso-code>` macro is significant for sorting algorithm. 
+   `\_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 -----------------------------
 
@@ -59,19 +59,19 @@
 }
 
    \_doc -----------------------------
-   Characters ignored by sorting algorithm are declared in \`\_ignoredchars``<iso-code>`.
+   Characters ignored by the sorting algorithm are declared in \`\_ignoredchars``<iso-code>`.
    The compound characters (two or more characters interpreted as one
-   character in sorting algorithm) is mapped to single invisible characters
-   in \`\_compoundchars``<iso-code>`. Czech rules declares ch or Ch or CH as
+   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 first pass
+   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 $\lq65$ are sorted first if they
-   are not mentioned in the `\_sortingdata<iso-code>` macro. 
+   are not mentioned in the `\_sortingdata<iso-code>` macro.
    Others not mentioned characters have undefined behavior during sorting.
-   \_cod -----------------------------   
+   \_cod -----------------------------
 
 \_def \_ignoredcharscs  {.,;?!:'"|()[]<>=+}
 \_def \_compoundcharscs {ch:^^T Ch:^^U CH:^^V} % DZ etc. are sorted normally
@@ -80,13 +80,13 @@
    Slovak sorting rules are the same as Czech. The macro `\_sortingdatacs`
    includes Slovak letters too. Compound characters are the same.
    English sorting rules can be defined by `\_sortingdatacs` too because
-   English alphabet is subset of Czech and Slovak alphabets. Only
-   difference: \`\_compoundcharsen` is empty in English rules. 
+   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 in respect to your language.
-   Note: if you need to map compound characters to a character, don't use 
-   `^^I` or `^^M` because these characters have very specific category code.
+   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 -----------------------------
 
@@ -98,7 +98,7 @@
 \_let \_ignoredcharsen = \_ignoredcharscs
 
    \_doc -----------------------------
-   Preparing to primary pass is implemented by the \`\_setprimarysorting` macro. 
+   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 -----------------------------
 
@@ -121,7 +121,7 @@
    \_tmpnum=65 \_ea\_act \_sortingdata \_relax
    \_def \_act ##1{\_ifx##1\_relax \_else
       \_lccode`##1=`\^^I
-      \_ea\_act \_fi}% 
+      \_ea\_act \_fi}%
    \_ea\_act \_ignoredchars \_relax
 }
 
@@ -133,13 +133,13 @@
    \_def \_act ##1{\_ifx##1\_relax \_else
       \_ifx##1,\_else \_advance\_tmpnum by1 \_lccode`##1=\_tmpnum \_fi
       \_ea\_act \_fi}%
-  \_tmpnum=65 \_ea\_act \_sortingdata \_relax 
+  \_tmpnum=65 \_ea\_act \_sortingdata \_relax
 }
 
    \_doc -----------------------------
-   Strings to be sorted are prepared in `\,<string>` control sequences 
-   (in order to save `\TeX` memory).
-   The \`\_preparesorting` `\,<string>` converts `<string>` to `\_tmpb` 
+   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
@@ -148,7 +148,7 @@
 
 \_def \_preparesorting #1{%
    \_edef \_tmpb {\_ea\_ignorefirst\_csstring #1}% \,<string> -> <string>
-   \_ea \_docompound \_compoundchars \_relax:{}       % replace compound characters 
+   \_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
 }
@@ -158,18 +158,18 @@
 \_def \_ignorefirst#1{}
 
    \_doc -----------------------------
-   Macro \`\_isAleB` `\,<string1> \,<string2>` returns the result of comparison 
+   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 
+   The reason is speed:  we don't want to convert them repeatedly in each
    comparison.
    \nl
    The macro
    \`\_testAleB` `<converted string1>&\_relax<converted-string2>\_relax \,<string1>\,<string2>`\nl
-   does the real work. It reads first character from both converted strings, compares them
-   and if it is equal then calls itself recursively else gives result.
+   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
@@ -203,7 +203,7 @@
    Merge sort is very effectively implemented by \TeX/ macros. The following
    code is created by my son Miroslav.
    The \`\_mergesort` macro expects that all items in `\_iilist` are separated
-   by comma when it starts. It ends with sorted items in `\_iilist` without commas.
+   by a comma when it starts. It ends with sorted items in `\_iilist` without commas.
    So `\_dosorting` macro must prepare commas between items.
    \_cod -----------------------------
 
@@ -239,24 +239,24 @@
    \_doc -----------------------------
    The \`\_dosorting` `\list` macro redefines `\list` as sorted `\list`.
    The `\list` have to include control sequences in the form `\<c><string>`.
-   These control sequences will be sorted in respect to <strings> without
+   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}`) 
+   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. 
+   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{}% 
+     \_def\_nold{}%
      \_ifx\_sotringlang\_undefined \_edef\_sortinglang{\_cs{_lan:\_the\_language}}\_fi
       \_ifasciisorting
           \_edef\_sortinglang{ASCII}%
@@ -264,7 +264,7 @@
           \_let \_setsecondarysorting=\_relax
       \_else
          \_setprimarysorting
-      \_fi        
+      \_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}}%
@@ -278,7 +278,7 @@
 
    \_doc -----------------------------
    The \`\makeindex` prints the index. First, it sorts the `\_iilist`
-   second, it prints the sorted `\_iilist`, each item is printed 
+   second, it prints the sorted `\_iilist`, each item is printed
    using \^`\_printindexitem`.
    \_cod -----------------------------
 
@@ -286,7 +286,7 @@
   \_ifx\_iilist\_empty \_opwarning{index data-buffer is empty. TeX me again}%
   \_incr\_unresolvedrefs
   \_else
-    \_dosorting \_iilist % sorting \_iilist   
+    \_dosorting \_iilist % sorting \_iilist
     \_bgroup
        \_rightskip=0pt plus1fil \_exhyphenpenalty=10000 \_leftskip=\_iindent
        \_ea\_xargs \_ea\_printindexitem \_iilist ;\_par
@@ -300,8 +300,8 @@
    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 -----------------------------  
+   i.e. the list of pages.
+   \_cod -----------------------------
 
 \_def\_printindexitem #1{%
    \_ifcsname _\_csstring #1\_endcsname
@@ -308,7 +308,7 @@
       \_ea\_ea\_ea \_printii \_csname _\_csstring #1\_endcsname &%
    \_else
       \_ea\_ea\_ea\_printii \_ea\_ignorefirst \_csstring #1&%
-   \_fi   
+   \_fi
    \_ea\_printiipages #1&
 }
 
@@ -347,12 +347,12 @@
    \`\_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>. 
+   and continuous consequences of pages must be compressed to the form <from>-<to>.
    Moreover, the consequence is continuous only if all pages have the same <type>.
    Empty <type> is most common, pages with `b` <type> must be printed as bold
    and with `i` `<type>` as italics.
    Moreover, the `<pg>` mentioned here are <gpageno>, but we have to print
-   <pageno>. The following macros solves these tasks.
+   <pageno>. The following macros solve these tasks.
    \_cod -----------------------------
 
 \_def\_printiipages#1&{\_let\_pgtype=\_undefined \_tmpnum=0 \_printpages #1,:,\_par}
@@ -360,7 +360,7 @@
    \_ifx,#1,\_uselastpgnum
    \_else \_def\_tmpa{#2}%
       \_ifx\_pgtype\_tmpa \_else
-         \_let\_pgtype=\_tmpa 
+         \_let\_pgtype=\_tmpa
          \_uselastpgnum \_usepgcomma \_pgprint#1:{#2}%
          \_tmpnum=#1 \_returnfi \_fi
       \_ifnum\_tmpnum=#1 \_returnfi \_fi
@@ -374,7 +374,7 @@
    \_ea\_printpages \_fi
 }
 \_def\_returnfi #1\_relax{\_fi}
-\_def\_uselastpgnum{\_ifx\_lastpgnum\_undefined 
+\_def\_uselastpgnum{\_ifx\_lastpgnum\_undefined
    \_else \_ea\_pgprint\_lastpgnum \_let\_lastpgnum=\_undefined \_fi
 }
 \_def\_usepgcomma{\_ifnum\_tmpnum>0, \_fi} % comma+space between page numbers
@@ -381,15 +381,15 @@
 \_def\_usepgdash{\_hbox{--}}               % dash in the <from>--<to> form
 
    \_doc -----------------------------
-   You can re-define \`\_pgprint` `<gpageno>:{<iitype>}` 
+   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   
+   \_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>}
@@ -397,8 +397,8 @@
 
    \_doc -----------------------------
    The \`\iindex``{<word>}` puts one <word> to the index. It writes
-   \^`\_Xindex``{<word>}{<iitype>}` to the `.ref` file. 
-   All othes variants of indexing macros expands internally to `\iindex`.
+   \^`\_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~{ }%
@@ -407,8 +407,8 @@
 
    \_doc -----------------------------
    The \`\_Xindex``{<word>}{<iitype>}` stores `\,<word>` to the `\_iilist` if
-   there is first occurrence of the <word>. The list of pages where `<word>`
-   occurs, is the value of the macro `\,<word>`, so the `<gpageno>:<iitype>` 
+   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>`.
@@ -427,7 +427,7 @@
 
    \_doc -----------------------------
    The implementation of macros \`\ii`, \`\iid`, \`\iis` follows.
-   Note that `\ii` works in horizontal mode on order to the `\write` whatsit 
+   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

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/maketoc.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/maketoc.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/maketoc.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-% This is part of OpTeX project, see http://petr.olsak.net/optex
+% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl \maketoc {Macros for maketoc <2020-03-12>} % preloaded in format
 
@@ -12,7 +12,7 @@
    * `<type>`:    the type of the level, i.e. chap, sec, secc
    * `<number>`:  the number of the chapter/section/subsection in the format 1.2.3
    * `<title>`:   the title text
-   * `<gpageno>`: the page number numbered from 1 independently of pagination 
+   * `<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
@@ -22,7 +22,7 @@
    because the <title> can include something like \code{`\{`}.
    \_cod ------------------------------------
 
-\_def\_toclist{} 
+\_def\_toclist{}
 \_newifi \_ifischap \_ischapfalse
 
 \_def\_Xtoc#1#2#3{\_ifnum#1=0 \_ischaptrue\_fi
@@ -33,14 +33,14 @@
    \`\_tocline``{<level>}{<type>}{<number>}{<title>}{<gpageno>}{<pageno>}` prints
    the record to the table of contents. It opens group, reduces `\_leftskip`,
    `\_rightskip`, runs the \^`\everytocline` (user can customise the design of TOC
-   here) and runs `\_tocl:<level> {<number>}{<title>}{<pageno>}` macro. 
+   here) and runs `\_tocl:<level> {<number>}{<title>}{<pageno>}` macro.
    This macro starts with vertical mode,
    inserts one record with given `<level>` and it should end by \^`\_tocpar`
-   which returns to hrizontal mode. The `\_tocpar`
+   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:
-   \begtt
+   `\_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
@@ -47,9 +47,9 @@
                    text text .................... <pageno>
    \endtt
    Margins given by `\leftskip` and `\rightskip` are denoted by `|` in the
-   examle above. 
+   examle above.
    \nl
-   \`\tocrefnum` is global counter of all TOC records (used by hyperlinks).
+   \`\tocrefnum` is the global counter of all TOC records (used by hyperlinks).
    \_cod ------------------------------------
 
 \_newcount \_tocrefnum
@@ -60,7 +60,7 @@
       \_ifischap \_advance\_leftskip by \_iindent \_fi
       \_def\_pgn{\_ilink[pg:#5]}%
       \_the\_everytocline
-      \_ifcsname _tocl:#1\_endcsname 
+      \_ifcsname _tocl:#1\_endcsname
          \_cs{_tocl:#1}{#3}{\_scantextokens{#4}}{#6}\_par
       \_fi
    \_egroup
@@ -97,15 +97,15 @@
 
    \_doc -----------------------------------
    \`\maketoc` prints warning if TOC data is empty, else it creates TOC by
-   running \^`\_toclist` 
+   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 
+   \_else \_begingroup
+      \_tocrefnum=0 \_penalty11333
+      \_the\_regtoc \_toclist
    \_endgroup \_fi
 }
 
@@ -115,7 +115,7 @@
    \^`\pdfunidef`.
    \_cod \_fin -----------------------------
 
-\_newtoks \_regtoc  \_newtoks \_regmark  \_newtoks \_regoul  
+\_newtoks \_regtoc  \_newtoks \_regmark  \_newtoks \_regoul
 
 \_def\_regmacro #1#2#3{%
    \_toksapp\_regtoc{#1}\_toksapp\_regmark{#2}\_toksapp\_regoul{#3}%
@@ -122,7 +122,7 @@
 }
 \_public \maketoc \regmacro ;
 
-\_endcode 
+\_endcode
 
 2020-04-23 \_tocpar introduced (incompatible change)
 2020-04-22 \_pg -> \_pgn (incompatible change)

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/margins.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/margins.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/margins.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl \margins {Macros for margins setting <2020-03-14>} % preloaded in format
 
@@ -43,7 +43,7 @@
 \_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 
+\_def\_setpagedimensB (#1,#2)#3 {\_setpagedimensC\_pgwidth=#1:#3
                                  \_setpagedimensC\_pgheight=#2:#3
         \_pdfpagewidth=\_pgwidth \_pdfpageheight=\_pgheight
 }
@@ -67,7 +67,7 @@
 \_def\_trueunit{}
 \_def\_magscale[#1]{\_mag=#1\_def\_trueunit{true}%
    \_ifdim\_pgwidth=0pt \_else \_truedimen\_pgwidth \_truedimen\_pgheight \_fi
-   \_truedimen\_pdfpagewidth \_truedimen\_pdfpageheight 
+   \_truedimen\_pdfpagewidth \_truedimen\_pdfpageheight
 }
 \_def\_truedimen#1{\_ifx\_trueunit\_empty \_else#1=\_ea\_ignorept\_the#1truept \_fi}
 

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/math-macros.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/math-macros.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/math-macros.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,34 +1,34 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl \sin {Math macros plus mathchardefs <2020-06-13>} % preloaded in format
 
    \_doc -----------------------------
-   The category code of the character `_` remains as letter (11) and the mathocode 
-   of it is `"8000`. 
-   It means that it is active character in math mode. It is defined as subscript prefix.
+   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 problem. But `\int``_a^b` is tokenized as `\int``_a`, `^`, `b`. The
+   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 our own
+   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 sequence of letters) because such control sequences are
+   <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> _<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 second line of the document.
+   read, so the \^`\mathsbon` is activated from the second line of the document.
    \_cod -----------------------------
 
 \catcode`\_ = 8   \let\sb = _
 \catcode`\_ = 13  \let _ = \sb
-\catcode`\_ = 11  
+\catcode`\_ = 11
 \_private \sb ;
 
 \_newifi\_ifmathsb   \_mathsbfalse
@@ -48,8 +48,8 @@
 
    \_doc -----------------------------
    All mathcodes are set to equal values as in plain\TeX/.
-   But all encoding-dependend declarations (like these) will be set 
-   to different values when Unicode-math font is used.
+   But all encoding-dependent declarations (like these) will be set
+   to different values when a Unicode-math font is used.
    \_cod -----------------------------
 
 \_mathcode`\^^@="2201 % \cdot
@@ -181,7 +181,7 @@
 \_mathchardef\Im="023D
 \_mathchardef\partial="0140
 \_mathchardef\infty="0231
-\_mathchardef\prime="0230   
+\_mathchardef\prime="0230
 \_mathchardef\emptyset="023B
 \_mathchardef\nabla="0272
 \_protected\_def \surd{{\_mathchar"1270}}
@@ -205,7 +205,7 @@
 \_mathchardef\biguplus="1355
 \_mathchardef\bigcap="1354
 \_mathchardef\bigcup="1353
-\_mathchardef\intop="1352  
+\_mathchardef\intop="1352
 \_protected\_def \int{\_intop\_nolimits}  \_private \intop;
 \_mathchardef\prod="1351
 \_mathchardef\sum="1350
@@ -263,7 +263,7 @@
 \_mathchardef\swarrow="322E
 \_mathchardef\Leftrightarrow="322C
 \_mathchardef\Leftarrow="3228
-\_mathchardef\Rightarrow="3229 
+\_mathchardef\Rightarrow="3229
 \_protected\_def \neq{\_not=} \_let\ne=\neq
 \_mathchardef\leq="3214 \let\le=\leq
 \_mathchardef\geq="3215 \let\ge=\geq
@@ -282,7 +282,7 @@
 \_mathchardef\ll="321C
 % \_mathchardef\not="3236  % defined below
 \_mathchardef\leftrightarrow="3224
-\_mathchardef\leftarrow="3220  \_let\gets=\leftarrow 
+\_mathchardef\leftarrow="3220  \_let\gets=\leftarrow
 \_mathchardef\rightarrow="3221 \_let\to=\rightarrow
 \_mathchardef\mapstochar="3237
 \_protected\_def\mapsto{\_mapstochar\_rightarrow}  \_private \mapstochar \rightarrow ;
@@ -293,13 +293,13 @@
 \_mathchardef\asymp="3210
 \_mathchardef\smile="315E
 \_mathchardef\frown="315F
-\_mathchardef\leftharpoonup="3128  
+\_mathchardef\leftharpoonup="3128
 \_mathchardef\leftharpoondown="3129
 \_mathchardef\rightharpoonup="312A
-\_mathchardef\rightharpoondown="312B  
+\_mathchardef\rightharpoondown="312B
 
    \_doc -----------------------------
-   The math functions like log, sin, cos are declared in tha same way as in
+   The math functions like log, sin, cos are declared in the same way as in
    plain\TeX/, but they are `\protected` in \OpTeX/.
    \_cod -----------------------------
 
@@ -337,17 +337,17 @@
 \_protected\_def\deg {\_mathop{\_rm deg}\_nolimits}
 
    \_doc -----------------------------
-   These macros are defined similarly as in plain\TeX. Only internal macro 
-   names from plain\TeX/ with `@` character are re-written in more readable
+   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 alternative for `^`. The \`\sb` alternative for `_` was defined
-   at the line 27 of the file `math-macros.opm`. 
+   \`\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} 
+\_def\_thinsk {\_mskip\_thinmuskip}
 \_protected\_def\,{\_relax\_ifmmode \_thinsk \_else \_thinspace \_fi}
 \_protected\_def\>{\_mskip\_medmuskip}    \let\_medsk   = \>
 \_protected\_def\;{\_mskip\_thickmuskip}  \let\_thicksk = \;
@@ -366,7 +366,7 @@
 \_private \prime ;
 
    \_doc -----------------------------
-   \`\big`, \`\Big`, \`\bigg`, \`\Bigg`, \`\bigl`, \`\bigm`, \`\bigr`, \`\Bigl`, \`\Bigm`, 
+   \`\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.
@@ -376,8 +376,8 @@
 
 \_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\_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 ;
@@ -397,26 +397,26 @@
 \_public \bigl \bigm \bigr \Bigl \Bigm \Bigr \biggl \biggm \biggr \Biggl \Biggm \Biggr ;
 
    \_doc -----------------------------
-   Math relations defined by the \`\jointrel` plain \TeX/ macro: 
+   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 
+\_mathchardef\lhook="312C
 \_protected\_def\hookrightarrow{\_lhook\_joinrel\_rightarrow}
-\_mathchardef\rhook="312D 
-\_protected\_def\hookleftarrow{\_leftarrow\_joinrel\_rhook} 
+\_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\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} 
+\_protected\_def\iff{\_thicksk\_Longleftrightarrow\_thicksk}
 \_private \lhook \rightarrow \leftarrow \rhook \triangleright \triangleleft
    \Relbar \Rightarrow \relbar \rightarrow \Leftarrow \mapstochar
    \longrightarrow \Longleftrightarrow ;
@@ -442,7 +442,7 @@
 \_public \ldots \cdots \vdots \ddots ;
 
    \_doc -----------------------------
-   \`\adots` ispired by plain \TeX/
+   \`\adots` inspired by plain \TeX/
    \_cod -----------------------------
 
 \_protected\_def\_adots{\_mathinner{%
@@ -643,8 +643,8 @@
 
    \_doc -----------------------------
    The \`\eqalign` macro behaves like in Plain \TeX/ by default.
-   It creates the `\vcenter` in the math mode. The contents is two column
-   `\halign` with right aligned left column and left aligned right column.
+   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.
@@ -653,11 +653,11 @@
    \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. 
+   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 the space \^`\eqspace`/2 at its both sides.
+   (if used) has space \^`\eqspace`/2 at its both sides.
    \_cod -----------------------------
 
 \_long\_def\_eqalign#1{\_null\_thinsk\_vcenter{\_the\_eqlines\_math
@@ -681,7 +681,7 @@
    \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 to more pages, but this case
+   so lines cannot be broken into more pages, but this case
    enables to use `\eqno` or `\leqno` or \^`\eqmark`.
    \_cod -----------------------------
 
@@ -725,11 +725,11 @@
 \_public \openup \eqalignno \leqalignno ;
 
    \_doc -----------------------------
-   These macros are inspired from `ams-math.tex` file.
+   These macros are inspired by `ams-math.tex` file.
    \maxlines=15
    \_cod -----------------------------
 
-\_def\_amsafam{4} \_def\_amsbfam{5} 
+\_def\_amsafam{4} \_def\_amsbfam{5}
 
 \_mathchardef \boxdot   "2\_amsafam 00
 \_mathchardef \boxplus   "2\_amsafam 01
@@ -988,7 +988,7 @@
   \_else \_ifcsname _n\_tmpn\_endcsname \_csname _n\_tmpn\_endcsname
   \_else \_mathrel{\_mathord{\_notchar}\_mathord{#1}}%
   \_fi \_fi \_fi \_fi}
-\_private 
+\_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
@@ -999,32 +999,50 @@
 
    \_doc -----------------------------
    \`\mathstyles``{<math list>}`
-   behaves like `{<math list>}`, but you can use following commands in the
+   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. 
+     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.  
+   * 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`: 
+   Example of usage of \^`\mathstyles`:
    `\def\mathframe#1{\mathstyles{\frame{$\currstyle#1$}}}`.
-   \_cod -----------------------------   
+   \_cod -----------------------------
 
 \_newcount\_stylenum
 \_def\_mathstyles#1{{\_mathchoice{\_stylenum0 #1}{\_stylenum1 #1}%
-                                {\_stylenum2 #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}
+\_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 smaller
+   It behaves like `\hbox{<text>}` but the `<text>` is scaled to a smaller
    size if it is used in scriptstyle or scriptscript style.
    \_cod -----------------------------
 

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/math-preload.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/math-preload.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/math-preload.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,10 +1,10 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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 
+\_codedecl \normalmath {Math fonts CM + AMS preloaded <2020-05-06>} % preloaded in format
 
   \_doc ------------------------------
-  We have two math macros \`\normalmath` for normal shape of all math
-  symbols and \`\boldmath` for bold shape of all math symbols. The second one
+  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 ------------------------------
@@ -13,7 +13,7 @@
   \_loadmathfamily 0 cmr  % CM Roman
   \_loadmathfamily 1 cmmi % CM Math Italic
   \_loadmathfamily 2 cmsy % CM Standard symbols
-  \_loadmathfamily 3 cmex % CM extra symbols   
+  \_loadmathfamily 3 cmex % CM extra symbols
   \_loadmathfamily 4 msam % AMS symbols A
   \_loadmathfamily 5 msbm % AMS symbols B
   \_loadmathfamily 6 rsfs % script
@@ -28,7 +28,7 @@
   \_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 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?)
@@ -44,11 +44,11 @@
 \_def \normalmath {\_normalmath}  \_def\boldmath {\_boldmath}
 
    \_doc -----------------------------
-   The classical math family selectors 
+   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. 
+   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].
@@ -59,10 +59,10 @@
 %\_chardef\_ttfam = 10
 %\_chardef\_itfam = 11
 
-\_protected\_def \_rm {\_tryloadrm \_tenrm \_fam0 } 
+\_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 \_bi {\_tryloadbi \_tenbi \_fam\_bifam}
 \_protected\_def \_tt {\_tryloadtt \_tentt}
 
 \_protected\_def \_mit    {\_fam1 }
@@ -74,7 +74,7 @@
 \_public \rm \bf \it \bi \tt \mit \cal \bbchar \frak \script ;
 
    \_doc -----------------------------
-   The optical sizes of Computer Modern fonts, AMS and other fonts
+   The optical sizes of Computer Modern fonts, AMS, and other fonts
    are declared here.
    \_cod -----------------------------
 
@@ -85,13 +85,13 @@
 \_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 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 
+\_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 *
@@ -109,17 +109,17 @@
 
 %% 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 * 
+\_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.\ 
+   \`\_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>`.
@@ -130,13 +130,13 @@
    \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 
+   \`\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
    \`\_corrmsizes` should be used in the \^`\normalmath` and \^`\boldmath`
    macros if you need a size correction when a selected math family is
-   loaded. It is similar as ex-height correction but for math fonts. 
+   loaded. It is similar to ex-height correction but for math fonts.
    \_cod -----------------------------
 
 \_def\_corrmsizes{\_ptmunit=1\_ptunit\_relax} % for corrections of sizes in diferent fomts
@@ -156,7 +156,7 @@
   \_optsize=\_optsizesave \_let#2=\_mF
 }
 \_def\_setmathsizes[#1/#2/#3]{%
-   \_def\_sizemtext{#1\_ptmunit}\_def\_sizemscript{#2\_ptmunit}% 
+   \_def\_sizemtext{#1\_ptmunit}\_def\_sizemscript{#2\_ptmunit}%
    \_def\_sizemsscript{#3\_ptmunit}%
 }
 \_newdimen\_ptunit   \_ptunit=1pt
@@ -177,18 +177,18 @@
   \_scriptspace=0.05\_fontdimen6\_textfont3
   \_skewchar\_textfont1=127 \_skewchar\_scriptfont1=127
   \_skewchar\_scriptscriptfont1=127
-  \_skewchar\_textfont2=48  \_skewchar\_scriptfont2=48 
-  \_skewchar\_scriptscriptfont2=48 
+  \_skewchar\_textfont2=48  \_skewchar\_scriptfont2=48
+  \_skewchar\_scriptscriptfont2=48
   \_skewchar\_textfont6=127 \_skewchar\_scriptfont6=127
   \_skewchar\_scriptscriptfont6=127
 }
 
    \_doc -----------------------------
-   Finaly, we preload a math fonts colleciton in [10/7/5] sizes 
+   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 format is
+   `\_suppressfontnotfounderror=1` because we need not errors when the format is
    generated. Maybe there are not all fonts in the \TeX/ distribution
-   installed. 
+   installed.
    \_cod -----------------------------
 
 \_suppressfontnotfounderror=1
@@ -203,11 +203,11 @@
 (typically 128 characters).
 
 On the other hand, when \^`\fontfam` macro is used in the document then text
-font family and appropriate math family is loaded with Unicoded fonts, i.e.
-Unicoded-math is used. It re-defines all settings given here.
+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 
+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
@@ -215,7 +215,7 @@
 \setmathsizes[12/8.4/6]\normalmath ... math typesetting at 12 pt is ready.
 \endtt
 
-\_endinput 
+\_endinput
 
 2020-05-06: \itfam, \ttfam removed, (Unicode math preferred)
 2020-04-14: \skewchar\fam6 added

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/math-unicode.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/math-unicode.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/math-unicode.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,14 +1,14 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl \loadmath {Unicode Math fonts <2020-06-06>} % preloaded in format
 
    \_doc -----------------------------
-   \`\loadmath` `{<Unicode-math font>}` loads given font. It does:
+   \`\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 loaded font on the terminal,
+   * 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
@@ -28,7 +28,7 @@
       \_opwarning{Math font "#1" not found, skipped...}%
    \_else
       \_def\_unimathfont{#1}%
-      \_let\_normalmath = \_normalunimath  \_let\_boldmath = \_boldunimath 
+      \_let\_normalmath = \_normalunimath  \_let\_boldmath = \_boldunimath
       \_normalmath
       \_wterm {MATH-FONT: "#1" -- unicode math prepared.}%
       \_ifx\_ncharrmA\_undefined \_opinput {unimath-codes.opm}\_fi
@@ -40,7 +40,7 @@
    \_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.
+   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 -----------------------------
@@ -48,7 +48,7 @@
 \_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...}   
+      \_opwarning{Bold-Math font "#1" not found, skipped...}
    \_else
       \_def\_unimathboldfont{#1}%
       \_wterm {MATH-FONT: "#1" -- unicode math bold prepared.}%
@@ -59,8 +59,15 @@
    \_doc -----------------------------
    The Unicode version of the \^`\normalmath` and \^`\boldmath` macros
    are defined here as \`\_normalunimath` and \`\_boldunimath` macros.
-   They are using \`\_setunimathdimens` in similar sense as 
+   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{%
@@ -69,7 +76,7 @@
     \_setunimathdimens
 }%
 \_def\_boldunimath{%
-    \_ifx\_unimathboldfont \_undefined 
+    \_ifx\_unimathboldfont \_undefined
        \_loadumathfamily 1 {\_unimathfont}{embolden=1.7;} % Base faked bold
     \_else
        \_loadumathfamily 1 {\_unimathboldfont}{} % Base real bold font
@@ -86,20 +93,36 @@
 }
 
    \_doc -----------------------------
-   \`\_loadumathfamily` `<number> {<font>}{<font features>}` 
-   loads the given Unicode-math fonts in three sizes given by the 
+   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`
+   \`\_mfontfeatures` and to the size-dependent features `+ssty=0`
    if script size is asked or `+ssty=1` if scriptscriptsize is asked.
-   If the fath family 1 is loaded then the family 2 and 3 is set by the same
-   font because \TeX/ needs to read dimension information about generating 
+   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.
    \_cod -----------------------------
 
 \_def\_umathname#1#2{"#1:\_mfontfeatures#2"}
-\_def\_mfontfeatures{mode=base;script=math;} 
+\_def\_mfontfeatures{mode=base;script=math;}
 
 \_def\_loadumathfamily #1 #2#3 {%
   \_edef\_optsizesave{\_the\_optsize}%
@@ -108,35 +131,35 @@
   \_optsize=\_sizemscript \_font\_mF=\_umathname{#2}{+ssty=0;#3} at\_optsize \_scriptfont#1=\_mF
   \_ifnum#1=1 \_scriptfont2=\_mF \_scriptfont3=\_mF \_fi
   \_optsize=\_sizemsscript \_font\_mF=\_umathname{#2}{+ssty=1;#3} at\_optsize\_scriptscriptfont#1=\_mF
-  \_ifnum#1=1 \_scriptscriptfont2=\_mF \_scriptscriptfont3=\_mF \_fi  
+  \_ifnum#1=1 \_scriptscriptfont2=\_mF \_scriptscriptfont3=\_mF \_fi
   \_optsize=\_optsizesave \_relax
 }
 
    \_doc -----------------------------
    Unicode math font includes all typical math alphabets together, user needs not to
-   load more \TeX/ math families. These math aphabets are encoded by
+   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 
+   \nl
    \`\_umathrange` `{<from->-<to>}<class><family>\<first>` sets `\Umathcode`s
-   of the characters in the interval `<from>-<to>` to `\<first>`, 
+   of the characters in the interval `<from>-<to>` to `\<first>`,
    `\<first>+1`, `\<first>+2`
-   etc., but \`\_umathcharholes` are skipped 
+   etc., but \`\_umathcharholes` are skipped
    (`\_umathcharholes` are parts of the Unicode table not designed for math
-   alphabets but they causes that the math alphabets are 
+   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`.   
+   The `<from>-<to>` clause includes normal letters like `A-Z`.
    \nl
-   \`\_umahrangegreek` `\<first>` is the same as 
+   \`\_umahrangegreek` `\<first>` is the same as
    `\_umathrange {<alpha>-<omega>}\<first>`.
    \nl
-   \`\_umahrangeGREEK` `\<first>` is the same as 
+   \`\_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`, 
+   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 -----------------------------
@@ -176,41 +199,35 @@
 
 
 The \^`\loadmath` `{<Unicode-math font>}` macro loads math fonts and
-redefines all default math-codes using `\input unimath-codes.opm`. 
+redefines all default math-codes using `\input unimath-codes.opm`.
 If Unicode-math font is loaded then \^`\_mathloadingfalse`
-is set, so new UnicodeMath font isn't loaded until \^`\doloadmath` is used.
+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 `\loadmath`. For example:
+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.
 
-You can combine more fonts, if you register them to another
-math families (5, 6, 7, etc.) in the `\normalmath` macro.
-
-The default value of `\normalmath` shows a combination of base Unicode Math
-font with 8bit Math font at family 4. See definition of `\script` macro where
-`\fam4` is used. Of course, we need to set `\rmvariables` too, because 8bit font
-accepts only codes less than 255.
-
-See \url{http://tex.stackexchange.com/questions/308749/} for more technical details.
-
 The \^`\loadmath` macro was succesfully tested on:
 
 \begtt
 \loadmath{[XITSMath-Regular]}       ... XITS MATH
 \loadmath{[latinmodern-math]}       ... Latin Modern Math
-\loadmath{[texgyretermes-math]}     ... TeXGyre Termes Math 
-\loadmath{[texgyrebonum-math]}      ... TeXGyre Bonum Math 
-\loadmath{[texgyrepagella-math]}    ... TeXGyre Pagella Math 
+\loadmath{[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{[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
@@ -217,6 +234,7 @@
 
 \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

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/more-macros.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/more-macros.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/more-macros.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl \eoldef {OpTeX useful macos <2020-05-22>} % preloaded in format
 
@@ -5,12 +5,12 @@
    \_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 are returned back to
+   (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.
 
-   In order to achieve this, we declare \`\optexcatcodes` catcode table
+   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.
@@ -19,7 +19,7 @@
    the `<catcode table>`. The \`\restorectable` returns to the saved catcodes
    from the catcode table stack.
 
-   The `\opinput` works inside catcode table stack. It reads `\optexcatcodes`
+   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
@@ -82,7 +82,7 @@
    The \`\load` `[<filename-list>]` loads files specfied in
    comma separated `<filename-list>`. The first space (after comma)
    is ignored using the trick `#1#2,`: first parameter is unseparated.
-   The `\load` macro saves the information about loaded files by setting
+   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`.
@@ -135,7 +135,7 @@
    The macro defined by `\eoldef` cannot be used with its parameter inside
    other macros because the catcode dancing is not possible here. But the
    \`\bracedparam``\macro{<parameter>}` can be used here. The `\bracedparam`
-   is a prefix which re-sets temporarily the `\macro` to a `\macro` with
+   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 
@@ -167,7 +167,7 @@
    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 chracter which means that
+   order to be able to use `^^J` as comment character which means that
    the next line continues.
    \_cod -----------------------------
 
@@ -186,15 +186,26 @@
    `<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{\_def #1{##1}\_replacestringsB}%
-   \_long\_def\_replacestringsB##1#2{\_ifx!##1\_relax \_else \_addto #1{#3##1}%
-      \_ea\_replacestringsB\_fi}%      
+   \_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?{\_def #1{##1}}\_ea\_replacestringsA #1}
+   \_long\_def\_replacestringsA##1?{\_tmptoks{##1}\_edef#1{\_the\_tmptoks}}%
+   \_ea\_replacestringsA \_the\_tmptoks}
 \_normalcatcodes
 
 \_public \replstring ;
@@ -217,15 +228,12 @@
    \nl
    The 	`\_ea`\`\ignorept``\the<dimen>` expands to a decimal
    number `\the<dimen>` but without `pt` unit.
-   \nl
-   The \`\ignoreit``<token>` just ignores the `<token>`.
    \_cod -----------------------------
 
 \_def\_removespaces #1 {\_isempty{#1}\_iffalse #1\_ea\_removespaces\_fi}
 \_ea\_def \_ea\_ignorept \_ea#\_ea1\_detokenize{pt}{#1}
-\_def\_ignoreit#1{}
 
-\public \removespaces \ignorept \ignoreit ;
+\public \removespaces \ignorept ;
 
    \_doc -----------------------------
    You can use expandable \`\bp``{<dimen>}` convertor from
@@ -237,11 +245,11 @@
    \endtt
    You can use expandable \`\expr``{<expression>}` for analogical purposes.
    It expands to the value of the `<expression>` at expand processor level
-   with \`\_decdigits` digits after decimal point.
+   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 user can re-define the control sequences `\expr` or `\bp`.
+   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.
@@ -257,7 +265,7 @@
    \_doc ------------------
    The pair {\`\_doc` ... \`\_cod`} is used for documenting macros and to
    printing the technical documentation of the \OpTeX/. The syntax is:
-   {\begtt
+   {\begtt \catcode`\<=13
    \_doc <ignored text>
    <documentation>
    \_cod <ignored text>

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/multicolumns.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/multicolumns.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/multicolumns.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl \begmulti {Balanced columns <2020-03-26>} % preloaded in format
 
@@ -5,15 +5,15 @@
    \_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 
+   Roughly speaking, macros complete all material between
    \`\begmulti``<num-columns>` and \`\endmulti`
-   into one `\vbox 6`. Then the macro measures the amount of free space at the current 
-   page using `\pagegoal` and `\pagtotal` and does `\vsplit` of `\vbox 6` to 
-   columns with height of such free space. This is done only if we have
-   enought amount of material in `\vbox 6` to fill full page by columns.
-   This is repeated in loop until we have less amount of material in `\vbox 6`.
-   Then we run `\_balancecolumns` which balances the last part of columns.
-   Each part of printed material is distributed to main vertical list as
+   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
@@ -34,8 +34,8 @@
    \_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 
+   \_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
@@ -53,7 +53,7 @@
 
    \_doc -----------------------------
    Splitting columns...
-   \_cod -----------------------------   
+   \_cod -----------------------------
 
 \_def\_makecolumns{\_bgroup % full page, destination height: \dimen1
    \_vbadness=20000 \_setbox1=\_hbox{}\_tmpnum=0

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/optex.ini
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/optex.ini	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/optex.ini	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 %% OpTeX ini file
 %% Petr Olsak <project started from: Jan. 2020>
@@ -21,7 +21,7 @@
 
 % OpTeX version
 
-\def\optexversion{Beta 0.18 Dec.2020}
+\def\optexversion{Beta 0.19 Jan.2021}
 \def\fmtname{OpTeX}
 
 % Engine testing:

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/optex.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/optex.lua	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/optex.lua	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
--- This is part of OpTeX project, see http://petr.olsak.net/optex
+-- This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 -- The basic lua functions and declarations used in \OpTeX/ are here
 
@@ -20,10 +20,9 @@
 --
 -- An attribute allocator in Lua that cooperates with normal \OpTeX/ allocator.
 local attributes = {}
-local attribute_max = registernumber("_maiattribute")
 function alloc.new_attribute(name)
     local cnt = tex.count["_attributealloc"] + 1
-    if cnt > attribute_max then
+    if cnt > 65534 then
         tex.error("No room for a new attribute")
     else
         tex.setcount("global", "_attributealloc", cnt)
@@ -33,6 +32,9 @@
     end
 end
 --
+-- `provides_module` is needed by older version of luaotfload
+provides_module = function() end
+--
 -- CALLBACKS
 callback = callback or {}
 --
@@ -341,6 +343,7 @@
 luatexbase = {
     registernumber = registernumber,
     attributes = attributes,
+    provides_module = provides_module,
     new_attribute = alloc.new_attribute,
     callback_descriptions = callback.callback_descriptions,
     create_callback = callback.create_callback,

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/others.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/others.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/others.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl \uv {Miscenaleous <2020-05-22>} % preloaded in format
 
@@ -10,20 +10,18 @@
 
     \_doc ----------------------------
     The \`\lastpage` and \`\totalpages` get the information from the
-    \^`\_currpage`. The \^`\_Xpage` from `.ref` file sets the \^`\_currpage`.  
+    \^`\_currpage`. The \^`\_Xpage` from `.ref` file sets the \^`\_currpage`.
     \_cod ----------------------------
 
-\_def\_totalpages {\_openref\_ea\_lastpageA\_currpage}
-\_def\_lastpage   {\_openref\_ea\_lastpageB\_currpage}
-\_def\_lastpageA #1#2{#1}
-\_def\_lastpageB #1#2{#2}
+\_def\_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
+    \`\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 ----------------------------
 
@@ -36,18 +34,18 @@
 
 \_def\uv#1{\clqq#1\crqq}
 
-\_let\uslang=\enlang  \_let\ehyph=\enlang  
+\_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`. 
+    The \`\letfont` was used in \csplain/ instead of `\fontlet`.
     \_cod ----------------------------
 
 \_let \letfont = \_fontlet
 
     \_doc ----------------------------
-    Non breaking space in Unicode.
+    Non-breaking space in Unicode.
     \_cod ----------------------------
 
 \let ^^a0=~
@@ -63,7 +61,7 @@
     We don't want to read `opmac.tex` unless `\input opmac` is specified.
     \_cod ----------------------------
 
-\_def\OPmacversion{OpTeX}  
+\_def\OPmacversion{OpTeX}
 
     \_doc ----------------------------
     We allow empty lines in math formulae. It is more comfortable.
@@ -76,29 +74,33 @@
     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 \_lipsum {%
-   {\_long\_def\ProvidesFile##1[##2]##3{\_ifx\_par##3\_relax\_else \_ea##3\_fi}\_tmpnum=0
-    \_def\NewLipsumPar{\_advance\_tmpnum by1 
-       \_afterassignment\_negativermnm \_sxdef{lips:\_the\_tmpnum}}%
-    \_opinput {lipsum.ltd.tex}%
-    \_global\_let \_lipsum=\_reallipsum
-   }\_lipsum
-}
-\_def\_negativermnm{\_romannumeral-`\.} 
-\_def\_reallipsum[#1]{\_lipsumA #1\_empty-\_empty\_end} 
+\_def\_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 {\_csname lips:##1\_endcsname \par}}
+   \_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{\_advance\_tmpnum by1 \_sxdef{_lip:\_the\_tmpnum}}%
+      \_opinput {lipsum.ltd.tex}%
+      \_global\_let\_lipsumload=\_empty
+   }}}
+\_public \lipsum \lipsumtext ;
+\_let \lorem=\lipsum
 
-\def\lipsum {\_lipsum}
-\def\lorem  {\_lipsum}
-
 \_endcode
 
+2021-01-04 \lipsumtext introduced
 2020-05-22 \lipsum uses \fornum (expandable after first usage)
-2020-04-02 released
\ No newline at end of file
+2020-04-02 released

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/outlines.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/outlines.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/outlines.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl \outlines {PDF outlines <2020-03-12>} % preloaded in format
 
@@ -12,7 +12,7 @@
      {\_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 
+      \_tocrefnum=0 \_count0=0 \_count1=0 \_count2=0 \_count3=0
       \_toclist}% create outlines
    \_fi
 }
@@ -61,38 +61,38 @@
 should be calculated from TOC data. We use two steps over TOC data saved in
 the `\_toclist` where each record is represented by one `\_tocline`.
 
-First step, the \`\outlines` macro sets `\_tocline` to \`\_outlinesA` and
-calculates the number of direct descendants of each record. Second step, 
-the `\outlines` macro sets `\_tocline` to \`\_outlinesB` and it uses prepared 
-data and create outlines.
+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 ouline is mapped to the control sequence of the type
+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), third
-one for level 2 (sections) etc. The number of direct descentants will be stored
-in these macros after first step is finished. Each new outline of given level
-increases the `<num>` at given level. When the first step is processed then
-(above that) the `\_ol:..` sequence of the parent inceases its value too. The
+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 
+   \advance \count2 by 1
+                    % increases the mapping pointer of the type
+                    % \_ol:\_count0:\_count1:\_count2 of this section
+   \advance \_ol:\_count0:\_count1 by 1
+                    % increases the number of descendants connected
                     % to the parent of this section.
 \endtt
 
-When second step is processed, then we only read the stored data about the
-number of descentants. Ad we use it in `count` parameter of `\_pdfoutline`
+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` 
+For linking, we use the same links as in TOC, i.e. the `toc:\_the\_tocrefnum`
 labels are used.
 
 \`\insertoutline` `{<text>}` inserts one outline with zero direct descendants.
-It creates link destination of the type `oul:<num>` into the document
+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.

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/output.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/output.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/output.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,9 +1,9 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl \nopagenumbers {Output routine <2020-03-28>} % preloaded in format
 
    \_doc -----------------------------
-   \`\_optexoutput` is default output routine. You can create another...
+   \`\_optexoutput` is the default output routine. You can create another...
    \_cod -----------------------------
 
 \_output={\_optexoutput}
@@ -13,17 +13,17 @@
    Default \`\_begoutput` and \`\_endoutput` is defined.
    If you need another functionality implemented in the output routine, you can
    \^`\addto``\_begoutput{...}` or \^`\addto``\_endoutput{...}`. The settings
-   here is local in the `\output` group.
+   here are local in the `\output` group.
 
-   The \`\_prepoffsets` can set `\hoffset` differently for left or right
+   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 another macros are re-defined here (locally) for their usage 
+   Logos and other macros are re-defined here (locally) for their usage
    in headlines or footlines.
    \_cod -----------------------------
 
-\_def \_begoutput{\_incr\_gpageno 
+\_def \_begoutput{\_incr\_gpageno
    \_immediate\_wref\_Xpage{{\_the\_gpageno}{\_folio}}%
    \_setxhsize \_prepoffsets \_the\_regmark}
 \_def \_endoutput{\_advancepageno
@@ -34,13 +34,13 @@
 
    \_doc -----------------------------
    The `\hsize` value can be changed at various places in the document but
-   we need to have constant value \`\_xhsize` in output routine
+   we need to have a constant value \`\_xhsize` in the output routine
    (for headlines and footlines, for instance). This value is set
-   from current value of `\hsize` when \`\_setxhsize` macro is called.
-   This macro destroys itself, so the value is set only once. Typicaly it is
+   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 when first \^`\_optexoutput` routine is called (see \^`\_begoutput`).
-   Or it is called at begining of the \^`\begtt`...`\endtt` environment before
-   `\hsize` value is eventually changed by user in this environment.
+   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
@@ -47,7 +47,7 @@
 \_def\_setxhsize {\_global\_xhsize=\_hsize \_global\_let\_setxhsize=\_relax}
 
    \_doc -----------------------------
-   \`\gpageno` counts pages from one in whole document
+   \`\gpageno` counts pages from one in the whole document
    \_cod -----------------------------
 
 \_newcount\_gpageno
@@ -54,20 +54,20 @@
 \_public \gpageno ;
 
    \_doc -----------------------------
-   The \`\_completepage` is similar what plain \TeX/ does in its output routine.
+   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`) llaped down. It is shifted directly to the 
-   left-upper corner of the paper. 
+   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,
-   default value of the `\_ensureblack` macro is empty. But first usage of 
+   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.  
+   See the section~\ref[colors] for more details.
    \_cod -----------------------------
 
 \_def\_completepage{\_vbox{%
-     \_istoksempty \_pgbackground 
+     \_istoksempty \_pgbackground
         \_iffalse \_ensureblack{\_backgroundbox{\_the\_pgbackground}}\_nointerlineskip \_fi
      \_ensureblack{\_makeheadline}%
      \_vbox to\_vsize {\_boxmaxdepth=\_maxdepth \_pagecontents}% \pagebody in plainTeX
@@ -78,11 +78,11 @@
 \_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. 
+   \`\_makeheadline` creates `\vbox to0pt` with its contents (the \^`\headline`)
+   shifted by \^`\headlinedist` up.
    \_cod -----------------------------
 
-\_def\_makeheadline {\_istoksempty \_headline \_iffalse 
+\_def\_makeheadline {\_istoksempty \_headline \_iffalse
    \_vbox to\_zo{\_vss
                  \_baselineskip=\_headlinedist \_lineskiplimit=-\_maxdimen
                  \_hbox to\_xhsize{\_the\_headline}\_hbox{}}\_nointerlineskip
@@ -93,8 +93,8 @@
    The \`\_makefootline` appends the \^`\footline` to the page-body box.
    \_cod -----------------------------
 
-\_def\_makefootline{\_istoksempty \_footline \_iffalse 
-      \_baselineskip=\_footlinedist 
+\_def\_makefootline{\_istoksempty \_footline \_iffalse
+      \_baselineskip=\_footlinedist
       \_lineskiplimit=-\_maxdimen \_hbox to\_xhsize{\_the\_footline}
    \_fi
 }
@@ -101,12 +101,12 @@
 
    \_doc -----------------------------
    The \`\_pagecontents` is similar as in plain \TeX/. The only differnece is
-   that the \`\_pagedest` is inserted at the top of `\_pagecontents` and 
+   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 
+\_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
@@ -115,7 +115,7 @@
   \_kern-\_dimen0 \_vskip \_pgbottomskip
 }
 \_def \_pagedest {{\_def\_destheight{25pt}\_dest[pg:\_the\_gpageno]}}
-\_def \_footnoterule {\_kern-3pt \_hrule width 2truein \_kern 2.6pt } 
+\_def \_footnoterule {\_kern-3pt \_hrule width 2truein \_kern 2.6pt }
 
    \_doc -----------------------------
    \`\pageno`, \`\folio`, \`\nopagenumbers`, \`\advancepageno`
@@ -130,7 +130,7 @@
 \_def \_folio {\_ifnum\_pageno<0 \_romannumeral-\_pageno \_else \_number\_pageno \_fi}
 \_def \_nopagenumbers {\_footline={}}
 \_def \_advancepageno {%
-   \_ifnum\_pageno<0 \_global\_advance\_pageno by-1 \_else \_incr\_pageno \_fi 
+   \_ifnum\_pageno<0 \_global\_advance\_pageno by-1 \_else \_incr\_pageno \_fi
 } % increase |pageno|
 \_def \_raggedbottom {\_topskip=\_dimexpr\_topskip plus60pt \_pgbottomskip=0pt plus1fil\_relax}
 \_def \_normalbottom {\_topskip=\_dimexpr\_topskip \_pgbottomskip=0pt\_relax}
@@ -140,10 +140,10 @@
    \_doc -----------------------------
    Macros for footnotes are the same as in plain \TeX. There is only one
    difference: \`\vfootnote` is implemented as \`\_opfootnote` with empty
-   parameter `#1`. This parameter should do a local settings inside
+   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 user can do catcode settings (like inline
+   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 -----------------------------
@@ -161,7 +161,7 @@
   \_splittopskip=\_ht\_strutbox % top baseline for broken footnotes
   \_splitmaxdepth=\_dp\_strutbox \_floatingpenalty=20000
   \_textindent{#2}\_footstrut
-  \_isnextchar \_bgroup 
+  \_isnextchar \_bgroup
      {\_bgroup \_aftergroup\_vfootA \_afterassignment\_ignorespaces \_let\_next=}{\_vfootB}%
 }
 \_def\_vfootA{\_unskip\_strut\_isnextchar\_colorstackpop\_closefncolor\_vfootF}
@@ -176,7 +176,7 @@
    \footins \footnote \vfootnote \footstrut ;
 
    \_doc -----------------------------
-   The \`\topins` macros 
+   The \`\topins` macros
    \`\topinsert`, \`\midinsert`, \`\pageinsert`, \`\endinsert`
    are the same as in plain \TeX/.
    \_cod -----------------------------
@@ -205,8 +205,8 @@
 \_public \topins \topinsert \midinsert \pageinsert \endinsert ;
 
    \_doc -----------------------------
-   The \`\draft` macro is an example of usage `\_pgbackground` to create 
-   water color marks.
+   The \`\draft` macro is an example of usage `\_pgbackground` to create
+   watercolor marks.
    \_cod -----------------------------
 
 \_def \_draft {\_pgbackground={\_draftbox{\_draftfont DRAFT}}%
@@ -214,7 +214,7 @@
    \_global\_let\_draftfont=\_draftfont
 }
 \_def \_draftbox #1{\_setbox0=\_hbox{#1}%
-   \_kern.5\_vsize \_kern4.5\_wd0 
+   \_kern.5\_vsize \_kern4.5\_wd0
    \_hbox to0pt{\_kern.5\_xhsize \_kern-1\_wd0
    \_pdfsave \_pdfrotate{55}\_pdfscale{10}{10}%
    \_hbox to0pt{\_localcolor\LightGrey \_box0\_hss}%
@@ -231,9 +231,9 @@
 \begitems
 * \^`\_begoutput` which does:
   \begitems
-  * increments \^`\gpageno`, 
-  * prints `\_Xpage{<gpageno>}{<pageno>}` to the `.ref` file 
-    (if \^`\openref` is active), 
+  * 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
@@ -243,7 +243,7 @@
   * 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, 
+    * \^`\_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`),
@@ -250,7 +250,7 @@
     * \^`\pgbottomskip` (default is 0\,pt).
     \enditems
   * footline box by `\_makefootline`, if the \^`\footline` is nonempty
-  \enditems 
+  \enditems
 * \^`\_endoutput` which does:
   \begitems
   * increments \^`\pageno` using \^`\advancepageno`

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/parameters.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/parameters.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/parameters.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,6 +1,6 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
-\_codedecl \normalbaselineskip {Parameter settings <2020-03-17>} % preloaded in format 
+\_codedecl \normalbaselineskip {Parameter settings <2020-03-17>} % preloaded in format
 
    \_doc -----------------------------
    \secc Primitive registers
@@ -9,7 +9,7 @@
 
 \_parindent=20pt     % indentation of paragraphs
 \_pretolerance=100   % parameters used in paragraph breaking algorithm
-\_tolerance=200   
+\_tolerance=200
 \_hbadness=1000
 \_vbadness=1000
 \_doublehyphendemerits=10000
@@ -28,7 +28,7 @@
 \_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 
+\_predisplaypenalty=10000  % above display math
 \_postdisplaypenalty=0     % below display math
 \_delimiterfactor=901 % parameter for scaling delimiters
 \_delimitershortfall=5pt
@@ -49,7 +49,7 @@
 
    \_doc -----------------------------
    Note that `\topskip` and `\splittopskip` are changed when first
-   `\typosize` sets the main values (default font size and default 
+   `\typosize` sets the main values (default font size and default
    `\baselineskip`).
    \_cod -----------------------------
 
@@ -80,10 +80,10 @@
 \_def\_nonfrenchspacing{\_sfcode`\.=3000 \_sfcode`\?=3000 \_sfcode`\!=3000
   \_sfcode`\:=2000 \_sfcode`\;=1500 \_sfcode`\,=1250 }
 
-\_public \normalbaselines \frenchspacing \nonfrenchspacing 
-   \smallskipamount \medskipamount \bigskipamount 
+\_public \normalbaselines \frenchspacing \nonfrenchspacing
+   \smallskipamount \medskipamount \bigskipamount
    \normalbaselineskip \normallineskip \normallineskiplimit
-   \jot \interdisplaylinepenalty \interfootnotelinepenalty ; 
+   \jot \interdisplaylinepenalty \interfootnotelinepenalty ;
 
    \_doc -----------------------------
    \secc Different settings than in plain \TeX/
@@ -91,8 +91,8 @@
    Default \"baseline setting" is for 10\,pt fonts (like in plain \TeX/).
    But `\typosize` and `\typoscale` macros re-declare it if another font size is used.
 
-   The \`\nonfrenchspacing` is not set by default because 
-   the author of \OpTeX/ is living in the Europe.
+   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 -----------------------------
@@ -100,14 +100,14 @@
 \_normalbaselines % baseline setting, 10 pt font size
 
    \_doc -----------------------------
-   Different values than in plain \TeX/ have following primitive registers.
+   Different values than in plain \TeX/ have the following primitive registers.
    We prohibit orphans, set more information for tracing boxes, set page origin
-   to upper left corner of the paper (no at 1\,in, 1\,in coordinates)
+   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 aparagraph building algoritmh
-                        % we need not to keep the compatibility with old documents
+\_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
@@ -118,10 +118,10 @@
 \_tracinglostchars=2   % missing chracter warnings on terminal too
 
 \_outputmode=1   % PDF ouput
-\_pdfvorigin=0pt % orgin is exatly at left upper corner 
+\_pdfvorigin=0pt % orgin is exatly at left upper corner
 \_pdfhorigin=0pt
 \_hoffset=25mm   % margins are 2.5cm, no 1in
-\_voffset=25mm   
+\_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
@@ -134,13 +134,13 @@
 
 \_def\_plaintexsetting{%
    \_emergencystretch=0pt
-   \_clubpenalty=150 
+   \_clubpenalty=150
    \_widowpenalty=150
    \_pdfvorigin=1in
    \_pdfhorigin=1in
    \_hoffset=0pt
    \_voffset=0pt
-   \_hsize=6.5in 
+   \_hsize=6.5in
    \_vsize=8.9in
    \_pagewidth=8.5 true in
    \_pageheight=11 true in
@@ -151,7 +151,7 @@
    \_doc -----------------------------
    \secc[oparams] \OpTeX/ parameters
 
-   The main principle how to configure \OpTeX/ is not to use only 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
@@ -158,20 +158,18 @@
    another design of section titles? Copy macros `\_printsec` and
    `\_printsecc` from `sections.opm` file to your macro file and re-define them.
 
-   Notice for OPmac users: there is important difference: all "string-like"
+   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 user sets parameter by unprotected control sequence,
-   an \OpTeX/ macro can read {\em the same data} using protected control sequence.
-   If user re-defines such unprotected control sequence (because he/she does
-   know about it) then nothing bad happens.
+   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/ is able to find them). If you set non-empty value to
+   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. 
+   current directory and the image files are stored here.
    \_cod -----------------------------
 
 \_newtoks\_picdir
@@ -184,34 +182,34 @@
    dimension of the image is used. If only `\picwidth` has a nonzero value,
    then this is the width of the image (height is calculated automatically in
    order to respect the aspect of the image). If only `\picheight` has
-   a nonzero value then height is given, width is calculated. If both
+   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 to set these
+   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 another images. But there exist many
+   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\_picwidth   \_picwidth=0pt   \_let\picw=\_picwidth
 \_newdimen\_picheight  \_picheight=0pt
 \_public \picwidth \picheight ;
 
    \_doc -----------------------------
-   The \`\everytt` is token list used in 
+   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 scanner of verbatim text is started. 
-   Your macros should influence scanner (catcode settings) or printing 
+   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. 
+   after `\begtt` locally only for this environment.
 
-   The \`\everyintt` token list does similar work 
+   The \`\everyintt` token list does similar work
    but acts in the in-line verbatim
    text processed by a pair of `\activettchar` characters or by `\code{<text>}`.
    You can set `\everyintt={\Red}` for example if you want in-line verbatim
@@ -218,19 +216,19 @@
    in red color.
    \_cod -----------------------------
 
-\_newtoks\_everytt      
+\_newtoks\_everytt
 \_newtoks\_everyintt
 \_public \everytt \everyintt ;
 
    \_doc -----------------------------
-   The \`\ttline` is used 
+   The \`\ttline` is used
    in `\begtt`...`\endtt` environment or in the code
    printed by `\verbinput`. If `\ttline` is positive or zero, then the
-   verbatim code have numbered lines from `\ttline+1`. The `\ttline`
-   register is re-set to new value after a code piece is printed, so next
+   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
-   shows the line numbers of inputted file. If `\ttline`\code{<-1} 
+   show the line numbers of inputted file. If `\ttline`\code{<-1}
    then no line numbers are printed.
    \_cod -----------------------------
 
@@ -238,36 +236,36 @@
 \_public \ttline ;
 
    \_doc -----------------------------
-   The \`\ttindent` gives default indentation 
+   The \`\ttindent` gives default indentation
    of verbatim lines printed by `\begtt`...`\endtt` pair or by
    `\verbinput`.
    \nl
-   The \`\ttshift` gives the amount of shift of all verbatim lines to right.
-   Despite to the \^`\ttindent`, it does not shift the line numbers, only
+   The \`\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 table of contents, 
+   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
+   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`. 
+   you should say `\ttindent=\parindent` and `\iindent=\parindent`.
    \_cod -----------------------------
 
 \_newdimen\_ttindent \_ttindent=\_parindent % indentation in verbatim
-\_newdimen\_ttshift  
+\_newdimen\_ttshift
 \_newdimen\_iindent  \_iindent=\_parindent
 \_public \ttindent \ttshift \iindent ;
 
    \_doc -----------------------------
-   The tabelator `^^I` has its category code like space: it behaves as a
-   space in normal text. This is normal plain \TeX/ setting. 
+   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. 
+   is the width of \`\tabspaces` spaces.
    Default `\tabspaces=3` means
-   that tabelator behaves like three spaces in multiline verbatim.
+   that tabulator behaves like three spaces in multiline verbatim.
    \_cod -----------------------------
 
 \_newcount \_tabspaces   \_tabspaces=3
@@ -278,23 +276,23 @@
    `\_hicolors<name>` declared in the file `hisyntax-<name>.opm`.
    The user can give his/her preferences about colors for
    syntax highlighting by this tokens list.
-   Full color set must be declared here.
+   The full color set must be declared here.
    \_cod -----------------------------
 
-\_newtoks\_hicolors  
+\_newtoks\_hicolors
 \_public \hicolors ;
 
    \_doc -----------------------------
-   The default item mark used between `\begitems` and `\enditems` is bullet.
-   The \`\defaultitem` tokens list declare this default item mark.
+   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 group is opened by
    \nl
-   The \`\ilevel` keeps the value of current nesting level of the items list.
+   The \`\everylist` tokens list is applied after the group is opened by
    \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 -----------------------------
@@ -317,7 +315,7 @@
    The `\begmulti` `\endmulti` pair creates more columns. The parameter
    \`\colsep` declares the space between columns. If $n$ columns are specified
    then we have $n-1$ `\colseps` and $n$ columns in total `\hsize`. This
-   gives definite result of columns width. 
+   gives the definite result of the width of the columns.
    \_cod ----------------------------
 
 \_newdimen\_colsep \_colsep=20pt  % space between columns
@@ -325,7 +323,7 @@
 
    \_doc -----------------------------
    Each line in the Table of contents is printed in a group.
-   The \`\everytocline` tokens list is processed here before 
+   The \`\everytocline` tokens list is processed here before
    the internal `\_tocl:<num>` macro which starts printing the line.
    \_cod -----------------------------
 
@@ -335,20 +333,25 @@
    \_doc -----------------------------
    The \`\bibtexhook` tokens list is used inside the group when `\usebib` command is
    processed after style file is loaded and before printing bib-entries.
-   You can re-define a behavior of style file here or you can modify the
+   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 a specific macros used in your `.bib` file.
+   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. 
+   Index item when printing the Index.
    \_cod -----------------------------
 
 \_newtoks\_everyii
@@ -358,21 +361,21 @@
    The \`\everymnote` is used in the `\mnote` group before `\noindent` which
    immediately precedes marginal note text.
    \nl
-   The \`\mnotesize` is horizontal size of the marginal notes.
+   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 
+\_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 follows. The \`\thistable` tokens list 
-   register should be used for giving an exception for only one `\table` 
-   which follows. It should change locally other parameters of the `\table`. 
-   It is reset to empty list after the table is printed.
+   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.
@@ -381,29 +384,29 @@
    \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 
+   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 
+   \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 
+   \`\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 
+   \`\tsize` is virtual unit of the width of paragraph-like table items when
    `\table pxto<size>` is used.
    \_cod -----------------------------
 
-\_newtoks\_everytable \_newtoks\_thistable 
+\_newtoks\_everytable \_newtoks\_thistable
 \_newtoks\_tabiteml \_newtoks\_tabitemr \_newtoks\_tabstrut
 \_newdimen\_tablinespace \_newdimen\_vvkern \_newdimen\_hhkern \_newdimen\_tsize
-\_newskip\_tabskipl  \_newskip\_tabskipr 
+\_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}
@@ -412,26 +415,26 @@
 \_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 
+\_tabskipl=0pt\_relax  % \tabskip used before first column
 \_tabskipr=0pt\_relax  % \tabskip used after the last column
-\_public \everytable \thistable \tabiteml \tabitemr \tabstrut \tablinespace 
+\_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 this macro beahaves
-   like in Plain \TeX. The \`\eqspace` is horizontal space put 
-   between equation systems if more columns in \^`\eqalign` is used.
+   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}   
+\_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 right matrix filler is directly set to `\hfil`.
+   value does centering because the right matrix filler is directly set to `\hfil`.
    \_cod -----------------------------
 
 \_newtoks \_lmfil   \_lmfil={\_hfil}
@@ -458,15 +461,15 @@
 \_public \headline \footline ;
 
    \_doc -----------------------------
-   The distance between the `\headline` and the top of the page-text
-   is controlled by the \`\headlinedist` register. 
-   The distance between bottom of
-   page-text and `\footline` is \`\footlinedist`. 
+   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 first line in page-text have distance
+   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 from plain \TeX/.
+   Default values are inspired by plain \TeX/.
    \_cod -----------------------------
 
 \_newdimen \_headlinedist  \_headlinedist=14pt
@@ -474,8 +477,8 @@
 \_public \headlinedist \footlinedist ;
 
    \_doc -----------------------------
-   The \`\pgbottomskip` is inserted to the page bottom 
-   in the output routine. You can set a less tolerance here than
+   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 -----------------------------
 
@@ -489,8 +492,8 @@
    processing. Example of usage:
    \begtt
    \headline={} \nexptages={\headline={\rmfixed \firstmark \hfil}}
-   \endtt 
-   This example sets current page with empty headline, but next pages have 
+   \endtt
+   This example sets current page with empty headline, but next pages have
    non-empty headlines.
    \_cod -----------------------------
 
@@ -518,9 +521,9 @@
 
 \_newtoks \_ovalparams
 \_newtoks \_circleparams
-%\_ovalparams={\_roundness=2pt \_fcolor=\Yellow \_lcolor=\Red \_lwidth=.5bp 
+%\_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 
+%\_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
@@ -527,7 +530,28 @@
 
 \_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
@@ -537,25 +561,25 @@
 * registers declared and used by \OpTeX/ macros.
 \enditems
 Both groups of registers have their type: number, dimension, skip, token
-list.  
+list.
 
 The registers are represented by their names (control sequences). If the user
-re-defines such control sequence then the appropriate register exists
+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 such case. \OpTeX/ declares two control sequences
-for each register: prefixed and unprefixed. \OpTeX/ macros use only
-prefixed variants of control sequences. The user should use unprefixed variant
-with the same meaning and set or read values of registers using the
-unprefixed variant. If the user re-defines the unprefixed control sequence of 
+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 is only few parameters declared by \OpTeX/ macros. All of them 
-%are listed in this section. This is desired feature of the \OpTeX/. 
+%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 wich cannot be controlled by parameters listed here then you 
-%can copy the appropriate \OpTeX/ macro to your macro file and you 
+%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 declares the design of the document.
+%macros which declare the design of the document.
 
 \_endinput
 

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/pdfuni-string.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/pdfuni-string.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/pdfuni-string.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,9 +1,9 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl \pdfunidef {PDFunicode strings for outlines <2020-03-12>} % preloaded in format
 
    \_doc -----------------------------
-   The \`\_octalprint` is lua script which prints the character code in the
+   The \`\_octalprint` is a Lua script that prints the character code in the
    octal notation.
    \_cod -----------------------------
 
@@ -24,8 +24,8 @@
    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..`.
-   Finaly, the <text> is detokenized, spaces are preprocessed using \^`\replstring` 
-   and then the \`\_pdfunidefB` is repeated on each character. It calls the 
+   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 octal numbers in the macro \^`\_octalprint`.
    \_cod -----------------------------
 
@@ -50,11 +50,11 @@
    \_ea\_def\_ea#1\_ea{\_out}
 }
 \_def\_pdfunidefB#1{%
-   \_ifx^#1\_else 
+   \_ifx^#1\_else
       \_tmpnum=`#1
       \_pdfunidefC{\_luaescapestring{#1}}%
    \_ea\_pdfunidefB \_fi
-} 
+}
 \_def\_pdfunidefC #1{\_edef\_out{\_out \\\_ea\_octalprint\_ea{\_the\_tmpnum}{#1}}}
 
 \_def\_removeoutbraces #1#{#1\_removeoutbracesA}
@@ -62,12 +62,12 @@
 \_def\_removeoutmath #1$#2${#1\_ifx\_end#2\_else #2\_ea\_removeoutmath\_fi}
 
    \_doc -----------------------------
-   The \`\_prepinverb``<macro><separator>{<text>}`, 
+   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. 
+   the <text> but not the parts which were in the the in-line verbatim.
    \_cod -----------------------------
 
 \_def\_prepinverb#1#2#3{\_def#1{}%
@@ -92,21 +92,21 @@
 \_endcode % --------------------------------
 
 There are only two encodings for PDF strings (used in PDFoutlines, PDFinfo
-etc.). First one is PDFDocEncoding which is one-byte encoding, but most
+, etc.). The first one is PDFDocEncoding which is one-byte encoding, but most
 Czech or Slovak characters are missing here.
 
-The second encoding is PDFunicode encoding wich is implemented in this file. 
-This encoding is \TeX/-discomfortable, because it looks like
+The second encoding is PDFunicode encoding which is implemented in this file.
+This encoding is \TeX/-discomfortable because it looks like
 
 \begtt
 \376\377\000C\000v\000i\001\015\000e\000n\000\355\000\040\000j\000e\000\040
-\000z\000\341\000t\001\033\001\176 
+\000z\000\341\000t\001\033\001\176
 \endtt
 
-This example is real encoding of the string "Cvičení je zátěž". You can see
+This example is the real encoding of the string "Cvičení je zátěž". You can see
 that this is UTF-16 encoding (two bytes per character) with two starting
 bytes FEFF. Moreover, each byte is encoded by three octal digits preceded by
-backslash. The only exception is the visible ASCII character encoding: such
+a backslash. The only exception is the visible ASCII character encoding: such
 a character is encoded by its real byte preceded by `\000`.
 
 

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/plain-macros.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/plain-macros.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/plain-macros.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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
 
@@ -20,16 +20,16 @@
    The shortcuts `\chardef\@one` is not defined in \OpTeX/. Use normal
    numbers instead of such obscurities.
    \nl
-   The \`\magstep` and \`\magstephalf` are 
+   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. 
+   Plain \TeX/ basic macros and control sequences.
    \`\endgraf`, \`\endline`.
    The `^^L` is not defined in \OpTeX/ because it is obsolete.
    \_cod -----------------------------
@@ -58,11 +58,11 @@
 \_public \obeylines \obeyspaces ;
 
    \_doc -----------------------------
-   Spaces. 
-   \`\thinspace`, \`\negthinspace`, \`\enspace`, \`\enskip`, 
-   \`\quad`, \`\qquad`, \`\smallskip`, 
+   Spaces.
+   \`\thinspace`, \`\negthinspace`, \`\enspace`, \`\enskip`,
+   \`\quad`, \`\qquad`, \`\smallskip`,
    \`\medskip`, \`\bigskip`, \`\nointerlineskip`, \`\offinterlineskip`,
-   \`\topglue`, \`\vglue`, \`\hglue`, \`\slash`. 
+   \`\topglue`, \`\vglue`, \`\hglue`, \`\slash`.
    \_cod -----------------------------
 
 \_protected\_def\_thinspace {\_kern .16667em }
@@ -94,8 +94,8 @@
 
    \_doc -----------------------------
    Penalties macros:
-   \`\break`, \`\nobreak`, \`\allowbreak`, \`\filbreak`, \`\goodbreak`,  
-   \`\eject`, \`\supereject`, \`\dosupereject`, 
+   \`\break`, \`\nobreak`, \`\allowbreak`, \`\filbreak`, \`\goodbreak`,
+   \`\eject`, \`\supereject`, \`\dosupereject`,
    \`\removelastskip`, \`\smallbreak`, \`\medbreak`, \`\bigbreak`.
    \_cod -----------------------------
 
@@ -121,8 +121,8 @@
 
    \_doc -----------------------------
    Boxes.
-   \`\line`, \`\leftline`, \`\rightline`, \`\centerline`, \`\rlap`, \`\llap`, 
-   \`\underbar`. 
+   \`\line`, \`\leftline`, \`\rightline`, \`\centerline`, \`\rlap`, \`\llap`,
+   \`\underbar`.
    \_cod -----------------------------
 
 \_def \_line {\_hbox to\_hsize}
@@ -172,7 +172,7 @@
 \_def \_itemitem {\_par\_indent \_hangindent2\_parindent \_textindent}
 \_def \_narrower {\_advance\_leftskip\_parindent
    \_advance\_rightskip\_parindent}
-\_def \_raggedright {\_rightskip=0pt plus2em 
+\_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
@@ -181,10 +181,10 @@
 
    \_doc -----------------------------
    Few character codes are set for backward compatibility. But old obscurities
-   (from plain TeX) based on \`\mathhexbox` 
-   are not supported -- an error message and recommendation 
-   to directly using of the desired character is implemented by the
-   \`\_usedirectly` macro). 
+   (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 -----------------------------
 
@@ -208,7 +208,7 @@
 \_def\L{\_errmessage{\_usedirectly Ł}}
 %\def\_{\_ifmmode \kern.06em \vbox{\hrule width.3em}\else _\fi} % obsolete
 \_def\_{\_hbox{_}}
-\_def\dag{\_errmessage{\_usedirectly †}} 
+\_def\dag{\_errmessage{\_usedirectly †}}
 \_def\ddag{\_errmessage{\_usedirectly ‡}}
 %\_def\copyright{\_errmessage{\_usedirectly ©}}
 \_def\copyright{©} % << example, what to do
@@ -220,13 +220,13 @@
 \_public \mathhexbox ;
 
    \_doc -----------------------------
-   Accents. 
+   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}}} 
+   \_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
@@ -240,11 +240,11 @@
 \_public \oalign \ooalign \d \b \c \dots ;
 
    \_doc -----------------------------
-   The accents commands like `\v`, `\.`, `\H`, etc. are not defined. Use the
-   accented characters directly -- it is best solution. But you can use the
+   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 to other purposes.
+   Much more usable is to define these control sequences for other purposes.
    \_cod -----------------------------
 
 \_def \_oldaccents {%
@@ -295,7 +295,7 @@
 
    \_doc -----------------------------
    The plain \TeX/ macros
-   \`\hrulefill`, \`\dotfill`, \`\rightarrowfill`, \`\leftarrowfill`, 
+   \`\hrulefill`, \`\dotfill`, \`\rightarrowfill`, \`\leftarrowfill`,
    \`\downbracefill`, \`\upbracefill`.
    The last four are used in non-Unicode variants of `\overrightarrow`,
    `\overleftarrow`, `\overbrace` and `\underbrace` macros, see
@@ -331,7 +331,7 @@
 
 \_def \_magnification {\_afterassignment \_magA \_count255 }
 \_def \_magA {\_mag=\_count255 \_truedimen\_hsize \_truedimen\_vsize
-  \_dimen\_footins=8truein 
+  \_dimen\_footins=8truein
 }
 % only for backward compatibility, but \margins macro is preferred.
 \_public \magnification ;

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/prefixed.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/prefixed.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/prefixed.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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
 
@@ -18,7 +18,7 @@
 
    \_doc ------------------
    \`\ea` is useful shortcut for `\expandafter`. We recommend to use always the
-   private form of \`\_ea` 
+   private form of \`\_ea`
    because there is high probability that `\ea` will be redefined by the user.
    \nl
    \`\public` `<sequence> <sequence> ... ;` does
@@ -47,10 +47,10 @@
    \_doc -----------------------
    Each macro file should begin with \`\_codedecl` `\macro {<info>}`.
    If the `\macro` is defined already then the `\endpinput` protects to read
-   such file more than one times. Else the <info> is printed to the terminal
+   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>` 
+   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 -----------------------
 
@@ -100,7 +100,10 @@
 }
 
 \_def \_nspublic {\_xargs \_nspublicA}
-\_def \_nspublicA #1{\_ea\_let \_ea#1\_csname \_pkglabel _\_csstring #1\_endcsname}
+\_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}
@@ -109,35 +112,35 @@
 \_endcode %----------------------------------------------------
 
 
-\sec Concept of name spaces of control sequences
+\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. 
+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 
+`\def\if{...}` will not damage macros because \OpTeX/'s macros
 are using `\_if` instead of `\if`.
 
 All \TeX/ primitives are initialized with two representative control
 sequences: `\word` and `\_word`, for example `\hbox` and `\_hbox`.
-The first alternative is reserved for users or such control sequences 
-can be re-defined by user.
+The first alternative is reserved for users or such control sequences
+can be re-defined by a user.
 
-\OpTeX/ sets the character `_` as letter, so it can be used in
-control sequences. When a control sequence begins with this character 
+\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 
+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 
+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 
+\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
+\begtt \catcode`\<=13
 \public <list of control sequences> ;
 \endtt
 
@@ -144,23 +147,23 @@
 For example \^`\public`` \foo \bar ;` does `\let\foo=\_foo`, `\let\bar=\_bar`.
 
 At the end of each code segment in \OpTeX/, the `\_public` macro is used. You
-can see, what macros are defined for public usage in such code segment. 
+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 unprefixed variant of control sequence is declared
+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
-unprefixed variant. The code typically defines prefixed variant 
+the unprefixed variant. The code typically defines the prefixed variant
 and then the \^`\public` (or `\_public`) macro is used.
 
-\secc Name space of control sequences for users
+\secc Namespace of control sequences for users
 
-User can define or declare any control sequence with a name without any `_`.
+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) 
+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
@@ -167,9 +170,9 @@
 example `\my_control_sequence`, but with the following exceptions:
 
 \begitems
-* Control sequences which begin with `_` are reserved for \TeX/ primitives, 
+* 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 
+* 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
@@ -181,24 +184,24 @@
 \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$ 
+  \^`\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 
+  `\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, 
+  writers as internal macros for a package with `<pkg>` identifier,
   see section~\ref[pkg-namespace].
 \enditems
 
-The single letter control sequences like `\%`, `\$`, `\^` etc. are not used
-in internal macros. User can redefine them, but (of course) some classical 
+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 normal `*.tex` file.
+(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.
@@ -209,7 +212,7 @@
 \endtt
 
 If the mentioned `\sequence` is defined, then \^`\_codedecl` does the same as
-`\endinput`: this protect from reading the file twice. We suppose, that
+`\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.
@@ -217,20 +220,20 @@
 but it can be printed using `doc.opm` macros like in this documentation.
 
 
-\secc[pkg-namespace] Name spaces for package writers  
+\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: 
+where `<pkg>` is a package label. For example:
 `\_qr_utfstring` from `qrcode.opm` package.
 
-The package writer needs not write repeatedly `\_pkg_foo` `\_pkg_bar` 
+The package writer needs not to write repeatedly `\_pkg_foo` `\_pkg_bar`
 etc.\ again and again in the macro file.\fnote
-{We have not adatped the idea from expl3 language:)} 
-When the \^`\_namespace` `{<pkg>}` 
+{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` 
+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
@@ -237,16 +240,17 @@
 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. And the \^`\_nsprivate` macro does reverse
-operation to it. Example: you can define `\def\.macro{...}` and then
+\^`\_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 another packages (which are using their own name space) inside your
-name space. Do load them before your \^`\_namespace`~`{<pkg>}` is
-initialized. Or close your name space by \^`\_endnamespace` and open it again
+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 
+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
@@ -256,35 +260,35 @@
 
 \secc Summary about rules for external macro files published for \OpTeX/
 
-If you are writting a macro file which is intended to be published for
+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 a control sequences from user name space in the macro
-  bodies if there is not explicit and documented reason to do this. 
-* Don't declare control sequences in the user name space if there is not 
-  explicit and documented reason to do this.
-* Use control sequences from \OpTeX/ and primitive name space 
-  in read only mode if there is not explicit and documented reason to
-  redefine them. 
-* Use `\_<pkg>_<name>` for your internal macros or `\.<name>` if the 
+* 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 
+* Use \^`\load` (or better: `\_load`) for loading more external macros
+  if you need them. Don't use `\_input` explicitly in such cases.
+  The reason is: the external macro file is not loaded
+  twice if another macro or the user needs it explicitly too.
+* Use \^`\_codedecl` as your first command in the macro file and
   \^`\_endcode` to close the text of macros.
 * Use \^`\_doc` ... \^`\_cod` pairs for documenting the code pieces and/or write
   more documentation after the \^`\_endcode` command.
 \enditems
 
-If the macro file accepts these recommendations then it should be  
-named by `<filename>.opm` where `<filename>` differs from file names 
-used directly in \OpTeX/ and from other published macros. 
-This extension `opm` has a precedence before `.tex` when
+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 first example how an external macro file for \OpTeX/ 
+The `qrcode.opm` is the first example of how an external macro file for \OpTeX/
 can look like.
 

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/print-unimath.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/print-unimath.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/print-unimath.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl \_undefined {Printing Unicode-math table \string<2020-06-08>}
 
@@ -38,8 +38,8 @@
    \_endmulti
 
    \_medskip\_goodbreak
-   Codes U+10001 \_dots\ U+1EEF1  \_let\UnicodeMathSymbol=\UnicodeMathSymbolA 
-   \_begmulti 4 
+   Codes U+10001 \_dots\ U+1EEF1  \_let\UnicodeMathSymbol=\UnicodeMathSymbolA
+   \_begmulti 4
       \_input unimath-table.opm
    \_endmulti
 \_endgroup
@@ -46,7 +46,7 @@
 
 \_endcode
 
-This file can be used for testing your Unicode Math font
+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

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/ref-file.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/ref-file.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/ref-file.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl \openref {File for references <2020-02-14>} % preloaded in format
 
@@ -13,16 +13,16 @@
 \_def\_inputref {%
   \_isfile{\_jobname.ref}\_iftrue
      \_input {\_jobname.ref}
-     \_gfnotenum=0 \_lfnotenum=0 \_mnotenum=0 
+     \_gfnotenum=0 \_lfnotenum=0 \_mnotenum=0
      \_openrefA{\_string\_inputref}%
   \_fi
 }
 
    \_doc --------------------------
-   If the file does not exists then it is not created by default. It means that if you
+   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 dummy in
-   such case.
+   file is created because it is unusable. The \^`\_wref` macro is a dummy in
+   this case.
    \_cod --------------------------
 
 \_def\_wrefrelax#1#2{}
@@ -31,10 +31,10 @@
    \_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 
+   the \`\_wref` `\<macro>{<data>}` is redefined in order to
    save the line `\<macro><data>` to the `.ref` file using asynchronous
-   `\write` primitive. Finally, the `\_openref` destroys itself, because we 
-   need not to open the file again.
+   `\write` primitive. Finally, the `\_openref` destroys itself, because we
+   need not open the file again.
    \_cod ---------------------
 
 \_def\_openref {%
@@ -42,8 +42,8 @@
   \_gdef\_openref{}%
 }
 \_def\_openrefA #1{%
-   \_immediate\_openout\_reffile="\_jobname.ref"\_relax 
-   \_gdef\_wref ##1##2{\_write\_reffile{\_string##1##2}}%
+   \_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}}%
 }
@@ -50,17 +50,17 @@
 \def\openref{\_openref}
 
    \_doc ----------------------
-   We are using convention that the macros used in `.ref` file are named
-   `\_X<foo>`. If there is a new version of \OpTeX/ with different collection
-   of such macros then we don't want to read the `.ref` files produced by an 
-   old version of \OpTeX/ or by OPmac. So first line of `.ref` file is in 
+   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 
+   \endtt
    We can check the version compatibility by this macro.
-   Because OPmac does not understand `\_Xrefversion` we use 
-   \`\Xrefversion` (with different number of `<version>` form OPmac) here.
+   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 ----------------------
@@ -83,13 +83,13 @@
       \def\Xfig#1#2#3{\addto\toflist{\tofline{#1}{#2}{#3}}}
    }
    \endtt
-   We must read `<definition of your ref macros>` when catcode of `#` is 12
-   because we needn't to duplicate each `#` in the `.ref` file.
+   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 {\_pcent\_space \_string \refdecl:}%
    \_immediate\_write\_reffile {\_detokenize{#1}}%
 }
 \_public \refdecl ;
@@ -97,10 +97,10 @@
 \_endcode % ================================================
 
 
-The `.ref` file has the name `\jobname.ref` and 
-it saves information about references, TOC lines, etc. 
+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 
+\OpTeX/ reads this file at the beginning of the document
 (using `\everyjob`) if such file exists.
 The `.ref` file looks like:
 
@@ -116,22 +116,22 @@
 ...
 \endtt
 %
-where <gpageno> is internal page number globally numbered from one and 
-`<pageno>` is a page number (`\the\pageno`) used in pagination (they may be differ). 
+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 a title of the chapter (`<level>`=1,
-`<type>`=`chap`), section (`<level>`=2, `<type>`=`sec`), subsection 
-(`<level>`=3, `<type>`=`secc`). The \^`\_Xpage` is written at begining of each
+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. 
+`\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 
+`\everyjob`. It is read, removed, and opened to writing immediately.
+But the `.ref` file should be missing. If none forward references are needed
 in the document then `.ref` file is not created. For example, you only want
 to test a simple plain \TeX/ macro, you create `test.tex` file, you do
-`optex test` and you don't need to see empty `test.ref` file in your directory. 
+`optex test` and you don't need to see an empty `test.ref` file in your directory.
 

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/references.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/references.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/references.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,9 +1,9 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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`. 
+   \`\_Xpage` `{<gpageno>}{<pageno>}` saves the parameter pair into \`\_currpage`.
    Resets `\_lfnotenum`; it is used if footnotes are numbered from one at each page.
    \_cod ----------------------------
 
@@ -10,7 +10,7 @@
 \_def\_Xpage#1#2{\_def\_currpage{{#1}{#2}}\_lfnotenum=0 }
 
    \_doc ----------------------------
-   Counter for number of unresolved references \`\_unresolvedrefs`.
+   Counter for the number of unresolved references \`\_unresolvedrefs`.
    \_cod ----------------------------
 
 \_newcount\_unresolvedrefs
@@ -25,12 +25,12 @@
 \_def\_bracketspg#1#2{[pg:#1]{#2}}
 
    \_doc ----------------------------
-   \`\label``[<label>]` saves the decalred label to `\_lastlabel` and 
-   \`\wlabel``{<text>}` uses the `\_lastlabel` and activates 
+   \`\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 
+\_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
@@ -49,9 +49,9 @@
 
    \_doc ----------------------------
    \`\ref``[<label>]` uses saved `\_lab:<label>` and prints (linked) `<text>`.
-   If the reference is backwarded then we know `\lab:<label>` without any need
+   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 first run of \TeX/ and we print warning and
+   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

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/sections.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/sections.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/sections.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl \chap {Titles, chapters, sections, subsections <2020-03-28>} % preloaded in format
 
@@ -7,7 +7,7 @@
    \`\_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. 
+   command.
    \_cod ---------------------------
 
 \_def \_titfont  {\_scalemain\_typoscale[\_magstep4/\_magstep5]\_boldify}
@@ -16,10 +16,10 @@
 \_def \_seccfont {\_scalemain\_typoscale[\_magstep1/\_magstep1]\_boldify}
 
    \_doc ---------------------------
-   The \`\tit` macro is defined using \^`\scantoeol` and \`\_printtit`. 
+   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. 
+   principle is used in the \^`\chap`, \^`\sec`, and \^`\secc` macros.
    \_cod ---------------------------
 
 \_def\_printtit #1{\_vglue\_titskip
@@ -32,38 +32,38 @@
 \_public \tit ;
 
    \_doc ---------------------------
-   You can re-define \`\_printchap`, \`\_printsec` or \`\_printsecc` macros if 
-   another design of section titles is needed. These macros gets the
+   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>`. 
+     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, 
+     \^`\_abovetitle``{<penaltyA>}{<skipA>}` (for example section title is
+     immediately followed by subsection title), then only `<skipA>` is generated,
      i.\,e.\ `<skipB><penaltyA><skipA>` is reduced only to `<skipA>`.
-     The reason of such behavior: we don't want to duplicate vertical skip 
-     and we don't want to use negative penalty in such cases.
+     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 of such behavior: we don't want to
+     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 
+   * Use \^`\_printrefnum``[<pre>@<post>]` in horizontal mode. It prints
      `<pre><ref-num><post>`. The `<ref-num>` is \^`\_thechapnum` or \^`\_thesecnum`
      or \^`\_theseccnum` depending on what type o title is processed.
-     If \^`\nonum` prefix is used then \^`\_printrefnum` prints nothing. 
-     The macro \^`\_printrefnum` does more work: it creates destination of hyperlinks 
-     (if \^`\hyperlinks``{}{}` is used) and saves references from label (if
-     \^`\label``[<label>]` precedes) and saves references for table of contents
+     If \^`\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 to more pages. 
+     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
@@ -74,19 +74,19 @@
    {\_chapfont \_noindent \_mtext{chap} \_printrefnum[@]\_par
     \_nobreak\_smallskip
     \_noindent \_raggedright #1\_nbpar}\_mark{}%
-   \_nobreak \_belowtitle{\_bigskip}% 
+   \_nobreak \_belowtitle{\_bigskip}%
    \_firstnoindent
 }
-\_def\_printsec#1{\_par 
+\_def\_printsec#1{\_par
    \_abovetitle{\_penalty-400}\_bigskip
    {\_secfont \_noindent \_raggedright \_printrefnum[@\_quad]#1\_nbpar}\_insertmark{#1}%
-   \_nobreak \_belowtitle{\_medskip}% 
+   \_nobreak \_belowtitle{\_medskip}%
    \_firstnoindent
 }
-\_def\_printsecc#1{\_par 
+\_def\_printsecc#1{\_par
    \_abovetitle{\_penalty-200}{\_medskip\_smallskip}
    {\_seccfont \_noindent \_raggedright \_printrefnum[@\_quad]#1\_nbpar}%
-   \_nobreak \_belowtitle{\_medskip}% 
+   \_nobreak \_belowtitle{\_medskip}%
    \_firstnoindent
 }
 
@@ -107,33 +107,33 @@
 }
 
    \_doc --------------------------
-   The \`\_chapx` initializes counters used in chapters, 
+   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 
+   declare appropriate counters and do `\addto\_chapx{\yourcounter=0 }`
+   for example. If you have another concept of numbering objects used in your
    document, you can re-define these macros. All settings here are global
    because it is used by `{\_globaldefs=1 \_chapx}`.
 
-   Default concept: Tables, figuers and display maths are numbered
-   from one in each section -- subsetions doesn't reset these counters.
+   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`, 
+   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>`. 
+   document then `\_chapnum>0` and sections have numbers` <num>.<num>`
+   and subsections have numbers `<num>.<num>.<num>`.
 
    \_cod --------------------------
 
-\_newcount \_chapnum  % chapters 
+\_newcount \_chapnum  % chapters
 \_newcount \_secnum   % sections
 \_newcount \_seccnum  % subsections
 \_newcount \_tnum     % table numbers
@@ -142,7 +142,7 @@
 
 \_def \_chapx {\_secx  \_secnum=0  \_lfnotenum=0 }
 \_def \_secx  {\_seccx \_seccnum=0 \_tnum=0 \_fnum=0 \_dnum=0 \_resetABCDE }
-\_def \_seccx {} 
+\_def \_seccx {}
 
 \_def \_thechapnum {\_the\_chapnum}
 \_def \_thesecnum  {\_othe\_chapnum.\_the\_secnum}
@@ -166,12 +166,12 @@
 \_public \notoc \nonum ;
 
    \_doc ----------------------------
-   The \`\chap`, \`\sec` and \`\secc` macros are implemented here.
-   The \`\_inchap`, \`\_insec` and \`\_insecc` macros does the real work,
+   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.
+   Use \`\_inchap`, \`\_insec`, and \`\_insecc` macros directly in such case.
    \_cod ----------------------------
 
 \_optdef\_chap[]{\_trylabel \_scantoeol\_inchap}
@@ -208,13 +208,13 @@
    The \`\_wtotoc` `{<level>}{<info>}{<ref-num>}{<title-text>}`
    macro expands its parameters and does \^`\_wref`.
 
-   Note that the `<tite-text>` is `\detokenize`d before `\_wref`, so the 
-   problem of \"fragile macros" from old \LaTeX/ never occurs. 
+   Note that the `<tite-text>` is `\detokenize`d before `\_wref`, so the
+   problem of \"fragile macros" from old \LaTeX/ never occurs.
    \_cod ----------------------------
 
 \_def \_printrefnum [#1@#2]{\_leavevmode % we must be in horizontal mode
    \_ifnonum \_else #1\_therefnum #2\_fi
-   \_wlabel \_therefnum  % references, if `\label[<label>]` is declared 
+   \_wlabel \_therefnum  % references, if `\label[<label>]` is declared
    \_ifnotoc \_else \_incr \_tocrefnum
        \_dest[toc:\_the\_tocrefnum]%
        \_wtotoc{\_the\_sectionlevel}{\_secinfo}%
@@ -225,20 +225,20 @@
 \_def \_wtotocA #1#2#3#4{\_wref\_Xtoc{{#1}{#2}{#3}#4}}
 
    \_doc -----------------------------
-   The \`\_abovetitle``{<penaltyA>}{<skipA>}` and \`\_belowtitle``{<skipB>}` pair 
-   communicates using a special penalty 11333 in vertical mode. 
-   The `\_belowtitle` puts the vertical skip (its value is saved in 
+   The \`\_abovetitle``{<penaltyA>}{<skipA>}` and \`\_belowtitle``{<skipB>}` pair
+   communicates using a special penalty 11333 in vertical mode.
+   The `\_belowtitle` puts the vertical skip (its value is saved in
    `\_savedtitleskip`) followed by this special penalty.
    The `\_abovetitle` reads `\lastpenalty` and if it has this special value
-   then it removes the skip used before and don't use the parameter.
+   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 preceded) and create
+   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 \_savedtitleskip
 \_newskip \_savedlastskip
 \_def\_abovetitle #1#2{\_savedlastskip=\_lastskip % <whatever-skip>
    \_ifdim\_lastskip>\_zo \_vskip-\_lastskip \_fi
@@ -251,7 +251,7 @@
 
    \_doc -----------------------------
    \`\nbpar` sets `\interlinepenaty` value.
-   \`\nl` is \"new line" in text (or titles), but space in toc or headlines or outlines.
+   \`\nl` is \"new line" in the text (or titles), but space in toc or headlines or outlines.
    \_cod -----------------------------
 
 \_def\_nbpar{{\_interlinepenalty=10000\_endgraf}}
@@ -272,17 +272,17 @@
 \_def \_firstnoindent {\_global\_everypar={\_wipeepar \_setbox7=\_lastbox}}
 \_def \_wipeepar {\_global\_everypar={}}
 
-   \_doc ----------------------------- 
+   \_doc -----------------------------
    The `\mark` (for running heads) is used in `\_printsection` only. We
-   suppose that chapters will be printed after `\vfil\break`, so user can
+   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. 
+   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.   
+   macro with two parameters for processing these data, if you need it.
    \_cod -----------------------------
 
 \_def\_insertmark#1{\_mark{{\_ifnonum\_else\_therefnum\_fi} {\_unexpanded{#1}}}}
@@ -298,16 +298,36 @@
           \hfil \ea\formathead\firstmark{}{}%
       \else
           Chapter: \runningchap \hfil
-      \fi 
+      \fi
    }
    \endtt
-   The \`\caption``/<letter>` uses `\_<letter>num` counter. 
+
+   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>` uses `\_<letter>num` counter.
    The group opened by `\caption` is finalized by first `\par` from
-   empty line or from `\vskip` or from `\endinsert`.
+   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 nobreakable vertical space between caption and
-   the object. 
+   The \`\cskip` macro inserts nonbreakable vertical space between the caption and
+   the object.
    \_cod -----------------------------
 
 \_def\_caption/#1{\_def\_tmpa{#1}\_nospaceafter \_capA}
@@ -317,8 +337,7 @@
    \_else \_opwarning{Unknown caption /\_tmpa}\_fi
    \_edef\_thecapnum {\_csname _the\_tmpa num\_endcsname}%
    \_edef\_thecaptitle{\_mtext{\_tmpa}}%
-   \_ifcsname _everycaption\_tmpa\_endcsname 
-       \_ea\_the \_csname _everycaption\_tmpa\_endcsname \_fi
+   \_ea\_the \_csname _everycaption\_tmpa\_endcsname
    \_def\_par{\_nbpar\_egroup}\_let\par=\_par
    \_cs{_printcaption\_tmpa}%
 }
@@ -344,26 +363,26 @@
 \_let \_printcaptionf = \_printcaptiont % caption of figures = caption of tables
 
    \_doc -----------------------------
-   The default format of `\caption` text is paragraph in block narrower by 
-   `\_iindent` and with the last line is centered. This setting is done by 
-   the \`\_narrowlastlinecentered` macro. 
+   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
+   \_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`). 
+   or in internal mode when `\eqaligno` is used (we don't add `\eqno`).
    \_cod -----------------------------
 
 \_optdef\_eqmark []{\_trylabel \_ineqmark}
 \_def\_ineqmark{\_incr\_dnum
-  \_ifinner\_else\_eqno \_fi 
-  \_wlabel\_thednum \_thednum
+  \_ifinner\_else\_eqno \_fi
+  \_wlabel\_thednum \_hbox{\_thednum}%
 }
 \_public \eqmark ;
 
@@ -371,7 +390,7 @@
    The \`\numberedpar` `<letter>{<name>}` is implemented here.
    \_cod -----------------------------
 
-\_newcount\_counterA \_newcount\_counterB \_newcount\_counterC 
+\_newcount\_counterA \_newcount\_counterB \_newcount\_counterC
 \_newcount\_counterD \_newcount\_counterE
 
 \_def\_resetABCDE {\_counterA=0 \_counterB=0 \_counterC=0 \_counterD=0 \_counterE=0 }
@@ -395,7 +414,7 @@
    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 
+   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}}
@@ -413,6 +432,8 @@
 
 \_endcode % -------------------------------------
 
+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

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/slides.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/slides.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/slides.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,9 +1,9 @@
-% This is part of OpTeX project, see http://petr.olsak.net/optex
+% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl \slideshow {Slides style for OpTeX <2020-03-19>} % loaded on demand by \slides
 
    \_doc -----------------------------
-   Default margins and design is declared here. 
+   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.
@@ -31,11 +31,11 @@
 \_onlyrgb   % RGB color space is better for presentations
 
    \_doc -----------------------------
-   The bottom margin is set to 3\,mm. If we use 1\,mm, then baseline of
-   `\footline` is 2\,mm from the bottom page. This is depth of the `\Grey`
+   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. 
+   16\,mm for wide pages.
    \_cod -----------------------------
 
 \_footlinedist=1mm
@@ -52,13 +52,13 @@
 
    \_doc -----------------------------
    The \`\pshow``<num>` prints the text in invisible
-   (transparent) font when \^`\layernum`\code{<}`<num>`. 
-   The trasparency is set by by `\pdfpageresoyrces` primitive.
+   (transparent) font when \^`\layernum`\code{<}`<num>`.
+   The transparency is set by `\pdfpageresoyrces` primitive.
    \_cod -----------------------------
 
-\pdfpageresources{/ExtGState << /Invisible << /Type /ExtGState /ca 0 /CA 0 >> 
+\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 >> 
+\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}}
@@ -68,13 +68,13 @@
 \_def\_pshow#1{\_use{=#1}\Red \_use{<#1}\Transparent \_ignorespaces}
 
    \_doc -----------------------------
-   The main level list of items is activated here. The `\_item:X` and 
+   The main level list of items is activated here. The `\_item:X` and
    `\_item:x` are used and are re-defined here.
-   If we are in nested level of items and `\pg+` is used then
+   If we are in a nested level of items and `\pg+` is used then
    `\egroups` macro expands to the right number of `\egroup`s
-   in order to close page correctly. The level of nested item lists
-   is saved to the `\_ilevel` register and used when we start again 
-   the next text after `\pg+`. 
+   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
@@ -101,10 +101,10 @@
    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 a clickable navigation to the pages and how to check
-   the data integrity at the end of document using `\_endslides`.
+   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 re-defined here as an alternative to `\pg.`.
+   The `\bye` macro is redefined here as an alternative to `\pg.`.
    \_cod -----------------------------
 
 \_def\_endslides{\_end}
@@ -113,7 +113,7 @@
    \_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`. 
+   and typeset in `\Blue`.
    \_cod -----------------------------
 
 \_def\_titfont{\_typosize[42/60]\_bf \Blue}
@@ -121,27 +121,27 @@
 \_def\_secfont{\_typosize[25/30]\_bf \Blue}
 
 \_nonum \_notoc \_let\_resetnonumnotoc=\_relax
-\_def\_printsec#1{\_par 
+\_def\_printsec#1{\_par
    \_abovetitle{\_penalty-400}\_bigskip
-   {\_secfont \_noindent \_leftskip=0pt plus1fill \_rightskip=\_leftskip 
+   {\_secfont \_noindent \_leftskip=0pt plus1fill \_rightskip=\_leftskip
      \_printrefnum[@\_quad]#1\_nbpar}\_insertmark{#1}%
-   \_nobreak \_belowtitle{\_medskip}% 
+   \_nobreak \_belowtitle{\_medskip}%
 }
 
    \_doc -----------------------------
-   When \`\slideshow` is active then each page is opened 
+   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`. 
+   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.   
+   \`\layernum` register.
    \_cod -----------------------------
 
 \_newbox\_slidepage  \_newbox\_slidepageB
@@ -159,20 +159,20 @@
 }
 \_def\_destboxslide{\_def\_destbox[##1:##2]{\_isequal{##1}{ref}\_iffalse \_destboxori[##1:##2]\_fi}}
 
-\_def\_openslide{\_setbox\_slidepage=\_vbox\_bgroup \_setilevel 
+\_def\_openslide{\_setbox\_slidepage=\_vbox\_bgroup \_setilevel
    \_ifvoid\_slidepage \_else \_unvbox\_slidepage \_nointerlineskip\_lastbox \_fi}
 \_def\_setilevel{\_loop \_decr\_gilevel \_ifnum\_gilevel<0 \_else \_begitems \_repeat}
 
-\_def\_closepage{\_egroups  
+\_def\_closepage{\_egroups
    \_ifnum \_maxlayers=0 \_unvcopy\_slidepage \_vfil\_break
-   \_else \_begingroup \_setwarnslides \_layernum=0 
-      \_loop 
+   \_else \_begingroup \_setwarnslides \_layernum=0
+      \_loop
          \_ifnum\_layernum<\_maxlayers \_advance\_layernum by1
             \_printlayers \_vfil\_break
-            \_ifnum\_layernum<\_maxlayers \_incr\_slidelayer \_decr\_pageno \_fi 
+            \_ifnum\_layernum<\_maxlayers \_incr\_slidelayer \_decr\_pageno \_fi
       \_repeat
       \_global\_maxlayers=0
-      \_incr\_layernum \_global\_setbox\_slidepage=\_vbox{\_printlayers}%  
+      \_incr\_layernum \_global\_setbox\_slidepage=\_vbox{\_printlayers}%
       \_endgroup
    \_fi}
 \_def\_resetpage{%
@@ -217,10 +217,10 @@
 
    \_doc -----------------------------
    We must to redefine \`\fnotenumpages` because the data from `.ref` file
-   are less usable for implementing such feature: the
-   footnote should be in more layers repeatedly. But we can suppose that 
+   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. 
+   this macro.
    \_cod -----------------------------
 
 \_def \_fnotenumpages {\_def\_fnotenum{\_the\_lfnotenum}\_pgfnotefalse

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/styles.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/styles.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/styles.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl \report {Basic styles of OpTeX <2020-03-28>} % preloaded in format
 
@@ -17,7 +17,7 @@
    \_def\_boxlinesE{\_ifhmode\_egroup\_empty\_fi}%
    \_def\_nl{\_boxlinesE}%
    \_bgroup \_lccode`\~=`\^^M\_lowercase{\_egroup\_let~}\_boxlinesE
-   \_everypar{\_setbox0=\_lastbox\_endgraf 
+   \_everypar{\_setbox0=\_lastbox\_endgraf
       \_hbox\_bgroup \_catcode`\^^M=13 \_let\par=\_nl \_aftergroup\_boxlinesC}%
 }
 \_def\_boxlinesC{\_futurelet\_next\_boxlinesD}
@@ -29,7 +29,7 @@
    The \`\report` and \`\letter` style initialization macros are defined here.
    \nl
    The `\letter` defines \`\address` and \`\subject` macros.
-   \_cod ----------------------------- 
+   \_cod -----------------------------
 
 \_def\_report{
    \_typosize[11/13.2]
@@ -89,18 +89,18 @@
 
 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. 
+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. 
+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. 
+esse cillum dolore eu fugiat nulla pariatur.
 
 S úctou
 

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/table.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/table.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/table.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,10 +1,10 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl \table {Basic macros for OpTeX <2020-05-26>} % 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 
+   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 -----------------------------
 
@@ -12,20 +12,20 @@
 
    \_doc -----------------------------
    We save the `to<size>` or `pxto<size>` to `#1` and \`\_tableW` sets the
-   `to<size>` to the \`\_tablew` macro. 
+   `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 
+   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 
+\_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 
+\_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 ;
@@ -36,8 +36,9 @@
    `\_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 reading `{<data>}` by
-   the \^`\_tableB` macro.
+   `\_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
@@ -45,22 +46,22 @@
    \_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 
+              height\_dimexpr\_ht\_tstrutbox+\_tablinespace
               depth\_dimexpr\_dp\_tstrutbox+\_tablinespace}%
           \_offinterlineskip
           \_lineskip=-2\_tablinespace
    \_fi
-   \_colnum=0 \_let\_addtabitem=\_addtabitemx 
+   \_colnum=0 \_let\_addtabitem=\_addtabitemx
    \_def\_tmpa{}\_tabdata={\_colnum1\_relax}\_scantabdata#1\_relax
-   \_the\_everytable \_tableB
+   \_the\_everytable \_bgroup \_catcode`\#=12 \_tableB
 }
 
    \_doc -----------------------------
-   The \`\_tableB``{<data>}` saves `<data>` to `\_tmpb`
+   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 which scan its parameter 
-   to the delimeiter written in right part of table item declaration. 
-   See \^`\fS` for example. The `\crcr` cannot be hidden in other macro in such case.
+   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
@@ -68,30 +69,33 @@
    \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 
+   \"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. 
+   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 to create second real group for each table item.
+   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 
+   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 -----------------------------
 
-\_def\_tableB#1{\_def\_tmpb{#1}%
+\_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}%
@@ -104,21 +108,22 @@
       \_halign\_tablew \_tableC
    \_fi \_egroup
 }
-\_def\_tableC{\_ea{\_ea\_bgroup\_the\_tabdata\_egroup\_tabskip=\_tabskipr\_cr\_tmpb\_crcr}}
+\_def\_tableC{\_ea{\_ea\_bgroup\_the\_tabdata\_egroup\_tabskip=\_tabskipr\_cr
+   \_scantextokens\_ea{\_tmpb\_crcr}}}
 
 \_newbox\_tstrutbox  % strut used in table rows
 \_newtoks\_tabdata   % the \halign declaration line
 
    \_doc -----------------------------
-   The \`\_scantabdata` macro converts `\table`'s `<declaration>` to 
+   The \`\_scantabdata` macro converts `\table`'s `<declaration>` to
    `\halign` `<converted declaration>`.
-   The result is stored into \`\_tabdata` tokens list. 
-   For example, the 
+   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 
+   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
@@ -141,10 +146,10 @@
                        \_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}\_scantabdata}
+\_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}\_scantabdata}
+   \_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}
@@ -155,11 +160,11 @@
    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` 
+   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: 
+   write:
    \begtt
    \def\showcolnum{\ea\def\ea\totcolnum\ea{\the\colnum}\the\colnum/\totcolnum}
    \table{ccc}{\showcolnum & \showcolnum & \showcolnum}
@@ -166,7 +171,7 @@
    \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. 
+   is processed.
    \_cod -----------------------------
 
 \_newcount\_colnum     % number of current column in the table
@@ -196,7 +201,7 @@
    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 
+   `\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.
@@ -206,16 +211,16 @@
 \_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 
+   \_vtop{\_hsize=#1\_relax \_baselineskip=\_normalbaselineskip
    \_lineskiplimit=\_zo \_noindent##\_unsskip
    \_ifvmode\_vskip\_dp\_tstrutbox \_else\_lower\_dp\_tstrutbox\_hbox{}\_fi}\_the\_tabitemr}
 
    \_doc -----------------------------
-   User puts optional spaces around the table item typically, i.e.\ he/she writes
-   `& text &` instead `&text&`. The left space is ignored by internal \TeX/ algorithm but 
+   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/ 
+   This macro isn't only the primitive `\unskip` because we allow usage of plain \TeX/
    `\hideskip` macro: `&\hideskip text\hideskip&`.
    \_cod -----------------------------
 
@@ -222,16 +227,16 @@
 \_def\_unsskip{\_ifmmode\_else\_ifdim\_lastskip>\_zo \_unskip\_fi\_fi}
 
    \_doc -----------------------------
-   The \`\fL`, \`\fR`, \`\fC` and \`\fX` macros only does a special parameters settings
+   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. 
+   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} 
+\_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
 }
@@ -238,10 +243,10 @@
 \_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 in order to suppress the negative `\lineskip` 
+   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 -----------------------------
 
@@ -249,7 +254,7 @@
 \_def\_crll{\_crcr\_noalign{\_hrule\_kern\_hhkern\_hrule}}
 \_def\_zerotabrule {\_noalign{\_hrule height\_zo width\_zo depth\_zo}}
 
-\_def\_crli{\_crcr \_zerotabrule \_omit 
+\_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}
@@ -262,7 +267,7 @@
    \_vvleft\_crlpD\_ddlinedata \_global\_tmpnum=0 \_crcr \_zerotabrule}
 \_def\_crlpA#1,{\_ifx\_end#1\_else \_crlpB#1-\_end,\_expandafter\_crlpA\_fi}
 \_def\_crlpB#1#2-#3,{\_ifx\_end#3\_xdef\_crlplist{\_crlplist#1#2,}\_else\_crlpC#1#2-#3,\_fi}
-\_def\_crlpC#1-#2-#3,{\_tmpnum=#1\_relax 
+\_def\_crlpC#1-#2-#3,{\_tmpnum=#1\_relax
    \_loop \_xdef\_crlplist{\_crlplist\_the\_tmpnum,}\_ifnum\_tmpnum<#2\_advance\_tmpnum by1 \_repeat}
 \_def\_crlpD{\_global\_advance\_tmpnum by1
    \_edef\_tmpa{\_noexpand\_isinlist\_noexpand\_crlplist{,\_the\_tmpnum,}}%
@@ -270,7 +275,7 @@
 
 \_def\_tskip{\_afterassignment\_tskipA \_tmpdim}
 \_def\_tskipA{\_gdef\_dditem{}\_gdef\_vvitem{}\_gdef\_vvitemA{}\_gdef\_tabstrutA{}%
-    \_vbox to\_tmpdim{}\_ddlinedata \_crcr 
+    \_vbox to\_tmpdim{}\_ddlinedata \_crcr
     \_zerotabrule \_noalign{\_gdef\_tabstrutA{\_copy\_tstrutbox}}}
 
 \_public \crl \crll \crli \crlli \crlp \tskip ;
@@ -281,7 +286,7 @@
    convert `<declaration>` from `\table` syntax to `\halign` syntax.
    \_cod -----------------------------
 
-\_def\_mspan{\_omit \_tabdata={\_tabstrutA}\_let\_tmpa=\_relax \_afterassignment\_mspanA \_mscount=}
+\_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}%
@@ -291,18 +296,18 @@
 \_public \mspan ;
 
    \_doc -----------------------------
-   The \`\vspan``{<number>}{<text>}` implementaiton is here.
+   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 one-digit number. If you want to set more digits 
-   then use braces. 
+   The `#1` parameter must be a one-digit number. If you want to set more digits
+   then use braces.
    \_cod -----------------------------
 
 \_def\_vspan#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}} 
+    -\_dimexpr(\_ht\_tstrutbox+\_dp\_tstrutbox)/2\_relax \_hbox{#2}}\_vss}}
 \_public \vspan ;
 
    \_doc -----------------------------
@@ -369,43 +374,43 @@
 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 `:` 
+should be written more exactly using the boundary declarator `:`
 by `{|c||:c(xx)(yy):c}`. But you can set these boundaries to
-another places using the boundary declarator~`:` explicitly, 
-for example `{|c:||c(xx):(yy)c}`. The boundary declarator `:` 
-can be used only once between each two column declarators. 
+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 own group. The `(<cmd>)` are parts of the given
+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 given column, you can do this by
-`(<setting>)` followed by column declarator. But if such column is not
+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: 
+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 
+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. 
+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 for all spaces between columns. But you can set each such space
-individualy if you use `(\tabskip=<value>)` in the <declaration> immediately
+\^`\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` have individual value. For example
-`c(\tabskip=5pt):r` gives `\tabskip` value betwen `c` and `r` columns. 
-You need not to use boundary character explicitly, so `c(\tabskip=5pt)r` gives
+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.
 
-The space before first column is given by the \^`\tabskipl` 
-and the space after last column is equal to \^`\tabskipr`. 
+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
@@ -421,9 +426,9 @@
 * `\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 
+* `\table pxto<size>{<declaration>}{<data>}` expands the columns declared
   by `p{<size>}`, if the `<size>` is given by a virtual \^`\tsize` unit.
-  See example below.
+  See the example below.
 \enditems
 
 Example of `\table to<size>`:
@@ -433,11 +438,11 @@
 \table to\hsize {lr}{<data>}
 \endtt
 %
-This table has its width `\hsize`. First column starts at the left boundary of
-this table and it is justified left (to the boundary). Second column ends at
+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 are stretchable and shrinkable in order to reach
-given width `\hsize`.
+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}"):
@@ -445,7 +450,7 @@
 \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 
+               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 }
@@ -453,26 +458,26 @@
 
 \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 
+               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` colum is variable width (it gets the width of most wide item)
+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, 
+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>} 
+\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 acros the whole document
+\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
@@ -486,12 +491,12 @@
 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 writen before `[<label>]` (for example
+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 second one.
+after the second one.
 
 \begtt
 \def\leftitem#1{\par
@@ -511,7 +516,7 @@
            \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)  
+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

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/uni-lcuc.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/uni-lcuc.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/uni-lcuc.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,8 +1,8 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% 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 
+% uni-lcuc.tex -- sets \lccodes and \uccodes for Unicode chars, nothing more
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % Petr Olsak,  Jul. 2014
 

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/unimath-codes.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/unimath-codes.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/unimath-codes.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,11 +1,11 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl \_ncharrmA {Uni math codes <2020-11-13>} % 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 normal
-   character $α$. You can type it directly in your editor, if you know how
+   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 -----------------------------
 
@@ -110,8 +110,8 @@
 \_protected\_def\_inmath#1{\_relax \_ifmmode#1\_fi} % to keep off \loop processing in text mode
 
 % You can redefine these macros to follow your wishes.
-% For example you need upgright lowercase greek letters, you don't need
-% \bf and \bi behaves as sans serif in math, ...
+% 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}}
@@ -135,7 +135,7 @@
    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. 
+   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):
@@ -146,7 +146,7 @@
          \_loop
             \_pset{\_umathnumA}{#4}%
             \_ifnum\_umathnumA<"#2 \_advance\_umathnumA by1
-         \_repeat 
+         \_repeat
       \_fi
    }
    \_def\_pB#1{\_if#1L1\_fi \_if#1B2\_fi \_if#1V2\_fi \_if#1R3\_fi \_if#1N0\_fi \_if#1U0\_fi
@@ -163,9 +163,9 @@
 
    \_doc -----------------------------
    Each math symbol has its declaration in the file `unicode-math-table.tex`
-   which is copied to `unimath-table.opm`. The file has following format:
+   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. 
+   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):
@@ -185,7 +185,7 @@
 \_global\_Udelcode`<=1 "027E8 % these characters have different meaning
 \_global\_Udelcode`>=1 "027E9 % as normal and as delimeter
 
-\_mit % default math alphapbets setting
+\_mit % default math alphabets setting
 
 \_Umathcode `- = 2 1 "2212
 %\_Umathcode`: = 3 1 "3A  % mathclass defines it as 6 1 "3A (punctuation)
@@ -200,14 +200,14 @@
 \_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}%       
+   \_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 
+\_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 
+   \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 }
@@ -235,13 +235,14 @@
 \_let\|=\Vert
 \_mathcode`\_="8000
 
-\_global\_Umathcode    "22EF         = 0 1 "22EF % mathclass.txt says that it is Rel
+\_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.
 
    \_doc -----------------------------
-   Aliases are declared here. They are names not menitioned in the `unimath-table.opm` file
+   Aliases are declared here. They are names not mentioned in the `unimath-table.opm` file
    but commonly used in \TeX.
    \_cod -----------------------------
 
@@ -272,36 +273,36 @@
 \_let \hksearow=\hksearrow
 \_let \hkswarow=\hkswarrow
 
-\_let \upalpha=\mupalpha         
-\_let \upbeta=\mupbeta          
-\_let \upgamma=\mupgamma         
-\_let \updelta=\mupdelta         
-\_let \upepsilon=\mupvarepsilon        
+\_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 \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         
+\_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
@@ -316,15 +317,15 @@
 }}}
 \_def\_negationof #1#2{\_ea\_let \_csname _not!\_csstring#1\_endcsname =#2}
 
-\_negationof =         \neq   
-\_negationof <         \nless 
+\_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 \equal    \ne
+\_negationof \le       \nleq
+\_negationof \ge       \ngeq
+\_negationof \greater  \ngtr
 \_negationof \forksnot \forks
 \_negationof \in       \notin
 \_negationof \mid      \nmid
@@ -370,12 +371,12 @@
 
    \_doc -----------------------------
    Newly declared public control sequences are used in internal macros by
-   \OpTeX/. We need to get new meanings of these control sequences in
-   private name space.
+   \OpTeX/. We need to get new meanings for these control sequences in
+   the private namespace.
    \_cod -----------------------------
 
-\_private 
-   \ldotp \cdotp \bullet \triangleleft \trianglerigt \mapstochar \rightarrow 
+\_private
+   \ldotp \cdotp \bullet \triangleleft \trianglerigt \mapstochar \rightarrow
    \prime \lhook \rightarrow \leftarrow \rhook \triangleright \triangleleft
    \Relbar \Rightarrow \relbar \rightarrow \Leftarrow \mapstochar
    \longrightarrow \Longleftrightarrow \vdots \ddots ;
@@ -382,33 +383,17 @@
 
 \_endcode
 
-\secc A few observations
+\secc More Unicode-math examples
 
-{\bf 1.} You can combine more fonts in math, if you register them to another
-math families (5, 6, 7, etc.) in the \^`\normalmath` macro.
+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
 
-The default value of \^`\normalmath` shows a combination of base Unicode Math
-font with 8bit Math font at family 4. See definition of the `\script` macro where
-`\fam4` is used. Of course, we need to set `\rmvariables` too, because 8bit font
-accepts only codes less than 255.
-
-\medskip\noindent{\bf 2.}
-XITSmath-bold needs correction: the norm symbol $\|x\|$ is missing here.
-So, you can define:
-
-\begtt
-\def\_boldmath{%
-   \loadumathfamily 1 {[xitsmath-bold]}{} % Base font
-   \loadmathfamily  4 rsfs                % script
-   \loadumathfamily 5 {[xitsmath-regular]}{}
-   \def\|{\Udelimiter 0 5 "02016 }%       % norm delimiter from family 5
-   \setmathdimens
-}
-\endtt
-
-\noindent{\bf 3.} You can combine more Unicode math fonts in single formula using
+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
 

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/usebib.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/usebib.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/usebib.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl \MakeReference {Reading bib databases <2020-03-13>} % loaded on demand by \usebib
 
@@ -43,7 +43,7 @@
         \_let\_citeI=\_relax \_xdef\_citelist{\_citelist\_citelistB}%
         \_global\_let\_addcitelist=\_writeXcite
         \_def\_tmp##1[*]##2\_relax{\_def\_tmp{##2}}\_expandafter\_tmp\_citelist[*]\_relax
-        \_ifx\_tmp\_empty\_else % there was \nocite[*] used. 
+        \_ifx\_tmp\_empty\_else % there was \nocite[*] used.
            \_setbox0=\_vbox{\_hsize=\_maxdimen \_def\_citelist{}\_adef@{\_readbibentry}%
            \_input #3.bib
            \_expandafter}\_expandafter\_def\_expandafter\_citelist\_expandafter{\_citelist}%
@@ -91,7 +91,7 @@
 \_def\lb at compare#1\lb at eoe#2\lb at eoe{% SpecialSort:
   \_ifx\lb at sorttype\lb at namestring
      \_ifx\_sortfield\_undefined \lb at compareA#1\lb at eoe#2\lb at eoe
-     \_else 
+     \_else
         \_ea\_RetrieveFieldInFor\_ea{\_sortfield}\lb at entrykey\lb at temp
         \_ifx\lb at temp\_empty \_toks1={#1\lb at eoe}\_else \_toks1=\_ea{\lb at temp\lb at eoe}\_fi
         \_ea\_RetrieveFieldInFor\_ea{\_sortfield}\lb at currententry\lb at temp
@@ -113,7 +113,7 @@
 \_catcode`\@=\_tmpnum
 
    \_doc -----------------------------
-   Main action per every entry.
+   Main action per each entry.
    \_cod -----------------------------
 
 \_def\MakeReference{\_par \_bibskip
@@ -123,26 +123,26 @@
      \_bibmark=\_ea{\_tmpb}%
   \_else \_bibmark={}\_fi
   \_edef\_tmpb{\EntryKey}%
-  \_noindent \_dest[cite:\_the\_bibnum]\_printlabel\EntryKey 
-  \_printbib 
-  {%  
+  \_noindent \_dest[cite:\_the\_bibnum]\_printlabel\EntryKey
+  \_printbib
+  {%
      \_RetrieveFieldIn{entrytype}\_entrytype
      \_csname _print:BEGIN\_endcsname
-     \_isdefined{_print:\_entrytype}\_iftrue 
+     \_isdefined{_print:\_entrytype}\_iftrue
         \_csname _print:\_entrytype\_endcsname
-     \_else 
+     \_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 
+     \_ifx\_wref\_wrefrelax\_else
          \_immediate\_wref\_Xbib{{\EntryKey}{\_the\_bibnum}{\_the\_bibmark}}\_fi
   }\_par
 }
 
    \_doc -----------------------------
-   The \`\_bprinta`, \`\_bprintb`, \`\_bprintc`, \`\_bprintv` 
+   The \`\_bprinta`, \`\_bprintb`, \`\_bprintc`, \`\_bprintv`
    commands used in the style files:
    \_cod -----------------------------
 
@@ -149,7 +149,7 @@
 \_def\_bprinta {\_bprintb*}
 \_def\_bprintb #1[#2#3]{%
    \_def\_bibfieldname{#2#3}%
-   \_if!#2\_relax 
+   \_if!#2\_relax
       \_def\_bibfieldname{#3}%
       \_RetrieveFieldIn{#3}\_bibfield
       \_ifx\_bibfield\_empty\_else
@@ -177,12 +177,12 @@
 \_def\_bprintvA #1,{%
    \_if^#1^\_tmpb\_else
       \_RetrieveFieldIn{#1}\_tmp
-      \_ifx \_tmp\_empty 
+      \_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
@@ -190,7 +190,7 @@
 }
 
    \_doc -----------------------------
-   Various macros + multilinguas. Note that \`\_nobibwarnlist` is used in
+   Various macros + multilingual. Note that \`\_nobibwarnlist` is used in
    \`\_bibwarning` and it is set by \^`\nobibwarning` macro.
    \_cod -----------------------------
 
@@ -205,7 +205,7 @@
 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), 
+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:
@@ -215,31 +215,31 @@
 \endtt
 
 This command reads the `<bibfiles>` directly and creates the list of
-bibliographics references (only those declared by by \~`\cite[]` or
+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 an exceptions in your
+`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 optionals fields (like `author`, `title`). When
-mandatory field is missing in an entry in the `.bib` file then warning is printed on the
+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 comma separated list
+\^`\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 obscure notation for accents like `{\"o}`.
+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
+\secc Notes for bib-style writers
 
 The `.bib` files include records in the format:
 
-\begtt
+\begtt \catcode`\<=13
 @<entry-type>{<label>,
    <field-name> = "<field-data>",
    <field-name> = "<field-data>",
@@ -255,22 +255,22 @@
 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 previous sentence means that bib style writer must
+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 oder, by what format they will printed on (italic, caps, etc.),
-which fields are mandatory, which are optional and which are ingnored 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 alredy done: `bib-simple.opm`
+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>` have to be lowercase here. \OpTeX/ supports following
-macros for more comfortable setting of printing rules:
+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>
@@ -285,7 +285,7 @@
     parameter can be used more than once and can be enclosed in nested
     braces. The `*` parameter can be used at most once and cannot be enclosed
     in braces. Warning: if the `\_bprintb` commands are nested (`\_bprintb` in
-    `\_bprintb`), then you need to write `####1` parameter for internal `\_bprintb`.
+    `\_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
@@ -293,8 +293,8 @@
 * \^`\_bprintv` `[<field1>,<field2>,...] {<if defined>} {<if not defined>}`.
     The part <if defined> is executed if <field1> or <filed2> or ...
     is defined, else the second part <if not defined> is executed.
-    There is one filed name or the list field names separated by commas.  
-    The parts cannot include any parameter.
+    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
@@ -301,37 +301,37 @@
 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 begin or
+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
+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
-printing of special fields `author` and `editor`. These fields include a
+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 in the list.
-The bib style writer must define
+\^`\_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 currently processed author in the list
+* `\_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 `\usebib` command is executed
+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
+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>:
@@ -339,12 +339,12 @@
 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,
+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
+User or author of the bib-style can create the hidden field which has a
 precedence while sorting names. Example:
 
 \begtt
@@ -361,7 +361,7 @@
 Now, this author is sorted between H and I, because the Ch digraph in this
 name has to be sorted by this rule.
 
-If you need (for example) to place the autocitations before other citations,
+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`.
 
@@ -392,5 +392,5 @@
 %    \input opmac-bib
 % before using the command \usebib.
 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% end 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% end
 

Modified: trunk/Master/texmf-dist/tex/luatex/optex/base/verbatim.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/base/verbatim.opm	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/base/verbatim.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,11 +1,11 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \_codedecl \begtt {Verbatim <2020-11-13>} % preloaded in format
 
    \_doc ----------------------------
-   The internal parameters 
+   The internal parameters
    \`\_ttskip`, \`\_ttpenalty`, \`\_viline`, \`\_vifile` and \`\_ttfont`
-   for verbatim macros are set. 
+   for verbatim macros are set.
    \_cod ----------------------------
 
 \_def\_ttskip{\_medskip}           % space above and below \begtt, \verbinput
@@ -21,7 +21,7 @@
    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> 
+   \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`.
@@ -29,12 +29,12 @@
    \^`\_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 
+   `\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 
+\_protected\_sdef{_code }#1{{\_escapechar=-1 \_ttfont \_the\_everyintt \_relax
    \_ea\_printinverbatim\_ea{\_detokenize{#1}}}}
 \_def\_printinverbatim#1{\_leavevmode\_hbox{#1}}
 
@@ -42,7 +42,7 @@
 \_public \code ;
 
    \_doc ----------------------------
-   The \`\_setverb` macro sets all catcodes to \"verbatim mode". It should be used only 
+   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.
@@ -51,7 +51,7 @@
 \_newcatcodetable \_verbatimcatcodes
 \_def\_setverb{\_begingroup
    \_def\do##1{\_catcode`##1=12 }
-   \_dospecials   
+   \_dospecials
    \_savecatcodetable\_verbatimcatcodes % all characters are normal
    \_endgroup
 }
@@ -62,9 +62,9 @@
    \`\activettchar``<char>` saves original catcode of previously declared `<char>` (if
    such character was declared) using \`\_savedttchar` and \`\_savedttcharc`
    values. Then new such values are stored. The declared 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
+   by `\_adef` as a macro (active character) which opens a group,
+   does `\_setverb` and other settings and reads its parameter until second the same
+   character. This is done by the \`\_readverb` macro. Finally, it prints scanned
    `<text>` by \^`\_printinverbatim` and closes group. Suppose that `\activettchar"` is
    used. Then the following work is schematically done:
    \begtt
@@ -85,13 +85,16 @@
 \_public \activettchar ;
 
    \_doc ----------------------------
-   \`\begtt` is defined only as public. We don't need private `\_begtt` variant.
-   This macro is defined by `\eoldef`, so user can put a parameter at the
-   same line where `\begtt` is. This `#1` parameter is used after `\_everytt`
-   parameters settings, so user can change them locally.
+   \`\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 `\begtt` macro opens group, does \^`\_setverb` and another preprocessing, sets
-   `\endlinechar` to `^^J` and reads the following text in verbatim mode 
+   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}
@@ -99,25 +102,25 @@
    \endtt
    We must to ensure that the backslash in `\endtt` has category 12 (this is a
    reason of the `\ea` chain in real code).
-   The `#2` is something between `\endtt` and end of the same line and it is simply
+   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
+   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.  
+   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. 
+   in the next paragraph.
    \_cod ---------------------------
 
-\_eoldef \begtt#1{\_par \_wipeepar \_setxhsize
+\_def\begtt{\_par \_begingroup \_adef\%##1\_relax{\_relax}\_begtti}
+\_eoldef \_begtti#1{\_wipeepar \_setxhsize
    \_vskip\_parskip \_ttskip
-   \_begingroup
-   \_setverb 
+   \_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}%
@@ -141,14 +144,17 @@
    `\begtt...\endtt` and from `\verbinput` too.
 
    The \^`\_testcommentchars` replaces the following `\_iftrue` to
-   `\_iffalse` by default unless the \~`\commentchars` are set. So, main body
-   of the loop is written in `\_else` part of the `\_iftrue` condition.
+   `\_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` in order to return the vertical mode. The \`\_printverblinenum`
+   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{%
@@ -168,19 +174,19 @@
    \_ifx\_end#2 \_let\_next=\_relax \_else \_def\_next{\_printverb#2}\_fi
    \_next
 }
-\_def\_printverbline#1{\_penalty \_ttpenalty 
-   \_indent \_printverblinenum \_kern\_ttshift #1\par}
+\_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 begining of `\_doverbinput`, we have
+   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.
-   Similar preparation is done as in `\begtt` after the group is opened. Then
+   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
@@ -250,7 +256,7 @@
    \_ifnum\_vidolines=0 \_tmpnum=-1 \_fi
    \_ifeof\_vifile \_tmpnum=\_vidolines\_space \_fi
    \_loop \_ifnum\_tmpnum<\_vidolines\_space
-            \_vireadline 
+            \_vireadline
             \_ifnum\_vidolines=0 \_else\_advance\_tmpnum by1 \_fi
             \_ifeof\_vifile \_tmpnum=\_vidolines\_space \_else \_visaveline \_fi %% save line
             \_repeat
@@ -271,13 +277,13 @@
    \_doc -----------------------------
    If the language of your code\label[commentchars]\wlabel{}
    printed by \^`\verbinput` supports the
-   format of comments started by two characters from beginning of 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 non-verbatim mode without these two
-   characters and they look like the verbatim printing is interrupred
+   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 single command
+   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
@@ -290,10 +296,10 @@
    \endtt
 
    There is one limitation when \TeX/ interprets the comments declared by
-   \^`\commentchars`. Each block of comments are accummulated to one line
+   \^`\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 comments
+   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.
@@ -301,7 +307,7 @@
    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 ot tested line.
+   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.
 
@@ -311,7 +317,7 @@
 
    The accumulated comments are printed whenever the non-comment line
    occurs. This is done by \`\_printcomments` macro.
-   You can re-define it, but main idea must be kept: it is printed in the
+   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
@@ -351,11 +357,12 @@
 
 \_public \visiblesp ;
 
-\_endcode 
+\_endcode
 
 \_endinput
 
 History:
+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

Modified: trunk/Master/texmf-dist/tex/luatex/optex/demo/op-demo.tex
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/demo/op-demo.tex	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/demo/op-demo.tex	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \fontfam[LMfonts]              % Default font family: Latin Modern
 
@@ -8,7 +8,7 @@
 \hyperlinks \Blue\Blue         % active hyperlinks
 \activettchar`                 % in-text verbatim by `...`
 \everyintt={\Red}              % in-text verbatim Red
-\enquotes                      % use \"text" for English quotation  
+\enquotes                      % use \"text" for English quotation
 
 \tit Demonstration
 
@@ -37,7 +37,7 @@
 
 \sec References
 
-There is a numbered equation. 
+There is a numbered equation.
 The number is auto-generated by `\eqmark` sequence.
 $$\label[my-eq]
   a^2 + b^2 = c^2  \eqmark
@@ -53,17 +53,17 @@
 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 
+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 
+\sec[tab-sec] Tables
 
-The `\table` sequence can be used 
+The `\table` sequence can be used
 instead of \"low level" `\halign`.
-The following table is framed by `\frame` sequence 
-in order to get a double frame.
+The following table is framed by the `\frame` sequence
+to get a double frame.
 
 \bigskip
 \caption/t [my-tab]  Testing table.
@@ -76,8 +76,8 @@
 
 \sec Images
 
-The images (PDF, JPG, PNG, TIFF) can be inserted 
-by `\inspic` sequence. The `\caption` 
+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]
@@ -95,7 +95,7 @@
 This is verbatim.
   All characters are printed $$, \, # etc.
 \endtt
-or it can be included by `\verbinput` from external file.
+or it can be included by `\verbinput` from an external file.
 
 \verbinput (98-100) op-demo.tex
 
@@ -106,7 +106,7 @@
 are provided. For example:
 $$
   {\bi A} = \pmatrix {\cal C  & \script C \cr
-                      \frak M & \bbchar R }.  
+                      \frak M & \bbchar R }.
 $$
 Hundreds of AMS symbols are available:
 $\sphericalangle, \boxplus, \Cup, \Cap, \ldots$
@@ -117,11 +117,11 @@
 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. 
+`\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 `\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

Modified: trunk/Master/texmf-dist/tex/luatex/optex/demo/op-letter-cs.tex
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/demo/op-letter-cs.tex	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/demo/op-letter-cs.tex	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \letter         % \letter OpTeX style activated
 \fontfam[bonum]

Modified: trunk/Master/texmf-dist/tex/luatex/optex/demo/op-letter-en.tex
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/demo/op-letter-en.tex	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/demo/op-letter-en.tex	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 \useOpTeX
 
 \letter            % \letter OpTeX style activated

Modified: trunk/Master/texmf-dist/tex/luatex/optex/demo/op-slides.tex
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/demo/op-slides.tex	2021-01-14 21:47:37 UTC (rev 57418)
+++ trunk/Master/texmf-dist/tex/luatex/optex/demo/op-slides.tex	2021-01-14 21:53:33 UTC (rev 57419)
@@ -1,4 +1,4 @@
-%% This is part of OpTeX project, see http://petr.olsak.net/optex
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
 
 \slides   % OpTeX slides style activated
 
@@ -27,7 +27,7 @@
 
 * The the simple document looks like:
 
-\begtt 
+\begtt
 \slides       % style initialized
 %\wideformat  % 16:9
 \slideshow    % partially uncovering ideas
@@ -41,12 +41,12 @@
 \pg.
 \endtt
 
-* If `\slideshow` is missing or commented out then 
-  \"partially uncovering ideas" (see later) are deactivated. It is useful 
+* 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. 
+* 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.
 
@@ -58,31 +58,31 @@
   by `\tit Title` (terminated by end of line).
 * The `\subtit Author name etc.`\ (terminated by end of line)
   can be used after `\tit` at the first slide.
-* You can use `\nl` for new line in paragraphs or titles.
+* 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.
+* 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 
+* 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 blue square (`\type X` and `\type x` ).
+* 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.
+* 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 
+\begtt
 \sec My ideas
 
 * First idea
@@ -94,7 +94,7 @@
 * Final idea
 \endtt
 
-* Note: each page is processed in a group, so: put your own definitions 
+* Note: each page is processed in a group, so: put your own definitions
   (if~exist) before `\slideshow` or use `\global` assignment.
 
 \pg; %------------------------------------------------------------------
@@ -106,7 +106,7 @@
 * 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+ 
+  and a next text is added (usable for partially uncovering of ideas).\pg+
 \enditems
 
 * Summary:
@@ -113,7 +113,7 @@
 \begtt
 \pg;    ... next page
 \pg.    ... the end of the document
-\pg+    ... uncover next text at the same page
+\pg+    ... uncover next text on the same page
 \endtt
 \pg+
 
@@ -140,9 +140,9 @@
 
 * Summary
 ...
-* When `\slideshow` is not declared 
+* When `\slideshow` is not declared
   then `\pg+` is deactivated.\pg+
-* The `\pg+` creates a new \"virtual page", 
+* The `\pg+` creates a new \"virtual page",
   so the current paragraph is terminated.
 \pg;
 \endtt
@@ -151,16 +151,16 @@
 
 \sec Notes
 
-* When `\slideshow` is active then you cannot reference sections by 
+* When `\slideshow` is active then you cannot reference sections by
   hyperlinked `\ref`. Only `\pgref` works (and goes to the last layer
   of the referenced page).
 * If the text overfull the page (slide) then it follows to the next page without
-  saying explicitly `\pg;`. But `\slideshow` cannot work in such case.\pg+
+  saying explicitly `\pg;`. But `\slideshow` cannot work in this case.\pg+
 
 \sec More about design
 
-* You can use `\backgroundpic{<image-file>}` for putting an image to the backgroud.
-* You can re-declare `\footline` or re-define internal macros for design as 
+* You 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.
 * You can put the images or text wherever using `\putimege` or `\puttext`
   macros...
@@ -182,14 +182,14 @@
   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 
+  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 
+* The ring above is the result of
 
 \begtt
-\putpic .8\hsize 20mm 30mm \nospec {op-ring.png} 
+\putpic .8\hsize 20mm 30mm \nospec {op-ring.png}
 \endtt
   %
   used at beginning of this paragraph.\pg+
@@ -204,22 +204,22 @@
   a~group.
 * The exception is the nested environment `\begitems...\enditems`.
 * The `\pg+` always finalizes the current paragraph.
-  It is impossible to hide only a part of horizontal mode.\pg+
+  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 
+If you really need something unsupported by `\pg+` then you can use
 
 \begtt \catcode`\<=13
 \layers <number>
 <layered text>
 \endlayers
-\endtt 
+\endtt
 
 * The <layered text> should include conditions like
-  `\ifnum\layernum...` or `\ifcase\layernum`. 
+  `\ifnum\layernum...` or `\ifcase\layernum`.
   It is printed <number> times to more slide pages (layers) with the same
-  surrounding text. See next page... 
+  surrounding text. See next page...
 
 \pg; %------------------------------------------------------------------
 
@@ -240,7 +240,7 @@
 
 The following dance:
 \layers 3
-{\pshow2 Second text.} {\pshow3 Third text.} {\pshow1 First text.} 
+{\pshow2 Second text.} {\pshow3 Third text.} {\pshow1 First text.}
 \endlayers
 \pg+
 
@@ -248,13 +248,13 @@
 
 \begtt
 \layers 3
-{\pshow2 Second text.} {\pshow3 Third text.} {\pshow1 First text.} 
+{\pshow2 Second text.} {\pshow3 Third text.} {\pshow1 First text.}
 \endlayers
 \endtt
 
 \pg+
-* The <layered text> is treated as macro parameter. So, you cannot use verbatim
-  nor `\sec` titles here. Maximal one `\layers` environment can be per one 
+* 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; %------------------------------------------------------------------
@@ -264,15 +264,15 @@
 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 
+* 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 
+* plain \TeX{} gives you a possibility to simply
   {\em write} your document with minimal markup. The result is more compact.
-  You can concentrate to the contents of your document, not to the
+  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 ten 
+* on the other hand, you need to read only ten
   slides\fnote{this eleventh slide isn't counted}
   and you are ready to use {\bf\Blue\OpTeX/ slides}.
 

Added: trunk/Master/texmf-dist/tex/luatex/optex/pkg/emoji.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/pkg/emoji.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/luatex/optex/pkg/emoji.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -0,0 +1,55 @@
+% This is the macro package used by OpTeX, see http://petr.olsak.net/optex
+
+% emoji.opm, Petr Olšák <petr at 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}


Property changes on: trunk/Master/texmf-dist/tex/luatex/optex/pkg/emoji.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/luatex/optex/pkg/vlna.opm
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/optex/pkg/vlna.opm	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/luatex/optex/pkg/vlna.opm	2021-01-14 21:53:33 UTC (rev 57419)
@@ -0,0 +1,193 @@
+% This is the macro package used by OpTeX, see http://petr.olsak.net/optex
+
+% vlna.opm, Petr Olšák <petr at 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.


Property changes on: trunk/Master/texmf-dist/tex/luatex/optex/pkg/vlna.opm
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property


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