summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/luatex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2020-04-11 21:25:25 +0000
committerKarl Berry <karl@freefriends.org>2020-04-11 21:25:25 +0000
commitab92e63936783c8aaee1aa7d8b665db287565e96 (patch)
tree94358c5ef0027cf454a6c5b2b490c966b0c175d9 /Master/texmf-dist/tex/luatex
parentd18e7b8da9786016b16a8024e05eb7f0925823c5 (diff)
optex, with move to doc/luatex/optex
git-svn-id: svn://tug.org/texlive/trunk@54650 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/luatex')
-rw-r--r--Master/texmf-dist/tex/luatex/optex/colors.opm31
-rw-r--r--Master/texmf-dist/tex/luatex/optex/fnotes.opm14
-rw-r--r--Master/texmf-dist/tex/luatex/optex/fonts-opmac.opm3
-rw-r--r--Master/texmf-dist/tex/luatex/optex/graphics.opm249
-rw-r--r--Master/texmf-dist/tex/luatex/optex/lists.opm29
-rw-r--r--Master/texmf-dist/tex/luatex/optex/makeindex.opm12
-rw-r--r--Master/texmf-dist/tex/luatex/optex/multicolumns.opm10
-rw-r--r--Master/texmf-dist/tex/luatex/optex/optex.ini4
-rw-r--r--Master/texmf-dist/tex/luatex/optex/others.opm5
-rw-r--r--Master/texmf-dist/tex/luatex/optex/output.opm15
-rw-r--r--Master/texmf-dist/tex/luatex/optex/parameters.opm29
-rw-r--r--Master/texmf-dist/tex/luatex/optex/sections.opm58
-rw-r--r--Master/texmf-dist/tex/luatex/optex/slides.opm6
-rw-r--r--Master/texmf-dist/tex/luatex/optex/styles.opm4
-rw-r--r--Master/texmf-dist/tex/luatex/optex/verbatim.opm4
15 files changed, 419 insertions, 54 deletions
diff --git a/Master/texmf-dist/tex/luatex/optex/colors.opm b/Master/texmf-dist/tex/luatex/optex/colors.opm
index c4ce83ecd91..90d3d6d7a3e 100644
--- a/Master/texmf-dist/tex/luatex/optex/colors.opm
+++ b/Master/texmf-dist/tex/luatex/optex/colors.opm
@@ -37,9 +37,9 @@
\_def\_setcmykcolor#1{\_setcolor{\_formatcmyk{#1}}}
\_def\_setrgbcolor#1{\_setcolor{\_formatrgb{#1}}}
\_def\_setgreycolor#1{\_setcolor{\_formatgrey{#1}}}
-\_def\_formatcmyk#1{#1 k #1 K}
-\_def\_formatrgb#1{#1 rg #1 RG}
-\_def\_formatgrey#1{#1 g #1 G}
+\_def\_formatcmyk#1{\_fillstroke{#1 k}{#1 K}}
+\_def\_formatrgb#1{\_fillstroke{#1 rg}{#1 RG}}
+\_def\_formatgrey#1{\_fillstroke{#1 g}{#1 G}}
\_public \setcmykcolor \setrgbcolor \setgreycolor ;
\_doc -----------------------------
@@ -50,15 +50,19 @@
The `\onlycmyk` macro does a similar work, it re-defines `\_formatrgb`
macro. The Grey color space is unnchanged and works in both main
settings (RGB or CMYK) without collisions.
+ The `\_fillstroke` uses the same color for fills and strokes.
+ If only fills are needed to declare do `\def\_fillstroke#1#2{#1}`.
+ If only strokes are needed to declare do `\def\_fillstroke#1#2{#2}`.
\_cod -----------------------------
+\_def\_fillstroke#1#2{#1 #2}
\_def\_onlyrgb{\_def\Red{\_setrgbcolor{1 0 0}}%
\_def\Green{\_setrgbcolor{0 1 0}}\_def\Blue{\_setrgbcolor{0 0 1}}%
\_let\_colordef=\_rgbcolordef
- \_def\_formatrgb##1{##1 rg ##1 RG}%
- \_def\_formatcmyk##1{\_cmyktorgb ##1 ; rg \_cmyktorgb ##1 ; RG}}
-\_def\_onlycmyk{\_def\_formatcmyk##1{##1 k ##1 K}%
- \_def\_formatrgb##1{\_rgbtocmyk ##1 ; k \_rgbtocmyk ##1 ; K}}
+ \_def\_formatrgb##1{\_fillstroke{##1 rg}{##1 RG}}%
+ \_def\_formatcmyk##1{\_fillstroke{\_cmyktorgb ##1 ; rg}{\_cmyktorgb ##1 ; RG}}}
+\_def\_onlycmyk{\_def\_formatcmyk##1{\_fillstroke{##1 k}{##1 K}}%
+ \_def\_formatrgb##1{\_fillstroke{\_rgbtocmyk ##1 ; k}{\_rgbtocmyk ##1 ; K}}}
\_public \onlyrgb \onlycmyk ;
\_doc -----------------------------
@@ -81,7 +85,8 @@
}
\_def\_pdfblackcolor{0 g 0 G}
\_edef\_currentcolor{\_pdfblackcolor}
-\_def\_ensureblackA#1{\_colorstackpush\_pdfblackcolor #1\_colorstackpop}
+\_def\_ensureblackA#1{\_global\_let\_openfnotestack=\_openfnotestackA
+ \_colorstackpush\_pdfblackcolor #1\_colorstackpop}
\_doc -----------------------------
The colorstack is initialized here and basic macros
@@ -95,6 +100,16 @@
\_def\_colorstackset#1{\_pdfcolorstack\_colorstackcnt set{#1}}
\_doc -----------------------------
+ We need to open a special color stack for footnotes, because footnotes
+ can follow on next pages and their colors are independent on colors
+ used in man page-body.
+ \_cod -----------------------------
+
+%\_mathchardef\_fnotestack=\_pdfcolorstackinit page {0 g 0 G}
+% must be in \everyjob^^^
+\_def \_openfnotestackA {\_pdfcolorstack\_fnotestack current}
+
+ \_doc -----------------------------
We use lua codes for RGB to CMYK or CMYK to RGB conversions and for
addition color components in the `\colordef` macro.
`\_rgbtocmyk <R> <G> <B> ;` expands to <C> <M> <Y> <K>.
diff --git a/Master/texmf-dist/tex/luatex/optex/fnotes.opm b/Master/texmf-dist/tex/luatex/optex/fnotes.opm
index 9f9a9d3f5e1..91365879a99 100644
--- a/Master/texmf-dist/tex/luatex/optex/fnotes.opm
+++ b/Master/texmf-dist/tex/luatex/optex/fnotes.opm
@@ -1,6 +1,6 @@
%% This is part of OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \fnote {Footnotes, marginal notes OpTeX <2020-03-19>} % loaded in format
+\_codedecl \fnote {Footnotes, marginal notes OpTeX <2020-03-20>} % loaded in format
\_doc -----------------------------
\begitems
@@ -41,16 +41,20 @@
footnote itself, then you can define `\_printfnotemarkA` and `\_printfnotemarkB`.
The following example shows an implementation of hyperlinked footnotes
(from text to footnote and bacward):
- \begtt
- \def\_printfnotemarkA{\ilink[fnB:\the\gfnotenum]{\_printfnotemark}\dest[fnA::\the\gfnotenum]}
- \def\_printfnotemarkB{\ilink[fnA:\the\gfnotenum]{\_printfnotemark}\dest[fnB::\the\gfnotenum]}
- \endtt
\_cod -----------------------------
\_def \_printfnotemark {$^{\_fnotenum}$} % default footnote mark
\_def \_printfnotemarkA {\_printfnotemark} % footnote marks used in text
\_def \_printfnotemarkB {\_printfnotemark} % footnote marks used in front of footnotes
+\_def \_fnotelinks#1#2{% <inText color> <inFootnote color>
+ \_def\_printfnotemarkA{\_link[fnt:\the\_gfnotenum]{\_localcolor#1}{\_printfnotemark}%
+ \_dest[fnf:\the\_gfnotenum]}%
+ \_def\_printfnotemarkB{\_link[fnf:\the\_gfnotenum]{\_localcolor#2}{\_printfnotemark}%
+ \_dest[fnt:\the\_gfnotenum]}%
+}
+\public \fnotelinks ;
+
\_doc ----------------------------
Each footnote saves the `\_Xfnote` (without parameter) to the `.ref`
file (if `\openref`). We can create the mapping from <gfnotenum> to <pgfnotenum>
diff --git a/Master/texmf-dist/tex/luatex/optex/fonts-opmac.opm b/Master/texmf-dist/tex/luatex/optex/fonts-opmac.opm
index 20d6d45bf39..7827d76c65a 100644
--- a/Master/texmf-dist/tex/luatex/optex/fonts-opmac.opm
+++ b/Master/texmf-dist/tex/luatex/optex/fonts-opmac.opm
@@ -1,6 +1,6 @@
%% This is part of OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \typosize {Font managing macros from OPmac <2020-02-29>} % loaded in format
+\_codedecl \typosize {Font managing macros from OPmac <2020-03-27>} % loaded in format
\_protected\_def \_typosize [#1/#2]{%
\_textfontsize{#1}\_mathfontsize{#1}\_setbaselineskip{#2}%
@@ -45,6 +45,7 @@
\_def\_setmainvalues {%
\_mainbaselineskip=\_baselineskip
\_mainfosize=\_optsize
+ \_topskip=\_mainfosize \_splittopskip=\_topskip % added 2020-03-27
\_bf \_it \_bi \_rm \_normalmath % load fonts if \typosize is running firstly
\_let \_setmainvalues =\_setmainvaluesL
}
diff --git a/Master/texmf-dist/tex/luatex/optex/graphics.opm b/Master/texmf-dist/tex/luatex/optex/graphics.opm
index d4a868a3d1a..92a1a7a804f 100644
--- a/Master/texmf-dist/tex/luatex/optex/graphics.opm
+++ b/Master/texmf-dist/tex/luatex/optex/graphics.opm
@@ -1,13 +1,13 @@
%% This is part of OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \inspic {Graphics <2020-03-18>} % preloaded in format
+\_codedecl \inspic {Graphics <2020-03-29>} % preloaded in format
\_doc -----------------------------
`\inspic` accepts old syntax `\inspic <filename><space>`
or new syntax `\inspic{<filename>}`. So, we need to define
two auxiliary macros `\_inspicA` and `\_inspicB`.
- You can include more `\pdfximage` parameters (like `page=`)
+ You can include more `\pdfximage` parameters (like `page<number>`)
in the `\_picparams` macro.
All `\inspic` macros are surrounded in `\hbox` in order user can
@@ -146,11 +146,11 @@
The `\_scantwodimens` scans two objects with the syntactic rule <dimen>
and returns `{<number>}{<number>}` in sp unit.
- The `\puttext <down> <right>{<text>}` puts the <text> to desired place:
+ The `\puttext <right> <up>{<text>}` puts the <text> to desired place:
From current point moves <down> and <right>, puts the <text> and returns
back. The cuuren tpoint is unchanged after this macro ends.
- The `\putpic <down> <right> <width> <height> {<image-file>}`
+ The `\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.
@@ -158,18 +158,18 @@
\_def\_scantwodimens{%
\_directlua{tex.print(string.format('{\_pcent d}{\_pcent d}',
- token.scan_dimen(),token.scan_dimen{}))}%
+ token.scan_dimen(),token.scan_dimen()))}%
}
\_def\_puttext{\_ea\_ea\_ea\_puttextA\_scantwodimens}
\_def\_puttextA#1#2#3{\_setbox0=\_hbox{{#3}}\_dimen1=#1sp \_dimen2=#2sp \_puttextB}
\_def\_puttextB{%
- \_ifvmode
+ \_ifvmode
\_ifdim\_prevdepth>0pt \_vskip-\_prevdepth \_relax \_fi
\_nointerlineskip
\_fi
\_wd0=0pt \_ht0=0pt \_dp0=0pt
- \_vbox to0pt{\_kern\_dimen1 \_hbox to0pt{\_kern\_dimen2 \_box0\_hss}\_vss}}
+ \_vbox to0pt{\_kern-\_dimen2 \_hbox to0pt{\_kern\_dimen1 \_box0\_hss}\_vss}}
\_def\_putpic{\_ea\_ea\_ea\_putpicA\_scantwodimens}
\_def\_putpicA#1#2{\_dimen1=#1sp \_dimen2=#2sp \_ea\_ea\_ea\_putpicB\_scantwodimens}
@@ -183,5 +183,240 @@
\_def\nospec{0pt}
\_public \puttext \putpic \backgroundpic ;
+ \_doc -----------------------------
+ You can use expandable `\_bp{<dimen>}` convertor from
+ \TeX/ `<dimen>` (or from an expression accepted by
+ `\dimexpr` primitive) to a decimal value in big points
+ (used as natural unit in the PDF format). So, you can write, for example:
+ \begtt
+ \pdfliteral{q \_bp{.3\hsize-2mm} \_bp{2mm} m 0 \_bp{-4mm} l S Q}
+ \endtt
+ You can use expandable `\_expr{<expression>}` for analogical purposes.
+ The `<expression>` can include `+-*/()` and decimal numbers in common syntax.
+ \_cod -----------------------------
+
+\_def\_decdigits{3} % digits after decimal point in \_bp and \_expr outputs.
+\_def\_pttopb{%
+ \_directlua{tex.print(string.format('\_pcent.\_decdigits f',
+ token.scan_dimen()/65781.76))}% pt to bp conversion
+}
+\def\_bp#1{\_ea\_pttopb\_dimexpr#1\_relax}
+\def\_expr#1{\_directlua{tex.print(string.format('\_pcent.\_decdigits f',#1))}}
+
+ \_doc -----------------------------
+ `\)circle<x><y>` creates an ellipse with `<x>` axis and `<y>` axix.
+ The origin is in the center.
+ `\_oval<x><y><roudness>` creates an oval with `<x>`, `<y>` size and with
+ given `<roundness>`. The real size is bigger by 2`<roundness>`. The
+ orgigin is at the left bottom corner.
+ `\_mv<x><y>{<curve>}` moves current point to `<x>`, `<y>`, crates the
+ `<curve>` and retuns back the current point.
+ All these macros are fully expandable and they can be used in the
+ `\pdfliteral` argument.
+ \_cod -----------------------------
+
+\def\_circle#1#2{\_expr{.5*(#1)} 0 m
+ \_expr{.5*(#1)} \_expr{.276*(#2)} \_expr{.276*(#1)} \_expr{.5*(#2)} 0 \_expr{.5*(#2)} c
+ \_expr{-.276*(#1)} \_expr{.5*(#2)} \_expr{-.5*(#1)} \_expr{.276*(#2)} \_expr{-.5*(#1)} 0 c
+ \_expr{-.5*(#1)} \_expr{-.276*(#2)} \_expr{-.276*(#1)} \_expr{-.5*(#2)} 0 \_expr{-.5*(#2)} c
+ \_expr{.276*(#1)} \_expr{-.5*(#2)} \_expr{.5*(#1)} \_expr{-.276*(#2)} \_expr{.5*(#1)} 0 c h}
+
+\def\_oval#1#2#3{0 \_expr{-(#3)} m \_expr{#1} \_expr{-(#3)} l
+ \_expr{(#1)+.552*(#3)} \_expr{-(#3)} \_expr{(#1)+(#3)} \_expr{-.552*(#3)}
+ \_expr{(#1)+(#3)} 0 c
+ \_expr{(#1)+(#3)} \_expr{#2} l
+ \_expr{(#1)+(#3)} \_expr{(#2)+.552*(#3)} \_expr{(#1)+.552*(#3)} \_expr{(#2)+(#3)}
+ \_expr{#1} \_expr{(#2)+(#3)} c
+ 0 \_expr{(#2)+(#3)} l
+ \_expr{-.552*(#3)} \_expr{(#2)+(#3)} \_expr{-(#3)} \_expr{(#2)+.552*(#3)}
+ \_expr{-(#3)} \_expr{#2} c
+ \_expr{-(#3)} 0 l
+ \_expr{-(#3)} \_expr{-.552*(#3)} \_expr{-.552*(#3)} \_expr{-(#3)} 0 \_expr{-(#3)} c h}
+
+\def\_mv#1#2#3{1 0 0 1 \_expr{#1} \_expr{#2} cm #3 1 0 0 1 \_expr{-(#1)} \_expr{-(#2)} cm}
+
+ \_doc -----------------------------
+ The `\inoval` is an example of `\_oval` usage.
+ The `\incircle` is an example of `\_circle` usage.
+ \_cod -----------------------------
+
+\_newdimen \_lwidth
+\_def\_fcolor{\_let\_fcolorvalue}
+\_def\_lcolor{\_let\_lcolorvalue}
+\_def\_shadow{\_let\_shadowvalue}
+\_def\_overlapmargins{\_let\_overlapmarginsvalue}
+\_def\_ratio{\isnextchar ={\_ratioA}{\_ratioA=}}
+\_def\_ratioA =#1 {\_def\_ratiovalue{#1}}
+\_def\_touppervalue#1{\_ifx#1n\_let#1=N\_fi}
+
+\_def\_setflcolors#1{% use only in a group
+ \_def\_setcolor##1{##1}%
+ \_def\_fillstroke##1##2{##1}%
+ \_edef#1{\_fcolorvalue}%
+ \_def\_fillstroke##1##2{##2}%
+ \_edef#1{#1\_space\_lcolorvalue\_space}%
+}
+
+\_optdef\_inoval[]{\_vbox\_bgroup
+ \_roundness=2pt \_fcolor=\Yellow \_lcolor=\Red \_lwidth=.5bp
+ \_shadow=N \_overlapmargins=N \_hhkern=0pt \_vvkern=0pt
+ \_the\_ovalparams \_relax \_the\_opt \_relax
+ \_touppervalue\_overlapmarginsvalue \_touppervalue\_shadowvalue
+ \_ifx\_overlapmarginsvalue N%
+ \_advance\_hsize by-2\_hhkern \_advance\_hsize by-2\_roundness \_fi
+ \_setbox0=\_hbox\_bgroup\_bgroup \_aftergroup\_inovalA \_kern\_hhkern \_let\_next=%
+}
+\_def\_inovalA{\_isnextchar\_colorstackpop\_inovalB\_inovalC}
+\_def\_inovalB#1{#1\_isnextchar\_colorstackpop\_inovalB\_inovalC}
+\_def\_inovalC{\_egroup % of \setbox0=\hbox\bgroup
+ \_ifdim\_vvkern=0pt \_else \_ht0=\_dimexpr\_ht0+\_vvkern \_relax
+ \_dp0=\_dimexpr\_dp0+\_vvkern \_relax \_fi
+ \_ifdim\_hhkern=0pt \_else \_wd0=\_dimexpr\_wd0+\_hhkern \_relax \_fi
+ \_ifx\_overlapmarginsvalue N\_dimen0=\_roundness \_dimen1=\_roundness
+ \_else \_dimen0=-\_hhkern \_dimen1=-\_vvkern \_fi
+ \_setflcolors\_tmp
+ \_hbox{\_kern\_dimen0
+ \_vbox to0pt{\_kern\_dp0
+ \_ifx\_shadowvalue N\_else
+ \_edef\_tmpb{{\_bp{\_wd0+\_lwidth}}{\_bp{\_ht0+\_dp0+\_lwidth}}{\_bp{\_roundness}}}%
+ \_doshadow\_oval
+ \_fi
+ \_pdfliteral{q \_bp{\_lwidth} w \_tmp
+ \_oval{\_bp{\wd0}}{\_bp{\_ht0+\_dp0}}{\_bp{\_roundness}} B Q}\_vss}%
+ \_ht0=\_dimexpr\_ht0+\_dimen1 \_relax \_dp0=\_dimexpr\_dp0+\_dimen1 \_relax
+ \_box0
+ \_kern\_dimen0}%
+ \_egroup % of \vbox\bgroup
+}
+\_optdef\_incircle[]{\_vbox\_bgroup
+ \_ratio=1 \_fcolor=\Yellow \_lcolor=\Red \_lwidth=.5bp
+ \_shadow=N \_overlapmargins=N \_hhkern=3pt \_vvkern=3pt
+ \_ea\_the \_ea\_circleparams \_space \_relax
+ \_ea\_the \_ea\_opt \_space \_relax
+ \_touppervalue\_overlapmarginsvalue \_touppervalue\_shadowvalue
+ \_setbox0=\_hbox\_bgroup\_bgroup \_aftergroup\_incircleA \_kern\_hhkern \_let\_next=%
+}
+\_def\_incircleA {\_isnextchar\_colorstackpop\_incircleB\_incircleC}
+\_def\_incircleB #1{#1\_isnextchar\_colorstackpop\_incircleB\_incircleC}
+\_def\_incircleC {\_egroup % of \setbox0=\hbox\bgroup
+ \_wd0=\dimexpr \_wd0+\_hhkern \_relax
+ \_ht0=\dimexpr \_ht0+\_vvkern \_relax \_dp0=\dimexpr \_dp0+\_vvkern \_relax
+ \_ifdim \_ratiovalue\_dimexpr \_ht0+\_dp0 > \_wd0
+ \_dimen3=\_dimexpr \_ht0+\_dp0 \_relax \_dimen2=\_ratiovalue\_dimen3
+ \_else \_dimen2=\_wd0 \_dimen3=\_expr{1/\_ratiovalue}\_dimen2 \fi
+ \_setflcolors\_tmp
+ \_ifx\_overlapmarginsvalue N\_dimen0=0pt \_dimen1=0pt
+ \_else \_dimen0=-\hhkern \_dimen1=-\vvkern \_fi
+ \_hbox{\_kern\dimen0
+ \_ifx\_shadowvalue N\_else
+ \_edef\_tmpb{{\_bp{\_dimen2+\_lwidth}}{\_bp{\_dimen3+\_lwidth}}{}}%
+ \_doshadow\_circlet
+ \_fi
+ \_pdfliteral{q \_bp{\_lwidth} w \_tmp \_mv{\_bp{.5\_wd0}}{\_bp{(\ht0-\dp0)/2}}
+ {\_circle{\_bp{\_dimen2}}{\_bp{\_dimen3}} B} Q}%
+ \_ifdim\_dimen1=0pt \_else
+ \_ht0=\dimexpr \_ht0+\_dimen1 \_relax \_dp0=\dimexpr \_dp0+\_dimen1 \_relax \_fi
+ \_box0
+ \_kern\_dimen0}
+ \_egroup % of \vbox\bgroup
+}
+\_def\_circlet#1#2#3{\_circle{#1}{#2}}
+
+\_public
+ \inoval \incircle \ratio \lwidth \fcolor \lcolor \shadow \overlapmargins ;
+
+ \_doc -----------------------------
+ A shadow effect is implemented here. The shadow is equal to the
+ silhouette of the given path in gray-transparent color shifted by
+ `\shadowmoveto` vector and with blurred boundary.
+ A waistline with the width 2*`\shadowb` around the boundary is blurred.
+ The `\shadowlevels` levels of transparent shapes is used for creating
+ this effect. The `\shadowlevels+1/2` level is equal to the shifted given path.
+ \_cod -----------------------------
+
+\_def\_shadowlevels{9} % number of layers for blurr effect
+\_def\_shadowdarknessA{0.025} % transparency of first shadowlevels/2 layers
+\_def\_shadowdarknessB{0.07} % transparency of second half of layers
+\_def\_shadowmoveto{1.8 -2.5} % vector defines shifting layer (in bp)
+\_def\_shadowb{1} % 2*shadowb = blurring area thickness
+
+ \_doc -----------------------------
+ The `\_pdfpageresources` primitive is used to define transparency.
+ It does not work when used in a box. So, we use it at begining of
+ output routine. The modification of output routine is done only once
+ when the shadow effect is used first.
+ \_cod -----------------------------
+
+\_def\_insertshadowresources{%
+ \_global\_addto\_begoutput{\_setshadowresources}%
+ \_xdef\_setshadowresources{%
+ \_pdfpageresources{/ExtGState
+ <<
+ /op1 << /Type /ExtGState /ca \_shadowdarknessA >>
+ /op2 << /Type /ExtGState /ca \_shadowdarknessB >>
+ >>
+ }%
+ }%
+ \_global\_let\_insertshadowresources=\_relax
+}
+\_def\_doshadow#1{\_vbox{%
+ \_insertshadowresources
+ \_tmpnum=\_numexpr (\_shadowlevels-1)/2 \_relax
+ \_edef\_tmpfin{\_the\_tmpnum}%
+ \_ifnum\_tmpfin=0 \_def\_shadowb{0}\_def\_shadowstep{0}%
+ \_else \_edef\_shadowstep{\_expr{\_shadowb/\_tmpfin}}\_fi
+ \_def\_tmpa##1##2##3{\_def\_tmpb
+ {#1{##1+2*\_the\_tmpnum*\_shadowstep}{##2+2*\_the\_tmpnum*\_shadowstep}{##3}}}%
+ \_ea \_tmpa \_tmpb
+ \_def\_shadowlayer{%
+ \_ifnum\_tmpnum=0 /op2 gs \_fi
+ \_tmpb\_space f
+ \_immediateassignment\_advance\_tmpnum by-1
+ \_ifnum-\_tmpfin<\_tmpnum
+ \_ifx#1\_oval 1 0 0 1 \_shadowstep\_space \_shadowstep\_space cm \_fi
+ \_ea \_shadowlayer \_fi
+ }%
+ \_pdfliteral{q /op1 gs 0 g 1 0 0 1 \_shadowmoveto\_space cm
+ \_ifx#1\_circlet 1 0 0 1 \_expr{\_bp{.5\_wd0}} \_expr{\_bp{(\_ht0-\_dp0)/2}} cm
+ \_else 1 0 0 1 -\_shadowb\_space -\_shadowb\_space cm \_fi
+ \_shadowlayer Q}
+}}
+
+ \_doc -----------------------------
+ A generic macro `\clipinpath{<x>}{<y>}{<curve>}{<text>}` declares
+ a clipping path by <curve> shifted by <x>, <y>. The <text> is typesset
+ when such clipping path is active. Dimensions are given by bp without the unit here.
+ Macros `\clipinoval <x> <y> <width> <height> {<text>}` and
+ `\clipincircle <x> <y> <width> <height> {<text>}` are defined here.
+ These marcos read normal \TeX/ dimensions in their parameters.
+ \_cod -----------------------------
+
+\_def\_clipinpath#1#2#3#4{% #1=x-pos[bp], #2=y-pos[bp], #3=curve, #4=text
+ \_hbox{\setbox0=\hbox{{#4}}%
+ \_tmpdim=\wd0 \wd0=0pt
+ \_pdfliteral{q \_mv{#1}{#2}{#3 W n}}%
+ \_box0\_pdfliteral{Q}\_kern\_tmpdim
+ }%
+}
+
+\_def\_clipinoval {\_ea\_ea\_ea\_clipinovalA\_scantwodimens}
+\_def\_clipinovalA #1#2{%
+ \_def\_tmp{{#1/65781.76}{#2/65781.76}}%
+ \_ea\_ea\_ea\_clipinovalB\_scantwodimens
+}
+\_def\_clipinovalB{\_ea\_clipinovalC\_tmp}
+\_def\_clipinovalC#1#2#3#4{%
+ \_ea\_clipinpath{#1-(#3/131563.52)+(\_bp{\_roundness})}{#2-(#4/131563.52)+(\_bp{\_roundness})}%
+ {\_oval{#3/65781.76-(\_bp{2\_roundness})}{#4/65781.76-(\_bp{2\_roundness})}{\_bp{\_roundness}}}%
+}
+\_def\_clipincircle {\_ea\_ea\_ea\_clipincircleA\_scantwodimens}
+\_def\_clipincircleA #1#2{%
+ \_def\_tmp{{#1/65781.76}{#2/65781.76}}%
+ \_ea\_ea\_ea\_clipincircleB\_scantwodimens
+}
+\_def\_clipincircleB#1#2{%
+ \_ea\_clipinpath\_tmp{\_circle{#1/65781.76}{#2/65781.76}}%
+}
+
\_endcode % -------------------------------------
diff --git a/Master/texmf-dist/tex/luatex/optex/lists.opm b/Master/texmf-dist/tex/luatex/optex/lists.opm
index adc28a3617e..067fa4a7d96 100644
--- a/Master/texmf-dist/tex/luatex/optex/lists.opm
+++ b/Master/texmf-dist/tex/luatex/optex/lists.opm
@@ -6,11 +6,20 @@
`\aboveliskip` is used above the list of items,
`\belowliskip` is used below the list of items and
`\interliskip` is used between items.
+ `\listskipA` is used as `\listskipamount` at level 1 of items.
+ `\listskipB` is used as `\listskipamount` at other levels.
\_cod -----------------------------
-\_def\_aboveliskip {\_removelastskip \_penalty-100 \_medskip}
-\_def\_belowliskip {\_penalty-200 \_medskip}
+\_def\_aboveliskip {\_removelastskip \_penalty-100 \_vskip\_listskipamount}
+\_def\_belowliskip {\_penalty-200 \_vskip\_listskipamount}
\_def\_interliskip {}
+\_def\_listskipA {\_medskipamount}
+\_def\_listskipB {0pt plus.5\smallskipamount}
+
+\_def\_setlistskip {%
+ \_ifnum \_ilevel = 1 \_listskipamount = \_listskipA \_relax
+ \_else \_listskipamount = \_listskipB \_relax
+ \_fi}
\_doc -----------------------------
The `\itemnum` is localy reset to zero in each group declared by
@@ -27,20 +36,30 @@
\_newcount\_itemnum \_itemnum=0
\_newtoks\_printitem
-\_def\_begitems{\_par \_ifnum\_lastpenalty<10000 \_aboveliskip \_fi
+\_def\_begitems{\_par
\_bgroup
+ \_advance \_ilevel by1
+ \_setlistskip
+ \_ifnum\_lastpenalty<10000 \_aboveliskip \_fi
\_itemnum=0 \_adef*{\_startitem}
\_advance\_leftskip by\_iindent
\_printitem=\_defaultitem
- \_the\_everybegitems
+ \_the\_everylist \_relax
}
-\_def\_enditems{\_par\_egroup\_belowliskip}
+\_def\_enditems{\_par\_belowliskip\_egroup}
\_def\_startitem{\_par \_ifnum\_itemnum>0 \_interliskip \_fi
\_advance\_itemnum by1
\_the\_everyitem \_noindent\_llap{\_the\_printitem}\_ignorespaces
}
+ \_doc ----------------------------
+ `\novspaces` sets `\listsipamount` to 0pt.
+ \_cod ----------------------------
+
+\_def\_novspaces {\_removelastskip \_listskipamount=0pt \_relax}
+\_public \novspaces ;
+
\_doc -----------------------------
Various item marks are saved in `\_item:<letter>` macros.
You ca re-define then or define more such macros.
diff --git a/Master/texmf-dist/tex/luatex/optex/makeindex.opm b/Master/texmf-dist/tex/luatex/optex/makeindex.opm
index 5f13f5ca5ae..2a783d8895f 100644
--- a/Master/texmf-dist/tex/luatex/optex/makeindex.opm
+++ b/Master/texmf-dist/tex/luatex/optex/makeindex.opm
@@ -1,6 +1,6 @@
%% This is part of OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \makeindex {Makeindex and sorting <2020-03-16>} % loaded in format
+\_codedecl \makeindex {Makeindex and sorting <2020-04-26>} % loaded in format
\_doc -----------------------------
`\makeindex` implements sorting algorithm at \TeX/ macrolanguage level.
@@ -67,8 +67,10 @@
these declared characters are used.
The characters declared in `\_ignoredchars` are ignored in first pass
- without additional condidion. They are ignored in second pass only if
- they are not mentioned in the `\_sortingdata<iso-code>` macro.
+ without additional condidion. All characters are taken into acount in
+ second pass: ASCII characters with code $<65$ are sorted first if they
+ are not mentioned in the `\_sortingdata<iso-code>` macro.
+ Others not mentioned characters have undefined behavior during sorting.
\_cod -----------------------------
\_def \_ignoredcharscs {.,;?!:'"|()[]<>=+}
@@ -116,7 +118,7 @@
\_ifx##1,\_advance\_tmpnum by1
\_else \_lccode`##1=\_tmpnum \_fi
\_ea\_act \_fi}%
- \_tmpnum=60 \_ea\_act \_sortingdata \_relax
+ \_tmpnum=65 \_ea\_act \_sortingdata \_relax
\_def \_act ##1{\_ifx##1\_relax \_else
\_lccode`##1=`\^^I
\_ea\_act \_fi}%
@@ -131,7 +133,7 @@
\_def \_act ##1{\_ifx##1\_relax \_else
\_ifx##1,\_else \_advance\_tmpnum by1 \_lccode`##1=\_tmpnum \_fi
\_ea\_act \_fi}%
- \_tmpnum=60 \_ea\_act \_sortingdata \_relax
+ \_tmpnum=65 \_ea\_act \_sortingdata \_relax
}
\_doc -----------------------------
diff --git a/Master/texmf-dist/tex/luatex/optex/multicolumns.opm b/Master/texmf-dist/tex/luatex/optex/multicolumns.opm
index 291eb1cfd0a..cf4d26bbb4f 100644
--- a/Master/texmf-dist/tex/luatex/optex/multicolumns.opm
+++ b/Master/texmf-dist/tex/luatex/optex/multicolumns.opm
@@ -1,6 +1,6 @@
%% This is part of OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \begmulti {Balanced columns <2020-03-08>} % preloaded in format
+\_codedecl \begmulti {Balanced columns <2020-03-26>} % preloaded in format
\_doc -----------------------------
This code is documented in detail in the \"\TeX/book naruby", pages 244--246,
@@ -33,7 +33,7 @@
\_def\par{\_ifhmode\_endgraf\_global\_advance\_mullines by\_prevgraf\_fi}%
}
\_def\_endmulti{\_vskip-\_prevdepth\_vfil
- \_expandafter\_egroup\_expandafter\_baselineskip\_the\_baselineskip\_relax
+ \_ea\_egroup\_ea\_baselineskip\_the\_baselineskip\_relax
\_dimen0=.8\_maxdimen \_tmpnum=\_dimen0 \_divide\_tmpnum by\_baselineskip
\_splittopskip=\_baselineskip
\_setbox1=\_vsplit6 to0pt
@@ -68,10 +68,10 @@
\_divide\_dimen0 by\_Ncols \_relax
\_ifx\_balancecolumns\_flushcolumns \_advance\_dimen0 by-.5\_vsize \_fi
\_dimen1=\_vsize \_corrsize{\_dimen1}\_dimen2=\_dimen1
- \_advance\_dimen2 by-\_Ncols\_baselineskip
+ \_advance\_dimen2 by-\_baselineskip
%% split the material to more pages?
\_ifvoid6 \_else
- \_ifdim \_dimen0>\_dimen2 \_expandafter\_expandafter\_expandafter \_splitpart
+ \_ifdim \_dimen0>\_dimen2 \_ea\_ea\_ea \_splitpart
\_else \_balancecolumns % last balancing
\_fi \_fi
}
@@ -88,7 +88,7 @@
\_ifvoid6 \_else
\_advance \_dimen0 by.2\_baselineskip
\_setbox6=\_copy7
- \_expandafter \_tmp \_fi}\_tmp
+ \_ea \_tmp \_fi}\_tmp
\_hbox{}\_nobreak\_vskip-\_splittopskip \_nointerlineskip
\_hbox to\_hsize{\_unhbox1\_unskip}%
\_egroup
diff --git a/Master/texmf-dist/tex/luatex/optex/optex.ini b/Master/texmf-dist/tex/luatex/optex/optex.ini
index e4a09eec0af..31d5f5171ae 100644
--- a/Master/texmf-dist/tex/luatex/optex/optex.ini
+++ b/Master/texmf-dist/tex/luatex/optex/optex.ini
@@ -16,11 +16,12 @@
\catcode `\^^I=10 % ascii tab is a blank space
\catcode `\_=11 % underline can be used in control sequences
\catcode `\~=13 % tilde is active
+\catcode `\^^a0=13 % non breaking space in Unicode
\catcode 127=12 % normal character
% OpTeX version
-\def\optexversion{Alpha 0.07 Mar 2020}
+\def\optexversion{Alpha 0.08 Mar 2020}
% Engine testing:
@@ -86,6 +87,7 @@
\_everyjob = {%
\_message{This is OpTeX (Olsak's Plain TeX), version <\optexversion>^^J}%
+ \_mathchardef\_fnotestack=\_pdfcolorstackinit page {0 g 0 G}%
\_mathsbon % replaces \int_a^b to \int _a^b
\_inputref % inputs \jobname.ref if exists
}
diff --git a/Master/texmf-dist/tex/luatex/optex/others.opm b/Master/texmf-dist/tex/luatex/optex/others.opm
index 4c6b49dd2de..6c656ec0e0e 100644
--- a/Master/texmf-dist/tex/luatex/optex/others.opm
+++ b/Master/texmf-dist/tex/luatex/optex/others.opm
@@ -27,11 +27,16 @@
\_let\chyph=\cslang \_let\shyph=\sklang
\_let\csUnicode=\csPatt \_let\czUnicode=\csPatt \_let\skUnicode=\skPatt
+% classical \ten* macros (keeps only preloaded fonts!)
+
\_let \letfont = \_fontlet
\_let \tenrm = \_tenrm \_let \tenbf = \_tenbf
\_let \tenit = \_tenit \_let \tenbi = \_tenbi
\_let \tentt = \_tentt
+% non breaking space in Unicode
+
+\let ^^a0=~
% TikZ needs these control sequences:
diff --git a/Master/texmf-dist/tex/luatex/optex/output.opm b/Master/texmf-dist/tex/luatex/optex/output.opm
index a81e5e8c0a5..a10779e7a87 100644
--- a/Master/texmf-dist/tex/luatex/optex/output.opm
+++ b/Master/texmf-dist/tex/luatex/optex/output.opm
@@ -1,6 +1,6 @@
%% This is part of OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \nopagenumbers {Output routine <2020-03-15>} % preloaded in format
+\_codedecl \nopagenumbers {Output routine <2020-03-28>} % preloaded in format
\_doc -----------------------------
`\_optexouput` is default output routine. You can create another...
@@ -59,6 +59,7 @@
\_ensureblack{\_makefootline}}%
}
\_def \_ensureblack #1{#1} % will be re-defined by color macros
+\_let \_openfnotestack = \_relax % will be re-defined by color macros
\_def \_backgroundbox #1{\_moveleft\_hoffset\_vbox to0pt{\_kern-\voffset #1\_vss}}
\_doc -----------------------------
@@ -94,7 +95,7 @@
\_dimen0=\dp255 \_unvbox255 % open up \box255
\_ifvoid\_footins \_else % footnote info is present
\_vskip\_skip\_footins
- \_ensureblack{\_footnoterule \_unvbox\_footins}\fi
+ \_ensureblack{\_footnoterule \_openfnotestack \_unvbox\_footins}\fi
\_ifraggedbottom \kern-\_dimen0 \_vfil \_fi
}
\_def \_pagedest {{\_def\_destheight{25pt}\_dest[pg:\_the\_gpageno]}}
@@ -132,14 +133,18 @@
\_def \_opfootnote #1#2{\_insert\_footins\_bgroup
\_interlinepenalty=\_interfootnotelinepenalty
\_leftskip=0pt \_rightskip=0pt \_spaceskip=0pt \_xspaceskip=0pt \_relax
+ \_let\_colorstackcnt=\_fnotestack % special color stack for footnotes
#1\_relax % local settings used by \fnote macro
\_splittopskip=\_ht\_strutbox % top baseline for broken footnotes
\_splitmaxdepth=\_dp\_strutbox \_floatingpenalty=20000
\_textindent{#2}\_footstrut
- \_isnextchar \_bgroup {\_bgroup \_aftergroup\_vfootA \_let\_next=}{\_vfootB}%
+ \_isnextchar \_bgroup
+ {\_bgroup \_aftergroup\_vfootA \_afterassignment\_ignorespaces \_let\_next=}{\_vfootB}%
}
-\_def\_vfootA{\_strut\_egroup}
-\_def\_vfootB #1{#1\_vfootA}
+\_def\_vfootA{\_unskip\_strut\_isnextchar\_colorstackpop\_closefncolor\_vfootF}
+\_def\_vfootB #1{#1\_uskip\_strut\_vfootF}
+\_def\_vfootF{\_egroup} % close \_insert\_footins\_bgroup
+\_def\_closefncolor#1{#1\_isnextchar\_colorstackpop\_closefncolor\_vfootF}
\_def \_footstrut {\_vbox to\_splittopskip{}}
\_skip\_footins=\_bigskipamount % space added when footnote is present
\_count\_footins=1000 % footnote magnification factor (1 to 1)
diff --git a/Master/texmf-dist/tex/luatex/optex/parameters.opm b/Master/texmf-dist/tex/luatex/optex/parameters.opm
index 4ae0aa4d98f..2a85a081596 100644
--- a/Master/texmf-dist/tex/luatex/optex/parameters.opm
+++ b/Master/texmf-dist/tex/luatex/optex/parameters.opm
@@ -97,6 +97,9 @@
and set default page dimensions as A4, no letter.
\_cod -----------------------------
+\_emergencystretch=20pt % we want to use third pass of aparagraph building algoritmh
+ % we need not to keep the compatibility with old documents
+
\_clubpenalty=10000 % after first line of paragraph
\_widowpenalty=10000 % before last line of paragraph
@@ -121,6 +124,7 @@
\_cod -----------------------------
\_def\_plaintexsetting{%
+ \_emergencystretch=0pt
\_clubpenalty=150
\_widowpenalty=150
\_pdfvorigin=1in
@@ -242,14 +246,16 @@
The default item mark used between `\bgitems` and `\enditems` is bullet.
The `\everyitem` token list is applied in vertical mode
at the start of each item.
- The `\everybegitems` token list is applied after group is openem by
+ The `\everylist` token list is applied after group is openem by
`\begitems`.
\_cod -----------------------------
\_newtoks\_defaultitem \_defaultitem={$\_bullet$\_enspace}
\_newtoks\_everyitem
-\_newtoks\_everybegitems
-\_public \defaultitem \everyitem \everybegitems ;
+\_newtoks\_everylist
+\_newskip \_listskipamount \_listskipamount=\_medskipamount
+\_newcount \_ilevel
+\_public \defaultitem \everyitem \everylist \listskipamount \ilevel ;
\_doc -----------------------------
The `\tit` macro includes `\vglue\titskip` above the title of the document.
@@ -417,6 +423,23 @@
\_newtoks \_pgbackground \_pgbackground={} % for page background
\_public \pgbackground ;
+ \_doc -----------------------------
+ The parameters used in `\inoval` and `\incircle` macros.
+ The default values (documented in user manual) are set in the macros.
+ User can re-set thse values using tokens \ovalparams, \circleparams.
+ \_cod -----------------------------
+
+\_newtoks \_ovalparams
+\_newtoks \_circleparams
+%\_ovalparams={\_roundness=2pt \_fcolor=\Yellow \_lcolor=\Red \_lwidth=.5bp
+% \_shadow=N \_overlapmargins=N \_hhkern=0pt \_vvkern=0pt }
+%\_circleparams={\_ratio=1 \_fcolor=\Yellow \_lcolor=\Red \_lwidth=.5bp
+% \_shadow=N \_overlapmargins=N \_hhkern=3pt \_vvkern=3pt}
+
+\_newdimen \_roundness \_roundness=5mm % used in \clippingoval macro
+
+\_public \ovalparams \circleparams \roundness ;
+
\_endcode %----------------------------------------------------
diff --git a/Master/texmf-dist/tex/luatex/optex/sections.opm b/Master/texmf-dist/tex/luatex/optex/sections.opm
index dae71df77a0..2a7629560c3 100644
--- a/Master/texmf-dist/tex/luatex/optex/sections.opm
+++ b/Master/texmf-dist/tex/luatex/optex/sections.opm
@@ -128,10 +128,13 @@
\_newcount \_fnum % figure numbers
\_newcount \_dnum % numbered display maths
-\_def \_chapx {\_incr\_chapnum \_secnum=0 \_seccnum=0 \_tnum=0 \_fnum=0 \_dnum=0 \_lfnotenum=0 }
-\_def \_secx {\_incr\_secnum \_seccnum=0 \_tnum=0 \_fnum=0 \_dnum=0 }
+\_def \_chapx {\_incr\_chapnum \_secnum=0 \_seccnum=0 \_resetcountchap \_lfnotenum=0 }
+\_def \_secx {\_incr\_secnum \_seccnum=0 \_resetcountsec }
\_def \_seccx {\_incr\_seccnum }
+\_def \_resetcountchap {\_tnum=0 \_fnum=0 \_dnum=0 }
+\_def \_resetcountsec {\_tnum=0 \_fnum=0 }
+
\_def \_thechapnum {\_the\_chapnum}
\_def \_thesecnum {\_othe\_chapnum.\_the\_secnum}
\_def \_theseccnum {\_othe\_chapnum.\_the\_secnum.\_the\_seccnum}
@@ -350,6 +353,55 @@
}
\_public \eqmark ;
-\_endcode % -------------------------------------
+ \_doc -----------------------------
+ The `\numberedpar <letter>{<name>}` is implemented here.
+ You can say `\let\resetcountsec=\relax` if you don't want to reset
+ counters A, B, C, D, E nor `\fnum` nor `\tnum` in sections, but only in
+ chapters. Or you can define you own concept of `\_chapx` and `\_secx`
+ macros (see above). Then you will want to re-define `\_theAnum`, `\_thefnum`
+ etc. macros.
+ \_cod -----------------------------
+
+\_newcount\_counterA \_newcount\_counterB \_newcount\_counterC
+\_newcount\_counterD \_newcount\_counterE
+
+\_def\_resetcounters{\_counterA=0 \_counterB=0 \_counterC=0 \_counterD=0 \_counterE=0 }
+\_addto \_resetcountchap {\_resetcounters}
+\_addto \_resetcountsec {\_resetcounters}
+
+\_def \_theAnum {\_othe\_chapnum.\_othe\_secnum.\_the\_counterA}
+\_def \_theBnum {\_othe\_chapnum.\_othe\_secnum.\_the\_counterB}
+\_def \_theCnum {\_othe\_chapnum.\_othe\_secnum.\_the\_counterC}
+\_def \_theDnum {\_othe\_chapnum.\_othe\_secnum.\_the\_counterD}
+\_def \_theEnum {\_othe\_chapnum.\_othe\_secnum.\_the\_counterE}
+
+\_def\_numberedpar#1#2{\_ea \_incr \_csname _counter#1\_endcsname
+ \_def\_tmpa{#1}\_def\_tmpb{#2}\_numberedparparam}
+\_optdef\_numberedparparam[]{%
+ \_ea \_printnumberedpar \_csname _the\_tmpa num\_ea\_endcsname\_ea{\_tmpb}}
+ \_doc -----------------------------
+ The `\_printnumberedpar \theXnum {<name>}` opens numbered paragraph and
+ prints it. The optional parameter is in `\_the\_opt`. You can re-define
+ it if you need another design.
+
+ `\_printnumberedpar` need not to be re-define if you only need to print
+ Theorems in italic and to insert vertical skips (for example). You can do this
+ by the following:
+ \_begtt
+ \def\theorem {\medskip\bgroup\it \numberedpar A{Theorem}}
+ \def\endtheorem {\par\egroup\medskip}
+ \_endtt
+ \theorem Let $M$ be... \endtheorem
+ \_cod -----------------------------
+
+\_def \_printnumberedpar #1#2{\_par
+ \_noindent\_wlabel #1%
+ {\bf #2 #1\_istoksempty\_opt\_iffalse \_space \_the\_opt \_fi.}\_space
+ \_ignorespaces
+}
+\_public \numberedpar ;
+
+
+\_endcode % -------------------------------------
diff --git a/Master/texmf-dist/tex/luatex/optex/slides.opm b/Master/texmf-dist/tex/luatex/optex/slides.opm
index faff5797982..135a2bdce40 100644
--- a/Master/texmf-dist/tex/luatex/optex/slides.opm
+++ b/Master/texmf-dist/tex/luatex/optex/slides.opm
@@ -69,15 +69,15 @@
the next text after `\pg+`.
\_cod -----------------------------
-\_newcount\_ilevel \_newcount\_gilevel
+\_newcount\_gilevel
\_def\*{*}
\_adef*{\_startitem}
\_sdef{_item:X}{\Blue\_raise.2ex\_fullrectangle{.8ex}\_kern.5em}
\_sdef{_item:x}{\Blue\_raise.3ex\_fullrectangle{.6ex}\_kern.4em}
\_style X
-\_addto\_begitems{\_style x }\public \begitems ;
\_def\_egroups{\_par\_global\_gilevel=\_ilevel \_egroup}
-\_everybegitems={\_advance\_ilevel by1 \_addto\_egroups{\_egroup}}
+\_everylist={\_novspaces \_ifcase\_ilevel \_or \_style x \_else \_style - \_fi
+ \_addto\_egroups{\_egroup}}
\_doc -----------------------------
The default values of `\pg;`, `\pg+` and `\pg.` are very simple.
diff --git a/Master/texmf-dist/tex/luatex/optex/styles.opm b/Master/texmf-dist/tex/luatex/optex/styles.opm
index 13aaec91b2e..d2ef38a0136 100644
--- a/Master/texmf-dist/tex/luatex/optex/styles.opm
+++ b/Master/texmf-dist/tex/luatex/optex/styles.opm
@@ -1,6 +1,6 @@
%% This is part of OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \report {Basic styles of OpTeX <2020-03-18>} % preloaded in format
+\_codedecl \report {Basic styles of OpTeX <2020-03-28>} % preloaded in format
\_doc -----------------------------
The `{\boxlines <line-1><eol><line-2><eol>...<line-n><eol>}`
@@ -28,6 +28,7 @@
\_def\_report{
\_typosize[11/13.2]
+ \_vsize=\_dimexpr \_topskip + 52\_baselineskip \_relax % added 2020-03-28
\_let\_titfont=\_chapfont
\_titskip=3ex
\_eoldef\_author##1{\_removelastskip\_bigskip
@@ -42,6 +43,7 @@
\_def\_subject{{\_bf \_mtext{subj}: }}
\_public \address \subject ;
\_typosize[11/14]
+ \_vsize=\_dimexpr \_topskip + 49\_baselineskip \_relax % added 2020-03-28
\_parindent=0pt
\_parskip=\_medskipamount
\_nopagenumbers
diff --git a/Master/texmf-dist/tex/luatex/optex/verbatim.opm b/Master/texmf-dist/tex/luatex/optex/verbatim.opm
index c7593a7d7a6..cfd9ed43548 100644
--- a/Master/texmf-dist/tex/luatex/optex/verbatim.opm
+++ b/Master/texmf-dist/tex/luatex/optex/verbatim.opm
@@ -1,6 +1,6 @@
%% This is part of OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \begtt {Verbatim <2020-03-18>} % preloaded in format
+\_codedecl \begtt {Verbatim <2020-03-21>} % preloaded in format
\_doc ----------------------------
The internal parameters for verbatim macros are set.
@@ -146,7 +146,7 @@
\_fi
}
\_def\_prepareverbdata#1#2{\_def#1{#2}}
-\_def\_printverbline#1{\_penalty \_ttpenalty \_indent \_printverblinenum #1 \par}
+\_def\_printverbline#1{\_penalty \_ttpenalty \_indent \_printverblinenum #1\par}
\_def\_initverblinenum{\_tenrm \_thefontscale[700]\_ea\_let\_ea\_sevenrm\_the\_font}
\_def\_printverblinenum{\_global\_advance\_ttline by1 \_llap{\_sevenrm \_the\_ttline\_kern.9em}}