From 2878bf11fe6ab8ebe50cf5697a9d8356c5324442 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 24 May 2023 22:26:14 +0000 Subject: optex (25may23) git-svn-id: svn://tug.org/texlive/trunk@67208 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/optex/base/bib-iso690.opm | 38 +++++-- Master/texmf-dist/tex/optex/base/bib-simple.opm | 22 +++-- Master/texmf-dist/tex/optex/base/f-besley.opm | 46 +++++++++ Master/texmf-dist/tex/optex/base/f-bodonimoda.opm | 43 ++++++++ .../texmf-dist/tex/optex/base/f-draftingmono.opm | 30 ++++++ Master/texmf-dist/tex/optex/base/f-heuristica.opm | 21 ++++ Master/texmf-dist/tex/optex/base/f-jost.opm | 32 ++++++ Master/texmf-dist/tex/optex/base/f-lmfonts.opm | 2 +- Master/texmf-dist/tex/optex/base/fams-ini.opm | 39 +++++++- Master/texmf-dist/tex/optex/base/fnotes.opm | 5 +- Master/texmf-dist/tex/optex/base/fonts-select.opm | 14 ++- Master/texmf-dist/tex/optex/base/graphics.opm | 8 +- Master/texmf-dist/tex/optex/base/hyperlinks.opm | 2 +- Master/texmf-dist/tex/optex/base/keyval.opm | 6 +- Master/texmf-dist/tex/optex/base/lang-data.opm | 7 ++ Master/texmf-dist/tex/optex/base/lang-decl.opm | 2 + Master/texmf-dist/tex/optex/base/makeindex.opm | 35 +++++-- Master/texmf-dist/tex/optex/base/maketoc.opm | 4 +- Master/texmf-dist/tex/optex/base/margins.opm | 42 +++++++- Master/texmf-dist/tex/optex/base/math-macros.opm | 70 ++++++++++--- Master/texmf-dist/tex/optex/base/optex.ini | 2 +- Master/texmf-dist/tex/optex/base/output.opm | 23 +++-- Master/texmf-dist/tex/optex/base/parameters.opm | 2 +- Master/texmf-dist/tex/optex/base/prefixed.opm | 3 +- Master/texmf-dist/tex/optex/base/references.opm | 4 +- Master/texmf-dist/tex/optex/base/sections.opm | 9 +- Master/texmf-dist/tex/optex/base/table.opm | 11 ++- Master/texmf-dist/tex/optex/demo/op-biblist.bib | 6 +- Master/texmf-dist/tex/optex/pkg/math.opm | 109 ++++++++++++++++++--- 29 files changed, 547 insertions(+), 90 deletions(-) create mode 100644 Master/texmf-dist/tex/optex/base/f-besley.opm create mode 100644 Master/texmf-dist/tex/optex/base/f-bodonimoda.opm create mode 100644 Master/texmf-dist/tex/optex/base/f-draftingmono.opm create mode 100644 Master/texmf-dist/tex/optex/base/f-heuristica.opm create mode 100644 Master/texmf-dist/tex/optex/base/f-jost.opm (limited to 'Master/texmf-dist/tex/optex') diff --git a/Master/texmf-dist/tex/optex/base/bib-iso690.opm b/Master/texmf-dist/tex/optex/base/bib-iso690.opm index fbc17b4a546..fcdbd5d48dd 100644 --- a/Master/texmf-dist/tex/optex/base/bib-iso690.opm +++ b/Master/texmf-dist/tex/optex/base/bib-iso690.opm @@ -1,6 +1,6 @@ % This is part of the OpTeX project, see http://petr.olsak.net/optex -\_codedecl \_undefined {BIB style (iso690) <2022-05-10>} % loaded on demand by \usebib +\_codedecl \_undefined {BIB style (iso690) <2023-04-22>} % loaded on demand by \usebib \_ifx\_optexbibstyle\_undefined \_errmessage {This file can be read by: \_string\usebib/? (iso690) bibfiles command only} @@ -48,7 +48,6 @@ \_def\_commonname{% \_ifnum\_NameCount=1 \_firstauthorformat - \_ifx\_dobibmark\_undefined \_edef\_dobibmark{\_Lastname}\_fi \_else \_ifnum0\_namecount=\_NameCount \_ifx\_maybeetal\_empty \_bibconjunctionand\_else , \_fi @@ -57,10 +56,15 @@ \_fi } \_def\_authorname{% + \_ifx\_authlist\_undefined \_edef\_authlist{\_Lastname,\_Firstname,\_Von,\_Junior}% + \_else \_edef\_authlist{\_authlist;\_Lastname,\_Firstname,\_Von,\_Junior}\_fi + \_ifnum\_NameCount>0\_namecount\_relax\_else \_commonname \_fi + \_ifnum\_NameCount=0\_namecount\_relax \_maybeetal \_fi +} +\_def\_editorname{% \_ifnum\_NameCount>0\_namecount\_relax\_else \_commonname \_fi \_ifnum\_NameCount=0\_namecount\_relax \_maybeetal \_fi } -\_let\_editorname=\_authorname \_def\_prepareauedoptions#1{% \_def\_mabyetal{}\_csname lb@abbreviatefalse\_endcsname @@ -89,15 +93,31 @@ \_let\_upper=\upper \_doc ----------------------------- - Preparing bib-mark (used when `\nonumcitations` is set). + Preparing bib-mark (used when \^`\nonumcitations`). + The \`\_setbibmark` is run at the end of each record. + The \`\_authlist` includes `Lastname,Firstname,Von,Junior` + of all authors separated by semicolon (no semicolon at the end of the + list). If `bibmark` isn't declared explicitly then we create it by the + \`\_createbibmark``;;,;,;,;\_fin` macro. + It outputs first Lastname (and adds \"et al." if the second author in the + is non-empty). Then comma and is appended. + A user can redefine the `\_createbibark` macro in the `\bibtexhook` + tokens list, if another bibmark format is needed. + The macro `\_createbibmark` must be expandable. See also + \ulink[http://petr.olsak.net/optex/optex-tricks.html\#bibmark]{\OpTeX/ trick~0104}. \_cod ----------------------------- \_def\_setbibmark{% - \_ifx\_dobibmark\_undefined \_def\_dobibmark{}\_fi + \_ifx\_authlist\_undefined \_def\_authlist{,;}\_fi \_RetrieveFieldIn{bibmark}\_tmp - \_ifx\_tmp\_empty \_RetrieveFieldIn{year}\_tmp \_edef\_tmp{\_dobibmark, \_tmp}\_fi + \_ifx\_tmp\_empty + \_RetrieveFieldIn{year}\_tmp + \_edef\_tmp{\_ea\_createbibmark\_expanded{\_tmp;\_authlist};,;,;,;\_fin}\_fi \_bibmark=\_ea{\_tmp}% } +\_def\_createbibmark #1;#2,#3;#4,#5\_fin{% #1=year #2=LastName #3=FirstName #4=nextAuthor + #2\_ifx^#4^\_else \_Mtext{bib.etal}\_fi, #1% +} \_doc ----------------------------- Setting phrases. @@ -300,7 +320,7 @@ \_bprintb [url] {\_preurl\_url{##1}. }{}% } \_slet{_print:booklet}{_print:generic} -\_slet{_print:incolleciton}{_print:generic} +\_slet{_print:incollection}{_print:generic} \_slet{_print:manual}{_print:generic} \_slet{_print:proceedings}{_print:generic} \_slet{_print:techreport}{_print:generic} @@ -778,7 +798,7 @@ respectively. The reason for this entry is to give to you the possibility to set the format of entry by your own decision. The most of data are concentrated in the ednote field. -\secccc The `@BOOKLET`, `@INCOLLECION`, `@MANUAL`, `@PROCEEDINGS`, `@TECHREPORT`, `@UNPUBLISHED` entries +\secccc The `@BOOKLET`, `@INCOLLECTION`, `@MANUAL`, `@PROCEEDINGS`, `@TECHREPORT`, `@UNPUBLISHED` entries These entries are equivalent to `@MICS` entry because we need to save the simplicity. They are implemented only for (almost) backward compatibility @@ -908,6 +928,8 @@ Other options in the option field are silently ignored. \_endinput +2023-04-22 ... incollection: typo corrected +2023-03-25 ... \_createbibmark introduced 2022-05-10 ... \. -> \:, collision with \oldaccents fixed. 2022-02-04 ... \_langinput used in \_setlang 2021-04-07 ... \biboptions toks declaration moved, bug fixed. diff --git a/Master/texmf-dist/tex/optex/base/bib-simple.opm b/Master/texmf-dist/tex/optex/base/bib-simple.opm index 3af9a1b9271..e61e94d7e26 100644 --- a/Master/texmf-dist/tex/optex/base/bib-simple.opm +++ b/Master/texmf-dist/tex/optex/base/bib-simple.opm @@ -1,6 +1,6 @@ %% This is part of the OpTeX project, see http://petr.olsak.net/optex -\_codedecl \_undefined {BIB style (simple) <2022-10-10>} % loaded on demand by \usebib +\_codedecl \_undefined {BIB style (simple) <2023-04-22>} % loaded on demand by \usebib \_ifx\_optexbibstyle\_undefined \_errmessage {This file can be read by: \_string\usebib/? (simple) bibfiles command only} @@ -17,23 +17,29 @@ % Formatting of Author/Editor lists: \_def\_authorname{% + \_addauthlist \_ifnum\_NameCount>1 \_ifnum0\_namecount=\_NameCount \_mtext{bib.and}\_else , \_fi - \_else - \_ifx\_dobibmark\_undefined \_edef\_dobibmark{\_Lastname}\_fi \_fi \_bprintc\_Firstname{* }\_bprintc\_Von{* }\_Lastname\_bprintc\_Junior{, *}% } +\_def\_addauthlist{% + \_edef\_authlist{\_ifx\_authlist\_undefined \_else \_authlist;\_fi + \_Lastname,\_Firstname,\_Von,\_Junior}% +} \_let\_editorname=\_authorname % Preparing bib-mark (used when \nonumcitations is set): -\_def\_setbibmark{% - \_ifx\_dobibmark\_undefined \_def\_dobibmark{}\_fi +\_def\_setbibmark{% + \_ifx\_authlist\_undefined \_def\_authlist{,;}\_fi \_RetrieveFieldIn{bibmark}\_tmp - \_ifx\_tmp\_empty \_RetrieveFieldIn{year}\_tmp \_edef\_tmp{\_dobibmark, \_tmp}\_fi + \_ifx\_tmp\_empty + \_RetrieveFieldIn{year}\_tmp + \_edef\_tmp{\_ea\_createbibmark\_expanded{\_tmp;\_authlist;,;,;,;}\_fin}\_fi \_bibmark=\_ea{\_tmp}% } +\_def\_createbibmark#1;#2,#3\_fin{#2, #1} \_def\_preurl{\_hfil\_break} \_def\_Inclause{In:~} @@ -80,6 +86,7 @@ \_bprinta [!author] {*.\ }{\_bibwarning}% \_bprintb [title] {{\_em##1}\:\ }{\_bibwarning}% \_Inclause + \_let\_addauthlist\_relax % no read authorlist again \_bprinta [!editor] {*,~eds.\ }{}% \_bprintb [booktitle] {{\_em##1}\:\ }{\_bibwarning}% \_bprinta [address] {*: }{\_bibwarning}% @@ -92,11 +99,12 @@ } \_slet{_print:inproceedings}{_print:inbook} -\_sdef{_print:incolection}{% +\_sdef{_print:incollection}{% \_bprinta [!author] {*.\ }{\_bibwarning}% \_bprintb [title] {{\_em##1}\:\ }{\_bibwarning}% \_bprinta [crossreff] {In~\_cite[*]. }{% \_bprinta [booktitle] {*. }{\_bibwarning}% + \_let\_addauthlist\_relax \_bprinta [!editor] {*,~eds.\ }{\_bibwarning}% \_bprinta [edition] {*\_mtext{bib.edition}\ }{\_bibwarning}% \_bprinta [address] {*: }{\_bibwarning}% diff --git a/Master/texmf-dist/tex/optex/base/f-besley.opm b/Master/texmf-dist/tex/optex/base/f-besley.opm new file mode 100644 index 00000000000..91e37c82e39 --- /dev/null +++ b/Master/texmf-dist/tex/optex/base/f-besley.opm @@ -0,0 +1,46 @@ +%% This is part of the OpTeX project, see http://petr.olsak.net/optex + +\_famdecl [Besley] \Besley {Besley* antique slab serif} + {\caps \allsc \nocaps \cond \narrow} + {\rm \bf \it \bi \mf \mi \ef \ei \kf \ki} {Schola} + {[Besley-Regular]} + {\_def\_fontnamegen {[Besley\_subV-\_currV]:script=latn;\_capsV\_fontfeatures}} + +\_wlog{\_detokenize{% +Modifiers (width):^^J + \cond ....... Condensed variants^^J + \narrow ..... Narrow variants^^J +Modifiers (small caps):^^J + \caps ....... Caps and small caps^^J + \allsc ...... Small caps only^^J + \nocaps ..... No small caps^^J +Extended variants:^^J + \mf, \mi .... Medium, MediumItalic^^J + \ef, \ei .... ExtraBold, ExtraBoldItalic^^J + \kf, \ki .... Black, BlackItalic^^J +}} + +\_moddef \resetmod {\_fsetV sub={},caps={} \_fvars Regular Bold Italic BoldItalic } +\_moddef \cond {\_fsetV sub=Condensed } +\_moddef \narrow {\_fsetV sub=Narrow } +\_moddef \caps {\_fsetV caps=+smcp;\_ffonum; } +\_moddef \allsc {\_fsetV caps=+smcp;+c2sc;\_ffonum; } +\_moddef \nocaps {\_fsetV caps={} } + +\_moddef \medium {\_fvars Medium ExtraBold MediumItalic ExtraBoldItalic } +\_moddef \black {\_fvars Black . BlackItalic . } +\_private \medium ; +\_private \black ; + +\_famvardef \mf {\_medium \_rm} +\_famvardef \mi {\_medium \_it} +\_famvardef \ef {\_medium \_bf} +\_famvardef \ei {\_medium \_bi} +\_famvardef \kf {\_black \_rm} +\_famvardef \ki {\_black \_it} + +\_initfontfamily + +\loadmath{[texgyreschola-math]} + +\_endcode diff --git a/Master/texmf-dist/tex/optex/base/f-bodonimoda.opm b/Master/texmf-dist/tex/optex/base/f-bodonimoda.opm new file mode 100644 index 00000000000..665ed0fe898 --- /dev/null +++ b/Master/texmf-dist/tex/optex/base/f-bodonimoda.opm @@ -0,0 +1,43 @@ +%% This is part of the OpTeX project, see http://petr.olsak.net/optex + +\_famdecl [BodoniModa] \BodoniModa {No-compromises Bodoni for the digital age} + {\caps \allsc \nocaps} + {\rm \bf \it \bi \mf \mi \ef \ei \kf \ki} {} + {[BodoniModa11pt-Regular]} + {\_def\_fontnamegen {[\_optname{bm}pt-\_currV]:script=latn;\_capsV\_fontfeatures}} + +\_wlog{\_detokenize{% +Modifiers (small caps):^^J + \caps ....... Caps and small caps^^J + \allsc ...... Small caps only^^J + \nocaps ..... No small caps^^J +Extended variants:^^J + \mf, \mi .... Medium, MediumItalic^^J + \ef, \ei .... ExtraBold, ExtraBoldItalic^^J + \kf, \ki .... Black, FatfaceItalic^^J +}} + +\_regoptsizes bm BodoniModa? + 06 <8.5 11 <13.5 16 <20 24 <30 36 <42 48 <60 72 <84 96 <* + +\_moddef \resetmod {\_fsetV caps={} \_fvars Regular Bold Italic BoldItalic } + +\_moddef \caps {\_fsetV caps=+smcp;\_ffonum; } +\_moddef \allsc {\_fsetV caps=+smcp;+c2sc;\_ffonum; } +\_moddef \nocaps {\_fsetV caps={} } + +\_moddef \medium {\_fvars Medium ExtraBold MediumItalic ExtraBoldItalic } +\_moddef \black {\_fvars Black . FatfaceItalic . } +\_private \medium ; +\_private \black ; + +\_famvardef \mf {\_medium \_rm} +\_famvardef \mi {\_medium \_it} +\_famvardef \ef {\_medium \_bf} +\_famvardef \ei {\_medium \_bi} +\_famvardef \kf {\_black \_rm} +\_famvardef \ki {\_black \_it} + +\_initfontfamily + +\_endcode diff --git a/Master/texmf-dist/tex/optex/base/f-draftingmono.opm b/Master/texmf-dist/tex/optex/base/f-draftingmono.opm new file mode 100644 index 00000000000..a855348d3b8 --- /dev/null +++ b/Master/texmf-dist/tex/optex/base/f-draftingmono.opm @@ -0,0 +1,30 @@ +%% This is part of the OpTeX project, see http://petr.olsak.net/optex + +\_famdecl [DraftingMono] \DraftingMono {Drafting* Mono monospaced} + {\caps \allsc \nocaps \thin \light \medium} {\rm \bf \it \bi} {} + {[DraftingMono-Regular]} + {\_def\_fontnamegen {[DraftingMono-\_currV]:script=latn;\_capsV\_fontfeatures}} + +\_wlog{\_detokenize{% +Modifiers (weight)^^J + \thin ..... \rm, \it: Thin, \bf, \bi: Light^^J + \light .... \rm, \it: Light, \bf, \bi: Medium^^J + \medium ... \rm, \it: Medium, \bf, \bi: Bold^^J +Modifiers: (small caps)^^J + \caps ..... Caps and small caps^^J + \allsc .... Small caps only^^J + \nocaps ... No small caps^^J +}} + +\_moddef \resetmod {\_fsetV caps={} \_fvars Regular Bold Italic BoldItalic } +\_moddef \caps {\_fsetV caps=+smcp; } +\_moddef \allsc {\_fsetV caps=+smcp;+c2sc; } +\_moddef \nocaps {\_fsetV caps={} } + +\_moddef \thin {\_fvars Thin Light ThinItalic LightItalic } +\_moddef \light {\_fvars Light Medium LightItalic MediumItalic } +\_moddef \medium {\_fvars Medium Bold MediumItalic BoldItalic } + +\_initfontfamily + +\_endcode diff --git a/Master/texmf-dist/tex/optex/base/f-heuristica.opm b/Master/texmf-dist/tex/optex/base/f-heuristica.opm new file mode 100644 index 00000000000..bca6c0f3189 --- /dev/null +++ b/Master/texmf-dist/tex/optex/base/f-heuristica.opm @@ -0,0 +1,21 @@ +%% This is part of the OpTeX project, see http://petr.olsak.net/optex + +\_famdecl [Heuristica] \Heuristica {Extends the Utopia font} + {} {\rm \bf \it \bi} {} + {[Heuristica-Regular]} + {\_def\_fontnamegen {[Heuristica-\_currV]:\_capsV\_fontfeatures}} + +\_wlog{\_detokenize{% +No modifiers.^^J +% \caps ...... caps & small caps^^J +}} + +\_moddef \resetmod {\_fsetV caps={} \_fvars regular bold italic bolditalic } + +\_initfontfamily % new font family must be initialized + +\_endcode + +See the file `f-heros.opm` for information about principles of such +font-macro-files. + diff --git a/Master/texmf-dist/tex/optex/base/f-jost.opm b/Master/texmf-dist/tex/optex/base/f-jost.opm new file mode 100644 index 00000000000..27d64821a16 --- /dev/null +++ b/Master/texmf-dist/tex/optex/base/f-jost.opm @@ -0,0 +1,32 @@ +%% This is part of the OpTeX project, see http://petr.olsak.net/optex + +\_famdecl [Jost] \Jost {Jost* geometric sans-serif} + {\hairline \thin \light \medium} + {\rm \bf \it \bi \kf \ki} {} + {[Jost-400-Book]} + {\_def\_fontnamegen {[Jost-\_currV]:script=latn;\_fontfeatures}} + +\_wlog{\_detokenize{% +Modifiers (weight):^^J + \hairline ... \rm, \it: Hairline, \bf, \bi: Book^^J + \thin ....... \rm, \it: Thin, \bf, \bi: Medium^^J + \light ...... \rm, \it: Light, \bf, \bi: SemiBold^^J + \medium ..... \rm, \it: Medium, \bf, \bi: Hevy^^J +Extended Variants:^^J + \kf, \ki .... Black, BlackItalic^^J +}} + +\_moddef \resetmod {\_fvars 400-Book 700-Bold 400-BookItalic 700-BoldItalic } +\_moddef \hairline {\_fvars 100-Hairline 400-Book 100-HairlineItalic 400-BookItalic } +\_moddef \thin {\_fvars 200-Thin 500-Medium 200-ThinItalic 500-MediumItalic } +\_moddef \light {\_fvars 300-Light 600-Semi 300-LightItalic 600-SemiItalic } +\_moddef \medium {\_fvars 500-Medium 800-Hevy 500-MediumItalic 800-HevyItalic } +\_moddef \black {\_fvars 900-Black . 900-BlackItalic . } +\_private \black ; + +\_famvardef \kf {\_black\_rm} +\_famvardef \ki {\_black\_it} + +\_initfontfamily + +\_endcode diff --git a/Master/texmf-dist/tex/optex/base/f-lmfonts.opm b/Master/texmf-dist/tex/optex/base/f-lmfonts.opm index 8fe1d34b95d..90519e3aad6 100644 --- a/Master/texmf-dist/tex/optex/base/f-lmfonts.opm +++ b/Master/texmf-dist/tex/optex/base/f-lmfonts.opm @@ -1,6 +1,6 @@ %% This is part of the OpTeX project, see http://petr.olsak.net/optex -\_famdecl [Latin Modern] \LMfonts {TeX Gyre fonts based on Coputer Modern} +\_famdecl [Latin Modern] \LMfonts {TeX Gyre fonts based on Computer Modern} {\roman \sans \quotset \ttset \ttprop \ttlight \ttcond \upital \dunhill submods:\caps \slant \nbold \bolder} {\rm \bf \it \bi \tt} {LM} {[lmroman10-regular]} diff --git a/Master/texmf-dist/tex/optex/base/fams-ini.opm b/Master/texmf-dist/tex/optex/base/fams-ini.opm index 3754cc8f6dc..adfc1050c50 100644 --- a/Master/texmf-dist/tex/optex/base/fams-ini.opm +++ b/Master/texmf-dist/tex/optex/base/fams-ini.opm @@ -7,11 +7,11 @@ \_faminfo [Catalogue] {Catalogue of all registered font families} {fonts-catalog} {} \_famalias [Catalog] -\_famsrc {TeXlive} +\_famsrc {CTAN} \_famtext {Computer Modern like family:} \_famfrom {GUST} -\_faminfo [Latin Modern] {TeX Gyre fonts based on Coputer Modern} {f-lmfonts} +\_faminfo [Latin Modern] {TeX Gyre fonts based on Computer Modern} {f-lmfonts} { -,\nbold,\sans,\sans\nbold,\slant,\ttset,\ttset\slant,\ttset\caps,% \ttprop,\ttprop\bolder,\quotset: {\rm\bf\it\bi} \caps: {\rm\it} @@ -48,6 +48,31 @@ { -,\caps: {\rm\bf\it\bi} } \_famalias [Courier] +\_famsrc {https://indestructibletype.com/} +\_famtext {Typefaces from indestructible type*} + +\_famfrom {Owen Earl, indestructible type*} +\_faminfo [Besley*] {Antique slab serif, inspired by Robert Besley's Clarendon} {f-besley} + { -,\narrow,\cond: {\rm\mf\bf\ef\kf\it\mi\bi\ei\ki} + \caps,\narrow\caps,\cond\caps: {\rm\mf\bf\ef\kf\it\mi\bi\ei\ki} + \allsc,\narrow\allsc,\cond\allsc: {\rm\mf\bf\ef\kf\it\mi\bi\ei\ki} } +\_famalias [Besley] + +\_faminfo [Bodoni*] {No-compromises Bodoni for the digital age} {f-bodonimoda} + { -,\caps,\allsc: {\rm\mf\bf\ef\kf\it\mi\bi\ei\ki} } +\_famalias [Bodoni] \_famalias [BodoniModa] + +\_faminfo [Drafting* Mono] {Monospaced typeface family with small caps} {f-draftingmono} + { \thin,\light,-,\medium: {\rm\bf\it\bi} + \thin\caps,\light\caps,\caps,\medium\caps: {\rm\bf\it\bi} + \thin\allsc,\light\allsc,\allsc,\medium\allsc: {\rm\bf\it\bi} } +\_famalias [DraftingMono] + +\_faminfo [Jost*] {A modern geometric sans-serif} {f-jost} + { \hairline,\thin,\light,-,\medium: {\rm\bf\it\bi} -: {\kf\ki} } +\_famalias [Jost] + +\_famsrc {CTAN} \_famtext {Other fonts:} \_famfrom{Antonis Tsolomitis} @@ -114,6 +139,10 @@ { -,\caps: {\rm\bf\it\bi} } \_famalias [Baskervald ADF] \_famalias [ADFBaskerville] +\_famfrom {Andrey V. Panov} +\_faminfo [Heuristica] {Extends the Utopia font} {f-heuristica} + { -: {\rm\bf\it\bi} } + \_faminfo [Erewhon] {Derived from Heuristica with slanted variants} {f-erewhon} { -: {\rm\bf\it\bi\sl\bs} \caps: {\rm\bf\it\bi} } @@ -144,8 +173,8 @@ { \elight,\light,-,\bolder: {\rm\it} -,\bolder: {\bf\bi} \sans\elight,\sans\light,\sans,\sans\bolder: {\rm\it} \sans,\sans\bolder: {\bf\bi} \elight\caps,\light\caps,\caps,\bolder\caps: {\rm} \caps,\bolder\caps: {\bf} - \sans\elight\caps,\sans\light\caps,\sans\caps,\sans\bolder\caps: {\rm\it} - \sans\caps,\sans\bolder\caps: {\bf\bi} + \sans\elight\caps,\sans\light\caps,\sans\caps,\sans\bolder\caps: {\rm} + \sans\caps,\sans\bolder\caps: {\bf} \mono\elight,\mono\light,\mono,\mono\medium,\mono\bolder: {\rm\it} \mono,\mono\bolder: {\bf\bi} } \_famalias [AdobeSource] \_famalias [AdobeSourcePro] @@ -204,7 +233,7 @@ { -,\light,\book, \caps, \caps\book: {\rm\bf\it\bi} -:{\stencil} } \_famalias [CTU Technika] -\_famsrc {TeXlive} +\_famsrc {CTAN} \_famfrom {Bitstream, Andrey V. Panov, Michael Sharpe} \_faminfo [XCharter] {An extension of Bitstream Charter} {f-xcharter} { -,\slant,\caps,\caps\slant: {\rm\bf\it\bi} } diff --git a/Master/texmf-dist/tex/optex/base/fnotes.opm b/Master/texmf-dist/tex/optex/base/fnotes.opm index 8f56ba1aea0..d93bb07c628 100644 --- a/Master/texmf-dist/tex/optex/base/fnotes.opm +++ b/Master/texmf-dist/tex/optex/base/fnotes.opm @@ -1,6 +1,6 @@ %% This is part of the OpTeX project, see http://petr.olsak.net/optex -\_codedecl \fnote {Footnotes, marginal notes OpTeX <2020-05-26>} % preloaded in format +\_codedecl \fnote {Footnotes, marginal notes OpTeX <2023-04-15>} % preloaded in format \_doc ----------------------------- \`\_gfnotenum` is a counter which counts footnotes globally in the whole document.\nl @@ -45,7 +45,7 @@ (from text to footnote and backward). \_cod ----------------------------- -\_def \_printfnotemark {$^{\_fnotenum}$} % default footnote mark +\_def \_printfnotemark {\_quitvmode\_hbox{$^{\_fnotenum}$}} % default footnote mark \_def \_printfnotemarkA {\_printfnotemark} % footnote marks used in text \_def \_printfnotemarkB {\_printfnotemark} % footnote marks used in front of footnotes @@ -188,5 +188,6 @@ \_endcode % ------------------------------------- +2023-04-15 \fnote in math mode allowed 2020-05-26 \mnote up implemented 2020-03-20 released diff --git a/Master/texmf-dist/tex/optex/base/fonts-select.opm b/Master/texmf-dist/tex/optex/base/fonts-select.opm index 3b5f02c3fa8..cd70dab03c4 100644 --- a/Master/texmf-dist/tex/optex/base/fonts-select.opm +++ b/Master/texmf-dist/tex/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 <2023-03-09>} % preloaded in format +\_codedecl \fontfam {Fonts selection system <2023-04-22>} % preloaded in format \_doc ----------------------------- The main principle of the Font Selection System is: run one or more @@ -458,12 +458,15 @@ \_doc ----------------------------- \`\setletterspace` is based on the - special font features provided by `luaotfload` package. + special font features provided by `luaotfload` package.\nl The \`\setwordspace` recalculates the `\fontdimen2,3,4` of the font using the \`\setwsp` macro which is used by the \^`\_fontselA` macro. It activates a dummy font feature `+Ws` too in order the font is reloded by the `\font` primitive (with independent `\fontdimen` registers). + If the \^`\setwordspace` is used again to the same font then we need to + reset `\fondimen` registers first. It is done by `\_sws:` + macro which keeps the original values of the `\fontdimen`s.\nl \`\setfontcolor` is kept here only for backward compatibility but not recommended. Use real color switches and the \^`\transparency` instead. \_cod ----------------------------- @@ -481,7 +484,11 @@ } \_def\_setwsp #1{} \_def\_setwspA #1{\_ifx/#1\_ea\_setwspB \_else\_afterfi{\_setwspC#1}\_fi} -\_def\_setwspB #1/#2/#3/#4{\_fontdimen2#4=#1\_fontdimen2#4% +\_def\_setwspB #1/#2/#3/#4{% + \_csname _sws:\_fontname#4\_endcsname \_relax + \_ea\_xdef \_csname _sws:\_fontname#4\_endcsname + {\_foreach 234\_do{\_fontdimen##1#4=\_the\_fontdimen##1#4}}% + \_fontdimen2#4=#1\_fontdimen2#4% \_fontdimen3#4=#2\_fontdimen3#4\_fontdimen4#4=#3\_fontdimen4#4} \_def\_setwspC #1/{\_setwspB #1/#1/#1/} @@ -928,6 +935,7 @@ with Unicode fonts loaded by \^`\fontfam`. \endinput +2023-04-22 \setwordspace: \fontdimens reset, bug fixed. 2023-03-09 \_famsrc, \fontfamsub introduced 2022-12-01 \faminfo saves f- to the format only when needed 2022-11-08 \protected: \fontdef, \famvardef, \fontfam diff --git a/Master/texmf-dist/tex/optex/base/graphics.opm b/Master/texmf-dist/tex/optex/base/graphics.opm index 6a095343d65..bf3fec09b6b 100644 --- a/Master/texmf-dist/tex/optex/base/graphics.opm +++ b/Master/texmf-dist/tex/optex/base/graphics.opm @@ -1,6 +1,6 @@ %% This is part of the OpTeX project, see http://petr.olsak.net/optex -\_codedecl \inspic {Graphics <2022-11-05>} % preloaded in format +\_codedecl \inspic {Graphics <2023-03-16>} % preloaded in format \_doc ----------------------------- \`\inspic` accepts old syntax `\inspic ` @@ -59,6 +59,11 @@ \_def\rotatebox#1#2{\_pdfrotate{#1}#2}% \_def\lineheight#1{}% \_def\setlength#1#2{}% + \_def\transparent#1{\_transparency\_exprA[0]{(1-#1)*255} }% + % Inkscape may generate \textbf{\textit{\textsc{TEXT}}} + \_def\textbf#1{\_begingroup\_let\_it\_bi\_bf #1\_endgroup}% + \_def\textit#1{\_begingroup\_it #1\_endgroup}% + \_def\textsl#1{\_begingroup\_trycs{slant}{}\_it #1\_endgroup}% } \_public \inkinspic ; @@ -442,6 +447,7 @@ the \^`\transformbox{}{\copy\mypic}`. \_endinput +2023-16-03: more \_inkdefs macros 2022-11-05 \_doshadow: renduntant \_expr from \_expr{\_bp{...}} removed 2022-10-18 \_puttextA defined \long, bug fixed 2022-03-05: \_addextgstate, \pageresources, \addpageresources added diff --git a/Master/texmf-dist/tex/optex/base/hyperlinks.opm b/Master/texmf-dist/tex/optex/base/hyperlinks.opm index 7505436f168..1d15b5e7341 100644 --- a/Master/texmf-dist/tex/optex/base/hyperlinks.opm +++ b/Master/texmf-dist/tex/optex/base/hyperlinks.opm @@ -136,7 +136,7 @@ \_replstring\_tmpb{[||]}{{gb|}}% \_replstring\_tmpb{ }{{ }}% \_replstring\_tmpb{://}{{://}}% - \_ea\_ulink \_ea[\_ea{\_tmpa}] {\_urlfont \_ea\_urlA\_tmpb\_fin}% + \_ea\_ulink \_ea[\_ea{\_tmpa}] {\_urlfont \_textdirection=0 \_ea\_urlA\_tmpb\_fin}% }} \_def\_urlA#1{\_ifx\_fin#1\_else \_urlC{}{#1}\_fi} \_def\_urlB#1{\_ifx\_fin#1\_else \_urlC{\_urlxskip}{#1}\_fi} diff --git a/Master/texmf-dist/tex/optex/base/keyval.opm b/Master/texmf-dist/tex/optex/base/keyval.opm index 21e6f9acf34..11a8663b16d 100644 --- a/Master/texmf-dist/tex/optex/base/keyval.opm +++ b/Master/texmf-dist/tex/optex/base/keyval.opm @@ -1,6 +1,6 @@ %% This is part of the OpTeX project, see http://petr.olsak.net/optex -\_codedecl \readkv {Key-value dictionaries <2023-01-14>} % preloaded in format +\_codedecl \readkv {Key-value dictionaries <2023-03-11>} % preloaded in format \_doc ---------------------------- {\bf Implementation.}\nl @@ -27,7 +27,7 @@ \_trycs{_kvx:\_the\_kvdict:#1}% {\_trycs{_nokvx:\_the\_kvdict}{\_ea\_ignoreit}{#1}\_ea\_ignoreit}{#2}} \_def\_kvx#1#2{\_sdef{_kvx:\_the\_kvdict:#1}##1{#2}} -\_def\_nokvx#1{\_sdef{_nokvx:\_the\_kvdict}##1\_ea\_ignoreit\_fi##2{\_fi#1}} +\_def\_nokvx#1{\_sdef{_nokvx:\_the\_kvdict}##1\_ea\_ignoreit##2{#1}} \_def\_kv#1{\_trycs{\_kvcs#1}{\_kvunknown}} \_def\_iskv#1#2{#2\_else\_ea\_unless\_fi \_ifcsname\_kvcs#1\_endcsname} \_def\_kvcs{_kv:\_the\_kvdict:} @@ -125,6 +125,8 @@ Recommendation: If the value of the key-value pair includes `=` or `,` or \_endinput + +2023-03-11 \nokvx: \fi bug (due to \afterfi in \trycs) fixed. 2023-01-13 \kvx parameter added, \nokvx introduced. 2023-01-07 \kvdict, \kvx, \iskv added. 2020-12-21 Released diff --git a/Master/texmf-dist/tex/optex/base/lang-data.opm b/Master/texmf-dist/tex/optex/base/lang-data.opm index e1b68e5dde1..5b24c0999a6 100644 --- a/Master/texmf-dist/tex/optex/base/lang-data.opm +++ b/Master/texmf-dist/tex/optex/base/lang-data.opm @@ -157,6 +157,13 @@ \_sdef{_mt:today:pt}{\_the\_day~de \_mtext{m\_the\_month}~ de \_the\_year} % todo +\_langdata et {Estonian} % ------------------------------------------------ +\_langw et Peatükk Tabel Joonis Teema +\_monthw et jaanuar veebruar märts aprill mai juuni + juuli august september oktoober november detsember +\_sdef{_mt:today:et}{\_the\day.~\_mtext{m\_the\_month} \_the\_year} +\_quotationmarks{„“„“} + \_endcode 2022-10-11: \postexhyphenchar setting added to cs and sk languages diff --git a/Master/texmf-dist/tex/optex/base/lang-decl.opm b/Master/texmf-dist/tex/optex/base/lang-decl.opm index d6b562ed45a..753df5f82e8 100644 --- a/Master/texmf-dist/tex/optex/base/lang-decl.opm +++ b/Master/texmf-dist/tex/optex/base/lang-decl.opm @@ -146,6 +146,8 @@ \_preplang tk Turkmen tk tk 22 \_preplang hsb Uppersorbian hsb hsb 22 +\_preplang he Hebrew he {} 00 + \_doc ----------------------------- \`\_preplangmore` `{}` declares more activities of the language switch. The is processed whenever diff --git a/Master/texmf-dist/tex/optex/base/makeindex.opm b/Master/texmf-dist/tex/optex/base/makeindex.opm index 36b4a48c08d..d939d9ea641 100644 --- a/Master/texmf-dist/tex/optex/base/makeindex.opm +++ b/Master/texmf-dist/tex/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 <2022-06-28>} % preloaded in format +\_codedecl \makeindex {Makeindex and sorting <2023-03-12>} % preloaded in format \_doc ----------------------------- \^`\makeindex` implements sorting algorithm at \TeX/ macro-language level. @@ -410,24 +410,42 @@ The \^`\everyii` tokens register is applied before `\noindent`. User can declare something special here. - The \`\_newiiletter``{}` macro is empty by default. It is invoked if first - letter of index entries is changed. You can declare a design between + The \`\_newiiletter``{}{}` macro is empty by default. It is invoked + if first letter of index entry is changed. You can declare a design between index entries here. You can try, for example: \begtt \def\_newiiletter#1#2{% - \bigskip \hbox{\setfontsize{at15pt}\bf\uppercase{#1}}\medskip} + \bigskip \hbox{\setfontsize{at15pt}\bf #1}\nobreak\medskip} + \endtt + \`\_definefirstii` `&` macro defines \`\_firstii` which is used as the + parameter of the macro \^`\_newiiletter` and for testing if the + \"first letter" of the index entry was changed. + The `\uppercase` of the real first letter is used by default here. + You can re-implement \^`\_definefirstii` if you want. For example, + you want to ignore accents above letters for index sub-headers: + \begtt + \def\_definefirstii#1#2&{% + \uppercase{\bgroup \iicodes \uppercase{\egroup\def\_firstii{#1}}}} + \def\iicodes{} + \def\setiicodes #1#2,{\_ifx^#1^\_else + \foreach #2\do{\_addto\iicodes{\uccode`##1=`#1}} + \_ea\setiicodes \_fi + } + \setiicodes AÀÂÄÁ,ĆČ,DĎ,EÈÉËÊĚ,IÍÏÎ,LĹĽ,OÖÓÔ,RŔ,ŚŠ,TŤ,UÙÛÜÚŮŰ,YÝŸ,{}, \endtt \_cod ----------------------------- -\_def\_printii #1#2&{% - \_ismacro\_lastii{#1}\_iffalse \_newiiletter{#1}{#2}\_def\_lastii{#1}\_fi - \_gdef\_currii{#1#2}\_the\_everyii\_noindent - \_hskip-\_iindent \_ignorespaces\_printiiA#1#2//} +\_def\_printii #1&{\_definefirstii #1&% + \_ifx\_firstii\_lastii\_else + \_ea\_newiiletter\_ea{\_firstii}{#1}\_let\_lastii=\_firstii\_fi + \_gdef\_currii{#1}\_the\_everyii\_noindent + \_hskip-\_iindent \_ignorespaces\_printiiA#1//} \_def\_printiiA #1/{\_if^#1^\_let\_previi=\_currii \_else \_ea\_scanprevii\_previi/&\_edef\_tmpb{\_detokenize{#1}}% \_ifx\_tmpa\_tmpb \_iiemdash \_else#1 \_gdef\_previi{}\_fi \_ea\_printiiA\_fi } +\_def\_definefirstii #1#2&{\_uppercase{\_def\_firstii{#1}}} \_def\_iiemdash{\_kern.1em---\_space} \_def\_lastii{} \_def\_newiiletter#1#2{} @@ -549,6 +567,7 @@ \_endcode % ------------------------------------- +2023-03-12 \_definefirstii introduced 2022-06-28 \_reversewords for French sorting introduced 2022-06-28 \_sortingdatalatin covers more languages 2022-06-28 \_xcompoundchars introduced, comments upgraded (German sorting mentioned) diff --git a/Master/texmf-dist/tex/optex/base/maketoc.opm b/Master/texmf-dist/tex/optex/base/maketoc.opm index 928618db6b2..cb4c318b130 100644 --- a/Master/texmf-dist/tex/optex/base/maketoc.opm +++ b/Master/texmf-dist/tex/optex/base/maketoc.opm @@ -59,7 +59,7 @@ \_bgroup \_leftskip=\_iindent \_rightskip=2\_iindent \_ifischap \_advance\_leftskip by \_iindent \_fi - \_def\_pgn{\_ilink[pg:#6]}% + \_def\_pgn##1{\_ilink[pg:#6]{\_numprint{##1}}}% \_the\_everytocline \_ifcsname _tocl:#1\_endcsname \_cs{_tocl:#1}{#3}{\_scantextokens{#5}}{#7}\_par @@ -92,7 +92,7 @@ \_cod ---------------------------------- \_def\_llaptoclink#1{\_noindent - \_llap{\_ilink[toc:\_the\_tocrefnum]{\_enspace#1\_kern.4em}\_kern.1em}} + \_llap{\_ilink[toc:\_the\_tocrefnum]{\_enspace\_numprint{#1}\_kern.4em}\_kern.1em}} \_def\_tocdotfill{\_nobreak\_leaders\_hbox to.8em{\_hss.\_hss}\_hskip 1em plus1fill\_relax} \_def\_nofirst #1{\_ifnum \_lastpenalty=11333 \_else #1\_fi} \_def\_tocpar{\_nobreak \_hskip-2\_iindent\_null \_par} diff --git a/Master/texmf-dist/tex/optex/base/margins.opm b/Master/texmf-dist/tex/optex/base/margins.opm index d88cc04237f..0f544fc5dd6 100644 --- a/Master/texmf-dist/tex/optex/base/margins.opm +++ b/Master/texmf-dist/tex/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 <2021-03-15>} % preloaded in format +\_codedecl \margins {Macros for margins setting <2023-05-01>} % preloaded in format \_doc ---------------------------- \`\margins``/ (,,,)` @@ -36,9 +36,11 @@ \_fi\_fi \_if 1#1\_shiftoffset=0pt \_def\_prepoffsets{}\_else \_if 2#1% double-page layout \_shiftoffset = \_dimexpr \_pgwidth -\_hsize -2\_hoffset \_relax - \_def\_prepoffsets{\_ifodd\_pageno \_else \_advance\_hoffset \_shiftoffset \_fi}% + \_def\_prepoffsets{\_ifodd\_pageno \_else \_advance\_hoffset \_shiftoffset \_fi + \_setpagerightoffset}% \_else \_opwarning{use \_string\_margins/1 or \_string\_margins/2}% \_fi\_fi\_fi + \_setpagerightoffset } \_def\_setpagedimens{\_isnextchar({\_setpagedimensB}{\_setpagedimensA}} \_def\_setpagedimensA#1 {\_ifcsname _pgs:#1\_endcsname @@ -74,7 +76,43 @@ \_public \magscale ; + \_doc ----------------------------- + When left-to-right direction of typesetting is selected (default) then + \"main vertical line" of the page has `\hoffset` distance from the left + paper border and all lines at the page start here and run to the right side + (exceptions can be done by `\moveleft` or `\moveright`, of course). When we + have set right-to-left direction (using `\textdir TRT`, for example), then + the \"main vertical line" cannot be at the same position because lines run to the left, + i.e.\ they would be off paper. This is reason why the setting `\pagedir TRT` shifts the + \"main vertical line" to an alternative position: it has `\pagerightoffset+1in` distance from the + {\em right} paper border and thus right-to-left lines are visible on the + paper. We have to set `\pagerightoffset` properly for such cases. This is + done in the macro \`\_setpagerightoffset`. + It must be called whenever `\hoffset` is changed. + \_cod ----------------------------- + +\_def\_setpagerightoffset{% + \_pagerightoffset=\_dimexpr\_pdfpagewidth-\_xhsize-\_hoffset-1in\_relax +} +\_setpagerightoffset % setting default value from default values + + \_doc ----------------------------- + Page numbers and numbers of (sub)sections have to be printed in + left-to-right mode even though the document mode is right-to-left. + We print these numbers via \`\_numprint``{}` in \OpTeX/ macros. + The `\_numprint` is `\_useit` by default (i.e.\ do nothing special) + because we have left-to-right mode as default. But a user can define + \begtt + \_def\_numprint#1{{\textdir TLT #1}} + \endtt + if the document is set to right-to-left mode. + \_cod ----------------------------- + +\_let\_numprint=\_useit + \_endcode % ----------------------------------------- +2023-05-01 \_numprint for page numbers, section numbers introduced +2023-04-29 \_setpagerightoffset for TRT typesetting introduced again 2021-03-15 \_setxhsize added 2020-03-14 released diff --git a/Master/texmf-dist/tex/optex/base/math-macros.opm b/Master/texmf-dist/tex/optex/base/math-macros.opm index 6e2365c9cc9..a132cb4176d 100644 --- a/Master/texmf-dist/tex/optex/base/math-macros.opm +++ b/Master/texmf-dist/tex/optex/base/math-macros.opm @@ -1,9 +1,9 @@ -%% This is part of the 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 <2021-08-02>} % preloaded in format +\_codedecl \sin {Math macros plus mathchardefs <2023-05-24>} % preloaded in format \_doc ----------------------------- - The category code of the character `_` remains as the letter (11) and the mathocode + The category code of the character `_` remains as the letter (11) and the mathcode of it is `"8000`. It means that it is an active character in math mode. It is defined as the subscript prefix. @@ -36,7 +36,10 @@ \_directlua{ callback.add_to_callback("process_input_buffer", function (str) - return string.gsub(str.." ", "(\_nbb[a-zA-Z]+)_([a-zA-Z]?[^_a-zA-Z])", "\_pcent 1 _\_pcent 2") + local num + str, num = string.gsub(str.." ", \_gsubrule) + if num>0 then str = string.gsub(str, \_gsubrule) end % \phi_i\rho_j -> \phi _i\rho _j + return str end, "_mathsb") }% \_global\_mathsbtrue } @@ -44,6 +47,8 @@ \_directlua{ callback.remove_from_callback("process_input_buffer", "_mathsb") }% \_global \_mathsbfalse } +\_edef\_gsubrule{"(\_nbb[a-zA-Z]+)_([a-zA-Z]?[^_a-zA-Z])", "\_pcent 1 _\_pcent 2"} + \_public \mathsboff \mathsbon ; \_doc ----------------------------- @@ -367,25 +372,42 @@ \_private \prime ; \_doc ----------------------------- - \`\big`, \`\Big`, \`\bigg`, \`\Bigg`, \`\bigl`, \`\bigm`, \`\bigr`, \`\Bigl`, \`\Bigm`, + \`\big`, \`\bbig`, \`\Big`, \`\bigg`, \`\Bigg`, + \`\bigl`, \`\bigm`, \`\bigr`, \`\bbigl`, \`\bbigm`, \`\bbigr`, \`\Bigl`, \`\Bigm`, \`\Bigr`, \`\biggl`, \`\biggm`, \`\biggr`, \`\Biggl`, \`\Biggm`, \`\Biggr` are based on the \`\_scalebig` macro because we need the dependency on the various sizes of the fonts. + The \`\_scalebigcoef``` returns relevant coefficient for these + macros. Multiply this coefficient by two and you get the strut + height+depth in em units.\nl + The \^`\big`, \^`\Big`, \^`\bigg`, \^`\Bigg` macros keep the strut height+depth + from plain \TeX/ and \^`\bbig` is a new macro in \OpTeX/. It generates the size + 1.44\,em beween \^`\big` and \^`\Big` which is + accessible in most of Unicode math fonts (but not in classical `cmex10`). \_cod ----------------------------- %{\catcode`\^^Z=\active \gdef^^Z{\not=}} % ^^Z is like \ne in math %obsolete -\_def\_scalebig#1#2{{\_left#1\_vbox to#2\_fontdimen6\_textfont1{}% - \_kern-\_nulldelimiterspace\_right.}} -\_protected\_def\_big#1{\_scalebig{#1}{.85}} -\_protected\_def\_Big#1{\_scalebig{#1}{1.15}} -\_protected\_def\_bigg#1{\_scalebig{#1}{1.45}} -\_protected\_def\_Bigg#1{\_scalebig{#1}{1.75}} -\_public \big \Big \bigg \Bigg ; +\_def\_scalebig#1#2{{\_left#1% + \_raise\_Umathaxis\_textstyle\_vbox to\_scalebigcoef{#2}\_fontdimen6\_textfont1{}% + \_kern-\_nulldelimiterspace\_right.}} +\_def\_scalebigcoef#1{\_ifcase #1 0\_or +% \big (1.2) \bbig (1.44) \Big (1.8) \bigg (2.4) \Bigg (3.0) + .6\_or .72\_or .9\_or 1.2\_or 1.5\_else 0\_fi +} +\_protected\_def\_big #1{\_scalebig{#1}1} +\_protected\_def\_bbig#1{\_scalebig{#1}2} +\_protected\_def\_Big #1{\_scalebig{#1}3} +\_protected\_def\_bigg#1{\_scalebig{#1}4} +\_protected\_def\_Bigg#1{\_scalebig{#1}5} +\_public \big \bbig \Big \bigg \Bigg ; \_protected\_def\_bigl{\_mathopen\_big} \_protected\_def\_bigm{\_mathrel\_big} \_protected\_def\_bigr{\_mathclose\_big} +\_protected\_def\_bbigl{\_mathopen\_bbig} +\_protected\_def\_bbigm{\_mathrel\_bbig} +\_protected\_def\_bbigr{\_mathclose\_bbig} \_protected\_def\_Bigl{\_mathopen\_Big} \_protected\_def\_Bigm{\_mathrel\_Big} \_protected\_def\_Bigr{\_mathclose\_Big} @@ -395,7 +417,8 @@ \_protected\_def\_Biggl{\_mathopen\_Bigg} \_protected\_def\_Biggm{\_mathrel\_Bigg} \_protected\_def\_Biggr{\_mathclose\_Bigg} -\_public \bigl \bigm \bigr \Bigl \Bigm \Bigr \biggl \biggm \biggr \Biggl \Biggm \Biggr ; +\_public \bigl \bigm \bigr \bbigl \bbigm \bbigr + \Bigl \Bigm \Bigr \biggl \biggm \biggr \Biggl \Biggm \Biggr ; \_doc ----------------------------- Math relations defined by the \`\jointrel` plain \TeX/ macro: @@ -1045,6 +1068,23 @@ } \_public \cramped ; + \_doc ----------------------------- + \`\setmathstyle` saves current math style + (including its cramped/normal subversion) and \`\usemathstyle` + restores the saved math style. These macros are based on the \LuaTeX/'s + `\mathstyle` primitive, i.e.\ they don't work in generalized fractions.\nl + Usage: `\def\mathclap #1{{\setmathstyle \hbox to0pt{\hss$\usemathstyle#1$\hss}}}`. + \_cod + +\_newcount\_mstylenum +\_def\_setmathstyle{\_mstylenum=\_mathstyle\_relax} +\_def\_usemathstyle{\_ifcase\_mstylenum + \_displaystyle\_or \_crampeddisplaystyle\_or \_textstyle\_or \_crampedtextstyle\_or + \_scriptstyle\_or \_crampedscriptstyle\_or \_scriptscriptstyle\_or \_crampedscriptscriptstyle + \_fi +} +\_public \setmathstyle \usemathstyle ; + \_doc ----------------------------- The \`\mathbox``{}` macro is copied from OPmac trick 078. It behaves like `\hbox{}` but the `` is scaled to a smaller @@ -1067,6 +1107,10 @@ \_endcode %--------------------------------------------------- +2023-05-24 \matsbon: "local num" added +2023-05-22 \mathsbon: \alpha_i\beta_j -> \alpha _i\beta _j (bug fixed) +2023-04-15 \bbig introduced +2023-03-12 \setmathstyle, \usemathstyle introduced 2021-08-02 ssty fontfeatures rewritten 2021-04-25 \triangleright: typo fixed 2021-03-22 \(l)eqalignno: \hbox instead \llap, \rlap (\par error suppressed) diff --git a/Master/texmf-dist/tex/optex/base/optex.ini b/Master/texmf-dist/tex/optex/base/optex.ini index ebf31ea4c21..5713354a69f 100644 --- a/Master/texmf-dist/tex/optex/base/optex.ini +++ b/Master/texmf-dist/tex/optex/base/optex.ini @@ -21,7 +21,7 @@ % OpTeX version -\def\optexversion{1.11 Mar 2023} +\def\optexversion{1.12 May 2023} \def\fmtname{OpTeX} \let\fmtversion=\optexversion diff --git a/Master/texmf-dist/tex/optex/base/output.opm b/Master/texmf-dist/tex/optex/base/output.opm index 095cfda4b3d..5e4765766d1 100644 --- a/Master/texmf-dist/tex/optex/base/output.opm +++ b/Master/texmf-dist/tex/optex/base/output.opm @@ -1,17 +1,13 @@ %% This is part of the OpTeX project, see http://petr.olsak.net/optex -\_codedecl \nopagenumbers {Output routine <2022-10-20>} % preloaded in format +\_codedecl \nopagenumbers {Output routine <2023-04-28>} % preloaded in format \_doc ----------------------------- - \`\_optexoutput` is the default output routine. You can create another...\nl - The \^`\_preshipout``` used - here behaves similarly like `\setbox` but it does not only copy the box - contents but adds the color literals depending on used attributes. - It is defined using lua code, see section~\ref[lua]. + \`\_optexoutput` is the default output routine. You can create another \_cod ----------------------------- \_output={\_optexoutput} -\_def \_optexoutput{\_begoutput \_preshipout0\_completepage \_shipout\_box0 \_endoutput} +\_def \_optexoutput{\_begoutput \_optexshipout\_completepage \_endoutput} \_doc ----------------------------- Default \`\_begoutput` and \`\_endoutput` is defined. @@ -36,6 +32,16 @@ } \_def \_prepoffsets {} + \_doc ----------------------------- + The \`\_optexshipout` does similar work like the `\_shipout` primitive. + The color literals are added to the `\box0` using + the \^`\_preshipout``` pseudo-primitive. + It is defined using lua code, see section~\ref[lua]. + Finally the `\_shipout` primitive is used. + \_cod ----------------------------- + +\_def \_optexshipout #1{\_setbox0=#1\_preshipout0\_box0 \_shipout\_box0 } + \_doc ----------------------------- The `\hsize` value can be changed at various places in the document but we need to have a constant value \`\_xhsize` in the output routine @@ -48,7 +54,7 @@ `\hsize` value is eventually changed by the user in this environment. \_cod ----------------------------- -\_newdimen \_xhsize +\_newdimen \_xhsize \_xhsize=\_hsize \_def\_setxhsize {\_global\_xhsize=\_hsize \_global\_let\_setxhsize=\_relax} \_doc ----------------------------- @@ -258,6 +264,7 @@ The output routine \^`\_optexoutput` is similar as in plain \TeX. It does: \_endinput +2022-04-28 \_optexshipout introduced 2022-10-22 \_normalbaselines added to \makehead/foot/line 2022-03-07 \_resetattrs instead \_resetcolor 2021-07-16 output routine supports colors via attributes diff --git a/Master/texmf-dist/tex/optex/base/parameters.opm b/Master/texmf-dist/tex/optex/base/parameters.opm index 8867f4477aa..c357a4ee8c4 100644 --- a/Master/texmf-dist/tex/optex/base/parameters.opm +++ b/Master/texmf-dist/tex/optex/base/parameters.opm @@ -493,7 +493,7 @@ \_cod ----------------------------- \_newtoks\_headline \_headline={} -\_newtoks\_footline \_footline={\_hss\_rmfixed \_folio \_hss} +\_newtoks\_footline \_footline={\_hss\_rmfixed \_numprint\_folio \_hss} \_public \headline \footline ; \_doc ----------------------------- diff --git a/Master/texmf-dist/tex/optex/base/prefixed.opm b/Master/texmf-dist/tex/optex/base/prefixed.opm index 023f3bc4de9..3d25b0c8949 100644 --- a/Master/texmf-dist/tex/optex/base/prefixed.opm +++ b/Master/texmf-dist/tex/optex/base/prefixed.opm @@ -383,7 +383,8 @@ This extension `.opm` has precedence before `.tex` when the \^`\load` macro is used. The `math.opm` is a good example of how an external macro file for \OpTeX/ -can look like. +can look like. Another good and short example is +\ulink[https://tex.stackexchange.com/questions/684406\#684406]{here}. \endinput diff --git a/Master/texmf-dist/tex/optex/base/references.opm b/Master/texmf-dist/tex/optex/base/references.opm index 56ad7ad5892..ab5ee34163e 100644 --- a/Master/texmf-dist/tex/optex/base/references.opm +++ b/Master/texmf-dist/tex/optex/base/references.opm @@ -94,8 +94,8 @@ but the optional `@` in the `` is replaced by the `` first. \_cod ----------------------------- -\_def\_reftext #1#2{\_isatin #2@\_iffalse #2\_else\_reftextA{#1}#2\_fin \_fi} -\_def\_reftextA #1#2@#3\_fin {#2#1#3} +\_def\_reftext #1#2{\_isatin #2@\_iffalse \_numprint{#2}\_else\_reftextA{#1}#2\_fin \_fi} +\_def\_reftextA #1#2@#3\_fin {#2\_numprint{#1}#3} \_def\_isatin #1@#2\_iffalse {\_ifx\_fin#2\_fin} \_doc ----------------------------- diff --git a/Master/texmf-dist/tex/optex/base/sections.opm b/Master/texmf-dist/tex/optex/base/sections.opm index 7940a47bfac..ef5958e7888 100644 --- a/Master/texmf-dist/tex/optex/base/sections.opm +++ b/Master/texmf-dist/tex/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 <2022-10-19>} % preloaded in format +\_codedecl \chap {Titles, chapters, sections, subsections <2023-05-02>} % preloaded in format \_doc --------------------------- We are using scaled fonts for titles @@ -212,7 +212,7 @@ \_cod ---------------------------- \_def \_printrefnum [#1@#2]{\_leavevmode % we must be in horizontal mode - \_ifnonum \_else #1\_therefnum #2\_fi + \_ifnonum \_else #1\_numprint\_therefnum #2\_fi \_wlabel \_therefnum % references, if `\label[