summaryrefslogtreecommitdiff
path: root/macros/luatex/optex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-03-19 03:00:56 +0000
committerNorbert Preining <norbert@preining.info>2021-03-19 03:00:56 +0000
commit6ad1cf68ae6add67e56faf5ec4390fead04e31b4 (patch)
treeac6239e221ac7bcc6d69b6cbc1d7736f60d19a00 /macros/luatex/optex
parentca17f652236af2ce3a16cb0125fb6e190d59cc17 (diff)
CTAN sync 202103190300
Diffstat (limited to 'macros/luatex/optex')
-rw-r--r--macros/luatex/optex/README7
-rw-r--r--macros/luatex/optex/base/alloc.opm7
-rw-r--r--macros/luatex/optex/base/f-heros.opm16
-rw-r--r--macros/luatex/optex/base/f-librecaslon.opm22
-rw-r--r--macros/luatex/optex/base/fams-ini.opm5
-rw-r--r--macros/luatex/optex/base/fonts-opmac.opm71
-rw-r--r--macros/luatex/optex/base/fonts-select.opm11
-rw-r--r--macros/luatex/optex/base/lists.opm5
-rw-r--r--macros/luatex/optex/base/makeindex.opm5
-rw-r--r--macros/luatex/optex/base/margins.opm6
-rw-r--r--macros/luatex/optex/base/math-macros.opm17
-rw-r--r--macros/luatex/optex/base/math-unicode.opm28
-rw-r--r--macros/luatex/optex/base/optex.ini3
-rw-r--r--macros/luatex/optex/base/optex.lua2
-rw-r--r--macros/luatex/optex/base/outlines.opm8
-rw-r--r--macros/luatex/optex/base/output.opm15
-rw-r--r--macros/luatex/optex/base/prefixed.opm6
-rw-r--r--macros/luatex/optex/base/sections.opm20
-rw-r--r--macros/luatex/optex/base/slides.opm25
-rw-r--r--macros/luatex/optex/base/styles.opm8
-rw-r--r--macros/luatex/optex/base/table.opm15
-rw-r--r--macros/luatex/optex/base/unimath-codes.opm5
-rw-r--r--macros/luatex/optex/base/usebib.opm12
-rw-r--r--macros/luatex/optex/demo/op-slides.tex39
-rw-r--r--macros/luatex/optex/doc/omls.tex4
-rw-r--r--macros/luatex/optex/doc/optex-doc.pdfbin1366580 -> 1380041 bytes
-rw-r--r--macros/luatex/optex/doc/optex-doc.tex2
-rw-r--r--macros/luatex/optex/doc/optex-math.tex6
-rw-r--r--macros/luatex/optex/doc/optex-userdoc.tex2
29 files changed, 293 insertions, 79 deletions
diff --git a/macros/luatex/optex/README b/macros/luatex/optex/README
index 6c5ae30b5a..b8f925e47c 100644
--- a/macros/luatex/optex/README
+++ b/macros/luatex/optex/README
@@ -19,6 +19,13 @@ doc/ ... PDF version of the OpTeX documentation and sources.
History:
+<1.01> Mar. 2021
+ Minor code fixes (thanks to reports from users).
+ LibreCaslon font file added.
+ two new callbacks from new LuaTeX 1.13 added to optex.lua
+ active * (in lists) works as normal in math mode.
+ f-heros(\slides): additional font XITSMath loaded (to the base FiraMath font).
+ \_xhsize seting added to \margins.
<1.00> Feb. 2021
The OMLS (OpTeX Markup Language Standard) was developed. It helps to create
convertors from/to OpTeX documents and similar applications.
diff --git a/macros/luatex/optex/base/alloc.opm b/macros/luatex/optex/base/alloc.opm
index 56c1d3dd63..5d874134d4 100644
--- a/macros/luatex/optex/base/alloc.opm
+++ b/macros/luatex/optex/base/alloc.opm
@@ -1,6 +1,6 @@
%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \newdimen {Allocators for registers <2020-05-12>} % loaded in format
+\_codedecl \newdimen {Allocators for registers <2021-02-15>} % loaded in format
\_doc -----------------------------
The limits are set first.
@@ -39,7 +39,7 @@
\_cod -----------------------------
\_def\_allocator #1#2#3{%
- \_global\_advance\_cs{_#2alloc}by1
+ \_incr{\_cs{_#2alloc}}%
\_ifnum\_cs{_#2alloc}>\_cs{_mai#2}%
\_errmessage{No room for a new \_ea\_string\_csname #2\_endcsname}%
\_else
@@ -75,7 +75,7 @@
\_chardef\_insertmin = 201
\_def\_newinsert #1{%
- \_global\_advance\_insertalloc by-1
+ \_decr\_insertalloc
\_ifnum\_insertalloc <\_insertmin
\_errmessage {No room for a new \_string\insert}%
\_else
@@ -168,5 +168,6 @@ the array-like declarator of counters.
\_endinput
+2021-02-15 \_advance -> \_incr, \_decr
2020-05-12 \newmath -> \newfam bug fixing
2020-01-23 released
diff --git a/macros/luatex/optex/base/f-heros.opm b/macros/luatex/optex/base/f-heros.opm
index ca62da93a5..767052cc45 100644
--- a/macros/luatex/optex/base/f-heros.opm
+++ b/macros/luatex/optex/base/f-heros.opm
@@ -19,7 +19,21 @@ Modifiers:^^J
\_initfontfamily % new font family must be initialized
-\_loadmath {[FiraMath-Regular]}
+\_ifmathloading
+ \_loadmath {[FiraMath-Regular]}
+ \_addto\_normalmath{\_loadumathfamily 5 {xitsmath-regular}{} }
+ \_addto\_boldmath {\_loadumathfamily 5 {xitsmath-bold}{} }
+ \_addto\frak{\_fam5 }\_addto\cal{\_fam5 }
+ \_normalmath
+ \_wterm{MATH-FONT(5): "[XITSMath-Regular/Bold]" -- used for \_string\cal, \_string\frak}
+ % \bf, \bi from FiraMath:
+ \_let\_bsansvariables=\_bfvariables
+ \_let\_bsansGreek=\_bfGreek
+ \_let\_bsansgreek=\_bfgreek
+ \_let\_bsansdigits=\_bfdigits
+ \_let\_bisansvariables=\_bivariables
+ \_let\_bisansgreek=\_bigreek
+\_fi
\_endcode
diff --git a/macros/luatex/optex/base/f-librecaslon.opm b/macros/luatex/optex/base/f-librecaslon.opm
new file mode 100644
index 0000000000..53f61834f1
--- /dev/null
+++ b/macros/luatex/optex/base/f-librecaslon.opm
@@ -0,0 +1,22 @@
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
+
+\_famdecl [LibreCaslon] \Librecaslon {Libre Caslon Text, inspired by Caslon}
+ {\onum} {\rm \bf \it \bi} {Termes}
+ {[LibreCaslonText-Regular]}
+ {\_def\_fontnamegen {[Libre\_currV]:\_capsV\_fontfeatures}}
+
+\_wlog{\_detokenize{%
+Modifier:^^J
+ \onum ...... oldstyle figures^^J
+}}
+
+\_moddef \resetmod {\_fsetV caps={},csl={CaslonText}
+ \_fvars \_cslV-Regular \_cslV-Bold \_cslV-Italic Csln-Bolditalic }
+\_moddef \onum {\_fsetV caps=+onum; }
+
+\_initfontfamily % new font family must be initialized
+
+\_loadmath {[texgyretermes-math]}
+
+\_endcode
+
diff --git a/macros/luatex/optex/base/fams-ini.opm b/macros/luatex/optex/base/fams-ini.opm
index 4b12550553..3c8ded975e 100644
--- a/macros/luatex/optex/base/fams-ini.opm
+++ b/macros/luatex/optex/base/fams-ini.opm
@@ -99,6 +99,11 @@
{ -,\caps: {\rm\bf\it\bi} \swash: {\it\bi} }
\_famalias [GaramondL]
+\_famfrom {Pablo Impallari, Rodrigo Fuenzalida}
+\_faminfo [LibreCaslon] {Libre Caslon Text, inspired by Caslon} {f-librecaslon}
+ { -,\onum: {\rm\bf\it\bi} }
+\_famalias [Caslon]
+
\_famfrom {Adobe, Paul D. Hunt}
\_faminfo [Source Pro] {Adobe SourceSerifPro, SourceSansPro, SourceCodePro} {f-sourcepro}
{ \elight,\light,-,\bolder: {\rm\it} -,\bolder: {\bf\bi}
diff --git a/macros/luatex/optex/base/fonts-opmac.opm b/macros/luatex/optex/base/fonts-opmac.opm
index a5dda559f1..3ae2f0c5e1 100644
--- a/macros/luatex/optex/base/fonts-opmac.opm
+++ b/macros/luatex/optex/base/fonts-opmac.opm
@@ -1,12 +1,12 @@
%% 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
+\_codedecl \typosize {Font managing macros from OPmac <2021-03-10>} % loaded in format
\_doc -----------------------------
\`\typosize` `[<font-size>/<baselineskip>]` sets given parameters.
It sets text font size by the \^`\setfontsize` macro and math font sizes
by setting internal macros \^`\_sizemtext`, \^`\_sizemscript` and
- \^`\_sizemsscript`. It uses common concept font thes sizes: 100\,\%,
+ \^`\_sizemsscript`. It uses common concept font sizes: 100\,\%,
70\,\% and 50\,\%.
The \^`\_setmainvalues` sets the parameters as main values when
the `\_typosize` is called first.
@@ -23,7 +23,7 @@
\_edef\_sizemtext{\_ea\_ignorept \_the\_tmpdim \_ptmunit}%
\_tmpdim=0.7\_tmpdim
\_edef\_sizemscript{\_ea\_ignorept \_the\_tmpdim \_ptmunit}%
- \_tmpdim=#1\_ptunit \_tmpdim=0.5\_tmpdim
+ \_tmpdim=#1\_ptunit \_tmpdim=0.5\_tmpdim
\_edef\_sizemsscript{\_ea\_ignorept \_the\_tmpdim \_ptmunit}%
\_fi
}
@@ -71,26 +71,49 @@
\_doc -----------------------------
\`\_setmainvalues` sets the current font size and `\baselineskip`
- values to the \`\mainfosize` and \hbox{\`\mainbaselineskip`} registers.
- It redefines itself to set the main values only first.
+ values to the \`\mainfosize` and \hbox{\`\mainbaselineskip`} registers
+ and loads fonts at given sizes.
+ It redefines itself as \`\_setmainvaluesL`
+ to set the main values only first. The \^`\_setmainvaluesL` does only
+ fonts loading.
\nl
\`\scalemain` returns to these values if they were set. Else they are set
to 10/12\,pt.
+ \nl
+ \`\mfontsrule` gives the rule how math fonts are loaded when \^`\typosize`
+ or \^`\typoscale` are used. The value of \^`\mfontsrule` can be:
+ \begitems
+ * 0: no math fonts are loaded. User must use \^`\normalmath` or \^`\boldmath` explicitly.
+ * 1: `\_normalmath` is run if \^`\typosize`/\^`\typoscale` are used
+ first or they are run at outer group level. No
+ `\everymath`/`\everydisplay` are set in this case. If
+ \^`\typosize`/\^`\typoscale` are run repeatedly in a group then `\_normalmath` is
+ run only when math formula occurs. This is done using
+ `\everymath`/`\everydisplay` and \^`\_setmathfonts`.
+ \^`\mfontsrule=1` is default.
+ * 2: `\_normalmath` is run whenever \^`\typosize`/\^`\typoscale` are used.
+ `\everymath`/`\everydisplay` registers are untouched.
+ \enditems
\_cod -----------------------------
\_newskip \_mainbaselineskip \_mainbaselineskip=0pt \_relax
\_newdimen \_mainfosize \_mainfosize=0pt
+\_newcount \_mfontsrule \_mfontsrule=1
\_def\_setmainvalues {%
\_mainbaselineskip=\_baselineskip
\_mainfosize=\_optsize
\_topskip=\_mainfosize \_splittopskip=\_topskip
\_ifmmode \_else \_bf \_it \_bi \_rm \_fi % load all basic variants of the family
- \_normalmath % load fonts if \typosize is running first
+ \_ifnum \_mfontsrule>0 \_normalmath \_fi % load math fonts first
\_let \_setmainvalues =\_setmainvaluesL
}
-\_def\_setmainvaluesL {\_ifmmode \_normalmath \_else
- \_rm \_everymath={\_normalmath}\_everydisplay={\_normalmath}\_fi}
+\_def\_setmainvaluesL {\_relax \_ifmmode \_else \_rm \_fi % load text font
+ \_ifcase \_mfontsrule % load math fonts
+ \_or \_ifnum\_currentgrouplevel=0 \_normalmath
+ \_else \_everymath={\_setmathfonts}\_everydisplay={\_normalmath}%
+ \_let\_runboldmath=\_relax \_fi
+ \_or \_normalmath \_fi}
\_def\_scalemain {%
\_ifdim \_mainfosize=\_zo
\_mainfosize=10pt \_mainbaselineskip=12pt
@@ -98,7 +121,21 @@
\_fi
\_optsize=\_mainfosize \_baselineskip=\_mainbaselineskip
}
-\_public \scalemain \mainfosize \mainbaselineskip ;
+\_public \scalemain \mainfosize \mainbaselineskip \mfontsrule ;
+
+ \_doc -----------------------------
+ Suppose following example:
+ `{\typosize[13/15] Let $M$ be a subset of $R$ and $x\in M$...}`
+ If \^`\mfontsrule=1` then \^`\typosize` does not load math fonts
+ immediatelly but at the first math formula. It is done by `\everymath`
+ register, but the contents of this register is processed inside the math
+ group. If we do `\everymath={\_normalmath}` then this complicated macro
+ will be processed three times in your example above. We want only one
+ pocessing, so we do `\everymath={`\`\_setmathfonts``}` and
+ this macro closes math mode first, loads fonts and opens math mode again.
+ \_cod -----------------------------
+
+\_def\_setmathfonts{$\_normalmath\_everymath{}\_everydisplay{}$}
\_doc -----------------------------
\`\thefontsize` `[<size>]` and \`\thefontscale` `[<factor>]`
@@ -141,13 +178,25 @@
\_let\_italcorr=\/
\_doc -----------------------------
- The \`\boldify` macro does `\let\it\bi` and `\let\normalmath=\boldmath`.
+ The \`\boldify` macro does `\let\rm\bf`, `\let\it\bi` and
+ `\let\normalmath=\boldmath`. All following text will be in bold.
+ If should be used after \^`\typosize` or \^`\typoscale` macros.\nl
+ The internal \`\_runboldmath` macro runs `\_boldmath` immediatelly
+ if no delay of the math font loading is set by \^`\_setmainvaluesL`.\nl
+ The `\rm`, `\it` in math mode must keep its original meaning.
\_cod -----------------------------
\_protected\_def \_boldify {%
\_let \_setmainvalues=\_setmainvaluesL
\_let\it =\_bi \_let\rm =\_bf \_let\_normalmath=\_boldmath \_bf
+ \_runboldmath
+ \_ifx\_ncharrmA\_undefined \_protected\_addto\rm{\_fam0 }\_protected\_addto\it{\_fam1 }%
+ \_else \_protected\_def\rm {\_tryloadbf \_tenbf \_inmath{\_rmvariables \_rmdigits}}%
+ \_protected\_def\it {\_tryloadbi \_tenbi \_inmath{\_itvariables}}%
+ \_fi
}
+\_def\_runboldmath{\_boldmath}
+
\_public \em \boldify ;
\_doc -----------------------------
@@ -169,6 +218,8 @@
\_endcode % -------------------------------------
History:
+2021-03-10 \boldify corrected
+2021-03-09 \mfontsrule and \_setmathfonts introduced
2020-12-12 \_rmfixed fixed
2020-04-28 \boldify: removed \let\_rm=\_bf
2020-04-14 \_setmainvaluesL: \_ifmmode test added
diff --git a/macros/luatex/optex/base/fonts-select.opm b/macros/luatex/optex/base/fonts-select.opm
index 9066d4fed5..740b311a67 100644
--- a/macros/luatex/optex/base/fonts-select.opm
+++ b/macros/luatex/optex/base/fonts-select.opm
@@ -1,6 +1,6 @@
%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \fontfam {Fonts selection system <2020-01-27>} % preloaded in format
+\_codedecl \fontfam {Fonts selection system <2021-02-25>} % preloaded in format
\_doc -----------------------------
\`\initunifonts` macro extends \LuaTeX's font capabalities,
@@ -13,7 +13,9 @@
macro \`\_doresizeunifont`. This mode includes
a fallback to TFM mode if \^`\_fontnamegen` is not defined.
Finally, `\initunifonts` sets itself to relax because we don't want to do
- this work twice.
+ this work twice.\nl
+ \`\_ttunifont` is default font for `\tt` variant if
+ `f-lmfonts.opm` (or another font file where `\tt` is declared) is not loaded.
\_cod -----------------------------
\_def\_initunifonts {%
@@ -23,7 +25,7 @@
}%
\_gdef\_rfskipatX ##1" ##2\_relax{"##1"}%
\_global\_let \_doresizefont=\_doresizeunifont
- \_gdef\_tryloadtt {\_fontdef\_tentt{\_def\_fontnamegen{[lmmono10-regular]}\_rm}}%
+ \_gdef\_tryloadtt {\_fontdef\_tentt{\_let\_fontnamegen=\_ttunifont\_rm}}%
\_global\_let \_initunifonts=\_relax % we need not to do this work twice
\_global\_let \initunifonts=\_relax
}
@@ -32,6 +34,8 @@
\_font#1={\_fontnamegen} \_sizespec \_relax \_setwsp#1\_relax
\_fi
}
+\_def\_ttunifont{[lmmono10-regular]:\_fontfeatures-tlig;}
+
\_public \initunifonts ;
\_doc -----------------------------
@@ -834,6 +838,7 @@ Luaotfload documentation for more information.
\endinput
+2021-02-25 \_ttunifont introduced
2021-01-27 lua hack (print function) removed because luaotfload 3.17 removes bug.
2020-12-12 \_modlist added, doc improved
2020-04-18 \_tryloadfamslocal introduced
diff --git a/macros/luatex/optex/base/lists.opm b/macros/luatex/optex/base/lists.opm
index a32d13319f..189719302d 100644
--- a/macros/luatex/optex/base/lists.opm
+++ b/macros/luatex/optex/base/lists.opm
@@ -1,6 +1,6 @@
%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \begitems {Lists: begitems, enditems <2020-04-21>} % preloaded in format
+\_codedecl \begitems {Lists: begitems, enditems <2021-03-10>} % preloaded in format
\_doc -----------------------------
\`\_aboveliskip` is used above the list of items,\nl
@@ -47,7 +47,7 @@
\_advance \_ilevel by1
\_setlistskip
\_ifnum\_lastpenalty<10000 \_aboveliskip \_fi
- \_itemnum=0 \_adef*{\_startitem}
+ \_itemnum=0 \_adef*{\_relax\_ifmmode*\_else\_ea\_startitem\_fi}
\_advance\_leftskip by\_iindent
\_printitem=\_defaultitem
\_the\_everylist \_relax
@@ -123,5 +123,6 @@
\_endcode % -------------------------------------
+2021-03-10 \_ifmmode*\_else\_ea\_startitem\_fi added to * defintition
2020-04-21 \isnextchar\par added to \enditems
2020-03-18 introduced
diff --git a/macros/luatex/optex/base/makeindex.opm b/macros/luatex/optex/base/makeindex.opm
index 8c58f7085c..e5f7b4032e 100644
--- a/macros/luatex/optex/base/makeindex.opm
+++ b/macros/luatex/optex/base/makeindex.opm
@@ -1,6 +1,6 @@
%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \makeindex {Makeindex and sorting <2021-02-01>} % loaded in format
+\_codedecl \makeindex {Makeindex and sorting <2021-02-15>} % loaded in format
\_doc -----------------------------
\^`\makeindex` implements sorting algorithm at \TeX/ macro-language level.
@@ -334,7 +334,7 @@
\_def\_printiiA #1/{\_if^#1^\_let\_previi=\_currii \_else
\_ea\_scanprevii\_previi/&\_edef\_tmpb{\_detokenize{#1}}%
\_ifx\_tmpa\_tmpb \_iiemdash \_else#1 \_gdef\_previi{}\_fi
- \_expandafter\_printiiA\_fi
+ \_ea\_printiiA\_fi
}
\_def\_iiemdash{\_kern.1em---\_space}
\_def\_lastii{}
@@ -457,6 +457,7 @@
\_endcode % -------------------------------------
+2021-02-15 \_expandafter -> \_ea
2021-02-01 secodary sorting: start from code 65
2020-04-21 \isempty \iffalse ... \fi added to \iindex
2020-03-26 introduced
diff --git a/macros/luatex/optex/base/margins.opm b/macros/luatex/optex/base/margins.opm
index 8799dec294..d88cc04237 100644
--- a/macros/luatex/optex/base/margins.opm
+++ b/macros/luatex/optex/base/margins.opm
@@ -1,6 +1,6 @@
%% 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
+\_codedecl \margins {Macros for margins setting <2021-03-15>} % preloaded in format
\_doc ----------------------------
\`\margins``/<pg> <fmt> (<left>,<right>,<top>,<bot>)<unit>`
@@ -25,6 +25,7 @@
\_else \_if$#4$\_hoffset = #3\_tmp \_relax % only left margin
\_else \_hsize =\_dimexpr \_pgwidth - #3\_tmp - #4\_tmp \_relax % left+right margin
\_hoffset = #3\_tmp \_relax
+ \_xhsize =\_hsize \_setxhsize % \_xhsize used by \output routine
\_fi\_fi
\_if$#5$\_if$#6$\_voffset =\_dimexpr (\_pgheight -\_vsize)/2 \_relax
\_else \_voffset =\_dimexpr \_pgheight -\_vsize - #6\_tmp \_relax % only bottom margin
@@ -75,4 +76,5 @@
\_endcode % -----------------------------------------
-
+2021-03-15 \_setxhsize added
+2020-03-14 released
diff --git a/macros/luatex/optex/base/math-macros.opm b/macros/luatex/optex/base/math-macros.opm
index 6d5278d5c2..2b090ee1b8 100644
--- a/macros/luatex/optex/base/math-macros.opm
+++ b/macros/luatex/optex/base/math-macros.opm
@@ -1,6 +1,6 @@
%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \sin {Math macros plus mathchardefs <2021-02-04>} % preloaded in format
+\_codedecl \sin {Math macros plus mathchardefs <2021-02-15>} % preloaded in format
\_doc -----------------------------
The category code of the character `_` remains as the letter (11) and the mathocode
@@ -1013,7 +1013,7 @@
depending on the current math style when \^`\mathstyles` was opened.
\enditems
Example of usage of \^`\mathstyles`:
- `\def\mathframe#1{\mathstyles{\frame{$\currstyle#1$}}}`.
+ `\def\mathframe#1{\mathstyles{\frame{$\currstyle{#1}$}}}`.
\_cod -----------------------------
\_newcount\_stylenum
@@ -1044,17 +1044,26 @@
\_doc -----------------------------
The \`\mathbox``{<text>}` macro is copied from OPmac trick 078.
It behaves like `\hbox{<text>}` but the `<text>` is scaled to a smaller
- size if it is used in scriptstyle or scriptscript style.
+ size if it is used in scriptstyle or scriptscript style.\nl
+ The \^`\_textmff` and \^`\_scriptmff` are redefined in order to
+ respect optical sizes. If we are in script style then the math mode
+ starts in text style, but optical size is given to script style.
+ The `\mathbox` in non-Unicode math respects optical sizes
+ using different principle.
\_cod -----------------------------
\_def\_mathbox#1{{\_mathstyles{\_hbox{%
\_ifnum\_stylenum<2 \_everymath{\_currstyle}%
- \_else \_typoscale[\_dobystyle{}{}{700}{500}/]\_fi #1}}}%
+ \_else
+ \_ifnum\_stylenum=2 \_def\_textmff{+ssty=0;}\_fi
+ \_ifnum\_stylenum=3 \_def\_textmff{+ssty=1;}\_def\_scriptmff{+ssty=1;}\_fi
+ \_typoscale[\_dobystyle{}{}{700}{500}/]\_fi #1}}}%
}
\_public \mathbox ;
\_endcode %---------------------------------------------------
+2021-02-15 \_mathbox redefines \_textmff etc. in order to respect optical sizes
2021-02-04 \_bordermatrixwithdelims introduced.
2021-01-23 better expession for math styles in \matrix
2021-01-22 bad use of \_stylenum in \matrix + bad value (bug fix: \_stylenum->\_mtstylenum)
diff --git a/macros/luatex/optex/base/math-unicode.opm b/macros/luatex/optex/base/math-unicode.opm
index 680da012d6..96f9983380 100644
--- a/macros/luatex/optex/base/math-unicode.opm
+++ b/macros/luatex/optex/base/math-unicode.opm
@@ -1,6 +1,6 @@
%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \loadmath {Unicode Math fonts <2020-06-06>} % preloaded in format
+\_codedecl \loadmath {Unicode Math fonts <2021-03-09>} % preloaded in format
\_doc -----------------------------
\`\loadmath` `{<Unicode-math font>}` loads the given font. It does:
@@ -88,7 +88,8 @@
\_delimitershortfall=0.5\_fontdimen6\_textfont3
\_nulldelimiterspace=0.12\_fontdimen6\_textfont3
\_scriptspace=0.05\_fontdimen6\_textfont3
- {\_everymath{}\_global\_setbox0=\_hbox{$\_fam1\_displaystyle{0\_atop0}$}}% correction for \choose
+ \_begingroup % correction for \choose
+ \_everymath{}\_global\_setbox0=\_hbox{$\_fam1\_displaystyle{0\_atop0}$}\_endgroup
\_Umathfractiondelsize\_displaystyle = \_dimexpr(\_ht0-\_Umathaxis\_displaystyle)*2\_relax
}
@@ -120,7 +121,10 @@
math formulae from these three math families. All information needed by
\TeX/ is collected in single Unicode-math font.\nl
The \^`\_corrmsize` `<factor><space>` can be used just before
- `\_loadumathfamily`, see section~\ref[math-preload] for more information.
+ `\_loadumathfamily`, see section~\ref[math-preload] for more information.\nl
+ The \`\_textmff`, \`\_scriptmff` and \`\_sscriptmff` are additional font
+ features for text, script and sscript sizes respectively. They are
+ locally re-defined in \^`\mathbox` macro.
\_cod -----------------------------
\_def\_umathname#1#2{"#1:\_mfontfeatures#2"}
@@ -128,14 +132,15 @@
\_def\_loadumathfamily #1 #2#3 {%
\_edef\_optsizesave{\_the\_optsize}%
- \_optsize=\_sizemtext \_font\_mF=\_umathname{#2}{#3} at\_optsize \_textfont#1=\_mF
- \_ifnum#1=1 \_textfont2=\_mF \_textfont3=\_mF \_fi
- \_optsize=\_sizemscript \_font\_mF=\_umathname{#2}{+ssty=0;#3} at\_optsize \_scriptfont#1=\_mF
- \_ifnum#1=1 \_scriptfont2=\_mF \_scriptfont3=\_mF \_fi
- \_optsize=\_sizemsscript \_font\_mF=\_umathname{#2}{+ssty=1;#3} at\_optsize\_scriptscriptfont#1=\_mF
- \_ifnum#1=1 \_scriptscriptfont2=\_mF \_scriptscriptfont3=\_mF \_fi
+ \_optsize=\_sizemtext \_font\_mF=\_umathname{#2}{\_textmff #3} at\_optsize
+ \_textfont#1=\_mF \_ifnum#1=1 \_textfont2=\_mF \_textfont3=\_mF \_fi
+ \_optsize=\_sizemscript \_font\_mF=\_umathname{#2}{\_scriptmff #3} at\_optsize
+ \_scriptfont#1=\_mF \_ifnum#1=1 \_scriptfont2=\_mF \_scriptfont3=\_mF \_fi
+ \_optsize=\_sizemsscript \_font\_mF=\_umathname{#2}{\_sscriptmff #3} at\_optsize
+ \_scriptscriptfont#1=\_mF \_ifnum#1=1 \_scriptscriptfont2=\_mF \_scriptscriptfont3=\_mF \_fi
\_optsize=\_optsizesave \_ptmunit=\_ptunit
}
+\_def\_textmff{} \_def\_scriptmff{+ssty=0;} \_def\_sscriptmff{+ssty=1;}
\_doc -----------------------------
Unicode math font includes all typical math alphabets together, user needs not to
@@ -194,7 +199,7 @@
\_def\_greekdef#1{\_ifx#1\_relax \_else
\_begingroup \_lccode`X=\_umathnumB \_lowercase{\_endgroup \_def#1{X}}%
\_advance\_umathnumB by 1
- \_expandafter\_greekdef \_fi
+ \_ea\_greekdef \_fi
}
\_endcode
@@ -253,6 +258,9 @@ the section~\ref[math-macros].
\_endinput
+2021-03-09 \_setunimathdimes: \_begin/end/group instead {}, bug fixed
+2021-02-15 \_textmff, \_scriptmff and \_sscriptmff introduced
+2021-02-15 \_expandafter -> \_ea
2020-06-07 \Umathfractiondelsize (for \choose brackets) corrected, see https://tug.org/pipermail/luatex/2020-June/007365.html
2020-04-15 \_setmathdimens -> \_setuniathdimens
2020-02-25 implemented
diff --git a/macros/luatex/optex/base/optex.ini b/macros/luatex/optex/base/optex.ini
index 3826ccf0e1..c695b7d809 100644
--- a/macros/luatex/optex/base/optex.ini
+++ b/macros/luatex/optex/base/optex.ini
@@ -21,8 +21,9 @@
% OpTeX version
-\def\optexversion{1.00 Feb.2021}
+\def\optexversion{1.01 Mar.2021}
\def\fmtname{OpTeX}
+\let\fmtversion=\optexversion
% Engine testing:
diff --git a/macros/luatex/optex/base/optex.lua b/macros/luatex/optex/base/optex.lua
index 9bc8d6f7d8..2d83f38ed6 100644
--- a/macros/luatex/optex/base/optex.lua
+++ b/macros/luatex/optex/base/optex.lua
@@ -92,6 +92,7 @@ local callback_types = {
process_input_buffer = "data",
process_output_buffer = "data",
process_jobname = "data",
+ input_level_string = "data",
-- node list processing
contribute_filter = "simple",
@@ -141,6 +142,7 @@ local callback_types = {
-- undocumented
glyph_stream_provider = "exclusive",
+ provide_charproc_data = "exclusive",
}
--
-- Return a list containing descriptions of added callback functions for
diff --git a/macros/luatex/optex/base/outlines.opm b/macros/luatex/optex/base/outlines.opm
index ad05c97edc..6230d8988b 100644
--- a/macros/luatex/optex/base/outlines.opm
+++ b/macros/luatex/optex/base/outlines.opm
@@ -50,7 +50,7 @@
\_def\_outlinesC#1#2#3#4{\_pdfoutline goto name{#1} count #2#3{#4}\_relax}
\_newcount\_oulnum
-\_def\_insertoutline#1{\_global\_advance\_oulnum by1
+\_def\_insertoutline#1{\_incr\_oulnum
\_pdfdest name{oul:\_the\_oulnum} xyz\_relax
\_pdfunidef\_tmp{#1}%
\_pdfoutline goto name{oul:\_the\_oulnum} count0 {\_tmp}\_relax
@@ -100,3 +100,9 @@ labels are used.
It creates a link destination of the type `oul:<num>` into the document
(where \^`\insertoutline` is used) and the link itself is created too in the
outline.
+
+\endinput
+
+2021-02-15 \_advance -> \_incr
+2021-02-09 \thisoutline implemented
+2020-03-12 released
diff --git a/macros/luatex/optex/base/output.opm b/macros/luatex/optex/base/output.opm
index 8bf02af753..5bb93c2477 100644
--- a/macros/luatex/optex/base/output.opm
+++ b/macros/luatex/optex/base/output.opm
@@ -1,6 +1,6 @@
%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \nopagenumbers {Output routine <2020-03-28>} % preloaded in format
+\_codedecl \nopagenumbers {Output routine <2021-02-25>} % preloaded in format
\_doc -----------------------------
\`\_optexoutput` is the default output routine. You can create another...
@@ -38,7 +38,8 @@
(for headlines and footlines, for instance). This value is set
from the current value of `\hsize` when \`\_setxhsize` macro is called.
This macro destroys itself, so the value is set only once. Typically it is
- done when first \^`\_optexoutput` routine is called (see \^`\_begoutput`).
+ done in \^`\margins` macro or
+ when first \^`\_optexoutput` routine is called (see \^`\_begoutput`).
Or it is called at the begining of the \^`\begtt`...`\endtt` environment before
`\hsize` value is eventually changed by the user in this environment.
\_cod -----------------------------
@@ -130,7 +131,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 \_decr\_pageno \_else \_incr\_pageno \_fi
} % increase |pageno|
\_def \_raggedbottom {\_topskip=\_dimexpr\_topskip plus60pt \_pgbottomskip=0pt plus1fil\_relax}
\_def \_normalbottom {\_topskip=\_dimexpr\_topskip \_pgbottomskip=0pt\_relax}
@@ -214,10 +215,10 @@
\_global\_let\_draftfont=\_draftfont
}
\_def \_draftbox #1{\_setbox0=\_hbox{#1}%
- \_kern.5\_vsize \_kern4.5\_wd0
- \_hbox to0pt{\_kern.5\_xhsize \_kern-1\_wd0
+ \_kern.5\_vsize \_kern\_voffset \_kern4.5\_wd0
+ \_hbox to0pt{\_kern.5\_xhsize \_kern\_hoffset \_kern-2\_wd0
\_pdfsave \_pdfrotate{55}\_pdfscale{10}{10}%
- \_hbox to0pt{\_localcolor\LightGrey \_box0\_hss}%
+ \_hbox to0pt{\_localcolor\_setgreycolor{.8}\_box0\_hss}%
\_pdfrestore
\_hss}%
}
@@ -260,5 +261,7 @@ The output routine \^`\_optexoutput` is similar as in plain \TeX. It does:
\_endinput
+2021-02-25 \_draftbox improved
+2021-02-15 \_advance -> \_decr
2020-05-12 \vfootB: \uskip -> \unskip bug fixed
2020-03-28 Released
diff --git a/macros/luatex/optex/base/prefixed.opm b/macros/luatex/optex/base/prefixed.opm
index ff6dffa20a..61df791ddb 100644
--- a/macros/luatex/optex/base/prefixed.opm
+++ b/macros/luatex/optex/base/prefixed.opm
@@ -56,7 +56,7 @@
\_def \_codedecl #1#2{%
\_ifx #1\_undefined \_wterm{#2}%
- \_else \_expandafter \_endinput \_fi
+ \_else \_ea \_endinput \_fi
}
\_def \_wterm {\_immediate \_write16 }
@@ -292,3 +292,7 @@ the \^`\load` macro is used.
The `qrcode.opm` is the first example of how an external macro file for \OpTeX/
can look like.
+\endinput
+
+2021-02-15 \_expandafter -> \_ea in \_codedecl
+2020-02-14 released
diff --git a/macros/luatex/optex/base/sections.opm b/macros/luatex/optex/base/sections.opm
index 5e50fa3b9f..39759962bf 100644
--- a/macros/luatex/optex/base/sections.opm
+++ b/macros/luatex/optex/base/sections.opm
@@ -1,6 +1,6 @@
%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \chap {Titles, chapters, sections, subsections <2021-02-09>} % preloaded in format
+\_codedecl \chap {Titles, chapters, sections, subsections <2021-03-03>} % preloaded in format
\_doc ---------------------------
We are using scaled fonts for titles
@@ -147,8 +147,8 @@
\_def \_thechapnum {\_the\_chapnum}
\_def \_thesecnum {\_othe\_chapnum.\_the\_secnum}
\_def \_theseccnum {\_othe\_chapnum.\_the\_secnum.\_the\_seccnum}
-\_def \_thetnum {\_othe\_chapnum.\_the\_secnum.\_the\_tnum}
-\_def \_thefnum {\_othe\_chapnum.\_the\_secnum.\_the\_fnum}
+\_def \_thetnum {\_othe\_chapnum.\_othe\_secnum.\_the\_tnum}
+\_def \_thefnum {\_othe\_chapnum.\_othe\_secnum.\_the\_fnum}
\_def \_thednum {(\_the\_dnum)}
\_def\_othe #1.{\_ifnum#1>0 \_the#1.\_fi}
@@ -363,12 +363,21 @@
the current language).
* \^`\_thecapnum` ... expands to `\the<letter>num` (caption number).
\enditems
+ The \`\_captionsep` inserts a separator between auto-generated
+ caption number and the following caption text. Default separator
+ is `\_enspace` but if the caption text starts with dot or colon, then
+ the space is not inserted. A user can wite `\caption/t: My table`
+ and \"{\bf Table 1.1:} My table" is printed. You can re-define
+ the \^`\_captionsep` macro if you want to use another separator.
\_cod -----------------------------
\_def \_printcaptiont {%
- \_noindent \_wlabel\_thecapnum {\_bf\_thecaptitle~\_thecapnum}\_enspace
- \_narrowlastlinecentered\_iindent
+ \_noindent \_wlabel\_thecapnum {\_bf\_thecaptitle~\_thecapnum}%
+ \_narrowlastlinecentered\_iindent \_futurelet\_next\_captionsep
}
+\_def\_captionsep{\_ifx\_next.\_ea\_bfnext \_else\_ifx\_next:\_ea\_ea\_ea\_bfnext
+ \_else \_enspace \_fi\_fi}
+\_def\_bfnext#1{{\_bf#1}}
\_let \_printcaptionf = \_printcaptiont % caption of figures = caption of tables
\_doc -----------------------------
@@ -450,6 +459,7 @@
\_endcode % -------------------------------------
+2021-03-03 \_captionsep introduced, \_othe used in \_thetnum, \_thefnum.
2021-02-09 \thisoutline implemented
2021-01-26 \_nl: \unskip added
2021-01-11 \secl introduced
diff --git a/macros/luatex/optex/base/slides.opm b/macros/luatex/optex/base/slides.opm
index 5ee4346674..94fa3afac8 100644
--- a/macros/luatex/optex/base/slides.opm
+++ b/macros/luatex/optex/base/slides.opm
@@ -1,6 +1,6 @@
% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \slideshow {Slides style for OpTeX <2021-01-16>} % loaded on demand by \slides
+\_codedecl \slideshow {Slides style for OpTeX <2021-03-10>} % loaded on demand by \slides
\_doc -----------------------------
Default margins and design is declared here.
@@ -79,7 +79,7 @@
\_newcount\_gilevel
\_def\*{*}
-\_adef*{\_startitem}
+\_adef*{\_relax\_ifmmode*\_else\_ea\_startitem\_fi}
\_sdef{_item:X}{\Blue\_raise.2ex\_fullrectangle{.8ex}\_kern.5em}
\_sdef{_item:x}{\Blue\_raise.3ex\_fullrectangle{.6ex}\_kern.4em}
\_style X
@@ -146,9 +146,10 @@
\_newbox\_slidepage \_newbox\_slidepageB
\_countdef\_slidelayer=1
-\_def\_decr#1{\_global\_advance#1 by-1 }
-\_def\_slideshow{\_slidelayer=1 \_slideshowactive \_setbox\_slidepage=\_vbox\_bgroup}
+\_def\_slideshow{\_slidelayer=1 \_slideshowactive
+ \_let\slideopen=\_relax % first wins
+ \_setbox\_slidepage=\_vbox\_bgroup\_bgroup}
\_def\_slideshowactive{%
\_sdef{_spg:;}{\_closepage \_global\_slidelayer=1 \_resetpage \_openslide}
@@ -159,11 +160,11 @@
}
\_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\_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 \_egroup
\_ifnum \_maxlayers=0 \_unvcopy\_slidepage \_vfil\_break
\_else \_begingroup \_setwarnslides \_layernum=0
\_loop
@@ -202,7 +203,14 @@
\_global\_maxlayers=#1
\_setbox\_slidepageB=\_vbox\_bgroup
}
-\_public \subtit \slideshow \pg \wideformat \use \pshow \layernum ;
+\_def\_slideopen{\_let\slideshow=\_relax % first wins
+ \_sdef{_spg:;}{\_egroups\_vfil\_break \_lfnotenumreset\_bgroup \_setilevel}
+ \_sdef{_spg:.}{\_egroups\_endslides}
+ \_sdef{_spg:+}{\_egroups\_bgroup \_setilevel}
+ \_bgroup
+}
+
+\_public \subtit \slideshow \slideopen \pg \wideformat \use \pshow \layernum ;
\_doc -----------------------------
Default \`\layers` `<num>` macro (when \^`\slideshow` is not activated) is simple.
@@ -232,5 +240,8 @@
The user manual of \OpTeX/ slides are in `op-slides.tex` file.
+2021-03-10 \slideopen introduced, bug with colors in \setbox fixed
+2021-03-10 \ifmmode* added to \adef*
+2021-02-15 \_def\_decr removed
2021-01-16 \layers at empty page raises error: problem fixed
2020-03-19 slides introduced
diff --git a/macros/luatex/optex/base/styles.opm b/macros/luatex/optex/base/styles.opm
index 8df96f795d..534eb13663 100644
--- a/macros/luatex/optex/base/styles.opm
+++ b/macros/luatex/optex/base/styles.opm
@@ -1,6 +1,6 @@
%% 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
+\_codedecl \report {Basic styles of OpTeX <2021-03-10>} % preloaded in format
\_doc -----------------------------
We define auxiliary macro first (used by the \^`\address` macro)
@@ -61,7 +61,7 @@
\_def\_slides{\_par
\_opinput{slides.opm}
- \_adef*{\_startitem}
+ \_adef*{\_relax\_ifmmode*\_else\_ea\_startitem\_fi}
}
\_public \slides ;
@@ -114,3 +114,7 @@ S úctou
\endtt %---------------------------------------------------------------------
+\endinput
+
+2021-03-10 \ifmmode* added to \adef*
+2020-03-28 released
diff --git a/macros/luatex/optex/base/table.opm b/macros/luatex/optex/base/table.opm
index d6edaff20f..a4a6511958 100644
--- a/macros/luatex/optex/base/table.opm
+++ b/macros/luatex/optex/base/table.opm
@@ -1,6 +1,6 @@
%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \table {Basic macros for OpTeX <2021-01-27>} % preloaded in format
+\_codedecl \table {Basic macros for OpTeX <2021-03-09>} % preloaded in format
\_doc -----------------------------
The result of the \`\table``{<declaration>}{<data>}` macro is inserted into
@@ -101,7 +101,7 @@
\_replstring\_tmpb{\crlp}{\_crcr\crlp}%
\_edef\_tabskipmid{\_the\_tabskip}\_tabskip=\_tabskipl
\_ifpxto
- \_tsize=\_hsize \_setbox0 = \_vbox{\_halign \_tableC}%
+ \_tsize=\_hsize \_setbox0 = \_vbox{\_tablepxpreset \_halign \_tableC}%
\_tsize=\_dimexpr\_hsize-(\_wd0-\_tmpdim)\_relax
\_setbox0=\_null \_halign \_tableC
\_else
@@ -111,8 +111,9 @@
\_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
+\_def\_tablepxpreset{} % can be used to de-activate references to .ref file
+\_newbox\_tstrutbox % strut used in table rows
+\_newtoks\_tabdata % the \halign declaration line
\_doc -----------------------------
The \`\_scantabdata` macro converts `\table`'s `<declaration>` to
@@ -261,11 +262,11 @@
\_def\_tablinefil{\_leaders\_hrule\_hfil}
\_def\_crlp#1{\_crcr \_zerotabrule \_noalign{\_kern-\_drulewidth}%
- \_omit \_xdef\_crlplist{#1}\_xdef\_crlplist{,\_expandafter}\_expandafter\_crlpA\_crlplist,\_end,%
+ \_omit \_xdef\_crlplist{#1}\_xdef\_crlplist{,\_ea}\_ea\_crlpA\_crlplist,\_end,%
\_global\_tmpnum=0 \_gdef\_dditem{\_omit\_crlpD}%
\_gdef\_vvitem{\_kern\_vvkern\_kern\_drulewidth}\_gdef\_vvitemA{\_kern\_drulewidth}%
\_vvleft\_crlpD\_ddlinedata \_global\_tmpnum=0 \_crcr \_zerotabrule}
-\_def\_crlpA#1,{\_ifx\_end#1\_else \_crlpB#1-\_end,\_expandafter\_crlpA\_fi}
+\_def\_crlpA#1,{\_ifx\_end#1\_else \_crlpB#1-\_end,\_ea\_crlpA\_fi}
\_def\_crlpB#1#2-#3,{\_ifx\_end#3\_xdef\_crlplist{\_crlplist#1#2,}\_else\_crlpC#1#2-#3,\_fi}
\_def\_crlpC#1-#2-#3,{\_tmpnum=#1\_relax
\_loop \_xdef\_crlplist{\_crlplist\_the\_tmpnum,}\_ifnum\_tmpnum<#2\_advance\_tmpnum by1 \_repeat}
@@ -511,6 +512,8 @@ after the second one.
\_endinput
+2021-03-09 \_tablepxpreset introduced
+2021-02-15 \_expandafter -> \_ea
2021-01-27 \_tableB: \long\def added, \vspan syntax improved
2020-05-26 \eqbox implemented
2020-05-20 \colnum implemented.
diff --git a/macros/luatex/optex/base/unimath-codes.opm b/macros/luatex/optex/base/unimath-codes.opm
index a52a9a02cb..6e83ab94ad 100644
--- a/macros/luatex/optex/base/unimath-codes.opm
+++ b/macros/luatex/optex/base/unimath-codes.opm
@@ -1,6 +1,6 @@
%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \_ncharrmA {Uni math codes <2021-02-03>} % preloaded on demand by \loadmath
+\_codedecl \_ncharrmA {Uni math codes <2021-03-11>} % preloaded on demand by \loadmath
\_doc -----------------------------
The control sequences for `\alpha`, `\beta` etc are redefined here.
@@ -204,6 +204,8 @@
\_Umathcode `? = 5 1 `? % keep plain.tex declaration
\_Umathchardef \mathquestion = 5 1 `?
+\_Umathcode `* = 2 1 "02217 % equivalent to \ast, like in plain TeX
+
\_protected\_def \_sqrt {\_Uradical 1 "0221A }
\_protected\_def \_cuberoot {\_Uradical 1 "0221B }
\_protected\_def \_fourthroot {\_Uradical 1 "0221C }
@@ -425,6 +427,7 @@ for technical details about Unicode-math.
\_endinput
History:
+2021-03-11 Umathcode `* declaed as \ast
2021-02-03 Unicode superscripts, subscripts declared
2021-01-31 Mathcode of ! ? set to Close, codes undeclared in mathclass set correctly
2021-01-23 Compressed \vdots, \ddots, \adots in script(script)style.
diff --git a/macros/luatex/optex/base/usebib.opm b/macros/luatex/optex/base/usebib.opm
index fbf4300356..f37d21b315 100644
--- a/macros/luatex/optex/base/usebib.opm
+++ b/macros/luatex/optex/base/usebib.opm
@@ -1,6 +1,6 @@
%% 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
+\_codedecl \MakeReference {Reading bib databases <2021-03-12>} % loaded on demand by \usebib
\_doc -----------------------------
Loading the `librarian.tex` macro package. See `texdoc librarian`
@@ -24,6 +24,8 @@
\_cod -----------------------------
\_def\_usebib/#1 (#2) #3 {%
+ \_let\_citeI=\_relax \_xdef\_citelist{\_citelist\_citelistB}%
+ \_global\_let\_addcitelist=\_writeXcite
\_ifx\_citelist\_empty
\_opwarning{No cited items. \_noexpand\usebib ignored}%
\_else
@@ -40,13 +42,11 @@
"\_cs{_lan:\_the\_language}" (using "en")}%
\_language=0 \_chardef\_documentlanguage=0
\_fi
- \_let\_citeI=\_relax \_xdef\_citelist{\_citelist\_citelistB}%
- \_global\_let\_addcitelist=\_writeXcite
- \_def\_tmp##1[*]##2\_relax{\_def\_tmp{##2}}\_expandafter\_tmp\_citelist[*]\_relax
+ \_def\_tmp##1[*]##2\_relax{\_def\_tmp{##2}}\_ea\_tmp\_citelist[*]\_relax
\_ifx\_tmp\_empty\_else % there was \nocite[*] used.
\_setbox0=\_vbox{\_hsize=\_maxdimen \_def\_citelist{}\_adef@{\_readbibentry}%
\_input #3.bib
- \_expandafter}\_expandafter\_def\_expandafter\_citelist\_expandafter{\_citelist}%
+ \_ea}\_ea\_def\_ea\_citelist\_ea{\_citelist}%
\_fi
\_def\_citeI[##1]{\_csname lb@cite\_endcsname{##1}{\_bibpart}{}{}}\_citelist
\_BibFile{#3}%
@@ -370,6 +370,8 @@ character is sorted before `A`.
History:
--------
+2021-03-12 \_citelistB added before first test.
+2021-02-15 \_expandafter -> \_ea
Apr. 2014: released in OPmac
Jan. 2016: "first entry wins" implemented
Apr. 2016: \readentry -> \readbibentry, \usebib->\MakeReference
diff --git a/macros/luatex/optex/demo/op-slides.tex b/macros/luatex/optex/demo/op-slides.tex
index 45b65fb657..50bcdaffa6 100644
--- a/macros/luatex/optex/demo/op-slides.tex
+++ b/macros/luatex/optex/demo/op-slides.tex
@@ -149,19 +149,52 @@ The previous page was created by:
\pg; %------------------------------------------------------------------
-\sec Notes
+\sec Notes to `\slideshow`
* When `\slideshow` is active then you cannot reference sections by
hyperlinked `\ref`. Only `\pgref` works (and goes to the last layer
of the referenced page).
* If the text overfull the page (slide) then it follows to the next page without
saying explicitly `\pg;`. But `\slideshow` cannot work in this case.\pg+
+* If `\slideshow` then each part of page between two `\pg`'s or between
+ `\slideshow` and the first `\pg` is processed in a local group.
+* If not `\slideshow` then the document is not separated to groups.
+ This can lead to different results. So, you can put `\slideopen` command
+ instead of `\slideshow`. Then local groups are opened exactly as when
+ `\slideshow` is used but `\slideshow` is not activated. Example:
+
+\begtt
+\slides
+\def\foo...{...} % global definitions.
+%\slideshow % printing version, no slide show.
+\slideopen % opens group for first page.
+... first page
+\pg; % closes group and opens group for second page.
+... second page
+\pg. % closes group of the last page.
+\endtt
+
+\pg; %------------------------------------------------------------------
\sec More about design
* You can use `\backgroundpic{<image-file>}` for putting an image to the background.
* You can re-declare `\footline` or re-define internal macros for design as
you wish.
+* The TeXGyre Heros font is used as default text font, the FiraMath is used
+ for math.
+* If you want to use another text font fmaily, use `\fontfam`
+ {\em before} `\slides` command.
+* If you want to use different math font, use
+ `\loadmath{[font]}` before `\fontfam` (if used) and before `\slides`. For example:
+
+\begtt
+\loadmath{[Asana-Math]} % Math font: Asana
+\fontfam[Termes] % Text font: Termes
+\slides
+...
+\endtt
+
* You can put the images or text wherever using `\putimege` or `\puttext`
macros...
@@ -272,8 +305,8 @@ are prepared for Beamer, {\bf\Red but}
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
- slides\fnote{this eleventh slide isn't counted}
+* on the other hand, you need to read only eleven
+ slides\fnote{this twelfth slide isn't counted}
and you are ready to use {\bf\Blue\OpTeX/ slides}.
\pg; %------------------------------------------------------------------
diff --git a/macros/luatex/optex/doc/omls.tex b/macros/luatex/optex/doc/omls.tex
index f161f151d7..bcc5749a51 100644
--- a/macros/luatex/optex/doc/omls.tex
+++ b/macros/luatex/optex/doc/omls.tex
@@ -457,7 +457,7 @@ output of the \LaTeX/ source file.
* `\,` \: should be small space or space.
* \.`\quad`, \.`\qquad` \: should be bigger space or more spaces.
* \.`\-`, \.`\/` \: should be ignored.
-* \.`\"<text>"` or \.`\'<text>'` \: `<clqq><text><crqq>` or `<clq><text><crq>`,
+* \.`\"<text>"` or \.`\'<text>'` \: `<qql><text><qqr>` or `<ql><text><qr>`,
only if `%%:quotes` are set.
\enditems
@@ -588,7 +588,7 @@ Code blocks are inline verbatim or display verbatim.
\enditems
-\secc Multiclolumns
+\secc Multicolumns
\.`\begmulti <number><space>` opens the group and \.`\endmulti`
closes the group. If output format allows multi-columns then
diff --git a/macros/luatex/optex/doc/optex-doc.pdf b/macros/luatex/optex/doc/optex-doc.pdf
index 4bd55547cb..a4df4f013a 100644
--- a/macros/luatex/optex/doc/optex-doc.pdf
+++ b/macros/luatex/optex/doc/optex-doc.pdf
Binary files differ
diff --git a/macros/luatex/optex/doc/optex-doc.tex b/macros/luatex/optex/doc/optex-doc.tex
index f8fcc45ca0..9f2fadeeb4 100644
--- a/macros/luatex/optex/doc/optex-doc.tex
+++ b/macros/luatex/optex/doc/optex-doc.tex
@@ -20,7 +20,7 @@
\tit Format Based on Plain \TeX/ and OPmac\fnotemark1
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\hfill Version 1.00
+\hfill Version 1.01
\centerline{\it Petr Olšák, 2020, 2021}
diff --git a/macros/luatex/optex/doc/optex-math.tex b/macros/luatex/optex/doc/optex-math.tex
index 2fd21af218..789dd5a187 100644
--- a/macros/luatex/optex/doc/optex-math.tex
+++ b/macros/luatex/optex/doc/optex-math.tex
@@ -740,6 +740,12 @@ For example, this document loads `latimodern-math.otf` font.
And the result from `\input print-unimath.opm` looks like the following ten
pages.
+Unsupported characters can be replaced by characters from other Unicode math
+font, see
+\ulink[http://petr.olsak.net/optex/optex-tricks.html\#addumathfont]{OpTeX trick 0030}
+or section~\ref[newfam].
+
+
\label[listA]\wlabel{}
\bigskip
diff --git a/macros/luatex/optex/doc/optex-userdoc.tex b/macros/luatex/optex/doc/optex-userdoc.tex
index 899b1d55aa..a70cedcf4d 100644
--- a/macros/luatex/optex/doc/optex-userdoc.tex
+++ b/macros/luatex/optex/doc/optex-userdoc.tex
@@ -1709,7 +1709,7 @@ to more files (with individual chapters or sections), use simply the `\input` pr
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.
+* `qrcode.opm` enables to create QR codes.
* `vlna.opm` enables to protect of one-letter prepositions and more things automatically.
* `emoji.opm` defines `\emoji{<name>}` command for colored emoticons.
* `plain-at.opm` defines the old names from plain \TeX/.