summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
Diffstat (limited to 'macros')
-rw-r--r--macros/latex/contrib/hebrew-fonts/README.md2
-rw-r--r--macros/latex/contrib/hebrew-fonts/hebfontenc.fdd17
-rw-r--r--macros/latex/contrib/hebrew-fonts/hebfontenc.pdfbin259077 -> 258832 bytes
-rw-r--r--macros/latex/contrib/hebrew-fonts/hebinp.dtx170
-rw-r--r--macros/latex/contrib/hebrew-fonts/hebinp.pdfbin216449 -> 219029 bytes
-rw-r--r--macros/latex/contrib/hebrew-fonts/hebrew-fonts.ins8
-rw-r--r--macros/latex/contrib/joinbox/README.md2
-rw-r--r--macros/latex/contrib/joinbox/joinbox.pdfbin381807 -> 411301 bytes
-rw-r--r--macros/latex/contrib/joinbox/joinbox.sty56
-rw-r--r--macros/latex/contrib/joinbox/joinbox.tex210
-rw-r--r--macros/latex/contrib/mathfont/README.txt31
-rw-r--r--macros/latex/contrib/mathfont/mathfont_code.dtx760
-rw-r--r--macros/latex/contrib/mathfont/mathfont_code.pdfbin364537 -> 371600 bytes
-rw-r--r--macros/latex/contrib/mathfont/mathfont_example_cormorant.pdfbin51296 -> 51345 bytes
-rw-r--r--macros/latex/contrib/mathfont/mathfont_example_kelvinch.pdfbin85047 -> 85079 bytes
-rw-r--r--macros/latex/contrib/mathfont/mathfont_example_roboto.pdfbin54342 -> 54420 bytes
-rw-r--r--macros/latex/contrib/mathfont/mathfont_example_typey.pdfbin47388 -> 47470 bytes
-rw-r--r--macros/latex/contrib/mathfont/mathfont_symbol_list.pdfbin186433 -> 180972 bytes
-rw-r--r--macros/latex/contrib/mathfont/mathfont_user_guide.pdfbin115613 -> 116189 bytes
-rw-r--r--macros/latex/contrib/memoir/README9
-rw-r--r--macros/latex/contrib/memoir/memman.pdfbin2826438 -> 2826556 bytes
-rw-r--r--macros/latex/contrib/memoir/memoir.dtx28
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md16
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/README.md2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx21
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdfbin962873 -> 963576 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx144
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdfbin691708 -> 703466 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdfbin587721 -> 588496 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdfbin515314 -> 516134 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdfbin558634 -> 559276 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdfbin541673 -> 542336 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdfbin543976 -> 544628 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdfbin537067 -> 537754 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdfbin592524 -> 593234 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdfbin516300 -> 516955 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx7
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdfbin750467 -> 751187 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdfbin566543 -> 567418 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdfbin682288 -> 682963 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx28
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdfbin812732 -> 815253 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx52
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdfbin527235 -> 532327 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx6
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdfbin427013 -> 427985 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx13
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdfbin589232 -> 590876 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.dtx171
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdfbin386566 -> 0 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx29
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdfbin443702 -> 440323 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx74
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.ins7
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdfbin456571 -> 464507 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty2
-rw-r--r--macros/latex/contrib/postnotes/CHANGELOG.md8
-rw-r--r--macros/latex/contrib/postnotes/postnotes-code.pdfbin848203 -> 849779 bytes
-rw-r--r--macros/latex/contrib/postnotes/postnotes-doc.pdfbin177629 -> 177635 bytes
-rw-r--r--macros/latex/contrib/postnotes/postnotes.dtx62
-rw-r--r--macros/latex/contrib/reledmac/doc-more/page-typesetting-columns.pdfbin40791 -> 40795 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/1-criticalendnotes.pdfbin201564 -> 201564 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/1-criticalnotes.pdfbin197819 -> 197819 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/1-sidenotes.pdfbin295209 -> 295209 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/1-tabular.pdfbin285556 -> 285556 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/1-verses-doublenumbering.pdfbin198959 -> 198959 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/1-verses.pdfbin198794 -> 198794 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/2-antilabe.pdfbin210969 -> 210969 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/2-cross_referencing.pdfbin198304 -> 198304 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/2-footnote_spacing.pdfbin201443 -> 201443 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/2-glossaries.pdfbin285503 -> 285503 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/2-indexing.pdfbin278070 -> 278070 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/2-lemma_disambigution.pdfbin276219 -> 276219 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/2-line_numbers_in_header.pdfbin292434 -> 292434 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/2-linespacing.pdfbin286626 -> 286626 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/2-manuscript-apparatus.pdfbin288123 -> 288123 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/2-notes-width.pdfbin204669 -> 204669 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/2-one_series_per_pstart.pdfbin212242 -> 212242 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/2-performances.pdfbin284583 -> 284583 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/2-reledmac-right-to-left.pdfbin36940 -> 36940 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/2-subdivision-number-in-header.pdfbin310603 -> 310603 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/2-titles_in_line_numbering_with_notes.pdfbin288795 -> 288795 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/2-titles_not_in_line_numbering.pdfbin199918 -> 199918 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/3-reledpar_columns_different_languages.pdfbin23441 -> 23444 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/3-reledpar_mwe.pdfbin175650 -> 175650 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/3-reledpar_pages_different_languages_lualatex.pdfbin32047 -> 32047 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/3-reledpar_same_page_number_in_both_side.pdfbin289211 -> 289211 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_advancedshifted-nomax.pdfbin200041 -> 200041 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_advancedshifted.pdfbin199278 -> 199278 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_default.pdfbin177110 -> 177110 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_nomax-shifted.pdfbin199681 -> 199681 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_nomax.pdfbin198615 -> 198615 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_nosync.pdfbin198665 -> 198665 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_shifted.pdfbin198797 -> 198797 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/4-reledpar_column_mix_with_not_column-continuous-numbering.pdfbin214377 -> 214377 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/4-reledpar_column_mix_with_not_column.pdfbin210488 -> 210488 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/4-reledpar_columns_alignment.pdfbin204974 -> 204974 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/4-reledpar_columns_titles_in_line_numbering_with_notes.pdfbin298422 -> 298422 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/4-reledpar_inside-outside-columns.pdfbin204015 -> 204015 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/4-reledpar_one_series_per_pstart.pdfbin225555 -> 225555 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/4-reledpar_pages_long_notes.pdfbin251002 -> 251002 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/4-reledpar_pages_notes_leftpage.pdfbin202381 -> 202381 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/4-reledpar_pages_paragraph_separator_between.pdfbin198565 -> 198565 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/4-reledpar_pages_titles_in_line_numbering_with_notes.pdfbin302774 -> 302774 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/4-reledpar_titles_not_in_line_numbering.pdfbin206955 -> 206955 bytes
-rw-r--r--macros/latex/contrib/reledmac/examples/4-reledpar_verse_text_between.pdfbin194198 -> 194198 bytes
-rw-r--r--macros/latex/contrib/reledmac/migration.pdfbin368426 -> 368426 bytes
-rw-r--r--macros/latex/contrib/reledmac/reledmac.dtx20
-rw-r--r--macros/latex/contrib/reledmac/reledmac.pdfbin2153144 -> 2152869 bytes
-rw-r--r--macros/latex/contrib/reledmac/reledpar.pdfbin1046914 -> 1046914 bytes
-rw-r--r--macros/luatex/generic/luamplib/NEWS3
-rw-r--r--macros/luatex/generic/luamplib/README2
-rw-r--r--macros/luatex/generic/luamplib/luamplib.dtx11
-rw-r--r--macros/luatex/generic/luamplib/luamplib.pdfbin153613 -> 153620 bytes
-rw-r--r--macros/luatex/latex/lualinalg/README.txt2
-rw-r--r--macros/luatex/latex/lualinalg/lualinalg.pdfbin270847 -> 268452 bytes
-rw-r--r--macros/luatex/latex/lualinalg/lualinalg.sty14
-rw-r--r--macros/luatex/latex/lualinalg/lualinalg.tex8
-rw-r--r--macros/luatex/latex/luamaths/README.txt2
-rw-r--r--macros/luatex/latex/luamaths/luamaths-fractions.lua4
-rw-r--r--macros/luatex/latex/luamaths/luamaths.pdfbin146025 -> 146010 bytes
-rw-r--r--macros/luatex/latex/luamaths/luamaths.sty4
134 files changed, 1207 insertions, 830 deletions
diff --git a/macros/latex/contrib/hebrew-fonts/README.md b/macros/latex/contrib/hebrew-fonts/README.md
index 2750e0e227..782a5baffb 100644
--- a/macros/latex/contrib/hebrew-fonts/README.md
+++ b/macros/latex/contrib/hebrew-fonts/README.md
@@ -9,7 +9,7 @@ The included LaTeX package defines a number of high-level commands
(all starting with |\text..| similar to the standard \LaTeXe{}
font-change commands.
-**Version**: 1.2a
+**Version**: 1.3
**Copyright**: © 1997 -- 2005 Boris Lavva, © 2023 Udi Fogiel
diff --git a/macros/latex/contrib/hebrew-fonts/hebfontenc.fdd b/macros/latex/contrib/hebrew-fonts/hebfontenc.fdd
index 2fca7f278a..1ad078e593 100644
--- a/macros/latex/contrib/hebrew-fonts/hebfontenc.fdd
+++ b/macros/latex/contrib/hebrew-fonts/hebfontenc.fdd
@@ -39,14 +39,14 @@
%<HE8enc>\ProvidesFile{he8enc.def}
%<NHE8enc>\ProvidesFile{nhe8enc.def}
% The recoded Omega font (only Hebrew glyphs. Lacks other glyphs)
-%<HE8OmegaHebrew>\ProvidesFile{HE8OmegaHebrew.fd}
+%<HE8OmegaHebrew>\ProvidesFile{he8omegahebrew.fd}
%<hebfont>\ProvidesPackage{hebfont}
%<*driver>
\ProvidesFile{hebfontenc.drv}
%</driver>
% \fi
% \ProvidesFile{hebfontenc.fdd}
- [2023/08/17 v1.3a %
+ [2023/08/21 v1.3 %
% \iffalse
%<LHEenc> 7-bit Hebrew font encoding
%<LHEcmr> Hebrew default font
@@ -123,7 +123,7 @@
%
% Current definition of the \LHE{} encoding supports only Hebrew
% letters (|\hebalef|--|\hebtav|), but not Hebrew points, such as
-% |\hebdagesh|, |\hebqamats|, |\hebpatah|, |\hebshindot|, etc. We
+% |\dagesh|, |\qamats|, |\patah|, |\shindot|, etc. We
% are working now on such addition.
%
% \StopEventually{}
@@ -603,14 +603,15 @@
\DeclareTextSymbol{\quotesinglbase}{NHE8}{13}
\DeclareTextSymbol{\textquoteleft}{NHE8}{14}
-\DeclareTextSymbol{\textquoteright}{NHE8}{15}
+\DeclareTextSymbol{\textquoteright}{NHE8}{39}
\DeclareTextSymbol{\textquotedblleft}{NHE8}{16}
\DeclareTextSymbol{\textquotedblright}{NHE8}{17}
\DeclareTextSymbol{\quotedblbase}{NHE8}{18}
\DeclareTextSymbol{\textquotedbl}{NHE8}{34}
+\DeclareTextSymbol{\textquotesingle}{NHE8}{39}
\DeclareTextSymbol{\textdollar}{NHE8}{36}
-\DeclareTextSymbol{\textless}{NHE8}{60}
-\DeclareTextSymbol{\textgreater}{NHE8}{62}
+\DeclareTextSymbol{\textgreater}{NHE8}{60}
+\DeclareTextSymbol{\textless}{NHE8}{62}
\DeclareTextSymbol{\textbackslash}{NHE8}{92}
\DeclareTextSymbol{\textasciicircum}{NHE8}{94}
\DeclareTextSymbol{\textbraceleft}{NHE8}{123}
@@ -640,6 +641,8 @@
\DeclareTextSymbol{\doublevav}{NHE8}{212}
\DeclareTextSymbol{\vavyod}{NHE8}{213}
\DeclareTextSymbol{\doubleyod}{NHE8}{214}
+\DeclareTextSymbol{\hebgeresh}{NHE8}{215}
+\DeclareTextSymbol{\hebgershayim}{NHE8}{216}
\DeclareTextSymbol{\hebalef}{NHE8}{224}
\DeclareTextSymbol{\hebbet}{NHE8}{225}
\DeclareTextSymbol{\hebgimel}{NHE8}{226}
@@ -742,6 +745,8 @@
\DeclareTextSymbol{\doublevav}{HE8}{212}
\DeclareTextSymbol{\vavyod}{HE8}{213}
\DeclareTextSymbol{\doubleyod}{HE8}{214}
+\DeclareTextSymbol{\hebgeresh}{HE8}{215}
+\DeclareTextSymbol{\hebgershayim}{HE8}{216}
%</HE8enc>
% \end{macrocode}
%
diff --git a/macros/latex/contrib/hebrew-fonts/hebfontenc.pdf b/macros/latex/contrib/hebrew-fonts/hebfontenc.pdf
index 0eb2dfc60a..5daebe7d2b 100644
--- a/macros/latex/contrib/hebrew-fonts/hebfontenc.pdf
+++ b/macros/latex/contrib/hebrew-fonts/hebfontenc.pdf
Binary files differ
diff --git a/macros/latex/contrib/hebrew-fonts/hebinp.dtx b/macros/latex/contrib/hebrew-fonts/hebinp.dtx
index 9b2525e24d..8ebddd6b6f 100644
--- a/macros/latex/contrib/hebrew-fonts/hebinp.dtx
+++ b/macros/latex/contrib/hebrew-fonts/hebinp.dtx
@@ -29,13 +29,15 @@
%<8859-8> \ProvidesFile{8859-8.def}
%<cp862> \ProvidesFile{cp862.def}
%<cp1255> \ProvidesFile{cp1255.def}
-%<utf8> \ProvidesFile{nhe8.dfu}
+%<nhe8utf8> \ProvidesFile{nhe8enc.dfu}
+%<he8utf8> \ProvidesFile{he8enc.dfu}
+%<lheutf8> \ProvidesFile{lheenc.dfu}
%<*driver>
\ProvidesFile{hebinp.drv}
%</driver>
% \fi
% \ProvidesFile{hebinp.dtx}
- [2023/08/17 v1.2a Hebrew input encoding file]
+ [2023/08/21 v1.3 Hebrew input encoding file]
%
% \providecommand\dst{\textsc{docstrip}}
% \GetFileInfo{hebinp.dtx}
@@ -318,28 +320,28 @@
% page and start from the position 192.
% \begin{macrocode}
%<*cp1255>
-\DeclareInputText{192}{\hebsheva}
-\DeclareInputText{193}{\hebhatafsegol}
-\DeclareInputText{194}{\hebhatafpatah}
-\DeclareInputText{195}{\hebhatafqamats}
-\DeclareInputText{196}{\hebhiriq}
-\DeclareInputText{197}{\hebtsere}
-\DeclareInputText{198}{\hebsegol}
-\DeclareInputText{199}{\hebpatah}
-\DeclareInputText{200}{\hebqamats}
-\DeclareInputText{201}{\hebholam}
-\DeclareInputText{203}{\hebqubuts}
-\DeclareInputText{204}{\hebdagesh}
-\DeclareInputText{205}{\hebmeteg}
-\DeclareInputText{206}{\hebmaqaf}
-\DeclareInputText{207}{\hebrafe}
-\DeclareInputText{208}{\hebpaseq}
-\DeclareInputText{209}{\hebshindot}
-\DeclareInputText{210}{\hebsindot}
-\DeclareInputText{211}{\hebsofpasuq}
-\DeclareInputText{212}{\hebdoublevav}
-\DeclareInputText{213}{\hebvavyod}
-\DeclareInputText{214}{\hebdoubleyod}
+\DeclareInputText{192}{\sheva}
+\DeclareInputText{193}{\hatafsegol}
+\DeclareInputText{194}{\hatafpatah}
+\DeclareInputText{195}{\hatafqamats}
+\DeclareInputText{196}{\hiriq}
+\DeclareInputText{197}{\tsere}
+\DeclareInputText{198}{\segol}
+\DeclareInputText{199}{\patah}
+\DeclareInputText{200}{\qamats}
+\DeclareInputText{201}{\holam}
+\DeclareInputText{203}{\qubuts}
+\DeclareInputText{204}{\dagesh}
+\DeclareInputText{205}{\meteg}
+\DeclareInputText{206}{\maqaf}
+\DeclareInputText{207}{\rafe}
+\DeclareInputText{208}{\paseq}
+\DeclareInputText{209}{\shindot}
+\DeclareInputText{210}{\sindot}
+\DeclareInputText{211}{\sofpasuq}
+\DeclareInputText{212}{\doublevav}
+\DeclareInputText{213}{\vavyod}
+\DeclareInputText{214}{\doubleyod}
%</cp1255>
% \end{macrocode}
%
@@ -376,15 +378,6 @@
%</8859-8|cp1255>
% \end{macrocode}
%
-% Special symbols which define the direction of symbols explicitly.
-% Currently, they are not used in \LaTeX.
-% \begin{macrocode}
-%<*cp1255>
-\DeclareInputText{253}{\lefttorightmark}
-\DeclareInputText{254}{\righttoleftmark}
-%</cp1255>
-% \end{macrocode}
-%
% \subsection{The IBM code page 862}
%
% The |cp862.def| encoding file defines the characters in the IBM
@@ -514,10 +507,12 @@
%</8859-8>
% \end{macrocode}
%
-% \subsection{utf8 encoding}
+% \section{utf8 support}
+%
+% \subsection{NHE8 encoding}
%
% \begin{macrocode}
-%<*utf8>
+%<*nhe8utf8>
\DeclareUnicodeCharacter{20AA}{\shekel}
%% Alphabet
@@ -578,7 +573,110 @@
\DeclareUnicodeCharacter{05F3}{\geresh}
\DeclareUnicodeCharacter{05F4}{\gershayim}
-%</utf8>
+%</nhe8utf8>
+% \end{macrocode}
+%
+% \subsection{HE8 encoding}
+%
+% \begin{macrocode}
+%<*he8utf8>
+
+%% Alphabet
+\DeclareUnicodeCharacter{05D0}{\hebalef}
+\DeclareUnicodeCharacter{05D1}{\hebbet}
+\DeclareUnicodeCharacter{05D2}{\hebgimel}
+\DeclareUnicodeCharacter{05D3}{\hebdalet}
+\DeclareUnicodeCharacter{05D4}{\hebhe}
+\DeclareUnicodeCharacter{05D5}{\hebvav}
+\DeclareUnicodeCharacter{05D6}{\hebzayin}
+\DeclareUnicodeCharacter{05D7}{\hebhet}
+\DeclareUnicodeCharacter{05D8}{\hebtet}
+\DeclareUnicodeCharacter{05D9}{\hebyod}
+\DeclareUnicodeCharacter{05DA}{\hebfinalkaf}
+\DeclareUnicodeCharacter{05DB}{\hebkaf}
+\DeclareUnicodeCharacter{05DC}{\heblamed}
+\DeclareUnicodeCharacter{05DD}{\hebfinalmem}
+\DeclareUnicodeCharacter{05DE}{\hebmem}
+\DeclareUnicodeCharacter{05DF}{\hebfinalnun}
+\DeclareUnicodeCharacter{05E0}{\hebnun}
+\DeclareUnicodeCharacter{05E1}{\hebsamekh}
+\DeclareUnicodeCharacter{05E2}{\hebayin}
+\DeclareUnicodeCharacter{05E3}{\hebfinalpe}
+\DeclareUnicodeCharacter{05E4}{\hebpe}
+\DeclareUnicodeCharacter{05E5}{\hebfinaltsadi}
+\DeclareUnicodeCharacter{05E6}{\hebtsadi}
+\DeclareUnicodeCharacter{05E7}{\hebqof}
+\DeclareUnicodeCharacter{05E8}{\hebresh}
+\DeclareUnicodeCharacter{05E9}{\hebshin}
+\DeclareUnicodeCharacter{05EA}{\hebtav}
+
+%% niqqud
+\DeclareUnicodeCharacter{05B0}{\sheva}
+\DeclareUnicodeCharacter{05B1}{\hatafsegol}
+\DeclareUnicodeCharacter{05B2}{\hatafpatah}
+\DeclareUnicodeCharacter{05B3}{\hatafqamats}
+\DeclareUnicodeCharacter{05B4}{\hiriq}
+\DeclareUnicodeCharacter{05B5}{\tsere}
+\DeclareUnicodeCharacter{05B6}{\segol}
+\DeclareUnicodeCharacter{05B7}{\patah}
+\DeclareUnicodeCharacter{05B8}{\qamats}
+\DeclareUnicodeCharacter{05B9}{\holam}
+\DeclareUnicodeCharacter{05BA}{\holam}
+\DeclareUnicodeCharacter{05BB}{\qubuts}
+\DeclareUnicodeCharacter{05BC}{\dagesh}
+\DeclareUnicodeCharacter{05BD}{\meteg}
+\DeclareUnicodeCharacter{05BE}{\maqaf}
+\DeclareUnicodeCharacter{05BF}{\rafe}
+\DeclareUnicodeCharacter{05C0}{\paseq}
+\DeclareUnicodeCharacter{05C1}{\shindot}
+\DeclareUnicodeCharacter{05C2}{\sindot}
+\DeclareUnicodeCharacter{05C3}{\sofpasuq}
+
+%% ligatures
+\DeclareUnicodeCharacter{05F0}{\doublevav}
+\DeclareUnicodeCharacter{05F1}{\vavyod}
+\DeclareUnicodeCharacter{05F2}{\doubleyod}
+
+\DeclareUnicodeCharacter{05F3}{\geresh}
+\DeclareUnicodeCharacter{05F4}{\gershayim}
+%</he8utf8>
+% \end{macrocode}
+%
+% \subsection{LHE encoding}
+% LHE encoding does not have support for niqqud
+% \begin{macrocode}
+%<*lheutf8>
+
+%% Alphabet
+\DeclareUnicodeCharacter{05D0}{\hebalef}
+\DeclareUnicodeCharacter{05D1}{\hebbet}
+\DeclareUnicodeCharacter{05D2}{\hebgimel}
+\DeclareUnicodeCharacter{05D3}{\hebdalet}
+\DeclareUnicodeCharacter{05D4}{\hebhe}
+\DeclareUnicodeCharacter{05D5}{\hebvav}
+\DeclareUnicodeCharacter{05D6}{\hebzayin}
+\DeclareUnicodeCharacter{05D7}{\hebhet}
+\DeclareUnicodeCharacter{05D8}{\hebtet}
+\DeclareUnicodeCharacter{05D9}{\hebyod}
+\DeclareUnicodeCharacter{05DA}{\hebfinalkaf}
+\DeclareUnicodeCharacter{05DB}{\hebkaf}
+\DeclareUnicodeCharacter{05DC}{\heblamed}
+\DeclareUnicodeCharacter{05DD}{\hebfinalmem}
+\DeclareUnicodeCharacter{05DE}{\hebmem}
+\DeclareUnicodeCharacter{05DF}{\hebfinalnun}
+\DeclareUnicodeCharacter{05E0}{\hebnun}
+\DeclareUnicodeCharacter{05E1}{\hebsamekh}
+\DeclareUnicodeCharacter{05E2}{\hebayin}
+\DeclareUnicodeCharacter{05E3}{\hebfinalpe}
+\DeclareUnicodeCharacter{05E4}{\hebpe}
+\DeclareUnicodeCharacter{05E5}{\hebfinaltsadi}
+\DeclareUnicodeCharacter{05E6}{\hebtsadi}
+\DeclareUnicodeCharacter{05E7}{\hebqof}
+\DeclareUnicodeCharacter{05E8}{\hebresh}
+\DeclareUnicodeCharacter{05E9}{\hebshin}
+\DeclareUnicodeCharacter{05EA}{\hebtav}
+
+%</lheutf8>
% \end{macrocode}
%
% Finally, we reset the category code of the |@| sign at the end of
diff --git a/macros/latex/contrib/hebrew-fonts/hebinp.pdf b/macros/latex/contrib/hebrew-fonts/hebinp.pdf
index eff7fff5a2..2a4a5bee89 100644
--- a/macros/latex/contrib/hebrew-fonts/hebinp.pdf
+++ b/macros/latex/contrib/hebrew-fonts/hebinp.pdf
Binary files differ
diff --git a/macros/latex/contrib/hebrew-fonts/hebrew-fonts.ins b/macros/latex/contrib/hebrew-fonts/hebrew-fonts.ins
index 68660e0b3e..491cf9a2eb 100644
--- a/macros/latex/contrib/hebrew-fonts/hebrew-fonts.ins
+++ b/macros/latex/contrib/hebrew-fonts/hebrew-fonts.ins
@@ -28,7 +28,7 @@
%% --------------- start of docstrip commands ------------------
%%
\def\batchfile{hebrew-fonts.ins}
-\def\filedate{2023/08/17}
+\def\filedate{2023/08/21}
\input docstrip.tex
{\ifx\generate\undefined
@@ -89,7 +89,7 @@ extension .ins) which are part of the distribution.
\file{lheclas.fd}{\from{hebfontenc.fdd}{LHEclas,nowarn}}
\file{he8enc.def}{\from{hebfontenc.fdd}{HE8enc}}
\file{nhe8enc.def}{\from{hebfontenc.fdd}{NHE8enc}}
- \file{he8OmegaHebrew.fd}{\from{hebfontenc.fdd}{HE8OmegaHebrew,nowarn}}
+ \file{he8omegahebrew.fd}{\from{hebfontenc.fdd}{HE8OmegaHebrew,nowarn}}
\file{lheshold.fd}{\from{hebfontenc.fdd}{LHEshold,nowarn}}
\file{lheshscr.fd}{\from{hebfontenc.fdd}{LHEshscr,nowarn}}
\file{lheshstk.fd}{\from{hebfontenc.fdd}{LHEshstk,nowarn}}
@@ -105,7 +105,9 @@ extension .ins) which are part of the distribution.
\file{cp1255.def}{\from{hebinp.dtx}{cp1255}}
\file{cp862.def}{\from{hebinp.dtx}{cp862}}
\file{si960.def}{\from{hebinp.dtx}{si960}}
- \file{nhe8enc.dfu}{\from{hebinp.dtx}{utf8}}
+ \file{nhe8enc.dfu}{\from{hebinp.dtx}{nhe8utf8}}
+ \file{he8enc.dfu}{\from{hebinp.dtx}{he8utf8}}
+ \file{lheenc.dfu}{\from{hebinp.dtx}{lheutf8}}
}
\endinput
diff --git a/macros/latex/contrib/joinbox/README.md b/macros/latex/contrib/joinbox/README.md
index 327d85d2a8..4b3b04cae9 100644
--- a/macros/latex/contrib/joinbox/README.md
+++ b/macros/latex/contrib/joinbox/README.md
@@ -1,7 +1,7 @@
Boxes joinning package based on l3coffins developed with Expl3.
=======
-`joinbox` is a box joinning package based on l3coffins developed with expl3, which provides the `\joinbox`, `\joinboxes`and `\joinfigs` macros for vertical or horizontal joinning of boxes. The typeout baseline, size and seprated space can be set up with the options or `\joinset` macro.
+`joinbox` is a box joinning package based on l3coffins developed with expl3, which provides the `\joinbox`, `\joinboxes`and `\joinfigs` macros for vertical or horizontal joinning of boxes. The typeout baseline, size and seperated space can be set up with the options or `\joinset` macro.
Boxes can be joined vertically or horizontally. When using vertical joinning, all boxes to be joined will keep same width, while when using horizontal joined, all boxes to be joined will keep same height.
diff --git a/macros/latex/contrib/joinbox/joinbox.pdf b/macros/latex/contrib/joinbox/joinbox.pdf
index 6d31c3aa86..0e1fd27006 100644
--- a/macros/latex/contrib/joinbox/joinbox.pdf
+++ b/macros/latex/contrib/joinbox/joinbox.pdf
Binary files differ
diff --git a/macros/latex/contrib/joinbox/joinbox.sty b/macros/latex/contrib/joinbox/joinbox.sty
index a3117aa5ac..06077c23f1 100644
--- a/macros/latex/contrib/joinbox/joinbox.sty
+++ b/macros/latex/contrib/joinbox/joinbox.sty
@@ -7,7 +7,7 @@
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
-\ProvidesExplPackage{joinbox}{2023-08-13}{v1.0.1}
+\ProvidesExplPackage{joinbox}{2023-08-21}{v1.0.2}
{Join figures to same height or width with LaTeX3}
\RequirePackage{xparse}
@@ -417,6 +417,31 @@
}
}
}
+
+ % 按指定输出高度缩放输出盒子
+ \bool_if:nT { \l__joinbox_out_scale_bool && \l__joinbox_only_first_bool }
+ {
+ \bool_if:NTF \l__joinbox_vertical_bool
+ {
+ \coffin_scale:Nnn \l__joinbox_tmpa_coffin
+ {
+ \dim_ratio:nn { \l__joinbox_out_length_dim }{ \coffin_wd:N \l__joinbox_tmpa_coffin }
+ }
+ {
+ \dim_ratio:nn { \l__joinbox_out_length_dim }{ \coffin_wd:N \l__joinbox_tmpa_coffin }
+ }
+ }
+ {
+ \coffin_scale:Nnn \l__joinbox_tmpa_coffin
+ {
+ \dim_ratio:nn { \l__joinbox_out_length_dim }{ \__joinbox_coffin_ht_plus_dp:N \l__joinbox_tmpa_coffin }
+ }
+ {
+ \dim_ratio:nn { \l__joinbox_out_length_dim }{ \__joinbox_coffin_ht_plus_dp:N \l__joinbox_tmpa_coffin }
+ }
+ }
+ }
+
\__joinbox_typeout_coffin:N \l__joinbox_tmpa_coffin
}
@@ -458,6 +483,31 @@
}
}
}
+
+ % 按指定输出高度缩放输出盒子
+ \bool_if:nT { \l__joinbox_out_scale_bool && \l__joinbox_only_first_bool }
+ {
+ \bool_if:NTF \l__joinbox_vertical_bool
+ {
+ \coffin_scale:Nnn \l__joinbox_tmpa_coffin
+ {
+ \dim_ratio:nn { \l__joinbox_out_length_dim }{ \coffin_wd:N \l__joinbox_tmpa_coffin }
+ }
+ {
+ \dim_ratio:nn { \l__joinbox_out_length_dim }{ \coffin_wd:N \l__joinbox_tmpa_coffin }
+ }
+ }
+ {
+ \coffin_scale:Nnn \l__joinbox_tmpa_coffin
+ {
+ \dim_ratio:nn { \l__joinbox_out_length_dim }{ \__joinbox_coffin_ht_plus_dp:N \l__joinbox_tmpa_coffin }
+ }
+ {
+ \dim_ratio:nn { \l__joinbox_out_length_dim }{ \__joinbox_coffin_ht_plus_dp:N \l__joinbox_tmpa_coffin }
+ }
+ }
+ }
+
\__joinbox_typeout_coffin:N \l__joinbox_tmpa_coffin
}
@@ -467,7 +517,7 @@
% #2---可选参数,用key-value选项指定拼接参数
% #3---第1个盒子的内容
% #4---第2个盒子的内容
-\NewDocumentCommand{\joinbox}{ s O{} m m}
+\NewDocumentCommand{\joinbox}{ s O{} +m +m}
{
\IfBooleanTF{#1}
{
@@ -510,7 +560,7 @@
% #1---是否为*命令,如有*则采用水平拼接,无*则采用垂直拼接
% #2---可选参数,用key-value选项指定拼接参数
% #3---必选参数,用逗号分隔的,需要拼接内容(各个内容应该置于大括号内)
-\NewDocumentCommand{\joinboxes}{ s O{} m}
+\NewDocumentCommand{\joinboxes}{ s O{} +m}
{
\IfBooleanTF{#1}
{
diff --git a/macros/latex/contrib/joinbox/joinbox.tex b/macros/latex/contrib/joinbox/joinbox.tex
index f0848d8867..3c021e196d 100644
--- a/macros/latex/contrib/joinbox/joinbox.tex
+++ b/macros/latex/contrib/joinbox/joinbox.tex
@@ -119,7 +119,7 @@
{ \__codedoc_cmd:no {#1} { #2 } }
\ExplSyntaxOff
-\def\vers{\texttt{v1.0.1}
+\def\vers{\texttt{v1.0.2}
\thanks{\url{https://gitee.com/nwafu_nan/joinbox}}
}
@@ -146,16 +146,17 @@
\section{引言}
-\pkg{joinbox}是一个基于\pkg{l3coffins}用\pkg{expl3}开发的
+\pkg{joinbox}是一个基于\pkg{l3coffins}用\pkg{Expl3}开发的
盒子拼接宏包,它用于实现盒子的垂直或水平拼接。垂直拼接
会以各对象等宽的方式拼接,而水平拼接会以各对象等高的方式
拼接。
-该宏包提供了\tn{joinbox}和\tn{joinfigs}两个命令。其中,
-\tn{joinbox}用于拼接两个独立对象,\tn{joinfigs}用于拼接
-多个图像。这两个命令的不带*(星号)版本用于垂直拼接,而带
-*(星号)的版本用于水平拼接。
-同时,该宏包还提供了\tn{joinset}命令用于对拼接方式进行设置。
+该宏包提供了\tn{joinbox}、\tn{joinboxes}和\tn{joinfigs}三个拼接
+命令。其中,\tn{joinbox}用于拼接两个独立对象,\tn{joinboxes}用于
+拼接一组对象,\tn{joinfigs}用于拼接多个图像。这三个命令的不带*(星号)
+版本用于垂直拼接,而带*(星号)的版本用于水平拼接。
+
+同时,该宏包还提供了\tn{joinset}命令用于对输出基线、尺寸和拼接间距进行设置。
\section{用户接口}
@@ -163,8 +164,8 @@
\begin{function}{\joinbox,\joinbox*}
\begin{syntax}
- \cs{joinbox} \oarg{拼接方式} \marg{对象1} \marg{对象2}
- \cs{joinbox*} \oarg{拼接方式} \marg{对象1} \marg{对象2}
+ \cs{joinbox} \oarg{拼接选项} \marg{对象1} \marg{对象2}
+ \cs{joinbox*} \oarg{拼接选项} \marg{对象1} \marg{对象2}
\end{syntax}
\end{function}
@@ -173,9 +174,9 @@
\marg{对象2}指定需要拼接的对象。拼接对象将被置于coffin中,
然后按需求进行拼接。
- \marg{对象1}或\marg{对象2}可以为空,但两者不能同时为空。
+ \marg{对象1}或\marg{对象2}可以置空,但两者不能同时为空。
- 在可选项\oarg{拼接方式}中,可以通过key-value指定输出结果
+ 在\oarg{拼接选项}中,可以通过逗号分隔的key-value指定输出结果
基线位置、 输出尺寸(垂直拼接是输出宽度,水平拼接是输出高度)
和拼接间距。
@@ -183,8 +184,8 @@
\begin{function}{\joinboxes,\joinboxes*}
\begin{syntax}
- \cs{joinboxes} \oarg{拼接方式} \marg{拼接内容列表}
- \cs{joinboxes*} \oarg{拼接方式} \marg{拼接内容列表}
+ \cs{joinboxes} \oarg{拼接选项} \marg{拼接内容列表}
+ \cs{joinboxes*} \oarg{拼接选项} \marg{拼接内容列表}
\end{syntax}
\end{function}
@@ -193,15 +194,15 @@
指定需要拼接的内容,不同内容之间用英文逗号进行分隔,若内容中含
有空格或逗号,则需要将其置于|{}|分组中。最少需要有1个拼接内容。
- 在\oarg{拼接方式}可选项中,可以通过key-value指定结果基线位置、
+ 在\oarg{拼接选项}中,可以通过逗号分隔的key-value指定结果基线位置、
输出尺寸(垂直拼接是输出宽度,水平拼接是输出调试)、拼接间距。
\subsection{\cs{joinfigs}拼接多个图像命令}
\begin{function}{\joinfigs,\joinfigs*}
\begin{syntax}
- \cs{joinfigs} \oarg{拼接方式} \marg{文件名称列表}
- \cs{joinfigs*} \oarg{拼接方式} \marg{文件名称列表}
+ \cs{joinfigs} \oarg{拼接选项} \marg{文件名称列表}
+ \cs{joinfigs*} \oarg{拼接选项} \marg{文件名称列表}
\end{syntax}
\end{function}
@@ -210,21 +211,21 @@
指定需要拼接图像,文件名称中可以包含路径,不同文件名称之间用
英文逗号进行分隔。最少需要有1个图像文件名称。
- 在\oarg{拼接方式}可选项中,可以通过key-value指定结果基线位置、
+ 在\oarg{拼接选项}中,可以通过逗号分隔的key-value指定结果基线位置、
输出尺寸(垂直拼接是输出宽度,水平拼接是输出调试)、拼接间距。
\subsection{\cs{joinset}}
\begin{function}{\joinset}
\begin{syntax}
- \cs{joinset} \marg{拼接方式}
+ \cs{joinset} \marg{拼接选项}
\end{syntax}
\end{function}
- 用于通过key-value指定拼接结果中的基线位置、
+ 用于通过逗号分隔的key-value指定拼接结果中的基线位置、
输出尺寸(垂直拼接是输出宽度,水平拼接是输出调试)、拼接间距。
-\section{拼接方式}
+\section{拼接选项}
\begin{option}{ opt = baseline, desc = {= \meta{t,vc,H,b}}, init=b }
设置joinbox或joinfigs拼接结果的输出基线位置,目前支持:
@@ -236,7 +237,7 @@
\item |b|---盒子底端水平线。
\end{Description}
\begin{notezh}
- 可以省略\texttt{baseline}键名,但值只能取|t|、|vc|和|b|。
+ 可以省略\texttt{baseline}键名,但其值只能取|t|、|vc|、|H|和|b|。
\end{notezh}
\begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.45\linewidth,gobble=2]
@@ -265,7 +266,7 @@
若指定的输出尺寸$\le 0$,则表示使用被拼接对象中的最小尺寸输出。
\end{option}\\
\begin{notezh}
- 可以省略\texttt{outlen}键名,但值只能取|dim|尺寸类型。
+ 可以省略\texttt{outlen}键名,但值只能取|dim|尺寸或尺寸表达式。
当同时省略\texttt{baseline}键名和\texttt{outlen}键名时,如果
键值为不支持的\texttt{baseline},也是不|dim|尺寸或|dim|尺寸表达式,
@@ -308,7 +309,8 @@
\section{多盒子拼接}
-可以使用\tn{joinboxes}命令一次拼接多个对象。
+可以使用\tn{joinboxes}命令一次拼接多个对象,不同对象间用逗号进行分隔,
+如果对象包含逗号,则需要将该对象置于|{}|构成的分组中。
\begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.45\linewidth,gobble=2]
\joinboxes[sep=2pt]{%
@@ -348,6 +350,8 @@
\subsection{垂直拼接图像}
+垂直拼接时,各对象保持相同宽度。
+
\begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.45\linewidth,gobble=2]
\joinfigs[outlen=3cm, sep=5pt]
{latexframe, tl-lion, expl3}
@@ -355,6 +359,8 @@
\subsection{水平拼接图像}
+水平拼接时,各对象保持相同高度。
+
\begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.45\linewidth,gobble=2]
\joinfigs*[outlen=1.3cm, sep=5pt]
{latexframe, tl-lion, expl3}
@@ -375,6 +381,73 @@
}
\end{SideBySideExample}
+\begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.45\linewidth,gobble=2]
+
+ \joinboxes*[0.15\textheight, sep=5pt]{%
+ {
+ \joinfigs[0.25\textwidth]
+ {latexframe, tl-lion, expl3}
+ },
+ {
+ \joinfigs[0.25\textwidth]
+ {tl-lion, latexframe,expl3}
+ },
+ {
+ \joinfigs[0.25\textwidth]
+ {expl3, tl-lion, latexframe}
+ }
+ }
+\end{SideBySideExample}
+
+\section{单对象拼接}
+
+\tn{joinbox}、\tn{joinboxes}或\tn{joinfigs}命令也可以实现只``伪拼接''
+一个对象,此时,则可以通过选项调整输出的基线位置和大小。
+
+\begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.45\linewidth,gobble=2]
+ \joinbox{\LaTeX 科技排版}{}
+
+ \joinbox[4cm]{}{\LaTeX 科技排版}
+
+ \joinboxes{\LaTeX 科技排版}
+\end{SideBySideExample}
+
+\begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.45\linewidth,gobble=2]
+ 基线位置->\joinfigs[vc,4cm]{latexframe}
+\end{SideBySideExample}
+
+\section{垂直盒子拼接}
+
+由于是基于Expl3的\tn{hcoffin_set:Nn}函数构造内部盒子实现拼接的,因此,
+待拼接内容中的|\\|和\tn{par}(包括空行)等断行和分段命令将失效。此时,
+可以先用\tn{parbox}等命令或\env{minipage}等环境先构建一个垂直盒子,
+然后再将构造的垂直盒子作为一个对象进行拼接。
+
+\begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.45\linewidth,gobble=2]
+ \joinbox{
+ \parbox{8em}{
+ \centering
+ \LaTeX 科技排版
+
+ \LaTeX~Typesetting
+ }
+ }{\includegraphics{expl3}}
+\end{SideBySideExample}
+
+\begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.45\linewidth,gobble=2]
+ \joinboxes*{
+ {
+ \begin{minipage}{8em}
+ \centering
+ \LaTeX 科技排版
+
+ \LaTeX~Typesetting
+ \end{minipage}
+ },
+ {\includegraphics{expl3}}
+ }
+\end{SideBySideExample}
+
\title{
\pkg{joinbox} package for Joinning Boxs or Figures
\rlap{\makebox[2.5cm][r]{
@@ -389,17 +462,18 @@
\section{Introduction}
-\pkg{joinbox} is a box joinning package based on l3coffins developed with expl3,
-which provides the \cs{joinbox} and \cs{joinfigs} macros for vertical or horizontal
-joinning of boxes. Different types of joinning can be set up with the options or
-\cs{joinset} macro.
+\pkg{joinbox} is a box joinning package based on l3coffins developed with Expl3,
+which provides the \cs{joinbox}, \cs{joinboxes} and \cs{joinfigs} macros for
+vertical or horizontal joinning of boxes. The typout baseline, size and seperated
+space can be set up with the options or \cs{joinset} macro.
Boxes can be joined vertically or horizontally. When using vertical joinning, all
boxes to be joined will keep same width, while when using horizontal joined, all
boxes to be joined will keep same height.
-The \cs{joinbox} and \cs{joinfigs} macros without star are used for vertical joinning,
-while the \cs{joinbox*} and \cs{joinfigs*} with star are used for horizontal joinning.
+The \cs{joinbox}, \cs{joinboxes} and \cs{joinfigs} macros without star are used
+for vertical joinning, while the \cs{joinbox*}, \cs{joinboxes*} and
+\cs{joinfigs*} with star are used for horizontal joinning.
\section{Interfaces}
@@ -417,7 +491,7 @@ while the \cs{joinbox*} and \cs{joinfigs*} with star are used for horizontal joi
\marg{content2} to specify the objects to be joined. The contents will
be placed in the coffin respectively and then joined.
- \marg{content1} or \marg{content2}can be null, but both cannot be null at
+ \marg{content1} or \marg{content2} can be null, but both cannot be null at
the same time.
In the \oarg{options}, the typeout baseline, typeout size
@@ -489,7 +563,7 @@ bottom and top edges of the bounding box (i.e. the “vertical centre”);
\end{Description}
\begin{noteen}
In most cases, you can omit the baseline key names and write only it's value.
- But the value must be t, vc or b.
+ But the value must be t, vc, H or b.
\end{noteen}
\begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.45\linewidth,gobble=2]
@@ -602,6 +676,8 @@ The \tn{joinbox} \tn{joinboxes} can be nested to get complex joinning.
\subsection{Vertical Joinning}
+When using vertical joinning, all boxes to be joined will keep same width.
+
\begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.45\linewidth,gobble=2]
\joinfigs[outlen=3cm, sep=5pt]
{latexframe, tl-lion, expl3}
@@ -609,6 +685,8 @@ The \tn{joinbox} \tn{joinboxes} can be nested to get complex joinning.
\subsection{Horizontal Joinning}
+When using horizontal joined, all boxes to be joined will keep same height.
+
\begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.45\linewidth,gobble=2]
\joinfigs*[outlen=1.3cm, sep=5pt]
{latexframe, tl-lion, expl3}
@@ -630,7 +708,75 @@ can be nested for complex image joinning.
}
\end{SideBySideExample}
-\end{documentation}
+\begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.45\linewidth,gobble=2]
+ \joinboxes*[0.15\textheight, sep=5pt]{%
+ {
+ \joinfigs[0.25\textwidth]
+ {latexframe, tl-lion, expl3}
+ },
+ {
+ \joinfigs[0.25\textwidth]
+ {tl-lion, latexframe,expl3}
+ },
+ {
+ \joinfigs[0.25\textwidth]
+ {expl3, tl-lion, latexframe}
+ }
+ }
+\end{SideBySideExample}
+
+\section{Single Joinning}
+
+The \tn{joinbox}, \tn{joinboxes}, or \tn{joinfigs} macros can also be
+used to ``pseudo-joinning'' only one object, in which case the baseline
+and size of the output can be adjusted with the options.
+
+\begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.45\linewidth,gobble=2]
+ \joinbox{Hello \LaTeX}{}
+ \joinbox[4cm]{}{Hello \LaTeX}
+
+ \joinboxes{Hello \LaTeX}
+\end{SideBySideExample}
+
+\begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.45\linewidth,gobble=2]
+ baseline->\joinfigs[vc,4cm]{latexframe}
+\end{SideBySideExample}
+
+\section{Vertical Box Joinning}
+
+Since joinbox is realized by constructing two internal boxes based on
+the \tn{hcoffin_set:Nn} Expl3 function, line breaking and new paragraph
+macros such as |\\| and \tn{par}(including blank lines) in the content
+to be joined will be invalid. In this case, you can first construct a
+vertical box using commands such as \tn{parbox} or environments such as
+|minipage|, and then join the constructed vertical box as an object.
+
+\begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.45\linewidth,gobble=2]
+ \joinbox{
+ \parbox{8em}{
+ \centering
+ Hello \LaTeX
+
+ \LaTeX~Typesetting
+ }
+ }{\includegraphics{expl3}}
+\end{SideBySideExample}
+
+\begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.45\linewidth,gobble=2]
+ \joinboxes*{
+ {
+ \begin{minipage}{8em}
+ \centering
+ Hello \LaTeX
+
+ \LaTeX~Typesetting
+ \end{minipage}
+ },
+ {\includegraphics{expl3}}
+ }
+\end{SideBySideExample}
+
+\end{documentation}
\end{document}
diff --git a/macros/latex/contrib/mathfont/README.txt b/macros/latex/contrib/mathfont/README.txt
index 6a7a6ca9ca..497feab233 100644
--- a/macros/latex/contrib/mathfont/README.txt
+++ b/macros/latex/contrib/mathfont/README.txt
@@ -1,7 +1,7 @@
-LaTeX package mathfont version 2.2a installation information,
-released December 2022.
+LaTeX package mathfont version 2.2b installation information,
+released August 2023.
-This file is README.txt from version 2.2a of the free and
+This file is README.txt from version 2.2b of the free and
open-source LaTeX package "mathfont," to be used with the
XeTeX or LuaTeX engines. The package is designed to adapt
text fonts for use in math mode, and if you typeset your
@@ -13,9 +13,10 @@ big operators, and a MathConstants table to your font.
To install mathfont automatically, update your TeXLive or
MacTeX distribution or use a package manager such as tlmgr.
-To install mathfont manually, you need to generate the
-package file mathfont.sty from mathfont_code.dtx. You can
-do this in two ways:
+To install mathfont manually requires two steps as follows.
+
+Step 1: You need to generate the package file mathfont.sty
+from mathfont_code.dtx. You can do this in two ways:
(1) Running Plain TeX on mathfont_code.dtx will create
mathfont.sty as well as several other tex files
@@ -25,20 +26,22 @@ do this in two ways:
files listed in point (1) including mathfont.sty as
well as mathfont_code.pdf.
-Once you have created mathfont.sty, you should move it
-into a directory searchable by TeX to complete the
-installation.
+Step 2: Once you have created mathfont.sty, you should
+move it into a directory searchable by TeX to complete the
+installation. If you are unsure how to do this, consult
+your TeX distribution.
*********************************************************
Besides this README, the installation contains the following
items:
- (1) mathfont_code.dtx: the primary file. See above for
- instructions to generate mathfont.sty from this file
- and complete the installation.
+ (1) mathfont_code.dtx: the main file. See above for
+ instructions to generate mathfont.sty from this
+ file and complete the installation.
- (2) mathfont_code.pdf: documentation of the package code.
+ (2) mathfont_code.pdf: documentation of the package
+ code.
(3) mathfont_symbol_list.pdf: a list of symbols that
mathfont provides access to.
@@ -54,7 +57,7 @@ through (5) above.
*********************************************************
-Copyright 2018-2022 by Conrad Kosowsky
+Copyright 2018-2023 by Conrad Kosowsky
This Work may be used, distributed, and modified under the
terms of the LaTeX Public Project License, version 1.3c or
diff --git a/macros/latex/contrib/mathfont/mathfont_code.dtx b/macros/latex/contrib/mathfont/mathfont_code.dtx
index d1129f6fe1..c2e87863dd 100644
--- a/macros/latex/contrib/mathfont/mathfont_code.dtx
+++ b/macros/latex/contrib/mathfont/mathfont_code.dtx
@@ -1,10 +1,11 @@
% \iffalse ---!!! FIRST META-COMMENT !!!---
%
%
-% This file is mathfont_code.dtx from version 2.2a of the
+% This file is mathfont_code.dtx from version 2.2b of the
% free and open-source LaTeX package "mathfont," released
-% December 2022, to be used with the XeTeX or LuaTeX engines.
-% Running Plain TeX mathfont_code.dtx will produce the
+% August 2023, to be used with the XeTeX or LuaTeX engines.
+%
+% Running Plain TeX on mathfont_code.dtx will produce the
% following files:
%
% (1) the package file mathfont.sty;
@@ -42,12 +43,12 @@
% \iffalse ---!!! SECOND META-COMMENT !!!---
%
%
-% This file is from version 2.2a of the free and open-source
-% LaTeX package "mathfont," released December 2022, to be used
+% This file is from version 2.2b of the free and open-source
+% LaTeX package "mathfont," released August 2023, to be used
% with the XeTeX or LuaTeX engines. (As of version 2.0, LuaTeX
% is recommended.)
%
-% Copyright 2018-2022 by Conrad Kosowsky
+% Copyright 2018-2023 by Conrad Kosowsky
%
% This Work may be used, distributed, and modified under the
% terms of the LaTeX Public Project License, version 1.3c or
@@ -153,12 +154,12 @@
\askforoverwritefalse
\preamble
-This file is from version 2.2a of the free and open-source
-LaTeX package "mathfont," released December 2022, to be used
+This file is from version 2.2b of the free and open-source
+LaTeX package "mathfont," released August 2023, to be used
with the XeTeX or LuaTeX engines. (As of version 2.0, LuaTeX
is recommended.)
-Copyright 2018-2022 by Conrad Kosowsky
+Copyright 2018-2023 by Conrad Kosowsky
This Work may be used, distributed, and modified under the
terms of the LaTeX Public Project License, version 1.3c or
@@ -219,21 +220,20 @@ For more information, see mathfont_code.dtx. Happy TeXing!
\file{mathfont_example_roboto.tex}{\from{mathfont_code.dtx}{roboto}}
\file{mathfont_example_typey.tex}{\from{mathfont_code.dtx}{typey}}}
\catcode`\ =12\relax
-\message{^^J
-****************************************************^^J
-* *^^J
-* To finish the installation, move the following *^^J
-* file into a directory searchable by TeX once *^^J
-* mathfont_code.dtx finishes compiling: *^^J
-* *^^J
-* mathfont.sty *^^J
-* *^^J
-****************************************************^^J^^J^^J^^J}
+\immediate\write0{^^J%
+***************************************************^^J%
+* Step 1 of the mathfont installation complete! *^^J%
+***************************************************^^J^^J%
+***************************************************^^J%
+* To finish the installation, move mathfont.sty *^^J%
+* into a directory searchable by TeX once *^^J%
+* mathfont_code.dtx is done typesetting *^^J%
+***************************************************^^J^^J}
\endgroup
\ifx\LaTeX\undefined
- \message{Plain TeX format used; quitting now.}
- \message{To create mathfont_code.pdf, run^^J%
- mathfont_code.dtx through LaTeX.^^J}
+ \immediate\write0{Plain TeX format used; quitting now.}
+ \immediate\write0{To create mathfont_code.pdf, run^^J%
+ mathfont_code.dtx through LaTeX.^^J^^J}
\expandafter\end
\fi
%</batchfile>
@@ -246,6 +246,7 @@ For more information, see mathfont_code.dtx. Happy TeXing!
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{multirow}
+\usepackage{enumitem}
\c@IndexColumns=2
\c@topnumber\@ne
\columnsep=20pt
@@ -284,7 +285,7 @@ For more information, see mathfont_code.dtx. Happy TeXing!
% \fi
%
%
-% \CheckSum{6619}
+% \CheckSum{6631}
% \init@checksum
%
%
@@ -393,7 +394,7 @@ For more information, see mathfont_code.dtx. Happy TeXing!
% First and foremost, the package needs to declare itself.
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{mathfont}[2022/12/05 v. 2.2a Package mathfont]
+\ProvidesPackage{mathfont}[2023/08/21 v. 2.2b Package mathfont]
% \end{macrocode}
% We specify conditionals that we will use later in handling options and setup.
% \begin{macrocode}
@@ -449,38 +450,34 @@ For more information, see mathfont_code.dtx. Happy TeXing!
\M@XeTeXLuaTeXtrue
\fi
% \end{macrocode}
-% The package can raise two fatal errors: one if the engine is not \XeTeX\ or Lua\TeX\ (and cannot load OpenType fonts) and one if \TeX\ cannot find the \textsf{luaotfload} package. In this case, the package will stop loading, so we want a particularly conspicuous error message.
-%
-% The error message itself is organized as follows. For each message, we check the appropriate conditional to determine if we need to raise the error. If yes, we change |+| to active and define it to be equal to a space character. We use |+| to print multiple spaces inside the error message, and we put the catcode change inside a group to keep it local.\indexpage{catcode changes} We define a |\GenericError| inside a macro and then call the macro for a cleaner error message. The |\@gobbletwo| eats the extra period and return that \LaTeX\ adds to the error message. Notice that we |\endgroup| immediately after issuing the error\textemdash this is because we need |\M@NoFontspecError| to both tokenize its definition and then evaluate while |+| has catcode 13. Otherwise, \TeX\ will issue an |\inaccessible| error. However, we want |\AtBeginDocument| and |\endinput| outside the group. The |\expandafter| means that we expand the final |\fi| before |\endinput|, which balances the original conditional.\indexpage{unable to load}\indexpage{missing xetex or luatex=missing \XeTeX\ or Lua\TeX}
+% The package can raise two fatal errors: one if the engine is not \XeTeX\ or Lua\TeX\ (and cannot load OpenType fonts) and one if \TeX\ cannot find the \textsf{luaotfload} package. In both cases, the package will stop loading, so we want a particularly conspicuous error message. For each message, we check the appropriate conditional to determine if we need to raise the error. If yes, we change space to catcode 12 inside a group.\indexpage{catcode changes} We define a |\GenericError| inside a macro and then call the macro for a cleaner error context line. The |\@gobbletwo| eats the extra period and return that \LaTeX\ adds to the error message. Notice that we expand the error before the |\endgroup|\textemdash this is because we need to switch |\M@NoFontspecError| with its replacement text while it is still defined before we leave the group. At the same time, we want |\AtBeginDocument| and |\endinput| outside the group. The second |\expandafter| means that we expand the final |\fi| before |\endinput|, which balances the original conditional.\indexpage{unable to load}\indexpage{missing xetex or luatex=missing \XeTeX\ or Lua\TeX}
% \begin{macrocode}
\ifM@XeTeXLuaTeX\else
- \begingroup
- \catcode`\+=\active
- \def+{ }
- \def\M@XeTeXLuaTeXError{\GenericError{}
- {\MessageBreak\MessageBreak
- Package mathfont error:
- \MessageBreak\MessageBreak
- +*************************\MessageBreak
- +*+++++++++++++++++++++++*\MessageBreak
- +*+++++++UNABLE TO+++++++*\MessageBreak
- +*+++++LOAD MATHFONT+++++*\MessageBreak
- +*+++++++++++++++++++++++*\MessageBreak
- +*+++++Missing XeTeX+++++*\MessageBreak
- +*+++++++or LuaTeX+++++++*\MessageBreak
- +*+++++++++++++++++++++++*\MessageBreak
- +*************************\MessageBreak\@gobbletwo}
- {See the mathfont package documentation for explanation.}
- {I need XeTeX or LuaTeX to make mathfont\MessageBreak
- work properly. It looks like the current\MessageBreak
- engine is something else, so I'm going to\MessageBreak
- stop reading in the package file now. (You\MessageBreak
- won't be able to use commands from mathfont\MessageBreak
- in your document.) To make mathfont work\MessageBreak
- correctly, please retypeset your document\MessageBreak
- with one of those two engines.^^J}}
- \M@XeTeXLuaTeXError
- \endgroup
+\begingroup
+\catcode`\ =12\relax
+\def\M@XeTeXLuaTeXError{\GenericError{}%
+{\MessageBreak\MessageBreak
+Package mathfont error:%
+\MessageBreak\MessageBreak
+*************************\MessageBreak
+* *\MessageBreak
+* UNABLE TO *\MessageBreak
+* LOAD MATHFONT *\MessageBreak
+* *\MessageBreak
+* Missing XeTeX *\MessageBreak
+* or LuaTeX *\MessageBreak
+* *\MessageBreak
+*************************\MessageBreak\@gobbletwo}%
+{See the mathfont package documentation for explanation.}%
+{I need XeTeX or LuaTeX to use mathfont. It\MessageBreak
+looks like the current engine is something\MessageBreak
+else, so I'm going to stop reading in the\MessageBreak
+package file now. (You won't be able to use\MessageBreak
+commands from mathfont in your document.) To\MessageBreak
+load mathfont correctly, please retypeset your\MessageBreak
+document with one of those two engines.^^J}}%
+\expandafter\endgroup
+\M@XeTeXLuaTeXError
\AtEndOfPackage{\typeout{:: mathfont :: Failed to load\on@line.}}
\expandafter\endinput % we should \endinput with a balanced conditional
\fi
@@ -489,7 +486,8 @@ For more information, see mathfont_code.dtx. Happy TeXing!
% \begin{macrocode}
\ifdefined\directlua
\M@adjust@fonttrue % if engine is LuaTeX, adjust font by default
- \IfFileExists{luaotfload.sty}{\M@Noluaotfloadfalse}{\M@Noluaotfloadtrue}
+ \IfFileExists{luaotfload.sty}
+ {\M@Noluaotfloadfalse\RequirePackage{luaotfload}}{\M@Noluaotfloadtrue}
\else
\PackageWarningNoLine{mathfont}{%
The current engine is XeTeX, but as\MessageBreak
@@ -499,40 +497,40 @@ For more information, see mathfont_code.dtx. Happy TeXing!
work with XeTeX}
\fi
% \end{macrocode}
-% If the engine is Lua\TeX, we absolutely must have \textsf{luaotfload} because Lua\TeX\ needs this package to load OpenType fonts. Before anything else, \TeX\ should check whether it can find |luaotfload.sty| and stop reading in \textsf{mathfont} if it cannot. Same command structure as before. Newer \LaTeX\ installations try to load \textsf{luaotfload} as part of the format, but it never hurts to double check.\indexpage{unable to load}\indexpage{cannot not find the file luaotfloadsty=cannot find the file \texttt{luaotfload}}
+% If the engine is Lua\TeX, we absolutely must have \textsf{luaotfload} because Lua\TeX\ needs this package to load OpenType fonts. Before anything else, \TeX\ should check whether it can find |luaotfload.sty| and stop reading in \textsf{mathfont} if it cannot. Same command structure as before. Newer \LaTeX\ versions load \textsf{luaotfload} as part of the format, but it never hurts to double check.\indexpage{unable to load}\indexpage{cannot not find the file luaotfloadsty=cannot find the file \texttt{luaotfload}}
% \begin{macrocode}
\ifM@Noluaotfload % false by default; true if LuaTeX AND no luaotfload.sty
- \begingroup
- \catcode`\+=\active
- \def+{ }
- \def\M@NoluaotfloadError{\GenericError{}
- {\MessageBreak\MessageBreak
- Package mathfont error:
- \MessageBreak\MessageBreak
- +*************************\MessageBreak
- +*+++++++++++++++++++++++*\MessageBreak
- +*+++++++UNABLE TO+++++++*\MessageBreak
- +*+++++LOAD MATHFONT+++++*\MessageBreak
- +*+++++++++++++++++++++++*\MessageBreak
- +*++++Cannot find the++++*\MessageBreak
- +*++file luaotfload.sty++*\MessageBreak
- +*+++++++++++++++++++++++*\MessageBreak
- +*************************\MessageBreak\@gobbletwo}
- {You are likely seeing this message because you haven't^^J%
- installed luaotfload. Check your TeX distribution for a^^J%
- list of the packages on your system. See the mathfont^^J%
- documentation for further explanation.^^J}
- {It looks like the current engine is LuaTeX, so I\MessageBreak
- need the luaotfload package to make mathfont work\MessageBreak
- correctly. I can't find luaotfload, so I'm going to\MessageBreak
- stop reading in the mathfont package file now. (You\MessageBreak
- won't be able to use commands from mathfont in your\MessageBreak
- document.) To make mathfont work correctly, make\MessageBreak
- sure luaotfload.sty is installed on your computer\MessageBreak
- in a directory searchable by TeX or compile with\MessageBreak
- XeLaTeX.^^J}}
- \M@NoluaotfloadError
- \endgroup
+\begingroup
+\catcode`\ =12\relax
+\def\M@NoluaotfloadError{\GenericError{}%
+{\MessageBreak\MessageBreak
+Package mathfont error:%
+\MessageBreak\MessageBreak
+*************************\MessageBreak
+* *\MessageBreak
+* UNABLE TO *\MessageBreak
+* LOAD MATHFONT *\MessageBreak
+* *\MessageBreak
+* Cannot find the *\MessageBreak
+* file luaotfload.sty *\MessageBreak
+* *\MessageBreak
+*************************\MessageBreak\@gobbletwo}%
+{You are likely seeing this message because you haven't^^J%
+installed luaotfload. Check your TeX distribution for a^^J%
+list of the packages on your system.^^J^^J%
+See the mathfont documentation for further explanation.}%
+{You're in trouble here. It looks like the current\MessageBreak
+engine is LuaTeX, so I need the luaotfload package\MessageBreak
+to make mathfont work properly. However, I can't\MessageBreak
+find luaotfload, which likely means something is\MessageBreak
+wrong with your TeX installation. I'm going to stop\MessageBreak
+reading in the mathfont package file. (You won't be\MessageBreak
+able to use commands from mathfont in your document.)\MessageBreak
+To load mathfont work correctly, make sure you have\MessageBreak
+installed luaotfload.sty in a directory searchable\MessageBreak
+by TeX or compile with XeLaTeX.^^J}}%
+\expandafter\endgroup
+\M@NoluaotfloadError
\AtEndOfPackage{\typeout{:: mathfont :: Failed to load\on@line.}}
\expandafter\endinput % we should \endinput with a balanced conditional
\fi
@@ -546,7 +544,7 @@ For more information, see mathfont_code.dtx. Happy TeXing!
instead. For more information,\MessageBreak
see the mathfont documentation.}}
% \end{macrocode}
-% Now we code the package options. The deprecated options now cause an error.
+% Now we code the package options. The deprecated options cause an error.
% \begin{macrocode}
\DeclareOption{packages}{%
\M@Optiondeprecated{packages}
@@ -628,7 +626,7 @@ For more information, see mathfont_code.dtx. Happy TeXing!
{Your package option "adjust" was ignored.\MessageBreak
This option works only with LuaTeX, and it\MessageBreak
looks like the current engine is XeTeX. To\MessageBreak
- enable Lua-based font adjustments, compile\MessageBreak
+ enable Lua-based font adjustments, typeset\MessageBreak
with LuaLaTeX.^^J}}
\M@adjust@fontfalse
\fi
@@ -1000,30 +998,30 @@ For more information, see mathfont_code.dtx. Happy TeXing!
% Default shapes.
% \indexpage{keyword options=keyword options for \texttt{\char`\\mathfont}}
% \begin{macrocode}
-\def\M@uppershape{italic} % latin upper
-\def\M@lowershape{italic} % latin lower
-\def\M@diacriticsshape{upright} % diacritics
-\def\M@greekuppershape{upright} % greek upper
-\def\M@greeklowershape{italic} % greek lower
-\def\M@agreekuppershape{upright} % ancient greek upper
-\def\M@agreeklowershape{italic} % ancient greek lower
+\def\M@uppershape{italic} % latin upper
+\def\M@lowershape{italic} % latin lower
+\def\M@diacriticsshape{upright} % diacritics
+\def\M@greekuppershape{upright} % greek upper
+\def\M@greeklowershape{italic} % greek lower
+\def\M@agreekuppershape{upright} % ancient greek upper
+\def\M@agreeklowershape{italic} % ancient greek lower
\def\M@cyrillicuppershape{upright} % cyrillic upper
-\def\M@cyrilliclowershape{italic} % cyrillic lower
-\def\M@hebrewshape{upright} % hebrew
-\def\M@digitsshape{upright} % numerals
-\def\M@operatorshape{upright} % operator font
-\def\M@delimitersshape{upright} % delimiters
-\def\M@radicalshape{upright} % surd
-\def\M@bigopsshape{upright} % big operators
-\def\M@extbigopsshape{upright} % extended big operators
-\def\M@symbolsshape{upright} % basic symbols
-\def\M@extsymbolsshape{upright} % extended symbols
-\def\M@arrowsshape{upright} % arrows
-\def\M@bbshape{upright} % blackboard bold
-\def\M@calshape{upright} % caligraphic
-\def\M@frakshape{upright} % fraktur
-\def\M@bcalshape{upright} % bold caligraphic
-\def\M@bfrakshape{upright} % bold fraktur
+\def\M@cyrilliclowershape{italic} % cyrillic lower
+\def\M@hebrewshape{upright} % hebrew
+\def\M@digitsshape{upright} % numerals
+\def\M@operatorshape{upright} % operator font
+\def\M@delimitersshape{upright} % delimiters
+\def\M@radicalshape{upright} % surd
+\def\M@bigopsshape{upright} % big operators
+\def\M@extbigopsshape{upright} % extended big operators
+\def\M@symbolsshape{upright} % basic symbols
+\def\M@extsymbolsshape{upright} % extended symbols
+\def\M@arrowsshape{upright} % arrows
+\def\M@bbshape{upright} % blackboard bold
+\def\M@calshape{upright} % caligraphic
+\def\M@frakshape{upright} % fraktur
+\def\M@bcalshape{upright} % bold caligraphic
+\def\M@bfrakshape{upright} % bold fraktur
% \end{macrocode}
% The |\M@keys| list stores all the possible keyword options, and |\M@defaultkeys| stores the character classes that |\mathfont| acts on by default.
% \indexpage{keyword options=keyword options for \texttt{\char`\\mathfont}}
@@ -1058,8 +1056,7 @@ For more information, see mathfont_code.dtx. Happy TeXing!
% We use |\M@split@colon| and |\M@strip@colon| for parsing the argument of |\mathfont|. If the user calls |\mathfont{|\meta{name}|:|\meta{features}|}|, we store the name in |\@tempbase| and the features in |\@tempfeatures|. If the user specifies a name only, then |\@tempfeatures| will be empty. Syntactically, we use |\M@strip@colon| to remove a final |:| the same way we removed a final |=| when we parsed the optional argument in the previous section.
% \?\@tempfeatures\?\@tempbase
% \begin{macrocode}
-\def\M@split@colon#1:#2\@nil{%
- \def\@tempbase{#1}
+\def\M@split@colon#1:#2\@nil{\def\@tempbase{#1}
\def\@tempfeatures{#2}}
\def\M@strip@colon#1:{#1}
% \end{macrocode}
@@ -1099,7 +1096,7 @@ For more information, see mathfont_code.dtx. Happy TeXing!
{<->"\@tempbase/BI:\M@otf@features;#2"}{}
\fi
% \end{macrocode}
-% Now do the same thing for the small caps variants. I make no promises that this will work. If a small caps font faces is separate from the main font file, \TeX\ won't be able to find it automatically. In that case, you will have to write your own |fd| file or |\DeclareFontShape| commands.
+% Now do the same thing for the small caps variants. I make no promises that this will work. If a small caps font face is separate from the main font file, \TeX\ won't be able to find it automatically. In that case, you will have to write your own |fd| file or |\DeclareFontShape| commands.
% \begin{macrocode}
\ifcsname TU/#1/\mddefault/\scdefault\endcsname
\else
@@ -1228,7 +1225,7 @@ For more information, see mathfont_code.dtx. Happy TeXing!
\@for\@j:=\M@keys\do{%
\ifx\@j#1
\let\@temperror\@gobble % eliminate error
- \@optionpresenttrue % set switch to true
+ \@optionpresenttrue % set switch to true
\fi}
\def\@j{empty} % if option is "empty," we do nothing
\ifx\@j#1
@@ -1247,7 +1244,7 @@ For more information, see mathfont_code.dtx. Happy TeXing!
\@for\@j:=roman,upright,italic\do{%
\ifx\@j#1
\let\@temperror\@gobble % eliminate error
- \@suboptionpresenttrue % set switch to true
+ \@suboptionpresenttrue % set switch to true
\fi}
\@temperror{#1}}
% \end{macrocode}
@@ -1256,10 +1253,10 @@ For more information, see mathfont_code.dtx. Happy TeXing!
% \begin{macrocode}
\def\M@strip@equals#1={#1}
\def\M@parse@option#1=#2\@nil{%
- \@optionpresentfalse % set switch to false by default
+ \@optionpresentfalse % set switch to false by default
\@suboptionpresentfalse % set switch to false by default
- \def\@temp@opt{#1} % store option
- \def\@temp@sub{#2} % store suboption
+ \def\@temp@opt{#1} % store option
+ \def\@temp@sub{#2} % store suboption
% \end{macrocode}
% After storing the option in |\@temp@opt| and suboption in |\@temp@sub|, check for errors. We check for errors by determining if (1) |\@tempa| is empty, meaning the user did not specify an option; or (2) |@tempb| is |=|, meaning the user typed |=| but did not follow it with a suboption.
% \begin{macrocode}
@@ -1433,8 +1430,8 @@ For more information, see mathfont_code.dtx. Happy TeXing!
% \begin{macrocode}
\edef\@tempa{\the\M@toks}
\ifx\@tempa\@empty
- \wlog{The \string\mathfont\space command on line \the\inputlineno\space
- did not change the font for any characters!}
+ \wlog{The \string\mathfont\space command on line
+ \the\inputlineno\space did not change the font for any characters!}
\else
\wlog{}
\typeout{:: mathfont :: Using font \@tempbase\space
@@ -1459,8 +1456,8 @@ For more information, see mathfont_code.dtx. Happy TeXing!
% \begin{macrocode}
\ifdefined\directlua
\let\M@SetMathConstants\relax
- \protected\def\mathconstantsfont{\@ifnextchar[{\@mathconstantsfont}
- {\@mathconstantsfont[upright]}}
+ \protected\def\mathconstantsfont{%
+ \@ifnextchar[{\@mathconstantsfont}{\@mathconstantsfont[upright]}}
\def\@mathconstantsfont[#1]#2{%
\edef\@tempa{\csname M@fontfamily@base@#2\endcsname}
\expandafter\ifx\@tempa\relax
@@ -1500,8 +1497,8 @@ For more information, see mathfont_code.dtx. Happy TeXing!
\endcsname % expands to \symMupright<id>
\csname TU/\m@th@const@nts@font
/\seriesdefault
- /\m@th@const@nts@font@sh@pe\endcsname
- % above \csname expands to \TU/<nfss family name>/m/<shape>
+ /\m@th@const@nts@font@sh@pe
+ \endcsname % expands to \TU/<nfss family name>/m/<shape>
\globaldefs\@ne
\expandafter\@gobbletwo\math@fonts % gobble to avoid infinite loop
\endgroup}
@@ -1519,7 +1516,7 @@ For more information, see mathfont_code.dtx. Happy TeXing!
%
% \section{Local Font Changes}\indexpage{local font changes}
%
-% This section deals with local font changes. The |\newmathfontcommand| creates macros that change the font for math alphabet characters and is basically a wrapper around |\DeclareMathAlphabet|. First we code |\M@check@csarg|, which accepts two arguments. The |#1| argument is the user-level command that called |\M@check@csarg|, which we use for error messaging, and |#2| should be a single control sequence. The way |\M@check@csarg| scans the following tokens is a bit tricky: (1) check the length of the argument using |\M@check@arglength|; and (2) check that the argument is a control sequence. If the user specifies an argument of the form |{..}|, i.e.\ extra text inside braces, the |\ifcat| will catch it and issue an error. If |\M@check@csarg| likes the input, it sets |\ifM@good@arg| to true, and otherwise, it sets |\ifM@arg@good| to false.
+% This section deals with local font changes. The |\newmathfontcommand| creates macros that change the font for math alphabet characters and is basically a wrapper around |\DeclareMathAlphabet|. First we code |\M@check@csarg|, which accepts two arguments. The |#1| argument is the user-level command that called |\M@check@csarg|, which we use for error messaging, and |#2| should be a single control sequence. The way |\M@check@csarg| scans the following tokens is a bit tricky: (1) check the length of the argument by seeing if |\@gobble| eats it completely; and (2) check that the argument is a control sequence. If the user specifies an argument of the form |{..}|, i.e.\ extra text inside braces, the |\ifcat| will catch it and issue an error. If |\M@check@csarg| likes the input, it sets |\ifM@good@arg| to true, and otherwise, it sets |\ifM@arg@good| to false.
% \begin{macrocode}
\def\M@check@csarg#1#2{%
\expandafter\ifx\expandafter\@nnil\@gobble#2\@nnil % good
@@ -1545,7 +1542,15 @@ For more information, see mathfont_code.dtx. Happy TeXing!
\fi}
\@onlypreamble\newmathfontcommand
% \end{macrocode}
-% Then define macros that create local font-changing commands with default series and shape information. Because they're all so similar, we metacode them. We define the commands themselves with |\define@newmath@cmd|. The argument structure is: |#1|---|\newmath|\meta{key} macro name; |#2|---font series; |#3|---font shape; |##1|---the control sequence that the user will specify; and |##2|---the user's font information. We feed |##1|, |##2|, |#2|, and |#3| to |\newmathfontcommand|, and we load |##2| with |\M@newfont|. Each |\newmath|\meta{key} macro will check its first argument using |\M@check@csarg| and then call |\newmathfontcommand| on both of its two arguments. We store the list of |\newmath|\meta{key} commands that we want to define with their series and shape information in |\M@default@newmath@cmds|, and we loop through it with |\@for|.
+% Then define macros that create local font-changing commands with default series and shape information. Because they're all so similar, we metacode them. We define the commands themselves with |\define@newmath@cmd|. The argument structure is:
+% \begin{itemize}[nosep]
+% \item |#1|---|\newmath|\meta{key} macro name
+% \item |#2|---font series
+% \item |#3|---font shape
+% \item |##1|---the user's control sequence
+% \item |##2|---the user's font information (family name)
+% \end{itemize}
+% We feed |##1|, |##2|, |#2|, and |#3| to |\newmathfontcommand|, and we load |##2| with |\M@newfont|. Each |\newmath|\meta{key} macro will check its first argument using |\M@check@csarg| and then call |\newmathfontcommand| on both of its two arguments. We store the list of |\newmath|\meta{key} commands that we want to define with their series and shape information in |\M@default@newmath@cmds|, and we loop through it with |\@for|.
% \begin{macrocode}
\def\M@define@newmath@cmd#1#2#3{%
\protected\def#1##1##2{%
@@ -1990,7 +1995,7 @@ For more information, see mathfont_code.dtx. Happy TeXing!
\M@fromCharmFilefalse
\endgroup}
% \end{macrocode}
-% This concludes the \TeX-based portion of font adjustments. The rest of this and the next two sections is the Lua script that adapts a text font for math mode. First, we create the |mathfont| table.
+% This concludes the \TeX-based portion of font adjustments. The rest of this section and the next two sections are the Lua code that adapts a text font for math mode. First, we create the |mathfont| table.
% \begin{macrocode}
\directlua{
mathfont = {}
@@ -2983,173 +2988,173 @@ luatexbase.add_to_callback("luaotfload.patch_font", mathfont.adjust_font,
%
% This section contains the default charm information for the characters that \textsf{mathfont} adjusts upon loading a font. We will make new variants in the private use area of the font. Lower-case Latin letters will fill unicode slots U+FF000 through U+FF021, which are located in the Supplemental Private Use Area-A portion of the unicode table.
% \begin{macrocode}
-mathfont:new_type_a(97, 1044480, {50, 50, -50, 0}) % a
-mathfont:new_type_a(98, 1044481, {50, 50, -50, 0}) % b
-mathfont:new_type_a(99, 1044482, {50, 50, 0, 0}) % c
-mathfont:new_type_a(100, 1044483, {50, -50, -50, 0}) % d
-mathfont:new_type_a(101, 1044484, {50, 50, 0, 0}) % e
-mathfont:new_type_a(102, 1044485, {200, 0, 0, 0}) % f
-mathfont:new_type_a(103, 1044486, {100, 50, -50, 0}) % g
-mathfont:new_type_a(104, 1044487, {50, 0, -50, 0}) % h
-mathfont:new_type_a(105, 1044488, {50, 100, -100, 0}) % i
-mathfont:new_type_a(106, 1044489, {400, 50, -50, 0}) % j
-mathfont:new_type_a(107, 1044490, {50, 50, -100, 0}) % k
+mathfont:new_type_a(97, 1044480, {50, 50, -50, 0}) % a
+mathfont:new_type_a(98, 1044481, {50, 50, -50, 0}) % b
+mathfont:new_type_a(99, 1044482, {50, 50, 0, 0}) % c
+mathfont:new_type_a(100, 1044483, {50, -50, -50, 0}) % d
+mathfont:new_type_a(101, 1044484, {50, 50, 0, 0}) % e
+mathfont:new_type_a(102, 1044485, {200, 0, 0, 0}) % f
+mathfont:new_type_a(103, 1044486, {100, 50, -50, 0}) % g
+mathfont:new_type_a(104, 1044487, {50, 0, -50, 0}) % h
+mathfont:new_type_a(105, 1044488, {50, 100, -100, 0}) % i
+mathfont:new_type_a(106, 1044489, {400, 50, -50, 0}) % j
+mathfont:new_type_a(107, 1044490, {50, 50, -100, 0}) % k
mathfont:new_type_a(108, 1044491, {100, 150, -100, 0}) % l
-mathfont:new_type_a(109, 1044492, {50, 0, 0, 0}) % m
-mathfont:new_type_a(110, 1044493, {50, 0, 0, 0}) % n
-mathfont:new_type_a(111, 1044494, {50, 0, 0, 0}) % o
-mathfont:new_type_a(112, 1044495, {200, 50, -50, 0}) % p
-mathfont:new_type_a(113, 1044496, {50, 0, -50, 0}) % q
-mathfont:new_type_a(114, 1044497, {100, 100, -50, 0}) % r
-mathfont:new_type_a(115, 1044498, {50, 50, -50, 0}) % s
-mathfont:new_type_a(116, 1044499, {50, 50, -50, 0}) % t
-mathfont:new_type_a(117, 1044500, {0, 50, 0, 0}) % u
-mathfont:new_type_a(118, 1044501, {0, 50, -50, 0}) % v
-mathfont:new_type_a(119, 1044502, {0, 50, 0, 0}) % w
-mathfont:new_type_a(120, 1044503, {50, 0, -50, 0}) % x
-mathfont:new_type_a(121, 1044504, {150, 50, -50, 0}) % y
-mathfont:new_type_a(122, 1044505, {100, 50, -100, 0}) % z
+mathfont:new_type_a(109, 1044492, {50, 0, 0, 0}) % m
+mathfont:new_type_a(110, 1044493, {50, 0, 0, 0}) % n
+mathfont:new_type_a(111, 1044494, {50, 0, 0, 0}) % o
+mathfont:new_type_a(112, 1044495, {200, 50, -50, 0}) % p
+mathfont:new_type_a(113, 1044496, {50, 0, -50, 0}) % q
+mathfont:new_type_a(114, 1044497, {100, 100, -50, 0}) % r
+mathfont:new_type_a(115, 1044498, {50, 50, -50, 0}) % s
+mathfont:new_type_a(116, 1044499, {50, 50, -50, 0}) % t
+mathfont:new_type_a(117, 1044500, {0, 50, 0, 0}) % u
+mathfont:new_type_a(118, 1044501, {0, 50, -50, 0}) % v
+mathfont:new_type_a(119, 1044502, {0, 50, 0, 0}) % w
+mathfont:new_type_a(120, 1044503, {50, 0, -50, 0}) % x
+mathfont:new_type_a(121, 1044504, {150, 50, -50, 0}) % y
+mathfont:new_type_a(122, 1044505, {100, 50, -100, 0}) % z
mathfont:new_type_a(305, 1044506, {100, 100, -150, 0}) % \imath
-mathfont:new_type_a(567, 1044507, {700, 50, -150, 0}) % \jmath
+mathfont:new_type_a(567, 1044507, {700, 50, -150, 0}) % \jmath
% \end{macrocode}
% Upper-case Latin letters will fill unicode slots U+FF020 through U+FF039.
% \begin{macrocode}
-mathfont:new_type_a(65, 1044512, {50, 0, 150, 0}) % A
-mathfont:new_type_a(66, 1044513, {50, 0, 0, 0}) % B
-mathfont:new_type_a(67, 1044514, {0, 0, 0, 0}) % C
-mathfont:new_type_a(68, 1044515, {50, 0, -50, 0}) % D
-mathfont:new_type_a(69, 1044516, {50, 0, 0, 0}) % E
-mathfont:new_type_a(70, 1044517, {50, 0, 0, 0}) % F
-mathfont:new_type_a(71, 1044518, {0, 0, 0, 0}) % G
-mathfont:new_type_a(72, 1044519, {50, 0, -50, 0}) % H
-mathfont:new_type_a(73, 1044520, {100, 0, 0, 0}) % I
-mathfont:new_type_a(74, 1044521, {50, 0, 100, 0}) % J
-mathfont:new_type_a(75, 1044522, {50, 0, 0, 0}) % K
+mathfont:new_type_a(65, 1044512, {50, 0, 150, 0}) % A
+mathfont:new_type_a(66, 1044513, {50, 0, 0, 0}) % B
+mathfont:new_type_a(67, 1044514, {0, 0, 0, 0}) % C
+mathfont:new_type_a(68, 1044515, {50, 0, -50, 0}) % D
+mathfont:new_type_a(69, 1044516, {50, 0, 0, 0}) % E
+mathfont:new_type_a(70, 1044517, {50, 0, 0, 0}) % F
+mathfont:new_type_a(71, 1044518, {0, 0, 0, 0}) % G
+mathfont:new_type_a(72, 1044519, {50, 0, -50, 0}) % H
+mathfont:new_type_a(73, 1044520, {100, 0, 0, 0}) % I
+mathfont:new_type_a(74, 1044521, {50, 0, 100, 0}) % J
+mathfont:new_type_a(75, 1044522, {50, 0, 0, 0}) % K
mathfont:new_type_a(76, 1044523, {50, 0, -180, 0}) % L
-mathfont:new_type_a(77, 1044524, {50, 0, -50, 0}) % M
-mathfont:new_type_a(78, 1044525, {50, 0, -50, 0}) % N
-mathfont:new_type_a(79, 1044526, {0, 0, 0, 0}) % O
-mathfont:new_type_a(80, 1044527, {0, 0, -50, 0}) % P
-mathfont:new_type_a(81, 1044528, {0, 50, 0, 0}) % Q
-mathfont:new_type_a(82, 1044529, {50, 0, -50, 0}) % R
-mathfont:new_type_a(83, 1044530, {0, 0, -50, 0}) % S
-mathfont:new_type_a(84, 1044531, {0, 0, -50, 0}) % T
-mathfont:new_type_a(85, 1044532, {0, 0, -50, 0}) % U
-mathfont:new_type_a(86, 1044533, {0, 50, 0, 0}) % V
-mathfont:new_type_a(87, 1044534, {0, 50, -50, 0}) % W
-mathfont:new_type_a(88, 1044535, {50, 0, 0, 0}) % X
-mathfont:new_type_a(89, 1044536, {0, 0, -50, 0}) % Y
-mathfont:new_type_a(90, 1044537, {50, 0, -50, 0}) % Z
+mathfont:new_type_a(77, 1044524, {50, 0, -50, 0}) % M
+mathfont:new_type_a(78, 1044525, {50, 0, -50, 0}) % N
+mathfont:new_type_a(79, 1044526, {0, 0, 0, 0}) % O
+mathfont:new_type_a(80, 1044527, {0, 0, -50, 0}) % P
+mathfont:new_type_a(81, 1044528, {0, 50, 0, 0}) % Q
+mathfont:new_type_a(82, 1044529, {50, 0, -50, 0}) % R
+mathfont:new_type_a(83, 1044530, {0, 0, -50, 0}) % S
+mathfont:new_type_a(84, 1044531, {0, 0, -50, 0}) % T
+mathfont:new_type_a(85, 1044532, {0, 0, -50, 0}) % U
+mathfont:new_type_a(86, 1044533, {0, 50, 0, 0}) % V
+mathfont:new_type_a(87, 1044534, {0, 50, -50, 0}) % W
+mathfont:new_type_a(88, 1044535, {50, 0, 0, 0}) % X
+mathfont:new_type_a(89, 1044536, {0, 0, -50, 0}) % Y
+mathfont:new_type_a(90, 1044537, {50, 0, -50, 0}) % Z
% \end{macrocode}
% The Greek characters will be type |u|, so we don't need extra unicode slots for them. In future editions of \textsf{mathfont}, they may becoeme type |a| with adjusted bounding boxes, but I don't have immediate plans for such a change.
% \begin{macrocode}
-mathfont:new_type_u(945, {0, 0}) % \alpha
-mathfont:new_type_u(946, {0, 0}) % \beta
-mathfont:new_type_u(947, {-50, 0}) % \gamma
-mathfont:new_type_u(948, {0, 0}) % \delta
-mathfont:new_type_u(1013, {50, 0}) % \epsilon
-mathfont:new_type_u(950, {0, 0}) % \zeta
-mathfont:new_type_u(951, {-50, 0}) % \eta
-mathfont:new_type_u(952, {0, 0}) % \theta
-mathfont:new_type_u(953, {-50, 0}) % \iota
-mathfont:new_type_u(954, {0, 0}) % \kappa
+mathfont:new_type_u(945, {0, 0}) % \alpha
+mathfont:new_type_u(946, {0, 0}) % \beta
+mathfont:new_type_u(947, {-50, 0}) % \gamma
+mathfont:new_type_u(948, {0, 0}) % \delta
+mathfont:new_type_u(1013, {50, 0}) % \epsilon
+mathfont:new_type_u(950, {0, 0}) % \zeta
+mathfont:new_type_u(951, {-50, 0}) % \eta
+mathfont:new_type_u(952, {0, 0}) % \theta
+mathfont:new_type_u(953, {-50, 0}) % \iota
+mathfont:new_type_u(954, {0, 0}) % \kappa
mathfont:new_type_u(955, {-150, 0}) % lambda
-mathfont:new_type_u(956, {0, 0}) % \mu
-mathfont:new_type_u(957, {-50, 0}) % \nu
-mathfont:new_type_u(958, {0, 0}) % \xi
-mathfont:new_type_u(959, {0, 0}) % \omicron
+mathfont:new_type_u(956, {0, 0}) % \mu
+mathfont:new_type_u(957, {-50, 0}) % \nu
+mathfont:new_type_u(958, {0, 0}) % \xi
+mathfont:new_type_u(959, {0, 0}) % \omicron
mathfont:new_type_u(960, {-100, 0}) % \pi
-mathfont:new_type_u(961, {-50, 0}) % \rho
+mathfont:new_type_u(961, {-50, 0}) % \rho
mathfont:new_type_u(963, {-100, 0}) % \sigma
mathfont:new_type_u(964, {-100, 0}) % \tau
-mathfont:new_type_u(965, {-50, 0}) % \upsilon
-mathfont:new_type_u(981, {0, 0}) % \phi
-mathfont:new_type_u(967, {-50, 0}) % \chi
-mathfont:new_type_u(968, {-50, 0}) % \psi
-mathfont:new_type_u(969, {0, 0}) % \omega
-mathfont:new_type_u(976, {0, 0}) % \varbeta
-mathfont:new_type_u(949, {-50, 0}) % \varepsilon
-mathfont:new_type_u(977, {50, 0}) % \vartheta
+mathfont:new_type_u(965, {-50, 0}) % \upsilon
+mathfont:new_type_u(981, {0, 0}) % \phi
+mathfont:new_type_u(967, {-50, 0}) % \chi
+mathfont:new_type_u(968, {-50, 0}) % \psi
+mathfont:new_type_u(969, {0, 0}) % \omega
+mathfont:new_type_u(976, {0, 0}) % \varbeta
+mathfont:new_type_u(949, {-50, 0}) % \varepsilon
+mathfont:new_type_u(977, {50, 0}) % \vartheta
mathfont:new_type_u(1009, {-50, 0}) % \varrho
-mathfont:new_type_u(962, {-50, 0}) % \varsigma
-mathfont:new_type_u(966, {0, 0}) % \varphi
+mathfont:new_type_u(962, {-50, 0}) % \varsigma
+mathfont:new_type_u(966, {0, 0}) % \varphi
% \end{macrocode}
% Upper-case Greek characters. Same as previously.
% \begin{macrocode}
-mathfont:new_type_u(913, {0, 0}) % \Alpha
-mathfont:new_type_u(914, {0, 0}) % \Beta
-mathfont:new_type_u(915, {0, 0}) % \Gamma
-mathfont:new_type_u(916, {0, 0}) % \Delta
-mathfont:new_type_u(917, {0, 0}) % \Epsilon
-mathfont:new_type_u(918, {0, 0}) % \Zeta
-mathfont:new_type_u(919, {0, 0}) % \Eta
-mathfont:new_type_u(920, {0, 0}) % \Theta
-mathfont:new_type_u(921, {0, 0}) % \Iota
-mathfont:new_type_u(922, {0, 0}) % \Kappa
-mathfont:new_type_u(923, {0, 0}) % \Lambda
-mathfont:new_type_u(924, {0, 0}) % \Mu
-mathfont:new_type_u(925, {0, 0}) % \Nu
-mathfont:new_type_u(926, {0, 0}) % \Xi
-mathfont:new_type_u(927, {0, 0}) % \Omicron
-mathfont:new_type_u(928, {0, 0}) % \Pi
-mathfont:new_type_u(929, {0, 0}) % \Rho
-mathfont:new_type_u(931, {0, 0}) % \Sigma
-mathfont:new_type_u(932, {0, 0}) % \Tau
-mathfont:new_type_u(933, {0, 0}) % \Upsilon
-mathfont:new_type_u(934, {0, 0}) % \Phi
-mathfont:new_type_u(935, {0, 0}) % \Chi
-mathfont:new_type_u(936, {0, 0}) % \Psi
-mathfont:new_type_u(937, {0, 0}) % \Omega
-mathfont:new_type_u(1012, {0, 0}) % \varTheta
+mathfont:new_type_u(913, {0, 0}) % \Alpha
+mathfont:new_type_u(914, {0, 0}) % \Beta
+mathfont:new_type_u(915, {0, 0}) % \Gamma
+mathfont:new_type_u(916, {0, 0}) % \Delta
+mathfont:new_type_u(917, {0, 0}) % \Epsilon
+mathfont:new_type_u(918, {0, 0}) % \Zeta
+mathfont:new_type_u(919, {0, 0}) % \Eta
+mathfont:new_type_u(920, {0, 0}) % \Theta
+mathfont:new_type_u(921, {0, 0}) % \Iota
+mathfont:new_type_u(922, {0, 0}) % \Kappa
+mathfont:new_type_u(923, {0, 0}) % \Lambda
+mathfont:new_type_u(924, {0, 0}) % \Mu
+mathfont:new_type_u(925, {0, 0}) % \Nu
+mathfont:new_type_u(926, {0, 0}) % \Xi
+mathfont:new_type_u(927, {0, 0}) % \Omicron
+mathfont:new_type_u(928, {0, 0}) % \Pi
+mathfont:new_type_u(929, {0, 0}) % \Rho
+mathfont:new_type_u(931, {0, 0}) % \Sigma
+mathfont:new_type_u(932, {0, 0}) % \Tau
+mathfont:new_type_u(933, {0, 0}) % \Upsilon
+mathfont:new_type_u(934, {0, 0}) % \Phi
+mathfont:new_type_u(935, {0, 0}) % \Chi
+mathfont:new_type_u(936, {0, 0}) % \Psi
+mathfont:new_type_u(937, {0, 0}) % \Omega
+mathfont:new_type_u(1012, {0, 0}) % \varTheta
% \end{macrocode}
% We add the charm information for delimiters and other resizable characters. We divide the characters into four categories depending on how we want to magnify the base glyph to create large variants: delimiters, big operators, vertical characters, and the integral sign. We automate the process by putting charm information for each category of character into a separate table and feeding the whole thing to a wrapper around |:new_type_e|.
% \begin{macrocode}
local delim_glyphs = {40, % (
- 41, % )
- 47, % /
- 91, % [
- 92, % backslash
- 93, % ]
- 123, % {
- 125, % }
- 8249, % \lguil
- 8250, % \rguil
- 171, % \llguil
- 187, % \rrguil
+ 41, % )
+ 47, % /
+ 91, % [
+ 92, % backslash
+ 93, % ]
+ 123, % {
+ 125, % }
+ 8249, % \lguil
+ 8250, % \rguil
+ 171, % \llguil
+ 187, % \rrguil
1044508, % \fakelangle
1044509, % \fakerangle
1044510, % \fakellangle
1044511} % \fakerrangle
local big_op_glyphs = {33, % !
- 35, % #
- 36, % $
- 37, % %
- 38, % &
- 43, % +
- 63, % ?
- 64, % @
- 167, % \S
- 215, % \times
- 247, % \div
- 8719, % \prod
- 8721, % \sum
- 8720, % \coprod
- 8897, % \bigvee
- 8896, % \bigwedge
- 8899, % \bigcup
- 8898, % \bigcap
- 10753, % \bigoplus
- 10754, % \bigotimes
- 10752, % \bigodot
- 10757, % \bigsqcap
- 10758} % \bigsqcup
+ 35, % #
+ 36, % $
+ 37, % %
+ 38, % &
+ 43, % +
+ 63, % ?
+ 64, % @
+ 167, % \S
+ 215, % \times
+ 247, % \div
+ 8719, % \prod
+ 8721, % \sum
+ 8720, % \coprod
+ 8897, % \bigvee
+ 8896, % \bigwedge
+ 8899, % \bigcup
+ 8898, % \bigcap
+ 10753, % \bigoplus
+ 10754, % \bigotimes
+ 10752, % \bigodot
+ 10757, % \bigsqcap
+ 10758} % \bigsqcup
local vert_glyphs = {124, 8730} % | and \surd
local int_glyphs = {8747, % \intop
- 8748, % \iint
- 8749, % \iiint
- 8750, % \oint
- 8751, % \oiint
- 8752} % \oiiint
+ 8748, % \iint
+ 8749, % \iiint
+ 8750, % \oint
+ 8751, % \oiint
+ 8752} % \oiiint
% \end{macrocode}
% The variable |smash| will keep track of the unicode index used to store the smashed version of the character.
% \begin{macrocode}
@@ -3165,17 +3170,17 @@ local int_scale = {}
% Populate each table with magnification information. For every type |e| character we will create fifteen larger variants in the font. Delimiters stretch mostly vertically and some horzontally. Vertical characters stretch vertically only, so their horizontal scale factors are all constant. Big operators stretch the same in vertical and horizoontal directions.
% \begin{macrocode}
for i = 1, 15, 1 do
- delim_scale[2*i-1] = 1000 + 100*i % horizontal - delimiters
- delim_scale[2*i] = 1000 + 500*i % vertical - delimiters
+ delim_scale[2*i-1] = 1000 + 100*i % horizontal - delimiters
+ delim_scale[2*i] = 1000 + 500*i % vertical - delimiters
vert_scale[2*i-1] = 1000
- vert_scale[2*i] = 1000 + 500*i % vertical - vertically scaled chars
- big_op_scale[2*i-1] = 1000 + 100*i % horizontal - big operators
- big_op_scale[2*i] = 1000 + 100*i % vertical - big operators
+ vert_scale[2*i] = 1000 + 500*i % vertical - vertically scaled chars
+ big_op_scale[2*i-1] = 1000 + 100*i % horizontal - big operators
+ big_op_scale[2*i] = 1000 + 100*i % vertical - big operators
% \end{macrocode}
% The integral sign is particular. Visually, we would like an integral symbol that is larger than the large operators, which means that the integral sign should have no variants between the font's value of |\Umathoperatorsize| and the desired larger size. Accordingly, I decided it would be easiest to have large variants of the integral sign jump by large enough scale factors that the smallest variant larger than the regular size is already significantly larger than the |\Umathoperatorsize| setting in |populate_math_constants|. Effectively this means that the user should take the size of the integral operator as fixed and should set |\Umathoperatorsize| to make all other big operators the desired size.
% \begin{macrocode}
- int_scale[2*i-1] = 1000 + 500*i % horizontal - integral sign
- int_scale[2*i] = 1000 + 1500*i % vertical - integral sign
+ int_scale[2*i-1] = 1000 + 500*i % horizontal - integral sign
+ int_scale[2*i] = 1000 + 1500*i % vertical - integral sign
end
% \end{macrocode}
% We do not modify accent placement.
@@ -3677,7 +3682,7 @@ mathfont:add_extensible_variants(smash, int_glyphs, int_scale)
\let\M@operator@mathcodes\@empty
\fi
% \end{macrocode}
-% Then we change the |\operator@font| definition and if necessary change the math codes.
+% Then we change the |\operator@font| definition and, if applicable, change the math codes.
% \begin{macrocode}
\xdef\operator@font{\noexpand\mathgroup
\csname symM\M@operatorshape\@tempa\endcsname\M@operator@mathcodes}}
@@ -3935,7 +3940,6 @@ mathfont:add_extensible_variants(smash, int_glyphs, int_scale)
\let\bowtie\@undefined
\let\doteq\@undefined
\let\neq\@undefined
- \let\ng\@undefined
\DeclareMathSymbol{\wp}{\mathord}{\M@extsymbols@font}{"2118}
\DeclareMathSymbol{\Re}{\mathord}{\M@extsymbols@font}{"211C}
\DeclareMathSymbol{\Im}{\mathord}{\M@extsymbols@font}{"2111}
@@ -4067,7 +4071,6 @@ mathfont:add_extensible_variants(smash, int_glyphs, int_scale)
\DeclareMathSymbol{\sqsupsetneq}{\mathrel}{\M@extsymbols@font}{"22E5}
\DeclareMathSymbol{\neq}{\mathrel}{\M@extsymbols@font}{"2260}
\DeclareMathSymbol{\nl}{\mathrel}{\M@extsymbols@font}{"226E}
- \DeclareMathSymbol{\ng}{\mathrel}{\M@extsymbols@font}{"226F}
\DeclareMathSymbol{\nleq}{\mathrel}{\M@extsymbols@font}{"2270}
\DeclareMathSymbol{\ngeq}{\mathrel}{\M@extsymbols@font}{"2271}
\DeclareMathSymbol{\lneq}{\mathrel}{\M@extsymbols@font}{"2A87}
@@ -4103,7 +4106,14 @@ mathfont:add_extensible_variants(smash, int_glyphs, int_scale)
\DeclareMathSymbol{\succnapprox}{\mathrel}{\M@extsymbols@font}{"2ABA}
\DeclareMathSymbol{\nequiv}{\mathrel}{\M@extsymbols@font}{"2262}
% \end{macrocode}
-% If we're not adjusting the font, we need to declare |\nabla| here.
+% We handle |\ng| specially. The \LaTeX\ kernel defines |\ng| as a text symbol, so we define |\mathng| like for |\$|, etc.
+% \begin{macrocode}
+ \global\let\textng\ng
+ \let\ng\@undefined
+ \DeclareMathSymbol{\mathng}{\mathrel}{\M@extsymbols@font}{"226F}
+ \protected\gdef\ng{\ifmmode\mathng\else\textng\fi}
+% \end{macrocode}
+% If we're not adjusting the font, we declare |\nabla| here.
% \begin{macrocode}
\ifM@adjust@font\else
\DeclareMathSymbol{\nabla}{\mathord}{\M@extsymbols@font}{"2207}
@@ -4709,9 +4719,11 @@ mathfont:add_extensible_variants(smash, int_glyphs, int_scale)
% \version{2.2a}{December 2022\strut}
% \item bug fix for |\mathconstantsfont|
% \item bug fix for |\M@check@int|
-% \item removed |\makeatletter| from example files
% \item added |doc2| option to |ltxdoc| in \texttt{mathfont\_code.dtx}
%
+% \version{2.2b}{August 2023\strut}
+% \item minor changes to code and documentation
+% \item |\ng| now works in math (as not greater than) and text (as pronounciation symbol)
%
% \egroup
% \end{multicols*}
@@ -4731,7 +4743,7 @@ mathfont:add_extensible_variants(smash, int_glyphs, int_scale)
\usepackage{graphicx}
\usepackage{tabularx}
\usepackage{multirow}
-\usepackage{hyperref}
+\usepackage[implicit=false,colorlinks=true,allcolors=blue]{hyperref}
\usepackage{enumitem}
\SetEnumitemKey{special}{topsep=\smallskipamount,
itemsep=\smallskipamount,
@@ -4758,16 +4770,16 @@ mathfont:add_extensible_variants(smash, int_glyphs, int_scale)
\input mathfont_heading.tex
-Handling fonts in \TeX\ and \LaTeX\ is a notoriously difficult task because fonts are complicated.\footnote{The last 30 years have seen huge advances in loading fonts with \TeX. Donald Knuth originally designed \TeX\ to load fonts created with Metafont, and only more recent engines such as Jonathan Kew's \XeTeX\ and Hans Hagen, et al.'s Lua\TeX\ have extended \TeX's font-loading capabilities to unicode. \XeTeX\ supports OpenType and TrueType fonts natively, and Lua\TeX\ can load OpenType fonts through the \textsf{luaotfload} package. Information on \XeTeX\ is available at \link{https://tug.org/xetex/}, and information on Lua\TeX\ is available at the official website for Lua\TeX: \link{http://www.luatex.org/}. See also Ulrike Fischer, et al., ``\textsf{luaotfload}---OpenType `loader' for Plain \TeX\ and \LaTeX,'' \link{https://ctan.org/pkg/luaotfload}.} The \textsf{mathfont} package loads TrueType and OpenType fonts for use in math mode, and this document explains the package's user-level commands. For version history and code implementation, see |mathfont_code.pdf|, and for a list of all symbols accessible with \textsf{mathfont}, see |mathfont_symbol_list.pdf|. The \textsf{mathfont} installation also includes four example files, and all \textsf{mathfont} pdf documentation files are available on \textsc{ctan}. Because unicode text fonts outnumber unicode math fonts, I hope that my package will expand the set of possibilities for typesetting math in \LaTeX.
+Handling fonts in \TeX\ and \LaTeX\ is a notoriously difficult task because fonts are complicated.\footnote{The last 30 years have seen huge advances in loading fonts with \TeX. Donald Knuth originally designed \TeX\ to load fonts created with Metafont, and only more recent engines such as Jonathan Kew's \XeTeX\ and Hans Hagen, et al.'s Lua\TeX\ have extended \TeX's font-loading capabilities to unicode. \XeTeX\ supports OpenType and TrueType fonts natively, and Lua\TeX\ can load OpenType fonts through the \textsf{luaotfload} package. Information on \XeTeX\ is available at \link{https://tug.org/xetex/}, and information on Lua\TeX\ is available at the official website for Lua\TeX: \link{http://www.luatex.org/}. See also Ulrike Fischer, et al., ``\textsf{luaotfload}---OpenType `loader' for Plain \TeX\ and \LaTeX,'' \link{https://ctan.org/pkg/luaotfload}. For discussion of fonts generally, see Yannis Haralambous, \textit{Fonts \& Encodings} (Sebastopol: O'Reilly Media, Inc., 2007).} The \textsf{mathfont} package loads TrueType and OpenType fonts for use in math mode, and this document explains the package's user-level commands. For version history and code implementation, see |mathfont_code.pdf|, and for a list of all symbols accessible with \textsf{mathfont}, see |mathfont_symbol_list.pdf|. The \textsf{mathfont} installation also includes four example files, and all \textsf{mathfont} pdf documentation files are available on \textsc{ctan}. Because unicode text fonts outnumber unicode math fonts, I hope that my package will expand the set of possibilities for typesetting math in \LaTeX.
\section{Loading and Basic Functionality}
-Loading fonts for math typesetting is more complicated than for regular text. First, selecting fonts for math mode, both in plain \TeX\ and in the \textsc{nfss}, involves additional macros above and beyond what we need to load text fonts. Second, \TeX\ expects fonts for math to contain extra information for formatting equations.\footnote{Specifically, this extra information is a set of large variants, math-specific parameter values associated with individual characters, and a MathConstants table. Also, math fonts often use slightly wider bounding boxes for letters in math mode---the Computer Modern $f$ is a well-known example. (Compare \fbox{$f$} and \fbox{\texttt{f}}.) For this reason, \textsf{mathfont} also provides an interface to enlarge the bounding boxes of Latin letters when they appear in math mode. See section 5 for details.} Broadly speaking, we say that a \textit{math font} contains this extra information, whereas a \textit{text font} does not, and typesetting math with glyphs from one or more text fonts usually results in equations that are less aesthetically pleasing than using a properly prepared math font. The functionality of \textsf{mathfont} then is twofold: (1) provide a wrapper around the \textsc{nfss} commands for math typesetting that serves as a high-level interface; and (2) implement Lua\TeX\ callbacks that artificially convert text fonts into math fonts at loading.\footnote{Values for MathConstants table are different from but inspired by Ulrik Vieth, ``Understanding the \AE sthetics of Math Typesetting,'' (Bacho\TeX\ Conference, 2008) and Ulrik Vieth ``OpenType Math Illuminated,'' \textit{TUGboat} 30 (2009): 22--31. See also Bogus\l aw Jackowski, ``Appendix G Illuminated,'' \textit{TUGboat} 27 (2006): 83--90.} Although \textsf{mathfont} tries its best to get your fonts right, it may run into trouble when picking fonts to load. If this happens, you should declare your font family and shapes in the \textsc{nfss} before setting any fonts with \textsf{mathfont}.
+Loading fonts for math typesetting is more complicated than for regular text. First, selecting fonts for math mode, both in plain \TeX\ and in the \textsc{nfss}, involves additional macros above and beyond what we need to load text fonts. Second, \TeX\ expects fonts for math to contain extra information for formatting equations.\footnote{Specifically, this extra information is a set of large variants, math-specific parameter values associated with individual characters, and a MathConstants table. Also, math fonts often use slightly wider bounding boxes for letters in math mode---the Computer Modern $f$ is a well-known example. (Compare math-mode {\fboxsep=0pt\fbox{$f$}} and italic {\fboxsep=0pt\fbox{\textit{f}}}.) For this reason, \textsf{mathfont} also provides an interface to enlarge the bounding boxes of Latin letters when they appear in math mode. See section 5 for details.} Broadly speaking, we say that a \textit{math font} contains this extra information, whereas a \textit{text font} does not, and typesetting math with glyphs from one or more text fonts usually results in messier equations than using a properly prepared math font. The functionality of \textsf{mathfont} then is twofold: (1) provide a wrapper around the \textsc{nfss} commands for math typesetting that serves as a high-level interface; and (2) implement Lua\TeX\ callbacks that artificially convert text fonts into math fonts at loading.\footnote{Values for MathConstants table are different from but inspired by Ulrik Vieth, ``Understanding the \AE sthetics of Math Typesetting,'' (Bacho\TeX\ Conference, 2008) and Ulrik Vieth ``OpenType Math Illuminated,'' \textit{TUGboat} 30 (2009): 22--31. See also Bogus\l aw Jackowski, ``Appendix G Illuminated,'' \textit{TUGboat} 27 (2006): 83--90.} Although \textsf{mathfont} tries its best to get your fonts right, it may run into trouble when picking fonts to load. If this happens, you should declare your font family and shapes in the \textsc{nfss} before setting any fonts with \textsf{mathfont}.
You must use one of \XeLaTeX\ or Lua\LaTeX\ to typeset a document with \textsf{mathfont}. You can load \textsf{mathfont} with the standard |\usepackage{mathfont}| syntax, and the package accepts three optional arguments. If you use Lua\TeX, the options |adjust| or |no-adjust| will manually specify whether \textsf{mathfont} should adapt text fonts for math mode, and \textsf{mathfont} selects |adjust| by default. If you use \XeTeX, \textsf{mathfont} cannot adjust any font objects with Lua callbacks, and either of these package options will cause an error.\footnote{With \XeLaTeX, \textsf{mathfont} does not add big operators or resizable delimiters. This means you will have to use the Computer Modern defaults, load a separate math font for resizable characters, or end up with a document where large operators and delimiters do not scale like they do normally.} For this reason, using Lua\TeX\ with \textsf{mathfont} is recommended as of version 2.0. If you load \textsf{mathfont} with any other optional argument, the package will interpret it as a font name and call |\setfont| (described in the next section) on your argument. Doing so selects that font for the text of your document and for the character classes in the upper section of Table~1.
-The \textsf{mathfont} package is closely related to several other \LaTeX\ packages. The functionality is closest to that of \textsf{mathspec} by Andrew Gilbert Moschou, which is compatible with \XeTeX\ only and selects characters from text fonts for math.\footnote{Andrew Gilbert Moschou, ``\textsf{mathspec}---Specify arbitrary fonts for mathematics in \XeTeX,'' \link{https://ctan.org/pkg/mathspec}.} The \textsf{unicode-math} package is the standard \LaTeX\ package for loading actual unicode math fonts, and if you have a unicode font with proper math support, rather than a text font that you want to use for equations, consider using this package instead of \textsf{mathfont}.\footnote{Will Robertson, et al., ``\textsf{unicode-math}---Unicode mathematics support for XeTeX and LuaTeX,'' \link{https://ctan.org/pkg/unicode-math}.} Users who want to a text font for math with pdf\LaTeX\ should consider Jean-Fran\c cois Burnol's \textsf{mathastext} because \textsf{mathfont} is incompatible with pdf\TeX.\footnote{Jean-Fran\c cois Burnol, ``\textsf{mathastext}---Use the text font in maths mode,'' \link{https://ctan.org/pkg/mathastext}. In several previous versions of this documentation, I mischaracterized the approach of \textsf{mathastext} to \TeX's internal mathematics spacing. In fact, \textsf{mathastext} preserves and in some cases extends rules for space between various math-mode characters.} Finally, you will probably be better off using \textsf{fontspec} if your document does not contain any math.\footnote{Will Robertson and Khaled Hosny, ``\textsf{fontspec}---Advanced font selection in \XeLaTeX\ and Lua\LaTeX,'' \link{https://ctan.org/pkg/fontspec}.} The \textsf{fontspec} package is designed to load TrueType and OpenType fonts for text and provides a high-level interface for selecting OpenType font features.
+The \textsf{mathfont} package is closely related to several other \LaTeX\ packages. The functionality is closest to that of \textsf{mathspec} by Andrew Gilbert Moschou, which is compatible with \XeTeX\ only and selects characters from text fonts for math.\footnote{Andrew Gilbert Moschou, ``\textsf{mathspec}---Specify arbitrary fonts for mathematics in \XeTeX,'' \link{https://ctan.org/pkg/mathspec}.} The \textsf{unicode-math} package is the standard \LaTeX\ package for loading actual unicode math fonts, and if you have a unicode font with proper math support, rather than a text font that you want to use for equations, consider using this package instead of \textsf{mathfont}.\footnote{Will Robertson, et al., ``\textsf{unicode-math}---Unicode mathematics support for XeTeX and LuaTeX,'' \link{https://ctan.org/pkg/unicode-math}.} Users who want a text font for math with pdf\LaTeX\ should consider Jean-Fran\c cois Burnol's \textsf{mathastext} because \textsf{mathfont} is incompatible with pdf\TeX.\footnote{Jean-Fran\c cois Burnol, ``\textsf{mathastext}---Use the text font in maths mode,'' \link{https://ctan.org/pkg/mathastext}. In several previous versions of this documentation, I mischaracterized the approach of \textsf{mathastext} to \TeX's internal mathematics spacing. In fact, \textsf{mathastext} preserves and in some cases extends rules for space between various math-mode characters.} Finally, you will probably be better off using \textsf{fontspec} if your document does not contain any math.\footnote{Will Robertson and Khaled Hosny, ``\textsf{fontspec}---Advanced font selection in \XeLaTeX\ and Lua\LaTeX,'' \link{https://ctan.org/pkg/fontspec}.} The \textsf{fontspec} package is designed to load TrueType and OpenType fonts for text and provides a high-level interface for selecting OpenType font features.
\begin{figure}[t]\labelfig{Keywords}
\centerline{\bfseries Table \the\fig: Character Classes\strut}
@@ -4841,34 +4853,20 @@ If you want to change the font for both text and math, you should use |\setfont|
It calls |\mathfont| without an optional argument---i.e.\ for the default keywords---on your \meta{font name} and sets your document's default text font to be the \meta{font name}. The command also defines the eight commands in Table~\ref{SetFont} using the \meta{font name} and the |\new| macros in the next section. Both |\mathfont| and |\setfont| should appear in the preamble only.
-To select OpenType features, you should put a colon after the font name and follow it with appropriate OpenType tags. For example adding ``|onum=true|'' tells \TeX\ to load your font with oldstyle numbering, assuming that feature is present in the font.\footnote{By default, \textsf{mathfont} enables standard ligatures, traditional \TeX\ ligatures, and lining numbers. The package sets |smcp| to |true| or |false| depending on whether it is attempting to load a small-caps font. For the full list of OpenType features, see \link{https://docs.microsoft.com/en-us/typography/opentype/spec/featurelist}.} Whenever you select a font, \textsf{mathfont} first checks whether you previously loaded \textsf{fontspec}, and if so, the package feeds your entire \meta{font name} argument to \textsf{fontspec}. (You can also say ``|fontspec|'' as the \meta{font name} to select the most recent font used by \textsf{fontspec}.) If you have not loaded \textsf{fontspec}, the package uses its own fontloader. I recommend letting \textsf{mathfont} handle font-loading because when using Lua\TeX, \textsf{mathfont} takes care to load fonts in such a way that full OpenType features are accessible in text and limited OpenType features are accessible in math. While it is also possible to do this in \textsf{fontspec}, it takes some doing.\footnote{The \textsf{luaotfload} package supports two main modes for loading fonts: |node| mode is the default setting, and it supports full OpenType features in text but no OpenType features in math. The |base| mode supports limited OpenType features, but the features will work for both text and math. When \textsf{mathfont} loads a font, it does so twice, once in |node| mode, which is primarily for setting the text font with \vrb\setfont, and once in |base| mode, which is for the package's other font declarations. This way you will be able to use OpenType features throughout your document.}
+To select OpenType features, you should put a colon after the font name and follow it with appropriate OpenType tags.\footnote{By default, \textsf{mathfont} enables standard ligatures, traditional \TeX\ ligatures, and lining numbers. The package sets |smcp| to |true| or |false| depending on whether it is attempting to load a small-caps font. For the full list of OpenType features, see \link{https://docs.microsoft.com/en-us/typography/opentype/spec/featurelist}.} For example adding ``|onum=true|'' tells \TeX\ to load your font with oldstyle numbering, assuming that feature is present in the font. You should separate different OpenType feature tags with a semi-colon.
+
+Whenever you select a font, \textsf{mathfont} first checks whether you previously loaded \textsf{fontspec}, and if so, the package feeds your entire \meta{font name} argument to \textsf{fontspec}. (You can also say ``|fontspec|'' as the \meta{font name} to select the most recent font used by \textsf{fontspec}.) If you have not loaded \textsf{fontspec}, the package uses its own fontloader. I recommend letting \textsf{mathfont} handle font-loading because when using Lua\TeX, \textsf{mathfont} takes care to load fonts in such a way that full OpenType features are accessible in text and limited OpenType features are accessible in math.\footnote{The \textsf{luaotfload} package supports two main modes for loading fonts: |node| mode is the default setting, and it supports full OpenType features in text but no OpenType features in math. The |base| mode supports limited OpenType features, but the features will work for both text and math. When \textsf{mathfont} loads a font, it does so twice, once in |node| mode, which is primarily for setting the text font with \vrb\setfont, and once in |base| mode, which is for the package's other font declarations. This way you will be able to use OpenType features throughout your document. The package does not currently load fonts with HarfBuzz.} While it is also possible to do this in \textsf{fontspec}, it takes some doing.
The last five keywords in Table~\ref{Keywords} are a bit different. If you call |\mathfont| on a \meta{keyword} from the last five rows in Table~\ref{Keywords}, the package defines the macro
\begin{code}
|\math|\meta{keyword}|{|\meta{text}|}|
\end{code}
-to typeset them. For example,
+to access them. The Unicode standard contains a block specifically for math alphanumeric symbols, and the control sequences pull from these characters. For example,
\begin{code}
|\mathfont[bb]{STIXGeneral}|
\end{code}
-sets STIXGeneral as the font for bold calligraphic characters and defines |\mathbb| to access them. These are not for use with any double-struck, caligraphic, or fraktur font. Rather, they access Unicode's math alphanumeric symbols block. If you want to use a font where the regular letters appear double-struck, caligraphic, or fraktur, consider the font-changing control sequences in the next section.
-
-\section{Local Font Changes}
-
-With \textsf{mathfont}, it is possible to create commands that locally change the font for math alphabet characters, i.e.\ those marked as alphabetic in Table~\ref{Keywords}. The eight commands in Table~\ref{MathAlpha} accept a \meta{control sequence} as their first mandatory argument and a \meta{font name} as the second, and they define the \meta{control sequence} to typeset any math alphabet characters in their argument into the \meta{font name}. For example, the macro |\newmathrm| looks like
-\begin{code}
-|\newmathrm{|\meta{control sequence}|}{|\meta{font name}|}|.
-\end{code}
-It defines the \textit{control sequence} in its first argument to accept a string of characters that it then converts to the \textit{font name} in the second argument with upright shape and medium weight. Writing
-\begin{code}
-|\newmathrm{\matharial}{Arial}|
-\end{code}
-creates the macro
-\begin{code}
-|\matharial{|\meta{argument}|}|,
-\end{code}
-which can be used only in math mode and which converts the math alphabet characters in its \meta{argument} into the Arial font with upright shape and medium weight. The other commands in Table~\ref{MathAlpha} function in the same way except that they select different series or shape values. Finally, know that if the user specifies the font for Greek letters using |\mathfont|, macros created with the commands from this section will affect those characters, unlike in traditional \LaTeX. Similarly, the local font-change commands will affect Cyrillic and Hebrew characters after the user calls |\mathfont| for those keywords.
+defines |\mathbb| to typeset double-struck letters using the glyphs from STIXGeneral stored in the alphanumeric symbols block. This is very different from a font where the regular letters are double-struck, caligraphic, or fraktur! In that case, consider using the font-change commands from the next section.
\begin{figure}[t]
\labelfig{MathAlpha}
@@ -4887,11 +4885,28 @@ Command & Series & Shape\\\midrule
\end{tabularx}
\end{figure}
-Together these eight commands will provide users with tools for most local font changes, but they won't be able to address everything. Accordingly, \textsf{mathfont} provides the more general |\newmathfontcommand| macro. Its structure is
+
+\section{Local Font Changes}
+
+With \textsf{mathfont}, it is possible to create commands that locally change the font for math alphabet characters, i.e.\ those marked as alphabetic in Table~\ref{Keywords}. The eight commands in Table~\ref{MathAlpha} accept a \meta{control sequence} as their first mandatory argument and a \meta{font name} as the second, and they define the \meta{control sequence} to typeset any math alphabet characters in their argument into the \meta{font name}. For example, the macro |\newmathrm| looks like
+\begin{code}
+|\newmathrm{|\meta{control sequence}|}{|\meta{font name}|}|.
+\end{code}
+It defines the \textit{control sequence} in its first argument to accept a string of characters that it then converts to the \textit{font name} in the second argument with upright shape and medium weight. Writing
+\begin{code}
+|\newmathrm{\matharial}{Arial}|
+\end{code}
+creates the macro
+\begin{code}
+|\matharial{|\meta{argument}|}|,
+\end{code}
+which can be used only in math mode and which converts the math alphabet characters in its \meta{argument} into the Arial font with upright shape and medium weight. The other commands in Table~\ref{MathAlpha} function in the same way except that they select different series or shape values. Finally, know that if you specify the font for Greek letters using |\mathfont|, macros created with the commands from this section will affect those characters, unlike in traditional \LaTeX. Similarly, the local font-change commands will affect Cyrillic and Hebrew characters after you call |\mathfont| for those keywords.
+
+Together these eight commands will provide tools for most local font changes, but they won't be able to address everything. Accordingly, \textsf{mathfont} provides the more general |\newmathfontcommand| macro. Its structure is
\begin{code}
|\newmathfontcommand{|\meta{control sequence}|}{|\meta{font name}|}{|\meta{series}|}{|\meta{shape}|}|,
\end{code}
-where the \meta{control sequence} in the first argument again becomes the macro that changes characters to the \meta{font name}. You are welcome to use a system font name with |\newmathfontcommand|, but the intention behind this command is that you can use an \textsc{nfss} family name for the \meta{font name}. Then the series and shape values can correspond to more obscure font faces from the \textsc{nfss} family that you would be otherwise unable to access. The commands from Table~\ref{MathAlpha} as well as |\newmathfontcommand| should appear in the preamble only.
+where the \meta{control sequence} in the first argument again becomes the macro that changes characters to the \meta{font name}. You are welcome to use a system font name with |\newmathfontcommand|, but the intention behind this command is that you can use an \textsc{nfss} family name for the \meta{font name}. Then the series and shape values can correspond to more obscure font faces from the \textsc{nfss} family that you would be otherwise unable to access. The commands from this section should appear in the preamble only.
\section{Default Math Parameters}
@@ -4900,7 +4915,7 @@ Lua\TeX\ uses the MathConstants table from the most recent font assigned for use
\begin{code}
|\mathconstantsfont[|\meta{shape}|]{|\meta{prev arg}|}|,
\end{code}
-where \meta{shape} is an optional argument that can be ``|upright|'' (default) or ``|italic|,'' and \meta{prev arg} should be any argument that you have previously fed to |\mathfont|. When you call |\mathconstantsfont|, \textsf{mathfont} forces Lua\TeX\ to always use the MathConstants table from the font that corresponded to that instance of |\mathfont| in the specified \meta{shape}. You don't need to set the MathConstants table when you use |\setfont| because the package calls |\mathconstantsfont| automatically when you use |\setfont|. This command will not work in \XeTeX\ and should appear only in the preamble.
+where \meta{shape} is an optional argument that can be ``|upright|'' (default) or ``|italic|,'' and \meta{prev arg} should be any argument that you have previously fed to |\mathfont|. When you call |\mathconstantsfont|, \textsf{mathfont} forces Lua\TeX\ to always use the MathConstants table from the font that corresponded to that instance of |\mathfont| in the specified \meta{shape}. You don't need to set the MathConstants table when you use |\setfont| because the package calls |\mathconstantsfont| automatically in this case. This command will not work in \XeTeX\ and should appear only in the preamble.
@@ -4919,13 +4934,13 @@ Everything Else & \hfil3\\\bottomrule
\end{figure}
-The \textsf{mathfont} package provides six user-level commands to change positioning of characters in math mode. The commands |\CharmLine| and |\CharmFile| affect specific to various characters. (Charm stands for ``character metric.'') The argument of |\CharmLine| should be a list of integers and/or asterisks separated by commas and/or spaces, and Table~\ref{Charm} shows how many integers you need for different types of characters. The first integer from the argument should be a unicode encoding number, and that tells \textsf{mathfont} how to handle the remaining values.
+The \textsf{mathfont} package provides six user-level commands to change bounding box, size, and accent positioning of characters in math mode. The command |\CharmLine| sets these features for a single math-mode character relative to its text-mode counterpart, and |\CharmFile| does the same thing for multiple characters at a time. (Charm stands for ``character metric.'') The argument of |\CharmLine| should be a list of integers and/or asterisks separated by commas and/or spaces, and Table~\ref{Charm} shows how many integers you need for different types of characters. The first integer should be the unicode encoding value of the character to be adjusted, and \textsf{mathfont} interprets the remaining numbers as follows.
\begin{itemize}
-\item If the unicode value corresponds to a Latin letter, the next two integers tell Lua\TeX\ how much to stretch the left and right sides of the glyph's bounding box when it appears in math mode. The final two integers determine horizontal placement of top and bottom math accents respectively.
-\item If the unicode value corresponds to a delimiter, the radical (surd) symbol, or a big operator, you will need to specify 16 pairs numbers, for a total of 32 entries. The first 15 pairs are horizontal and vertical scale factors that \textsf{mathfont} uses to create large variants, where successive pairs correspond to the next-larger glyph. The last two integers determine horizontal placement of top and bottom math accents respectively.
-\item If the unicode value corresponds to any other symbol, you should specify two more integers, which will determine the horizontal placement of top and bottom math accents respectively.
+\item If the unicode value corresponds to a Latin letter, you should specify four more numbers. The next two integers tell Lua\TeX\ how much to stretch the left and right sides of the glyph's bounding box when it appears in math mode, and the final two integers determine horizontal placement of top and bottom math accents respectively.
+\item If the unicode value corresponds to a delimiter, the radical (surd) symbol, or a big operator, you need to specify 16 pairs numbers, for a total of 32 more integers. The first 15 pairs are horizontal and vertical scale factors that \textsf{mathfont} uses to create large variants, where successive pairs determine the scaling of each next-larger glyph. The last two integers determine horizontal placement of top and bottom math accents respectively.
+\item If the unicode value corresponds to any other symbol, you should specify two more integers. They determine the horizontal placement of top and bottom math accents respectively.
\end{itemize}
-Writing an asterisk tells \textsf{mathfont} to use whatever value it has saved in memory, either the default value or the value from the most recent call to |\CharmLine| or |\CharmFile|. If you specify too few charm values, \textsf{mathfont} will raise an error, but if you provide too many, \textsf{mathfont} will silently ignore the extras.
+Writing an asterisk tells \textsf{mathfont} to use whatever value it has saved in memory, either the default value or the value from the most recent call to |\CharmLine| or |\CharmFile|. If you specify too few charm values, \textsf{mathfont} will raise an error, and if you provide too many, \textsf{mathfont} will silently ignore the extras.
\begin{figure}[b]
\labelfig{Factors}
@@ -4941,18 +4956,18 @@ Command & Default Value & What It Does\\\midrule
\end{figure}
-For most applications, you can probably ignore charm information altogether, but if you find bounding boxes or accent placement to be off slightly or if you want to change the scaling for a delimiter or big operator, you should try calling |\CharmLine| with different values to see what works. As is typical with decimal inputs in \TeX, \textsf{mathfont} divides your inputs by 1000 before computing with them. Positive integers mean ``increase,'' and negative integers mean ``decrease.'' For a given character, the scale is usually the glyph width. For example,
+For most applications, you can probably ignore charm information altogether, but if you find bounding boxes or accent placement to be off slightly in your equations or if you want to change the scaling for a delimiter or big operator, you should try calling |\CharmLine| with different values to see what works. As is standard with decimal inputs in \TeX, \textsf{mathfont} divides your inputs by 1000 before computing with them. Positive integers mean ``increase,'' and negative integers mean ``decrease.'' For a given character, the scale is usually the glyph width. For example,
\begin{code}
|\CharmLine{97, 200, -200, *, 50}|
\end{code}
-tells \textsf{mathfont} to take the lower-case ``a'' (unicode encoding value of 97), increase the bounding box on the left side by 20\% of the glyph width, decrease the bounding box on the right side by 20\% of the glyph width, do nothing to the top accent, and shift the bottom accent right by 5\% of the glyph width. There is no general formula for what charm values to use for a given font! Rather, you will need to make a design choice based on what looks best, and if you regularly use a particular font, consider making a custom set of charm values uploading it to \textsc{ctan}. Additionally, if you store your charm information in a file, you can read it in with |\CharmFile|. The argument of this command should be a file name, and \textsf{mathfont} reads the file and feeds each line individually to |\CharmLine|.
+tells \textsf{mathfont} to take the lower-case ``a'' (unicode encoding value of 97), increase the bounding box on the left side by 20\% of the glyph width, decrease the bounding box on the right side by 20\% of the glyph width, do nothing to the top accent, and shift the bottom accent right by 5\% of the glyph width. There is no general formula for what charm values to use for a given font! Rather, you will need to make a design choice based on what looks best, and if you regularly use a particular font, consider making a custom set of charm values and uploading it to \textsc{ctan}. Additionally, if you store your charm information in a file, you can read it in with |\CharmFile|. The argument of this command should be a file name, and \textsf{mathfont} reads the file and feeds each line individually to |\CharmLine|.
-The commands in Table~\ref{Factors} adjust other aspects of the font as indicated. Each command accepts a single integer as an argument, and \textsf{mathfont} once again divides the input by 1000. With each of these macros, \textsf{mathfont} multiplies the quotient by some default length, so values greater than or less than 1000 mean ``scale up'' or ``scale down'' respectively. For example,
+The commands in Table~\ref{Factors} adjust other aspects of the font as indicated. Each command accepts a single integer as an argument, and \textsf{mathfont} divides the input by 1000. With each macro, \textsf{mathfont} multiplies the quotient by some default length, so values greater than or less than 1000 mean ``scale up'' or ``scale down'' respectively. For example,
\begin{code}
|\RuleThicknessFactor{2000}|
\end{code}
-doubles the thickness of the fraction rule and radical overbar relative to the default, which varies between fonts. Changing the |\RuleThicknessFactor| is useful for fonts with particularly heavy or light weight, and the |\IntegralItalicFactor| is important for making limits better fit integral signs, and the |\SurdVerticalFactor| and |\SurdHorizontalFactor| commands are essential when the top of the surd glyph differs from the top of its bounding box. The six control sequences from this section should appear in the preamble only.
+doubles the thickness of the fraction rule and radical overbar relative to the default, which varies between fonts. Changing the |\RuleThicknessFactor| is useful for fonts with particularly heavy or light weight. The |\IntegralItalicFactor| is important for making limits better fit integral signs, and the |\SurdVerticalFactor| and |\SurdHorizontalFactor| commands are essential when the top of the surd glyph differs from the top of its bounding box. The six control sequences from this section should appear in the preamble only.
\begin{figure}[tb]
@@ -4970,7 +4985,7 @@ Callback Name & What It Does By Default\\\midrule
\end{tabularx}
\end{figure}
-Finally, advanced users who want to interact with the font adjustment process directly should use the six callbacks in Table~\ref{Callbacks}. When \textsf{luaotfload} loads a font, \textsf{mathfont} (1) always calls |mathfont.inspect_font| and (2) calls the other five callbacks in the order that they appear in Table~\ref{Callbacks} if the font object contains |nomath=true|. Functions added to these callbacks should accept a font object as a single argument and return nothing. Further, please be careful when loading functions in the |disable_nomath|, |add_math_constants|, and |fix_character_metrics| callbacks. If you add a function there, Lua\TeX\ will not carry out the default behvaior associated with the callback, so do not mess with these three callbacks unless you are duplicating the default behavior or you really know what you're doing. Otherwise, you risk breaking the package. See |mathfont_code.pdf| for more information.
+Finally, advanced users who want to interact with the font adjustment process directly should use the six callbacks in Table~\ref{Callbacks}. When \textsf{luaotfload} loads a font, \textsf{mathfont} (1) always calls |mathfont.inspect_font| and (2) calls the other five callbacks in the order that they appear in Table~\ref{Callbacks} if the font object contains |nomath=true|. Functions added to these callbacks should accept a font object as a single argument and return nothing. Further, please be careful when loading functions in the |disable_nomath|, |add_math_constants|, and |fix_character_metrics| callbacks. If you add a function there, Lua\TeX\ will not carry out the default behavior associated with the callback, so do not mess with these three callbacks unless you are duplicating the default behavior or you really know what you're doing. Otherwise, you risk breaking the package. See |mathfont_code.pdf| for more information.
\end{document}
@@ -4982,18 +4997,19 @@ Finally, advanced users who want to interact with the font adjustment process di
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{multicol}
+\multicolsep=\bigskipamount
+\premulticols=\z@
+\postmulticols=4\bigskipamount
\usepackage{graphicx}
\usepackage{mathfont}
\mathfont[agreeklower=upright,agreekupper]{Crimson}
\mathfont[hebrew]{Coelacanth}
\mathfont[\M@keys]{STIXGeneral}
-\usepackage{shortvrb,doc}
+\usepackage{shortvrb}
\MakeShortVerb{|}
+\def\meta#1{\ensuremath{\langle\textit{#1}\rangle}}
\raggedcolumns
\parskip=0pt
-\smallskipamount=2pt plus 1pt minus 1pt
-\multicolsep=0pt
-\premulticols=0pt
\fboxrule=1pt
\CharmLine{8747 1200 1700 * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * }
@@ -5031,14 +5047,14 @@ Character & Keywords & Default Font\\\midrule
\end{tabularx}
\end{figure}
-As of version 2.0, \textsf{mathfont} artificially adds resizable delimiters and big operator characters to text fonts when you complile with Lua\LaTeX. In this case, square root symbols will automatically resize, big operators will appear larger in |\displaystyle|, and you can use |\left|, |\right|, and |\big|, etc.\ with characters from the keyword |delimiters|. If you use \XeTeX, \textsf{mathfont} will not create large variants of characters, and your unicode math symbols will all be the same size as they appear in the font. In this case, you may be best off sticking with the Computer Modern defaults for resizable characters provided they don't clash with the rest of your document. Throughout this document, anything labeled ``Lua\TeX\ only'' means that \textsf{mathfont} provides this functionality only if you enable Lua-based font adjustments. If you load \textsf{mathfont} with the |no-adjust| option, you will not be able to access these features the same as if you compile with \XeTeX.
+As of version 2.0, \textsf{mathfont} artificially adds resizable delimiters and big operator characters to text fonts when you compile with Lua\LaTeX. In this case, square root symbols will automatically resize, big operators will appear larger in |\displaystyle|, and you can use |\left|, |\right|, and |\big|, etc.\ with characters from the keyword |delimiters|. If you use \XeTeX, \textsf{mathfont} will not create large variants of characters, and your unicode math symbols will all be the same size as they appear in the font. In this case, you may be best off sticking with the Computer Modern defaults for resizable characters provided they don't clash with the rest of your document. Throughout this document, anything labeled ``Lua\TeX\ only'' means that \textsf{mathfont} provides this functionality only if you enable Lua-based font adjustments. If you load \textsf{mathfont} in Lua\TeX\ with the |no-adjust| option, you will not be able to access these features the same as if you typeset with \XeTeX.
A few characters appear multiple times in this list. When that happens, it means that \textsf{mathfont} defines the control sequence for multiple keywords. If you call |\mathfont| for only one of those keywords, your symbol will appear in the font associated with that keyword. If you call |\mathfont| on multiple keywords, the package uses the font associated with the default keyword/font for that character. Table~1 lists the default keyword for each command that appears multiple times in this document. If you need unicode encoding slot numbers for character metric adjustments, each symbol corresponds to its standard unicode encoding value, with the exception of the fake angle brackets. When you typeset with Lua\TeX, \textsf{mathfont} artificially adds |\fakelangle|, |\fakerangle|, |\fakellangle|, and |\fakerrangle| to the font in encoding slots 1,044,508--1,044,511 respectively.
-
-
-\bigskip\centerline{\vrule height 0.5pt width 2.5in}\medskip\smallskip
+\bigskip\bigskip
+\nointerlineskip\centerline{\vrule height 0.5pt width 2.5in}
+\bigskip\bigskip
\catcode`\|=12
@@ -5110,7 +5126,9 @@ A few characters appear multiple times in this list. When that happens, it means
\blockheader{diacritics}{Accent}
\begin{multicols}{3}
+ \def\hook{\footnote{You will run into trouble if you load \textsf{amsmath} after calling \vrb\mathfont\ with the \texttt{accent} keyword. This is a known bug.}}
\accentexample\acute
+ \let\hook\relax
\accentexample\aacute
\accentexample\dot
\accentexample\ddot
@@ -5614,7 +5632,9 @@ A few characters appear multiple times in this list. When that happens, it means
\charexample\sqsupsetneq
\charexample\neq
\charexample\nl
+ \def\hook{\footnote{In text mode, \vrb\ng\ produces \ng---as of version 2.2b, \textsf{mathfont} redefines the math-mode version only and leaves the text-mode version alone. If you are using the \textsf{hyperref} package, you should type \vrb\mathng\ instead of \vrb\ng.}}
\charexample\ng
+ \let\hook\relax
\charexample\nleq
\charexample\ngeq
\charexample\lneq
@@ -5775,62 +5795,66 @@ A few characters appear multiple times in this list. When that happens, it means
\blockheader{bb}{Blackboard Bold}
+\vskip\multicolsep
\letterlikechars\mathbb
-\hbox to 10em{\printchars\digits}
+\hbox to \hsize{\printchars\digits\hfil}
+\vskip\multicolsep
\blockheader{cal}{Caligraphic}
+\vskip\multicolsep
\letterlikechars\mathcal
+\vskip\multicolsep
\blockheader{frak}{Fraktur}
+\vskip\multicolsep
\letterlikechars\mathfrak
+\vskip\multicolsep
\blockheader{bcal}{Bold Calligraphic}
+\vskip\multicolsep
\letterlikechars\mathbcal
+\vskip\multicolsep
\blockheader{bfrak}{Bold Fraktur}
+\vskip\multicolsep
\letterlikechars\mathbfrak
\end{document}
%</chars>
%<*equations>
\begin{multicols}{2}
-\let\medskip\relax
Black-Scholes Equation
\[
-\frac{\partial V}{\partial t}+\frac12\sigma^2S^2\frac{\partial^2V}{\partial S^2}=
- rV-rS\frac{\partial V}{\partial X}
+\frac{\partial V}{\partial t}+
+ \frac12\sigma^2S^2\frac{\partial^2V}{\partial S^2}
+ =rV-rS\frac{\partial V}{\partial X}
\]
-\medskip
Cardano's Formula/Cubic Formula
\begin{align*}
t_i&=\omega_i\sqrt[3]{-\frac q2+\sqrt{\frac{q^2}4+\frac{p^3}{27}}}\\
&\qquad\qquad{}+\omega_i^2\sqrt[3]{-\frac q2-\sqrt{\frac{q^2}4+\frac{p^3}{27}}}
\end{align*}
-\medskip
Einstein's Field Equation (General Relativity)
\[
R_{\mu\nu}-\frac12Rg_{\mu\nu}+\Lambda g_{\mu\nu}=\frac{8\pi G}{c^4}T_{\mu\nu}
\]
-\medskip
First Isomorphism Theorem
\[
\phi(X)\cong X/\ker(\phi)
\]
-\medskip
Gauss-Bonnet Formula
\[
\int_MK\ dA+\int_{\partial M}k_g\ ds=2\pi\chi(M)
\]
-\medskip
Maxwell's Equations
\begin{align*}
@@ -5840,7 +5864,6 @@ Maxwell's Equations
\nabla\times\mathbf B&=\mu_0\left(\mathbf J+
\epsilon_0\frac{\partial\mathbf E}{\partial t}\right)
\end{align*}
-\medskip
Michaelis-Menten Model
\[
@@ -5859,27 +5882,23 @@ Navier-Stokes Equation
&+\frac13\mu\nabla(\nabla\bullet u)+
\rho\mathbf{g}
\end{align*}
-\medskip
Quadratic Formula
\[
x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}
\]
-\medskip
Ramanujan's Approximation for $\Gamma$
\[
\Gamma(1+x)\approx\sqrt\pi\,x^xe^{-x}\,\sqrt[6]{8x^3+4x^2+x+\frac1{30}}
\]
-\medskip
Residue Theorem
\[
\frac1{2i\pi}\int_{\gamma}f(z)\ dz=\sum_{k=1}^n\Res_{a_k}(f)
\]
-\medskip
Riemann Zeta Function
@@ -5888,13 +5907,11 @@ Riemann Zeta Function
=\frac1{\Gamma(z)}\int_0^\infty\frac{x^{z-1}}{e^x-1}\ dx\\
&=2^z\pi^{z-1}\sin\left(\frac{\pi z}2\right)\,\Gamma(1-z)\,\zeta(1-z)
\end{align*}
-\medskip
Schrodinger Equation
\[
i\hbar\frac d{dt}|\Psi(t)\fakerangle=\hat H|\Psi(t)\fakerangle
\]
-\medskip
Lorentz Transformation (Special Relativity)
\[
@@ -5910,10 +5927,9 @@ t'=\left(t-\frac{vx}{c^2}\right)\frac1{\sqrt{1-\frac{v^2}{c^2}}}
LuaLaTeX is recommended for\MessageBreak
mathfont_example_cormorant.tex}
{It's recommended that you typset this file\MessageBreak
- with LuaTeX. You can use a different engine\MessageBreak
- if you want, but things will turn out weird.\MessageBreak
- To resolve this error, typeset this file\MessageBreak
- with LuaLaTeX.}
+ with LuaTeX. You can use XeLaTeX if you want,\MessageBreak
+ but things will turn out weird. To resolve\MessageBreak
+ this error, typeset the file with LuaLaTeX.}
\fi
\documentclass[12pt]{article}
\usepackage[margin=1in]{geometry}
@@ -5953,10 +5969,9 @@ This is Cormorant with Crimson for Greek characters and Bona Nova for diacritics
LuaLaTeX is recommended for\MessageBreak
mathfont_example_kelvinch.tex}
{It's recommended that you typset this file\MessageBreak
- with LuaTeX. You can use a different engine\MessageBreak
- if you want, but things will turn out weird.\MessageBreak
- To resolve this error, typeset this file\MessageBreak
- with LuaLaTeX.}
+ with LuaTeX. You can use XeLaTeX if you want,\MessageBreak
+ but things will turn out weird. To resolve\MessageBreak
+ this error, typeset the file with LuaLaTeX.}
\fi
\documentclass[12pt]{article}
\usepackage[margin=1in]{geometry}
@@ -5993,10 +6008,9 @@ This is Kelvinch with Crimson for the radical signs. ``Testing. Testing.'' Brown
LuaLaTeX is recommended for\MessageBreak
mathfont_example_roboto.tex}
{It's recommended that you typset this file\MessageBreak
- with LuaTeX. You can use a different engine\MessageBreak
- if you want, but things will turn out weird.\MessageBreak
- To resolve this error, typeset this file\MessageBreak
- with LuaLaTeX.}
+ with LuaTeX. You can use XeLaTeX if you want,\MessageBreak
+ but things will turn out weird. To resolve\MessageBreak
+ this error, typeset the file with LuaLaTeX.}
\fi
\documentclass[12pt]{article}
\usepackage[margin=1in]{geometry}
@@ -6038,10 +6052,9 @@ This is Roboto with Overpass for the radical signs and STIXGeneral for the tenso
LuaLaTeX is recommended for\MessageBreak
mathfont_example_typey.tex}
{It's recommended that you typset this file\MessageBreak
- with LuaTeX. You can use a different engine\MessageBreak
- if you want, but things will turn out weird.\MessageBreak
- To resolve this error, retypeset this file\MessageBreak
- with LuaLaTeX.}
+ with LuaTeX. You can use XeLaTeX if you want,\MessageBreak
+ but things will turn out weird. To resolve\MessageBreak
+ this error, typeset the file with LuaLaTeX.}
\fi
\documentclass[12pt]{article}
\usepackage[margin=1in]{geometry}
@@ -6110,8 +6123,8 @@ This is Typey McTypeface with Crimson for the radical signs and STIXGeneral for
\makeatletter
% package date and edition
-\def\packagedate{December 2022}
-\def\packageversion{2.2a}
+\def\packagedate{August 2023}
+\def\packageversion{2.2b}
% header and footer commands
@@ -6166,15 +6179,18 @@ This is Typey McTypeface with Crimson for the radical signs and STIXGeneral for
\def\bottomfraction{1}
\let\code\@undefined
\newenvironment{code}
- {\strut\vadjust\bgroup\medskip\parindent\z@\leftskip2em\relax
+ {\strut\vadjust\bgroup\vskip 5pt plus 1pt minus 3pt\relax
+ \parindent\z@\leftskip2em\relax
\noindent\strut\ignorespaces}
- {\strut\par\medskip\egroup\hfill\break\strut\ignorespacesafterend}
+ {\strut\par\vskip 5pt plus 1pt minus 3pt\relax
+ \egroup\hfill\break\strut\ignorespacesafterend}
\def\vrb#1{\expandafter\texttt\expandafter{\string#1}}
\parskip=0pt
% symbol list macros
-\def\charexample#1{\hbox to \hsize{\hbox to 0.4in{$#1$\hfil}\vrb#1\hfil}}
-\def\accentexample#1{\hbox to \hsize{\hbox to 0.4in{$#1 a$\hfil}\vrb#1\hfil}}
+\def\charexample#1{\hbox to \hsize{\hbox to 0.4in{$#1$\hfil}\vrb#1\hook\hfil}}
+\def\accentexample#1{\hbox to \hsize{\hbox to 0.4in{$#1 a$\hfil}\vrb#1\hook\hfil}}
+\let\hook\relax
\def\delimexample#1{\hbox to \hsize{%
\hbox to 0.8in{$#1\big#1\Big#1\bigg#1\Bigg#1$\hfil}\vrb#1\hfil}}
\def\luadelimexample#1{\hbox{\vbox{\hbox to 0.8in{%
@@ -6187,24 +6203,21 @@ This is Typey McTypeface with Crimson for the radical signs and STIXGeneral for
\hbox to 0.4in{$#1$\hfil}%
\hbox to 0.4in{$\displaystyle#1$\hfil}\vrb#1\hfil}\smallskip}
\def\blockheader#1#2{%
- \bigskip\medskip
- \penalty-9000
\hbox{\fbox{\hbox to \dimexpr\hsize-2\fboxrule-2\fboxsep\relax{%
- \hfil#2 Characters (Keyword \texttt{#1})\strut\hfil}}}
- \medskip}
-\def\upperalphabet{ABCDEFGHIJKLMNOPQRSTUVWXY}
-\def\loweralphabet{abcdefghijklmnopqrstuvwxy}
+ \hfil#2 Characters (Keyword \texttt{#1})\strut\hfil}}}}
+\def\upperalphabet{ABCDEFGHIJKLMNOPQRSTUVWXYZ}
+\def\loweralphabet{abcdefghijklmnopqrstuvwxyz}
\def\digits{0123456789}
\def\printchars#1{%
\expandafter\@tfor\expandafter\letter\expandafter:\expandafter=#1\do{%
- \rlap{$\@tempstyle{\letter}$}\hfill}}
+ \hbox to \dimexpr\hsize/26{$\@tempstyle{\letter}$\hfil}}}
\def\letterlikechars#1{\smallskip\let\@tempstyle#1
- \noindent\printchars\upperalphabet\hbox to 0.6em{$\@tempstyle{Z}$\hss}\par
- \noindent\printchars\loweralphabet\hbox to 0.6em{$\@tempstyle{z}$\hss}\par}
+ \noindent\printchars\upperalphabet\par
+ \noindent\printchars\loweralphabet\par}
% title information
{\large\parindent=0pt\leftskip=0pt plus 1 fil\rightskip=0pt plus 1fil\parfillskip=0pt
-{\strut\Large Package \textsf{mathfont} v.\ \packageversion\ \documentname\let\thefootnote\relax\footnote{Acknowledgements: Thanks to Lyric Bingham for her work checking my unicode hex values. Thanks to Shyam Sundar, Adrian Vollmer, Herbert Voss, and Andreas Zidak for pointing out bugs in previous versions of \textsf{mathfont}. Thanks to Jean-Fran\c cois Burnol for pointing out an error in the documentation in reference to their \textsf{mathastext} package.}\global\advance\c@footnote\m@ne}\par
+{\strut\Large Package \textsf{mathfont} v.\ \packageversion\ \documentname\let\thefootnote\relax\footnote{Acknowledgements: Thanks to Lyric Bingham for her work checking my unicode hex values. Thanks to Shyam Sundar, Adrian Vollmer, Herbert Voss, and Andreas Zidak for pointing out bugs in previous versions of \textsf{mathfont}. Thanks to Jean-Fran\c cois Burnol for pointing out an error in the documentation in reference to his \textsf{mathastext} package.}\global\advance\c@footnote\m@ne}\par
{\strut Conrad Kosowsky}\par
{\strut\packagedate}\par
{\strut\ttfamily kosowsky.latex@gmail.com}\par}
@@ -6235,7 +6248,8 @@ This is Typey McTypeface with Crimson for the radical signs and STIXGeneral for
\noindent The \textsf{mathfont} package adapts unicode text fonts for math mode. The package allows the user to specify a default unicode font for different classes of math symbols, and it provides tools to change the font locally for math alphabet characters. When typesetting with Lua\TeX, \textsf{mathfont} adds resizable delimiters, big operators, and a MathConstants table to text fonts.\par}
\bigskip\bigskip\nointerlineskip
-\centerline{\vrule height 0.5pt width 2.5in}\bigskip\medskip
+\centerline{\vrule height 0.5pt width 2.5in}\bigskip\bigskip
+\nointerlineskip
\fi
\catcode`\@\count@
diff --git a/macros/latex/contrib/mathfont/mathfont_code.pdf b/macros/latex/contrib/mathfont/mathfont_code.pdf
index 7093533772..37c581a0cc 100644
--- a/macros/latex/contrib/mathfont/mathfont_code.pdf
+++ b/macros/latex/contrib/mathfont/mathfont_code.pdf
Binary files differ
diff --git a/macros/latex/contrib/mathfont/mathfont_example_cormorant.pdf b/macros/latex/contrib/mathfont/mathfont_example_cormorant.pdf
index 8dd3e85a97..3809731b4b 100644
--- a/macros/latex/contrib/mathfont/mathfont_example_cormorant.pdf
+++ b/macros/latex/contrib/mathfont/mathfont_example_cormorant.pdf
Binary files differ
diff --git a/macros/latex/contrib/mathfont/mathfont_example_kelvinch.pdf b/macros/latex/contrib/mathfont/mathfont_example_kelvinch.pdf
index 7bdc3e3db0..f8aa3e4af3 100644
--- a/macros/latex/contrib/mathfont/mathfont_example_kelvinch.pdf
+++ b/macros/latex/contrib/mathfont/mathfont_example_kelvinch.pdf
Binary files differ
diff --git a/macros/latex/contrib/mathfont/mathfont_example_roboto.pdf b/macros/latex/contrib/mathfont/mathfont_example_roboto.pdf
index e5fa29a0e9..28dd9a4b25 100644
--- a/macros/latex/contrib/mathfont/mathfont_example_roboto.pdf
+++ b/macros/latex/contrib/mathfont/mathfont_example_roboto.pdf
Binary files differ
diff --git a/macros/latex/contrib/mathfont/mathfont_example_typey.pdf b/macros/latex/contrib/mathfont/mathfont_example_typey.pdf
index 5e67db5cdd..2cdcdf05c1 100644
--- a/macros/latex/contrib/mathfont/mathfont_example_typey.pdf
+++ b/macros/latex/contrib/mathfont/mathfont_example_typey.pdf
Binary files differ
diff --git a/macros/latex/contrib/mathfont/mathfont_symbol_list.pdf b/macros/latex/contrib/mathfont/mathfont_symbol_list.pdf
index 21c4c40e90..e643cb1624 100644
--- a/macros/latex/contrib/mathfont/mathfont_symbol_list.pdf
+++ b/macros/latex/contrib/mathfont/mathfont_symbol_list.pdf
Binary files differ
diff --git a/macros/latex/contrib/mathfont/mathfont_user_guide.pdf b/macros/latex/contrib/mathfont/mathfont_user_guide.pdf
index 3ffe92b216..43787de754 100644
--- a/macros/latex/contrib/mathfont/mathfont_user_guide.pdf
+++ b/macros/latex/contrib/mathfont/mathfont_user_guide.pdf
Binary files differ
diff --git a/macros/latex/contrib/memoir/README b/macros/latex/contrib/memoir/README
index 7ad41300bf..a42cbee542 100644
--- a/macros/latex/contrib/memoir/README
+++ b/macros/latex/contrib/memoir/README
@@ -22,6 +22,15 @@ un-updated LaTeX systems and we often make no attempt to be backwards
compatible. Instead we assume that users use updated memoir with an
updated LaTeX installation.
+Changes (2023/08/21)
+
+o memoir v3.8.1
+
+-- The new additions to \@xfloat via AddToHook is too fragile (the
+ float package changes \@xfloat in an incompatible way). We've moved
+ the additions to the \@floatboxreset.
+
+
Changes (2023/08/14)
o memoir v3.8a
diff --git a/macros/latex/contrib/memoir/memman.pdf b/macros/latex/contrib/memoir/memman.pdf
index 706dc8ff11..ce132d5848 100644
--- a/macros/latex/contrib/memoir/memman.pdf
+++ b/macros/latex/contrib/memoir/memman.pdf
Binary files differ
diff --git a/macros/latex/contrib/memoir/memoir.dtx b/macros/latex/contrib/memoir/memoir.dtx
index fb6dc088cb..674082db74 100644
--- a/macros/latex/contrib/memoir/memoir.dtx
+++ b/macros/latex/contrib/memoir/memoir.dtx
@@ -20,7 +20,7 @@
% This work consists of the files listed in the README file.
%
% \fi
-% \CheckSum{28676}
+% \CheckSum{28664}
%
% \changes{v0.1}{2001/05/20}{First public alpha release}
% \changes{v0.2}{2001/06/03}{First beta release}
@@ -133,7 +133,9 @@
% \changes{v3.8}{2023/08/08}{Maintenance, see the README for details}
% \changes{v3.8a}{2023/08/14}{Forgot to enable stopping if the LaTeX
% format is too old}
-%
+% \changes{v3.8.1}{2023/08/21}{Moved AddToHook from \@xfloat to
+% \@floatboxreset as the float package causes issues}
+%
% \def\dtxfile{memoir.dtx}
%
% \def\fileversion{v0.1} \def\filedate{2001/05/20}
@@ -433,8 +435,8 @@
% Announce the name, option files and version for LaTeX2e files:
% \begin{macrocode}
%<class>\ProvidesClass{memoir}%
-%<class> [2023/08/14 v3.8a configurable book, report, article document class]
-%<class>\newcommand\memversion{v3.8a, 2023/08/14}
+%<class> [2023/08/21 v3.8.1 configurable book, report, article document class]
+%<class>\newcommand\memversion{v3.8.1, 2023/08/21}
% \end{macrocode}
%
% \changes{v3.7m}{2020/08/05}{Added \cs{IfFormatAtLeastTF}}
@@ -7880,13 +7882,16 @@
% to the float until after \cs{normalsize}. Reported at \protect\url{https://tex.stackexchange.com/q/368422/3929}}
% \changes{v3.8}{2023/05/08}{Additions to \cs{@xfloat} now added
% via a cmd/after hook if the format supports it}
+% \changes{v3.8.1}{2023/08/21}{Changed the hook to add to
+% \cs{@floatboxreset} as the \Lpack{float} package redefines
+% \cs{@xfloat} so the Hook cannot access it.}
% \begin{macrocode}
\IfFormatAtLeastTF{2021/04/20}{%
- \AddToHook{cmd/@xfloat/after}{%
+ \AddToHook{cmd/@floatboxreset/after}{%
\def\baselinestretch{\m@m@float@spacing}%
\normalsize%
- \@nameuse{\@captype adjustment}% \@xfloat stores its #1 arg in \@captype
- }%
+ \@nameuse{\@captype adjustment}%
+ }
}{%
\AtBeginDocument{%
% \typeout{Old kernel, redefining \string\@xfloat\ instead of using a hook}
@@ -7899,15 +7904,6 @@
}%
}%
}
-% The code can also be made (slightly modified) using a cmd hook
-% eliminating the explicit \AtBeginDocument, note that we probably
-% need a format check in order to be able to use the cmd hook
-% \AddToHook{cmd/@xfloat/after}{%
-% \def\baselinestretch{\m@m@float@spacing}%
-% \normalsize%
-% \@nameuse{\@captype adjustment}% \@xfloat stores its #1 arg in \@captype
-% }
-
% \end{macrocode}
% \end{macro}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md b/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md
index 56f51f6f0d..edbe215b55 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md
+++ b/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md
@@ -5,8 +5,24 @@ first release 0.95a, 2021-02-23 will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
this project uses date-based 'snapshot' version identifiers.
+## [2023-08-20]
+
+### Added
+ - l3pdftools: \pdf_bdc_shipout:ee which makes use of the new shipout keyword
+ of \special and \pdfliteral
+ - key for the (not yet released) standard pdf/UA-2
+
+### Fixed
+ - expansion behaviour of \pdf_bdc:nn
+ - faulty error command in \pdf_string_from_unicode:nnN
+
+## Removed
+ - patches of the output routine. These are now provided by latex-lab
+
## [2023-03-09]
+Version: 2023-03-09, 0.95x
+
### Fixed
- regression data producer in xmp
diff --git a/macros/latex/contrib/pdfmanagement-testphase/README.md b/macros/latex/contrib/pdfmanagement-testphase/README.md
index 4cf2155174..0642ac06b9 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/README.md
+++ b/macros/latex/contrib/pdfmanagement-testphase/README.md
@@ -1,6 +1,6 @@
# LaTeX PDF management testphase bundle
-Version: 0.95x, 2023-03-09
+Version: 0.95y, 2023-08-20
This package is used during a test phase to load the new PDF management code
of LaTeX.
diff --git a/macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty b/macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty
index dcfba47cc0..53218fe6aa 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty
+++ b/macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty
@@ -24,7 +24,7 @@
%% This file has the LPPL maintenance status "maintained".
%%
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{color-ltx}[2023-03-09 v0.95x
+\ProvidesPackage{color-ltx}[2023-08-20 v0.95y
Standard LaTeX Color (patched for l3color, part of pdfmanagement-testphase, original version 2022/01/06 v1.3d) (DPC)]
\edef\Gin@codes{%
\catcode`\noexpand\^^A\the\catcode`\^^A\relax
diff --git a/macros/latex/contrib/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty b/macros/latex/contrib/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty
index 2b08ae1d80..698922d100 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty
+++ b/macros/latex/contrib/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty
@@ -19,7 +19,7 @@
%
% for those people who are interested.
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
-\ProvidesExplPackage{colorspace-patches-tmp-ltx}{2023-03-09}{0.95x}
+\ProvidesExplPackage{colorspace-patches-tmp-ltx}{2023-08-20}{0.95y}
{temporay patches to for the colorspace package to test pdfresource management ... UF}
% colorspace can define more models, that l3color can't yet handle.
diff --git a/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx b/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx
index 2e67737df9..a0eff9a0db 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx
@@ -82,7 +82,7 @@
% }^^A
% }
%
-% \date{Version 0.95x, released 2023-03-09}
+% \date{Version 0.95y, released 2023-08-20}
%
% \maketitle
% \begin{documentation}
@@ -97,10 +97,9 @@
% combination should work too.
%
% The driver \emph{requires} the new PDF management code, so documents wanting to use it
-% should start like this
+% should start like this (this requires \LaTeX-2022-06-01 or newer):
% \begin{verbatim}
-% \RequirePackage{pdfmanagement-testphase} %loads the code
-% \DocumentMetadata % activates it
+% \DocumentMetadata %loads the PDF management and activates it
% {
% %% options
% %% e.g. pdf version, backend:
@@ -109,18 +108,6 @@
% }
% \end{verbatim}
%
-% Starting with \LaTeX-2022-06-01 (or a suitable latex-dev) loading the testphase
-% package is no longer required and this can be simplified to
-% \begin{verbatim}
-% \DocumentMetadata
-% {
-% %% options
-% %% e.g. pdf version, backend:
-% % pdfversion=1.7,
-% % backend = dvipdfmx
-% }
-% \end{verbatim}
-
% The new driver tries to be compatible with the standard \pkg{hyperref} drivers
% but there are nevertheless differences. Some of them due to the still experimental
% status of the driver, others are design decisions: one part of the project is
@@ -969,7 +956,7 @@
%<@@=hyp>
% \end{macrocode}
% \begin{macrocode}
-\ProvidesFile{hgeneric-testphase.def}[2023-03-09 v0.95x %
+\ProvidesFile{hgeneric-testphase.def}[2023-08-20 v0.95y %
generic Hyperref driver for the LaTeX PDF management testphase bundle]
\RequirePackage{etoolbox} %why?
diff --git a/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf b/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf
index 306f715e8d..d9133bcfaa 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx
index 94dddfa8ee..da0aa971fd 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx
@@ -45,7 +45,7 @@
% }^^A
% }
%
-% \date{Version 0.95x, released 2023-03-09}
+% \date{Version 0.95y, released 2023-08-20}
%
% \maketitle
%
@@ -56,30 +56,99 @@
% \begin{macrocode}
%<drivers>\ProvidesExplFile
%<*dvipdfmx>
- {l3backend-testphase-dvipdfmx.def}{2023-03-09}{}
+ {l3backend-testphase-dvipdfmx.def}{2023-08-20}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvipdfmx}
%</dvipdfmx>
%<*dvips>
- {l3backend-testphase-dvips.def}{2023-03-09}{}
+ {l3backend-testphase-dvips.def}{2023-08-20}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvips}
%</dvips>
%<*dvisvgm>
- {l3backend-testphase-dvisvgm.def}{2023-03-09}{}
+ {l3backend-testphase-dvisvgm.def}{2023-08-20}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvisvgm}
%</dvisvgm>
%<*luatex>
- {l3backend-testphase-luatex.def}{2023-03-09}{}
+ {l3backend-testphase-luatex.def}{2023-08-20}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (LuaTeX)}
%</luatex>
%<*pdftex>
- {l3backend-testphase-pdftex.def}{2023-03-09}{}
+ {l3backend-testphase-pdftex.def}{2023-08-20}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (pdfTeX)}
%</pdftex>
%<*xdvipdfmx>
- {l3backend-testphase-xetex.def}{2023-03-09}{}
+ {l3backend-testphase-xetex.def}{2023-08-20}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: XeTeX}
%</xdvipdfmx>
% \end{macrocode}
+% \subsection{Support for delayed literal and special}
+% Starting with TeXlive 2023 the engines support a \texttt{shipout} keyword
+% for \cs{pdfliteral} and \cs{special}. When used the argument is not expanded
+% when the command is used but only when the page is shipped out. This allows for example
+% the tagging code to delay the page-wise numbering of MC-chunks until the page is
+% actually built. For now we test the engine support. The boolean is setup
+% in pdfmanagement-testphase.dtx.
+% \begin{macrocode}
+%<*drivers>
+% \end{macrocode}
+%
+% The following commands provide the needed kernel backend support. This are basically
+% copies of similar commands of l3backend-basics.
+% \begin{macro}
+% {
+% \__kernel_backend_shipout_literal:e
+% }
+% The one shared function for all backends is access to the basic
+% \tn{special} primitive.
+% \begin{macrocode}
+\bool_if:NT \l__pdfmanagement_delayed_shipout_bool
+ {
+ \cs_new_protected:Npn \__kernel_backend_shipout_literal:e #1
+ { \tex_special:D~shipout { #1} }
+%</drivers>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%<*luatex|pdftex>
+% \end{macrocode}
+% \begin{macro}{\__kernel_backend_shipout_literal_pdf:e}
+% This is equivalent to \verb|\special{pdf:}| but the engine can
+% track it. Without the \texttt{direct} keyword everything is kept in
+% sync: the transformation matrix is set to the current point automatically.
+% Note that this is still inside the text (\texttt{BT} \dots \texttt{ET}
+% block).
+% \begin{macrocode}
+ \cs_new_protected:Npn \__kernel_backend_shipout_literal_pdf:e #1
+ {
+%<*luatex>
+ \tex_pdfextension:D ~ literal ~ shipout ~
+%</luatex>
+%<*pdftex>
+ \tex_pdfliteral:D ~ shipout ~
+%</pdftex>
+ { #1 }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\__kernel_backend_shipout_literal_page:e}
+% Page literals are pretty simple.
+% \begin{macrocode}
+ \cs_new_protected:Npn \__kernel_backend_shipout_literal_page:e #1
+ {
+%<*luatex>
+ \tex_pdfextension:D ~ literal ~ shipout ~
+%</luatex>
+%<*pdftex>
+ \tex_pdfliteral:D ~ shipout ~
+%</pdftex>
+ page { #1 }
+ }
+%</luatex|pdftex>
+%<drivers> }
+% \end{macrocode}
+% \end{macro}
+
% \subsection{Crossreferences}
% This uses the temporary l3ref-tmp.sty. It will
% will be replaced by kernel code later.
@@ -704,13 +773,15 @@
% \begin{macro}
% {
% \@@_backend_bdc:nn,
+% \@@_backend_shipout_bdc:ee,
% \@@_backend_bdcobject:nn,
% \@@_backend_bdcobject:n,
% \@@_backend_bmc:n,
% \@@_backend_emc:,
% \@@_backend_PageResources_gpush:n
% }
-% \cs{@@_backend_bdc:nn}, \cs{@@_backend_bdcobject:nn}, \cs{@@_backend_bdcobject:n},
+% \cs{@@_backend_bdc:nn}, \cs{@@_backend_shipout_bdc:ee},
+% \cs{@@_backend_bdcobject:nn}, \cs{@@_backend_bdcobject:n},
% \cs{@@_backend_bmc:n} and \cs{@@_backend_emc:}
% are the backend command that
% create the bdc/emc marker and store the properties.
@@ -731,8 +802,18 @@
%
\cs_set_protected:Npn \@@_backend_bdc:nn #1 #2 % #1 eg. Span, #2: dict_content
{
- \@@_backend_pdfmark:x{/#1~<<#2>>~/BDC}
+ \@@_backend_pdfmark:n{/#1~<<#2>>~/BDC}
}
+
+\bool_if:NT\l__pdfmanagement_delayed_shipout_bool
+ {
+ \cs_new_protected:Npn \@@_backend_bdc_shipout:ee #1 #2 % #1 eg. Span, #2: dict_content
+ {
+ \__kernel_backend_shipout_literal:e
+ {ps: SDict ~ begin ~ mark /#1~<<#2>>~/BDC ~ pdfmark ~ end }
+ }
+ }
+
\cs_set_protected:Npn \@@_backend_bdcobject:nn #1 #2 % #1 eg. Span, #2: object name
{
\@@_backend_pdfmark:x{/#1~\@@_backend_object_ref:n{#2}~/BDC}
@@ -757,6 +838,11 @@
%
\cs_set_protected:Npn \@@_backend_bdc:nn #1 #2 % #1 eg. Span, #2: dict_content
{}
+\bool_if:NT\l__pdfmanagement_delayed_shipout_bool
+ {
+ \cs_set_protected:Npn \@@_backend_shipout_bdc:ee #1 #2 % #1 eg. Span, #2: dict_content
+ {}
+ }
\cs_set_protected:Npn \@@_backend_bdcobject:nn #1 #2 % #1 eg. Span, #2: object name
{}
\cs_set_protected:Npn \@@_backend_bdcobject:n #1 % #1 eg. Span,
@@ -800,7 +886,7 @@
\int_gincr:N \g_@@_backend_name_int
\__kernel_backend_literal:x
{
- pdf:code~/#1/l3pdf\int_use:N\g_@@_backend_name_int\c_space_tl BDC
+ pdf:code~/\exp_not:n{#1}/l3pdf\int_use:N\g_@@_backend_name_int\c_space_tl BDC
}
\__kernel_backend_literal:x
{
@@ -831,13 +917,22 @@
\__kernel_backend_literal:n {pdf:code~ /#1~<<#2>>~BDC }
}
-\cs_set_protected:Npn \@@_backend_bdc:nn #1 #2
+ \cs_set_protected:Npn \@@_backend_bdc:nn #1 #2
{
\bool_if:NTF \g__pdfmanagement_active_bool
{\cs_gset_eq:NN \@@_backend_bdc:nn \@@_backend_bdc_contobj:nn}
{\cs_gset_eq:NN \@@_backend_bdc:nn \@@_backend_bdc_contstream:nn}
\@@_backend_bdc:nn {#1}{#2}
}
+
+\bool_if:NT\l__pdfmanagement_delayed_shipout_bool
+ {
+ \cs_set_protected:Npn \@@_backend_bdc_shipout_contstream:ee #1 #2
+ {
+ \__kernel_backend_shipout_literal:e {pdf:code~ /#1~<<#2>>~BDC }
+ }
+ \cs_set_eq:NN \@@_backend_bdc_shipout:ee \@@_backend_bdc_shipout_contstream:ee
+ }
\cs_set_protected:Npn \@@_backend_emc:
{
\__kernel_backend_literal:n {pdf:code~EMC} %pdfbase
@@ -889,7 +984,7 @@
{
\int_gincr:N \g_@@_backend_name_int
\exp_args:Nx\__kernel_backend_literal_page:n
- { /#1 ~ /l3pdf\int_use:N\g_@@_backend_name_int\c_space_tl BDC }
+ { /\exp_not:n{#1} ~ /l3pdf\int_use:N\g_@@_backend_name_int\c_space_tl BDC }
\bool_if:NTF \l_@@_backend_xform_bool
{
\exp_args:Nnx\pdfdict_gput:nnn %no handler needed
@@ -922,13 +1017,24 @@
{
\__kernel_backend_literal_page:n { /#1~<<#2>>~BDC }
}
-\cs_set_protected:Npn \@@_backend_bdc:nn #1 #2
+
+ \cs_set_protected:Npn \@@_backend_bdc:nn #1 #2
{
\bool_if:NTF \g__pdfmanagement_active_bool
{\cs_gset_eq:NN \@@_backend_bdc:nn \@@_backend_bdc_contobj:nn}
{\cs_gset_eq:NN \@@_backend_bdc:nn \@@_backend_bdc_contstream:nn}
\@@_backend_bdc:nn {#1}{#2}
}
+
+\bool_if:NT\l__pdfmanagement_delayed_shipout_bool
+ {
+ \cs_set_protected:Npn \@@_backend_bdc_shipout_contstream:ee #1 #2
+ {
+ \__kernel_backend_shipout_literal_page:e { /#1~<<#2>>~BDC }
+ }
+ \cs_set_eq:NN \@@_backend_bdc_shipout:ee \@@_backend_bdc_shipout_contstream:ee
+ }
+
\cs_set_protected:Npn \@@_backend_emc:
{
\__kernel_backend_literal_page:n { EMC }
@@ -973,7 +1079,7 @@
{
\int_gincr:N \g_@@_backend_name_int
\exp_args:Nx\__kernel_backend_literal_page:n
- { /#1 ~ /l3pdf\int_use:N\g_@@_backend_name_int\c_space_tl BDC }
+ { /\exp_not:n{#1} ~ /l3pdf\int_use:N\g_@@_backend_name_int\c_space_tl BDC }
% code to set the property ....
\int_gincr:N\g_@@_backend_resourceid_int
\bool_if:NTF \l_@@_backend_xform_bool
@@ -1013,6 +1119,7 @@
{
\__kernel_backend_literal_page:n { /#1~<<#2>>~BDC }
}
+
\cs_set_protected:Npn \@@_backend_bdc:nn #1 #2
{
\bool_if:NTF \g__pdfmanagement_active_bool
@@ -1020,6 +1127,15 @@
{\cs_gset_eq:NN \@@_backend_bdc:nn \@@_backend_bdc_contstream:nn}
\@@_backend_bdc:nn {#1}{#2}
}
+\bool_if:NT\l__pdfmanagement_delayed_shipout_bool
+ {
+ \cs_set_protected:Npn \@@_backend_bdc_shipout_contstream:ee #1 #2
+ {
+ \__kernel_backend_shipout_literal_page:e { /#1~<<#2>>~BDC }
+ }
+ \cs_set_eq:NN \@@_backend_bdc_shipout:ee \@@_backend_bdc_shipout_contstream:ee
+ }
+
\cs_set_protected:Npn \@@_backend_emc:
{
\__kernel_backend_literal_page:n { EMC }
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf
index 03c2cb4d73..cb9604b4b4 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx
index 761a2fef58..15e5bdc9b4 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Version 0.95x, released 2023-03-09}
+% \date{Version 0.95y, released 2023-08-20}
%
% \maketitle
% \begin{documentation}
@@ -432,7 +432,7 @@
% \begin{macrocode}
%<@@=pdfannot>
%<*header>
-\ProvidesExplPackage{l3pdfannot}{2023-03-09}{0.95x}
+\ProvidesExplPackage{l3pdfannot}{2023-08-20}{0.95y}
{PDF-annotations}
\RequirePackage{l3pdfdict}
%</header>
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf
index 6efe0a3e81..2df2bd9043 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx
index 4a6af666de..7b8eb4d5d8 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.95x, released 2023-03-09}
+% \date{Version 0.95y, released 2023-08-20}
%
% \maketitle
% \begin{documentation}
@@ -208,7 +208,7 @@
% \begin{macrocode}
%<@@=pdfdict>
%<*header>
-\ProvidesExplPackage{l3pdfdict}{2023-03-09}{0.95x}
+\ProvidesExplPackage{l3pdfdict}{2023-08-20}{0.95y}
{Tools for PDF dictionaries (LaTeX PDF management testphase bundle)}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf
index 277eda9a51..d3cd1dad08 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx
index 0a3933eaca..bce57aac58 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.95x, released 2023-03-09}
+% \date{Version 0.95y, released 2023-08-20}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf
index f3f2709d1c..c6ece9e4e1 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx
index e5f0b33fed..9ece0e36e0 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx
@@ -64,7 +64,7 @@
% }^^A
% }
%
-% \date{Version 0.95x, released 2023-03-09}
+% \date{Version 0.95y, released 2023-08-20}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf
index c3a510d875..a213e7ef34 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx
index b2920fcdc4..e73bb073ff 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.95x, released 2023-03-09}
+% \date{Version 0.95y, released 2023-08-20}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf
index c668f282fe..976ddb1bda 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx
index 5011ea4916..ac43173242 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx
@@ -55,7 +55,7 @@
% }^^A
% }
%
-% \date{Version 0.95x, released 2023-03-09}
+% \date{Version 0.95y, released 2023-08-20}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf
index e33b6a3598..e6f6dffc75 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx
index 55a230c77e..19a9f91425 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx
@@ -83,7 +83,7 @@
% }^^A
% }
%
-% \date{Version 0.95x, released 2023-03-09}
+% \date{Version 0.95y, released 2023-08-20}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf
index 400c83654e..ec6f6f9077 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx
index 72f111d55a..3b82017300 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.95x, released 2023-03-09}
+% \date{Version 0.95y, released 2023-08-20}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf
index 98020b9fa2..da290f2e24 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx
index c9181a6ed8..bc570f29e8 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx
@@ -69,7 +69,7 @@
% }^^A
% }
%
-% \date{Version 0.95x, released 2023-03-09}
+% \date{Version 0.95y, released 2023-08-20}
%
% \maketitle
% \begin{documentation}
@@ -134,8 +134,7 @@
% So a typical use together with hyperref could look like this
%
% \begin{verbatim}
-% \RequirePackage{pdfmanagement-testphase}
-% \DocumentMetadata{uncompress}
+% \DocumentMetadata{}
% \documentclass{article}
% \usepackage{hyperref}
% \usepackage{l3pdffield-testphase}
@@ -973,7 +972,7 @@
%<*package>
%<@@=pdffield>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesExplPackage{l3pdffield-testphase}{2023-03-09}{0.95x}%
+\ProvidesExplPackage{l3pdffield-testphase}{2023-08-20}{0.95y}%
{form fields}
% \end{macrocode}
% \subsection{hyperref specific command}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf
index 35caa5b8db..4e1abae41e 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx
index fe3ffbd6ef..6642eb3024 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.95x, released 2023-03-09}
+% \date{Version 0.95y, released 2023-08-20}
%
% \maketitle
% \begin{documentation}
@@ -398,7 +398,7 @@
%
% \begin{macrocode}
%<*header>
-\ProvidesExplPackage{l3pdffile}{2023-03-09}{0.95x}
+\ProvidesExplPackage{l3pdffile}{2023-08-20}{0.95y}
{embedding and referencing files in PDF---LaTeX PDF management testphase bundle}
\RequirePackage{l3pdftools} %temporarly!!
%</header>
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf
index c51b62daf8..4f7c9df5bc 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx
index df5724be08..d7e5dcc346 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx
@@ -57,7 +57,7 @@
% }^^A
% }
%
-% \date{Version 0.95x, released 2023-03-09}
+% \date{Version 0.95y, released 2023-08-20}
%
% \maketitle
% \begin{documentation}
@@ -632,7 +632,7 @@
%<@@=pdfmanagement>
%<*header>
%
-\ProvidesExplPackage{l3pdfmanagement}{2023-03-09}{0.95x}
+\ProvidesExplPackage{l3pdfmanagement}{2023-08-20}{0.95y}
{Management of core PDF dictionaries (LaTeX PDF management testphase bundle)}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf
index fa89390e25..24350d7fc1 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx
index 034cf6fd00..d3e88eeb31 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.95x, released 2023-03-09}
+% \date{Version 0.95y, released 2023-08-20}
%
% \maketitle
% \begin{documentation}
@@ -563,7 +563,7 @@
% \begin{macrocode}
%<@@=pdfmeta>
%<*header>
-\ProvidesExplPackage{l3pdfmeta}{2023-03-09}{0.95x}
+\ProvidesExplPackage{l3pdfmeta}{2023-08-20}{0.95y}
{PDF-Standards---LaTeX PDF management testphase bundle}
%</header>
% \end{macrocode}
@@ -1213,7 +1213,11 @@
_pdfstandard / X-6p .code:n =
{\AddToDocumentProperties [document]{pdfstandard-X}{PDF/X-6p}},
_pdfstandard / UA-1 .code:n =
- {\AddToDocumentProperties [document]{pdfstandard-UA}{1}},
+ {
+ \AddToDocumentProperties [document]{pdfstandard-UA}{{1}{2016}}
+ },
+ _pdfstandard / UA-2 .code:n =
+ {\AddToDocumentProperties [document]{pdfstandard-UA}{{2}{2023}}},
xmp .bool_gset:N = \g_@@_xmp_bool
}
% \end{macrocode}
@@ -1930,7 +1934,8 @@
{Year~of~standard}
% \end{macrocode}
% \end{macro}
-% \item[pdfuaid] here we need to declare the property \enquote{part}.
+% \item[pdfuaid] here we need (?) to declare the property
+% \enquote{part} and \enquote{rev}.
% \begin{macro}{pdfuaid~(schema)}
% \begin{macrocode}
\@@_xmp_schema_new:nnn
@@ -1943,6 +1948,12 @@
{Integer}
{internal}
{Part~of~ISO~14289~standard}
+\@@_xmp_property_new:nnnnn
+ {pdfuaid}
+ {rev}
+ {Integer}
+ {internal}
+ {Revision~of~ISO~14289~standard}
% \end{macrocode}
% \end{macro}
% \item[pdfx] According to [1] not an allowed schema, but it seems
@@ -2216,8 +2227,13 @@
{\@@_xmp_add_packet_line:nne {pdfaid}{rev} {\pdfmeta_standard_item:n{year}}}
\@@_xmp_add_packet_line:nne
{pdfxid}{GTS_PDFXVersion}{\GetDocumentProperties{document/pdfstandard-X}}
- \@@_xmp_add_packet_line:nne
- {pdfuaid}{part}{\GetDocumentProperties{document/pdfstandard-UA}}
+ \pdfmanagement_get_documentproperties:nNT {document/pdfstandard-UA}\l_@@_tmpa_tl
+ {
+ \@@_xmp_add_packet_line:nne
+ {pdfuaid}{part}{\exp_last_unbraced:No\use_i:nn \l_@@_tmpa_tl}
+ \@@_xmp_add_packet_line:nne
+ {pdfuaid}{rev}{\exp_last_unbraced:No\use_ii:nn \l_@@_tmpa_tl}
+ }
}
% \end{macrocode}
% \end{macro}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf
index 66e3bf0206..8b585d669a 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx
index 8996d74131..9f1ddc8e78 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.95x, released 2023-03-09}
+% \date{Version 0.95y, released 2023-08-20}
%
% \maketitle
% \begin{documentation}
@@ -126,7 +126,7 @@
% if the management is active.
% \begin{function}[updated = 2020-07-03]
% {
-% \pdf_bdc:nn
+% \pdf_bdc:nn, \pdf_bdc:ee
% }
% \begin{syntax}
% \cs{pdf_bdc:nn} \Arg{tag} \Arg{dictionary content}
@@ -139,8 +139,28 @@
% Without the resource management the content is used directly. It then
% depends on the backend how it is handled: with dvips a name is used
% while the pdfmode engines and dvipdfmx write the content into the stream.
-%
% \end{function}
+% \begin{function}[added = 2023-08-18]
+% {
+% \pdf_bdc_shipout:ee
+% }
+% \begin{syntax}
+% \cs{pdf_bdc_shipout:ee} \Arg{tag} \Arg{dictionary content}
+% \end{syntax}
+% This command adds a BDC marked content operator to the current page stream.
+% \meta{tag} is the tag of this operator (without the leading slash),
+% \meta{dictionary content} is the content of the second argument.
+%
+% Differently to \cs{pdf_bdc:ee} the arguments are not expanded when the
+% command is \emph{used}, but only at \emph{shipout}.
+% This requires new engines which
+% allow to use the keyword \texttt{shipout} with the primitive
+% \cs{special} and \cs{pdfliteral}. The content of \meta{dictionary content}
+% is added in the stream.
+%
+% The command requires current engines and is not defined if an to old engine is detected!
+% \end{function}
+%
% \begin{function}[added = 2020-07-03]
% {
% \pdf_bdcobject:nn
@@ -211,7 +231,7 @@
%
% \begin{macrocode}
%<*header>
-\ProvidesExplPackage{l3pdftools}{2023-03-09}{0.95x}
+\ProvidesExplPackage{l3pdftools}{2023-08-20}{0.95y}
{candidate commands for l3pdf---LaTeX PDF management testphase bundle}
%</header>
% \end{macrocode}
@@ -252,11 +272,15 @@
% \end{macrocode}
% \begin{macro}{\pdf_string_from_unicode:nnN}
% \begin{macrocode}
+\msg_new:nnn {pdfmanagement}{ unknown-convert}
+ {
+ Unknown~string~conversion~method~'#1'!
+ }
\cs_new:Npn \pdf_string_from_unicode:nnN #1 #2 #3
{
\cs_if_exist_use:cF { @@_string_from_unicode_#1:nN }
{
- \__kernel_msg_error:nnn { pdf } { unknown-convert } {#1}
+ \msg_error:nnn { pdf } { unknown-convert } {#1}
\use_none:nn
}
{ #2 } #3
@@ -405,13 +429,28 @@
% \end{macro}
%
% \subsubsection{BDC operator commands}
-% \begin{macro}{\pdf_bdc:nn}
+% \begin{macro}{\pdf_bdc:nn,\pdf_bdc:ee}
+% \begin{macro}{\pdf_bdc_shipout:ee}
% \begin{macro}{\pdf_bdcobject:nn}
% \begin{macro}{\pdf_bdcobject:n}
% \begin{macro}{\pdf_bmc:n}
% \begin{macro}{\pdf_emc:}
% \begin{macrocode}
\cs_new_protected:Npn \pdf_bdc:nn #1 #2 { \@@_backend_bdc:nn { #1 }{ #2 } }
+\cs_generate_variant:Nn \pdf_bdc:nn {ee}
+
+\cs_new_protected:Npn \pdf_bdc_shipout:ee #1 #2
+ {
+ \bool_if:NTF\l__pdfmanagement_delayed_shipout_bool
+ {
+ \@@_backend_bdc_shipout:ee { #1 }{ #2 }
+ \cs_gset_eq:NN \pdf_bdc_shipout:ee \@@_backend_bdc_shipout:ee
+ }
+ {
+ \msg_error:nn {pdfmanagement}{delayed-shipout}
+ \cs_gset_eq:NN \pdf_bdc_shipout:ee \use_none:nn
+ }
+ }
\cs_new_protected:Npn \pdf_bdcobject:nn #1 #2 { \@@_backend_bdcobject:nn { #1 }{ #2 } }
\cs_new_protected:Npn \pdf_bdcobject:n #1 { \@@_backend_bdcobject:n { #1 } }
\cs_new_protected:Npn \pdf_bmc:n #1 { \@@_backend_bmc:n { #1 } }
@@ -422,6 +461,7 @@
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
% \begin{macrocode}
%</package>
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf
index 633a4ef871..5dd3e36004 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx
index 4eeb9071ab..d9271f3523 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Version 0.95x, released 2023-03-09}
+% \date{Version 0.95y, released 2023-08-20}
%
% \maketitle
% \begin{documentation}
@@ -58,7 +58,7 @@
% for which pdf\TeX{} introduced the short name \enquote{xforms}.
%
% The status is still beta.
-% The dvips route is now better supported but there are open issus
+% The dvips route is now better supported but there are open issues
% if landscape pages are involved or if the objects are larger than the page.
% With dvips the creation of a form involves typesetting and so can affect spacing.
%
@@ -132,7 +132,7 @@
% \begin{macrocode}
%<@@=pdf>
%<*header>
-\ProvidesExplPackage{l3pdfxform}{2023-03-09}{0.95x}
+\ProvidesExplPackage{l3pdfxform}{2023-08-20}{0.95y}
{command to create xforms (beta)---LaTeX PDF management testphase bundle}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf
index 4d0fb96e1f..aa8d8e18b5 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx b/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx
index ba3473cb30..63ce91e990 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx
@@ -47,7 +47,7 @@
% }^^A
% }
%
-% \date{Version 0.95x, released 2023-03-09}
+% \date{Version 0.95y, released 2023-08-20}
%
% \maketitle
% \begin{documentation}
@@ -89,9 +89,11 @@
% \item[\texttt{pdfstandard}] Choice key to set the pdf standard.
%
% Starting with version 0.95s it is also possible to use the values
-% |X-4|, |X-4p|, |X-5g|, |X-5n|, |X-5pg|, |X-6|, |X-6n|, |X-6p|, |UA-1| for
+% |X-4|, |X-4p|, |X-5g|, |X-5n|, |X-5pg|, |X-6|, |X-6n|, |X-6p|, |UA-1|, for
% a PDF/X and PDF/UA standard. These keys set \emph{only} the relevant
-% XMP-metadata.
+% XMP-metadata. In version 0.95z support for |UA-2| has been added but
+% note that |UA-2| hasn't been released yet. It should be used only together
+% with pdf version 2.0.
%
% Beside this |A-1b|, |A-2a|, |A-2b|, |A-2u|, |A-3a|, |A-3b|, |A-3u| and |A-4|
% are accepted as values for A-standards. The casing is irrelevant, |a-1b| works too.
@@ -141,6 +143,9 @@
% \item[\texttt{firstaidoff}] This accepts a comma lists of keywords and disables the patches
% related to them. More information can be found in the documentation of
% \pkg{pdfmanagement-firstaid}.
+% \item[\texttt{xmp-export}] This will export the XMP-metadata to a file \verb+\jobname.xmpi+.
+% with \texttt{debug=\{xmp-export=filename\}} the file name can be changed.
+% More information can be found in the documentation of \pkg{l3pdfmeta}.
% \end{description}
% \end{description}
%
@@ -215,7 +220,7 @@
% \begin{macrocode}
%<@@=pdfmanagement>
%<*header>
-\ProvidesExplPackage{ltdocinit}{2023-03-09}{0.95x}
+\ProvidesExplPackage{ltdocinit}{2023-08-20}{0.95y}
{Initialize document metadata}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf b/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf
index 963c915cca..19cf28e478 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.dtx b/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.dtx
deleted file mode 100644
index 11eae11300..0000000000
--- a/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.dtx
+++ /dev/null
@@ -1,171 +0,0 @@
-% \iffalse meta-comment
-%
-%% File: output-patches.dtx (C) Copyright 2020-2023 Frank Mittelbach
-%
-% It may be distributed and/or modified under the conditions of the
-% LaTeX Project Public License (LPPL), either version 1.3c of this
-% license or (at your option) any later version. The latest version
-% of this license is in the file
-%
-% https://www.latex-project.org/lppl.txt
-%
-%<*driver>
-\documentclass{l3doc}
-
-\EnableCrossrefs
-\CodelineIndex
-\begin{document}
- \DocInput{output-patches-tmp-ltx.dtx}
-\end{document}
-%</driver>
-%
-% \fi
-%
-% \providecommand\hook[1]{\texttt{#1}}
-%
-%
-%
-% \title{Temporary output patches for tagging and better link support}
-% \author{Frank Mittelbach \and Ulrike Fischer}
-%
-% \maketitle
-%
-% \section{Introduction}
-%
-% This package contains a few patches of internal \LaTeX{} needed
-% to support paragraph tagging across
-% page boundaries (in \pdfTeX) and improve the behaviour of links across page breaks.
-%
-% Until this get properly integrated with the kernel code this has
-% to be taken as a prototype and code, interfaces as well as
-% behavior may change without notice and certainly without any
-% backwards compatibility!
-%
-%
-% \StopEventually{\setlength\IndexMin{200pt} \PrintIndex }
-%
-%
-% \section{The Implementation}
-% \begin{macrocode}
-%<*package>
-% \end{macrocode}
-%
-% \begin{macrocode}
-\ProvidesPackage{output-patches-tmp-ltx}
- [2022-10-29 v0.96 Temporary output patches for tagging and better link support]
-\RequirePackage{etoolbox}
-% \end{macrocode}
-%
-%
-% \subsection{Patching the OR}
-% This add hooks around header and footer, in \cs{@makecol} and in multicol.
-% At first initialize some of the hooks. We use providecommand to avoid problems if
-% the kernel changes here and provides them directly.
-% \begin{macrocode}
-\providecommand\@kernel@before@head{}
-\providecommand\@kernel@before@foot{}
-\providecommand\@kernel@after@head{}
-\providecommand\@kernel@after@foot{}
-\providecommand\@mult@ptagging@hook{}% multicol
-% \end{macrocode}
-%
-% \begin{macrocode}
-
-\patchcmd\@outputpage
- {\vfil\color@hbox\normalcolor\hb@xt@\textwidth{\@thehead}\color@endbox}
- {\vfil\@kernel@before@head\color@hbox\normalcolor\hb@xt@\textwidth{\@thehead}\color@endbox\@kernel@after@head}
- {\typeout{Patching header in \string\@outputpage}}{\PATCHerror }
-
-
-\patchcmd\@outputpage
- {\color@hbox\normalcolor\hb@xt@\textwidth{\@thefoot}\color@endbox}
- {\@kernel@before@foot\color@hbox\normalcolor\hb@xt@\textwidth{\@thefoot}\color@endbox\@kernel@after@foot}
- {\typeout{Patching footer in \string\@outputpage}}{\PATCHerror }
-% \end{macrocode}
-%
-% \begin{macro}{\@makecol}
-% We have to patch \cs{@makecol} in two places:
-% \begin{itemize}
-% \item
-% update 255 up front to add missing tmb/tme if necessary
-% \item
-% update the \cs{footins} stream if that one got split
-% \end{itemize}
-%
-% If the new latex-lab file for the output routine is loaded it will do the right thing.
-% In the other case we patch \cs{@makecol} manually.
-% \begin{macrocode}
-\@ifpackageloaded{latex-lab-testphase-new-or}
- {}
- {
- \providecommand\@kernel@before@footins{}
- \providecommand\@kernel@before@cclv{}
-
- \patchcmd\@makecol
- {\vskip\skip\footins}
- {\vskip\skip\footins\@kernel@before@footins}
- {\typeout{Patching \string\@makecol\space for tagging}}{\PATCHerror }
-
-% for some reason patching with etoolbox only works in this order ...
-
- \pretocmd\@makecol{\@kernel@before@cclv}
- {\typeout{Patching \string\@makecol\space for tagging}}{\PATCHerror }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{\pkg{multicol} adjustments}
-%
-% The patches for pkg{multicol} are fairly minimal:
-% \begin{itemize}
-% \item At the start of the environment anything already on the
-% page is picked up and stored in \cs{partial@page}, we may need to add
-% a TMB to that (it should have a proper TME). This has to happen
-% in the \enquote{main} stream context.
-% \item
-% \item
-% \end{itemize}
-%
-% \begin{macrocode}
-\AddToHook{package/multicol/after}
- {% multicol needs later loading
-% \end{macrocode}
-%
-% \begin{macrocode}
- \patchcmd\page@sofar
- {\setbox\z@\hbox{p}\global\dimen\tw@\dp\z@}%
- {%
- \setbox\z@\hbox{p}\global\dimen\tw@\dp\z@
- \@mult@ptagging@hook
- }%
- {\typeout{Patching \string\page@sofar\space for tagging}}{\PATCHerror}%
-}
-% \end{macrocode}
-%
-% \subsection{Interrupt hooks}
-% This requires the l3pdfannot module!
-% We add the code here and not in hyperref, as it should also work with links
-% created directly with the l3pdfannot commands. The file is only
-% loaded by the pdfmanagement, so no need to test if the commands exist.
-% \begin{macrocode}
-\ExplSyntaxOn
-\def\@kernel@before@head{\pdfannot_link_off:}
-\def\@kernel@before@foot{\pdfannot_link_off:}
-\def\@kernel@after@head {\pdfannot_link_on:}
-\def\@kernel@after@foot {\pdfannot_link_on:}
-\ExplSyntaxOff
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</package>
-% \end{macrocode}
-
-% \begin{macrocode}
-%<*latex-lab>
-\ProvidesFile{new-or-1-latex-lab-testphase.ltx}
- [2022-10-26 v0.8 Temporary output patches for tagging and better link support]
-\RequirePackage{latex-lab-testphase-new-or-1}
-%</latex-lab>
-% \end{macrocode}
-% \Finale
-%
diff --git a/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdf b/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdf
deleted file mode 100644
index dc8d376f76..0000000000
--- a/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx
index 23ce50f33d..3a7dee37b0 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx
@@ -47,7 +47,7 @@
% }^^A
% }
%
-% \date{Version 0.95x, released 2023-03-09}
+% \date{Version 0.95y, released 2023-08-20}
%
% \maketitle
% \begin{documentation}
@@ -63,7 +63,7 @@
% |debug={firstaidoff={name1,name2,...},...}|.
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{pdfmanagement-firstaid}{2023-03-09}{0.95x}
+\ProvidesExplPackage{pdfmanagement-firstaid}{2023-08-20}{0.95y}
{LaTeX PDF management testphase bundle / firstaid-patches}
%<@@=pdfmanagement>
@@ -113,31 +113,6 @@
}
}
% \end{macrocode}
-% \subsection{Output routine}
-% The patches for the LaTeX output routine commands for the tagging
-% of the header/footer, the suppressing of links
-% and the patch to multicol for the para tagging
-% by default, but must be requested with the key \texttt{testphase=new-or-1}.
-% But until latex-lab has been updated we must ensure that they are loaded with
-% the various phases.
-% \begin{macrocode}
-\bool_if:NT \g_@@_firstaid_output_bool
- {
-% \end{macrocode}
-% This catches also phase-II and tagpdf.
-% \begin{macrocode}
- \file_if_exist:nF {new-or-1-latex-lab-testphase.ltx}
- {
- \AddToHook{package/latex-lab-testphase-new-or/after}
- {\RequirePackage{output-patches-tmp-ltx}}
-% \end{macrocode}
-% This is for phase-I
-% \begin{macrocode}
- \AddToHook{package/tagpdf/after}
- {\RequirePackage{output-patches-tmp-ltx}}
- }
- }
-% \end{macrocode}
% \subsection{\pkg{beamer}}
% \pkg{beamer} made use of the now unsupported syntax |linkbordercolor={.5 .5 .5}|.
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf
index 05f5aeac65..d9a5a53bf5 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx
index 15ee3c7d0c..8085bbc5df 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx
@@ -47,22 +47,34 @@
% }^^A
% }
%
-% \date{Version 0.95x, released 2023-03-09}
+% \date{Version 0.95y, released 2023-08-20}
%
% \maketitle
% \begin{documentation}
% \section*{Abstract}
-% {\em This is a temporary package created to allow the manual
+% {\em This is a temporary bundle created to allow the external
% loading of the new \LaTeX{} PDF management code during a test phase.
% It will disappear when the code is integrated into the \LaTeX{} format.}
%
% \medskip
-% \noindent During the test phase the package should be used like this:
+% \noindent When using \LaTeX-2022-06-01 or newer, the
+% PDF management code is loaded if you use \cs{DocumentMetadata} before
+% \cs{documentclass}.
%
% \begin{verbatim}
-% \RequirePackage{pdfmanagement-testphase} % load the package
+% \DocumentMetadata % load activate the PDF management (with options)
+% {
+% % options
+% }
%
-% \DocumentMetadata % activate the PDF management (with options)
+% \documentclass {...}
+% \end{verbatim}
+%
+% In older \LaTeX{} is has to be loaded explicitly:
+%
+% \begin{verbatim}
+% \RequirePackage{pdfmanagement-testphase}
+% \DocumentMetadata % load activate the PDF management (with options)
% {
% % options
% }
@@ -72,9 +84,6 @@
% Note that the activation has to happen before the \cs{documentclass} declaration.
% Because of this, the package needs loading with \cs{RequirePackage}.
%
-% Starting with LaTeX 2022-06-01 (or a suitable latex-dev) it is no longer necessary to
-% load pdfmanagement-testphase manually, using \cs{DocumentMetadata} is enough.
-%
%
% \section*{Feedback wanted!}
%
@@ -386,7 +395,7 @@
% \begin{macrocode}
%<@@=pdf>
%<*package>
-\ProvidesExplPackage{pdfmanagement-testphase}{2023-03-09}{0.95x}
+\ProvidesExplPackage{pdfmanagement-testphase}{2023-08-20}{0.95y}
{LaTeX PDF management testphase bundle}
\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
\IfFormatAtLeastTF{2020-10-01}{}{
@@ -414,8 +423,53 @@
% to allow to set it in the document.
% \begin{macrocode}
%<*header>
-\ProvidesExplFile{pdfmanagement-testphase.ltx}{2023-03-09}{0.95x}
+\ProvidesExplFile{pdfmanagement-testphase.ltx}{2023-08-20}{0.95y}
{PDF~management~code~(testphase)}
+% \end{macrocode}
+% We define a boolean for the new delayed shipout. This is temporary. At some
+% time we can request the new engines!
+% \begin{macrocode}
+\bool_new:N\l__pdfmanagement_delayed_shipout_bool
+\msg_new:nnn {pdfmanagement}{delayed-shipout}
+ {
+ The~engine~is~too~old!\\
+ \tl_to_str:n{\pdf_bdc_shipout:ee}~can~not~be~used.
+ }
+\sys_if_engine_luatex:T
+ {
+ \int_compare:nNnT {\tex_luatexversion:D} > {116}
+ {
+ \bool_set_true:N\l__pdfmanagement_delayed_shipout_bool
+ }
+ }
+\sys_if_engine_pdftex:T
+ {
+ \fp_compare:nNnT{\int_use:N\tex_pdftexversion:D.\tex_pdftexrevision:D}>{140.24}
+ {
+ \bool_set_true:N\l__pdfmanagement_delayed_shipout_bool
+ }
+ }
+\sys_if_engine_ptex:T
+ {
+ \int_compare:nNnT{\tex_epTeXversion:D} > {230213}
+ {
+ \bool_set_true:N\l__pdfmanagement_delayed_shipout_bool
+ }
+ }
+\sys_if_engine_uptex:T
+ {
+ \int_compare:nNnT{\tex_epTeXversion:D} > {230213}
+ {
+ \bool_set_true:N\l__pdfmanagement_delayed_shipout_bool
+ }
+ }
+\sys_if_engine_xetex:T
+ {
+ \fp_compare:nNnT{\int_use:N\tex_XeTeXversion:D\tex_XeTeXrevision:D} > {0.999994}
+ {
+ \bool_set_true:N\l__pdfmanagement_delayed_shipout_bool
+ }
+ }
%</header>
%<*package>
%\RequirePackage{l3pdfdict} % needed by l3pdfmanagement
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.ins b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.ins
index 5f0656d898..e00d1f89dc 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.ins
+++ b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.ins
@@ -215,13 +215,6 @@ and all files in that bundle must be distributed together.
}
}
-\generate
- {
- \file {output-patches-tmp-ltx.sty}
- {
- \from{output-patches-tmp-ltx.dtx}{package}
- }
- }
\def\MetaPrefix{-- }
\def\defaultpostamble{%
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf
index 7e40c5713c..42536d3849 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty b/macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
index 192e4b77a1..2e2fb2edab 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
+++ b/macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
@@ -1,6 +1,6 @@
%% LaTeX2e file `xcolor-patches.sty'
%%
-\ProvidesPackage{xcolor-patches-tmp-ltx}[2023-03-09 v0.95x patch xcolor for l3color]
+\ProvidesPackage{xcolor-patches-tmp-ltx}[2023-08-20 v0.95y patch xcolor for l3color]
\@ifundefined{color_set:nn}{\RequirePackage{l3color}}{}
\ExplSyntaxOn
diff --git a/macros/latex/contrib/postnotes/CHANGELOG.md b/macros/latex/contrib/postnotes/CHANGELOG.md
index dc6811e52c..fda5f61173 100644
--- a/macros/latex/contrib/postnotes/CHANGELOG.md
+++ b/macros/latex/contrib/postnotes/CHANGELOG.md
@@ -1,6 +1,12 @@
# Changelog
-## [Unreleased](https://github.com/gusbrs/postnotes/compare/v0.2.5...HEAD)
+## [Unreleased](https://github.com/gusbrs/postnotes/compare/v0.2.6...HEAD)
+
+## [v0.2.6](https://github.com/gusbrs/postnotes/compare/v0.2.5...v0.2.6) (2023-08-21)
+
+### Fixed
+- Check `if@filesw` before writing labels to the .aux file.
+- Ensure `\post@note` is defined in the .aux file.
## [v0.2.5](https://github.com/gusbrs/postnotes/compare/v0.2.4...v0.2.5) (2023-06-16)
diff --git a/macros/latex/contrib/postnotes/postnotes-code.pdf b/macros/latex/contrib/postnotes/postnotes-code.pdf
index 46520b3bf6..d4a78a2cfe 100644
--- a/macros/latex/contrib/postnotes/postnotes-code.pdf
+++ b/macros/latex/contrib/postnotes/postnotes-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/postnotes/postnotes-doc.pdf b/macros/latex/contrib/postnotes/postnotes-doc.pdf
index 8f2ea4fdc6..62ee64468b 100644
--- a/macros/latex/contrib/postnotes/postnotes-doc.pdf
+++ b/macros/latex/contrib/postnotes/postnotes-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/postnotes/postnotes.dtx b/macros/latex/contrib/postnotes/postnotes.dtx
index cb7998fbea..5a32a17963 100644
--- a/macros/latex/contrib/postnotes/postnotes.dtx
+++ b/macros/latex/contrib/postnotes/postnotes.dtx
@@ -138,23 +138,22 @@
% kernel or newer.
%
% \begin{macrocode}
-\NeedsTeXFormat{LaTeX2e}
+\def\postnotes@required@kernel{2022-06-01}
+\NeedsTeXFormat{LaTeX2e}[\postnotes@required@kernel]
\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
-\IfFormatAtLeastTF{2022-06-01}
+\IfFormatAtLeastTF{\postnotes@required@kernel}
{}
{%
\PackageError{postnotes}{LaTeX kernel too old}
{%
- 'postnotes' requires a LaTeX kernel 2022-06-01 or newer.%
- \MessageBreak Loading will abort!%
+ 'postnotes' requires a LaTeX kernel \postnotes@required@kernel\space or newer.%
}%
- \endinput
}%
% \end{macrocode}
%
%
% \begin{macrocode}
-\ProvidesExplPackage {postnotes} {2023-06-16} {0.2.5}
+\ProvidesExplPackage {postnotes} {2023-08-21} {0.2.6}
{Endnotes for LaTeX}
% \end{macrocode}
%
@@ -296,9 +295,32 @@
% \end{macrocode}
% \end{macro}
%
+% And ensure \cs{post@note} is defined in the \file{.aux} file. The hooks are
+% the same used by \pkg{hyperref} for similar purpose.
+%
+% \begin{macrocode}
+\AddToHook { begindocument }
+ {
+ \legacy_if:nT { @filesw }
+ {
+ \iow_now:Nx \@mainaux
+ { \token_to_str:N \providecommand \token_to_str:N \post@note [2]{} }
+ }
+ }
+\AddToHook { include/before }
+ {
+ \legacy_if:nT { @filesw }
+ {
+ \iow_now:Nx \@partaux
+ { \token_to_str:N \providecommand \token_to_str:N \post@note [2]{} }
+ }
+ }
+% \end{macrocode}
+%
%
% \begin{macro}
% {
+% \@@_set_label:nn ,
% \@@_set_mark_page_label:n ,
% \@@_set_text_page_label:n ,
% \@@_set_print_page_label:n ,
@@ -307,28 +329,28 @@
% \cs{iow_shipout_x:Nn}, since the main information we are interested in is
% the \texttt{page}.
% \begin{syntax}
-% \cs{@@_set_mark_page_label:n} \Arg{label name}
-% \cs{@@_set_text_page_label:n} \Arg{label name}
-% \cs{@@_set_print_page_label:n} \Arg{label name}
+% \cs{@@_set_label:nn} \Arg{label name} \Arg{value}
+% \cs{@@_set_mark_page_label:n} \Arg{note id}
+% \cs{@@_set_text_page_label:n} \Arg{note id}
+% \cs{@@_set_print_page_label:n} \Arg{note id}
% \end{syntax}
% \begin{macrocode}
-\cs_new_protected:Npn \@@_set_mark_page_label:n #1
+\cs_new_protected:Npn \@@_set_label:nn #1#2
{
- \iow_shipout_x:Nn \@auxout
- { \token_to_str:N \post@note { mark@ #1 } { \thepage } }
+ \legacy_if:nT { @filesw }
+ {
+ \iow_shipout_x:Nn \@auxout
+ { \token_to_str:N \post@note { #1 } { #2 } }
+ }
}
+\cs_new_protected:Npn \@@_set_mark_page_label:n #1
+ { \@@_set_label:nn { mark@ #1 } { \thepage } }
\cs_generate_variant:Nn \@@_set_mark_page_label:n { x }
\cs_new_protected:Npn \@@_set_text_page_label:n #1
- {
- \iow_shipout_x:Nn \@auxout
- { \token_to_str:N \post@note { text@ #1 } { \int_use:N \c@page } }
- }
+ { \@@_set_label:nn { text@ #1 } { \int_use:N \c@page } }
\cs_generate_variant:Nn \@@_set_text_page_label:n { x }
\cs_new_protected:Npn \@@_set_print_page_label:n #1
- {
- \iow_shipout_x:Nn \@auxout
- { \token_to_str:N \post@note { print@ #1 } { \int_use:N \c@page } }
- }
+ { \@@_set_label:nn { print@ #1 } { \int_use:N \c@page } }
\cs_generate_variant:Nn \@@_set_print_page_label:n { x }
% \end{macrocode}
% \end{macro}
diff --git a/macros/latex/contrib/reledmac/doc-more/page-typesetting-columns.pdf b/macros/latex/contrib/reledmac/doc-more/page-typesetting-columns.pdf
index 60338e42e3..5a3523f8b0 100644
--- a/macros/latex/contrib/reledmac/doc-more/page-typesetting-columns.pdf
+++ b/macros/latex/contrib/reledmac/doc-more/page-typesetting-columns.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/1-criticalendnotes.pdf b/macros/latex/contrib/reledmac/examples/1-criticalendnotes.pdf
index ddf25cb1b1..15cc04a921 100644
--- a/macros/latex/contrib/reledmac/examples/1-criticalendnotes.pdf
+++ b/macros/latex/contrib/reledmac/examples/1-criticalendnotes.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/1-criticalnotes.pdf b/macros/latex/contrib/reledmac/examples/1-criticalnotes.pdf
index 11dd132d39..c9c6ad8d64 100644
--- a/macros/latex/contrib/reledmac/examples/1-criticalnotes.pdf
+++ b/macros/latex/contrib/reledmac/examples/1-criticalnotes.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/1-sidenotes.pdf b/macros/latex/contrib/reledmac/examples/1-sidenotes.pdf
index 0447e70ff1..ec971b6d31 100644
--- a/macros/latex/contrib/reledmac/examples/1-sidenotes.pdf
+++ b/macros/latex/contrib/reledmac/examples/1-sidenotes.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/1-tabular.pdf b/macros/latex/contrib/reledmac/examples/1-tabular.pdf
index 473b331ca4..4423c38eb8 100644
--- a/macros/latex/contrib/reledmac/examples/1-tabular.pdf
+++ b/macros/latex/contrib/reledmac/examples/1-tabular.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/1-verses-doublenumbering.pdf b/macros/latex/contrib/reledmac/examples/1-verses-doublenumbering.pdf
index 33792294d3..c883ffeb1e 100644
--- a/macros/latex/contrib/reledmac/examples/1-verses-doublenumbering.pdf
+++ b/macros/latex/contrib/reledmac/examples/1-verses-doublenumbering.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/1-verses.pdf b/macros/latex/contrib/reledmac/examples/1-verses.pdf
index 924b446177..7061d68e38 100644
--- a/macros/latex/contrib/reledmac/examples/1-verses.pdf
+++ b/macros/latex/contrib/reledmac/examples/1-verses.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/2-antilabe.pdf b/macros/latex/contrib/reledmac/examples/2-antilabe.pdf
index 402770d913..d91397553f 100644
--- a/macros/latex/contrib/reledmac/examples/2-antilabe.pdf
+++ b/macros/latex/contrib/reledmac/examples/2-antilabe.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/2-cross_referencing.pdf b/macros/latex/contrib/reledmac/examples/2-cross_referencing.pdf
index 5954a2a351..a4ba0b4dad 100644
--- a/macros/latex/contrib/reledmac/examples/2-cross_referencing.pdf
+++ b/macros/latex/contrib/reledmac/examples/2-cross_referencing.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/2-footnote_spacing.pdf b/macros/latex/contrib/reledmac/examples/2-footnote_spacing.pdf
index 9748d65ef8..ede7824b56 100644
--- a/macros/latex/contrib/reledmac/examples/2-footnote_spacing.pdf
+++ b/macros/latex/contrib/reledmac/examples/2-footnote_spacing.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/2-glossaries.pdf b/macros/latex/contrib/reledmac/examples/2-glossaries.pdf
index 0b65e75e61..1eddf6095d 100644
--- a/macros/latex/contrib/reledmac/examples/2-glossaries.pdf
+++ b/macros/latex/contrib/reledmac/examples/2-glossaries.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/2-indexing.pdf b/macros/latex/contrib/reledmac/examples/2-indexing.pdf
index f4a3f666c6..2eb9e41985 100644
--- a/macros/latex/contrib/reledmac/examples/2-indexing.pdf
+++ b/macros/latex/contrib/reledmac/examples/2-indexing.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/2-lemma_disambigution.pdf b/macros/latex/contrib/reledmac/examples/2-lemma_disambigution.pdf
index b8edca611d..eaac5ac1e3 100644
--- a/macros/latex/contrib/reledmac/examples/2-lemma_disambigution.pdf
+++ b/macros/latex/contrib/reledmac/examples/2-lemma_disambigution.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/2-line_numbers_in_header.pdf b/macros/latex/contrib/reledmac/examples/2-line_numbers_in_header.pdf
index 47faba3add..fc96bfb5fe 100644
--- a/macros/latex/contrib/reledmac/examples/2-line_numbers_in_header.pdf
+++ b/macros/latex/contrib/reledmac/examples/2-line_numbers_in_header.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/2-linespacing.pdf b/macros/latex/contrib/reledmac/examples/2-linespacing.pdf
index 4229efb7d3..0f7f247b1b 100644
--- a/macros/latex/contrib/reledmac/examples/2-linespacing.pdf
+++ b/macros/latex/contrib/reledmac/examples/2-linespacing.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/2-manuscript-apparatus.pdf b/macros/latex/contrib/reledmac/examples/2-manuscript-apparatus.pdf
index d8b637f78e..ff79a26568 100644
--- a/macros/latex/contrib/reledmac/examples/2-manuscript-apparatus.pdf
+++ b/macros/latex/contrib/reledmac/examples/2-manuscript-apparatus.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/2-notes-width.pdf b/macros/latex/contrib/reledmac/examples/2-notes-width.pdf
index bea9f2fabe..5599ea9043 100644
--- a/macros/latex/contrib/reledmac/examples/2-notes-width.pdf
+++ b/macros/latex/contrib/reledmac/examples/2-notes-width.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/2-one_series_per_pstart.pdf b/macros/latex/contrib/reledmac/examples/2-one_series_per_pstart.pdf
index da6d64d0ad..0fd80e3737 100644
--- a/macros/latex/contrib/reledmac/examples/2-one_series_per_pstart.pdf
+++ b/macros/latex/contrib/reledmac/examples/2-one_series_per_pstart.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/2-performances.pdf b/macros/latex/contrib/reledmac/examples/2-performances.pdf
index 2919633fe7..46e0580983 100644
--- a/macros/latex/contrib/reledmac/examples/2-performances.pdf
+++ b/macros/latex/contrib/reledmac/examples/2-performances.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/2-reledmac-right-to-left.pdf b/macros/latex/contrib/reledmac/examples/2-reledmac-right-to-left.pdf
index 2f4ae19f60..2ddefcf0f9 100644
--- a/macros/latex/contrib/reledmac/examples/2-reledmac-right-to-left.pdf
+++ b/macros/latex/contrib/reledmac/examples/2-reledmac-right-to-left.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/2-subdivision-number-in-header.pdf b/macros/latex/contrib/reledmac/examples/2-subdivision-number-in-header.pdf
index 4cceacd00e..9d664773d9 100644
--- a/macros/latex/contrib/reledmac/examples/2-subdivision-number-in-header.pdf
+++ b/macros/latex/contrib/reledmac/examples/2-subdivision-number-in-header.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/2-titles_in_line_numbering_with_notes.pdf b/macros/latex/contrib/reledmac/examples/2-titles_in_line_numbering_with_notes.pdf
index ae56460969..97dd58409b 100644
--- a/macros/latex/contrib/reledmac/examples/2-titles_in_line_numbering_with_notes.pdf
+++ b/macros/latex/contrib/reledmac/examples/2-titles_in_line_numbering_with_notes.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/2-titles_not_in_line_numbering.pdf b/macros/latex/contrib/reledmac/examples/2-titles_not_in_line_numbering.pdf
index 86ad69706f..eb7f53a1ab 100644
--- a/macros/latex/contrib/reledmac/examples/2-titles_not_in_line_numbering.pdf
+++ b/macros/latex/contrib/reledmac/examples/2-titles_not_in_line_numbering.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/3-reledpar_columns_different_languages.pdf b/macros/latex/contrib/reledmac/examples/3-reledpar_columns_different_languages.pdf
index 3674f61d90..ede3bb021d 100644
--- a/macros/latex/contrib/reledmac/examples/3-reledpar_columns_different_languages.pdf
+++ b/macros/latex/contrib/reledmac/examples/3-reledpar_columns_different_languages.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/3-reledpar_mwe.pdf b/macros/latex/contrib/reledmac/examples/3-reledpar_mwe.pdf
index 9c59e861ac..5c662b9506 100644
--- a/macros/latex/contrib/reledmac/examples/3-reledpar_mwe.pdf
+++ b/macros/latex/contrib/reledmac/examples/3-reledpar_mwe.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/3-reledpar_pages_different_languages_lualatex.pdf b/macros/latex/contrib/reledmac/examples/3-reledpar_pages_different_languages_lualatex.pdf
index bdb75fa784..16c40b5f5e 100644
--- a/macros/latex/contrib/reledmac/examples/3-reledpar_pages_different_languages_lualatex.pdf
+++ b/macros/latex/contrib/reledmac/examples/3-reledpar_pages_different_languages_lualatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/3-reledpar_same_page_number_in_both_side.pdf b/macros/latex/contrib/reledmac/examples/3-reledpar_same_page_number_in_both_side.pdf
index d5c03f495b..1671f50199 100644
--- a/macros/latex/contrib/reledmac/examples/3-reledpar_same_page_number_in_both_side.pdf
+++ b/macros/latex/contrib/reledmac/examples/3-reledpar_same_page_number_in_both_side.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_advancedshifted-nomax.pdf b/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_advancedshifted-nomax.pdf
index a63bb77d7f..b636113662 100644
--- a/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_advancedshifted-nomax.pdf
+++ b/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_advancedshifted-nomax.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_advancedshifted.pdf b/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_advancedshifted.pdf
index 4357102511..d10a62e662 100644
--- a/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_advancedshifted.pdf
+++ b/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_advancedshifted.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_default.pdf b/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_default.pdf
index a1492b7e89..617222e101 100644
--- a/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_default.pdf
+++ b/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_default.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_nomax-shifted.pdf b/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_nomax-shifted.pdf
index 5d02c56e1a..309ad6f969 100644
--- a/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_nomax-shifted.pdf
+++ b/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_nomax-shifted.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_nomax.pdf b/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_nomax.pdf
index ed296ca882..1072791d59 100644
--- a/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_nomax.pdf
+++ b/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_nomax.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_nosync.pdf b/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_nosync.pdf
index 4729d30c66..7e795e7c56 100644
--- a/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_nosync.pdf
+++ b/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_nosync.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_shifted.pdf b/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_shifted.pdf
index 53ae862348..12e0c9bd02 100644
--- a/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_shifted.pdf
+++ b/macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_shifted.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/4-reledpar_column_mix_with_not_column-continuous-numbering.pdf b/macros/latex/contrib/reledmac/examples/4-reledpar_column_mix_with_not_column-continuous-numbering.pdf
index 233d271669..e74dcdf07d 100644
--- a/macros/latex/contrib/reledmac/examples/4-reledpar_column_mix_with_not_column-continuous-numbering.pdf
+++ b/macros/latex/contrib/reledmac/examples/4-reledpar_column_mix_with_not_column-continuous-numbering.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/4-reledpar_column_mix_with_not_column.pdf b/macros/latex/contrib/reledmac/examples/4-reledpar_column_mix_with_not_column.pdf
index ef4dfaf6fa..a4bb8ce123 100644
--- a/macros/latex/contrib/reledmac/examples/4-reledpar_column_mix_with_not_column.pdf
+++ b/macros/latex/contrib/reledmac/examples/4-reledpar_column_mix_with_not_column.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/4-reledpar_columns_alignment.pdf b/macros/latex/contrib/reledmac/examples/4-reledpar_columns_alignment.pdf
index 692814022a..0762f9e191 100644
--- a/macros/latex/contrib/reledmac/examples/4-reledpar_columns_alignment.pdf
+++ b/macros/latex/contrib/reledmac/examples/4-reledpar_columns_alignment.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/4-reledpar_columns_titles_in_line_numbering_with_notes.pdf b/macros/latex/contrib/reledmac/examples/4-reledpar_columns_titles_in_line_numbering_with_notes.pdf
index c9e12f6e0c..e24f7fbb2b 100644
--- a/macros/latex/contrib/reledmac/examples/4-reledpar_columns_titles_in_line_numbering_with_notes.pdf
+++ b/macros/latex/contrib/reledmac/examples/4-reledpar_columns_titles_in_line_numbering_with_notes.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/4-reledpar_inside-outside-columns.pdf b/macros/latex/contrib/reledmac/examples/4-reledpar_inside-outside-columns.pdf
index 19a20c4b69..6e0364da95 100644
--- a/macros/latex/contrib/reledmac/examples/4-reledpar_inside-outside-columns.pdf
+++ b/macros/latex/contrib/reledmac/examples/4-reledpar_inside-outside-columns.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/4-reledpar_one_series_per_pstart.pdf b/macros/latex/contrib/reledmac/examples/4-reledpar_one_series_per_pstart.pdf
index 9d7f56f3e9..fdeba88d1e 100644
--- a/macros/latex/contrib/reledmac/examples/4-reledpar_one_series_per_pstart.pdf
+++ b/macros/latex/contrib/reledmac/examples/4-reledpar_one_series_per_pstart.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/4-reledpar_pages_long_notes.pdf b/macros/latex/contrib/reledmac/examples/4-reledpar_pages_long_notes.pdf
index 6fd0abd546..4efcd7912a 100644
--- a/macros/latex/contrib/reledmac/examples/4-reledpar_pages_long_notes.pdf
+++ b/macros/latex/contrib/reledmac/examples/4-reledpar_pages_long_notes.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/4-reledpar_pages_notes_leftpage.pdf b/macros/latex/contrib/reledmac/examples/4-reledpar_pages_notes_leftpage.pdf
index e0ef394cfc..32e68caad6 100644
--- a/macros/latex/contrib/reledmac/examples/4-reledpar_pages_notes_leftpage.pdf
+++ b/macros/latex/contrib/reledmac/examples/4-reledpar_pages_notes_leftpage.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/4-reledpar_pages_paragraph_separator_between.pdf b/macros/latex/contrib/reledmac/examples/4-reledpar_pages_paragraph_separator_between.pdf
index acecb25046..5cb6c4c755 100644
--- a/macros/latex/contrib/reledmac/examples/4-reledpar_pages_paragraph_separator_between.pdf
+++ b/macros/latex/contrib/reledmac/examples/4-reledpar_pages_paragraph_separator_between.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/4-reledpar_pages_titles_in_line_numbering_with_notes.pdf b/macros/latex/contrib/reledmac/examples/4-reledpar_pages_titles_in_line_numbering_with_notes.pdf
index 3c70dc6a17..2b1e9233ef 100644
--- a/macros/latex/contrib/reledmac/examples/4-reledpar_pages_titles_in_line_numbering_with_notes.pdf
+++ b/macros/latex/contrib/reledmac/examples/4-reledpar_pages_titles_in_line_numbering_with_notes.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/4-reledpar_titles_not_in_line_numbering.pdf b/macros/latex/contrib/reledmac/examples/4-reledpar_titles_not_in_line_numbering.pdf
index 40265033d5..38d84a4104 100644
--- a/macros/latex/contrib/reledmac/examples/4-reledpar_titles_not_in_line_numbering.pdf
+++ b/macros/latex/contrib/reledmac/examples/4-reledpar_titles_not_in_line_numbering.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/examples/4-reledpar_verse_text_between.pdf b/macros/latex/contrib/reledmac/examples/4-reledpar_verse_text_between.pdf
index 92521b0f5e..ce8ab4cae6 100644
--- a/macros/latex/contrib/reledmac/examples/4-reledpar_verse_text_between.pdf
+++ b/macros/latex/contrib/reledmac/examples/4-reledpar_verse_text_between.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/migration.pdf b/macros/latex/contrib/reledmac/migration.pdf
index afc3bc1eb4..8772a75944 100644
--- a/macros/latex/contrib/reledmac/migration.pdf
+++ b/macros/latex/contrib/reledmac/migration.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/reledmac.dtx b/macros/latex/contrib/reledmac/reledmac.dtx
index 111de50ddd..8b305df326 100644
--- a/macros/latex/contrib/reledmac/reledmac.dtx
+++ b/macros/latex/contrib/reledmac/reledmac.dtx
@@ -598,6 +598,8 @@
% \changes{v2.39.4}{2023/07/20}{Fix bug with hyperlink when using \protect\cs{footnoteXmark} and \protect\cs{footnoteXtext}.}
% \changes{v2.39.5}{2023/07/21}{The fix in v2.39.4 did'nt work well in tabular environment.}
% \changes{v2.39.6}{2023/08/14}{Fix compatibility with memoir v3.8.}
+% \changes{v2.39.7}{2023/08/21}{Fix compatibility with \protect\cs{pagenumbering} of memoir v3.8.}
+% \changes{v2.39.7}{2023/08/21}{Again fix with hyperref, footnote and tabular environment}
% Typeset scholarly editions with \LaTeX\thanks{This file (\dtxfilename)
% has version number \fileversion, last revised \filedate.}}
%
@@ -4510,7 +4512,7 @@
% \begin{macrocode}
%<*code>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{reledmac}[2023/08/15 v2.39.6 typesetting critical editions]%
+\ProvidesPackage{reledmac}[2023/08/21 v2.39.7 typesetting critical editions]%
% \end{macrocode}
%
% \subsection{Package options}
@@ -14087,15 +14089,11 @@
\hyperlink%
{@footnotemark#1@\csuse{hr@thefnmark#1}}%
{\@nameuse{bodyfootmark#1}}%
- \ifcsundef{hr@bodyfootmark#1@\csuse{hr@thefnmark#1}}{%
- \Hy@raisedlink{%
- \hypertarget%
- {@bodyfootmark#1@\csuse{hr@thefnmark#1}}%
- {}%
- }%
- \csxdef{hr@bodyfootmark#1@\csuse{hr@thefnmark#1}}{}%Avoid duplicate body footmark
- }%
- {}%
+ \Hy@raisedlink{%
+ \hypertarget%
+ {@bodyfootmark#1@\csuse{hr@thefnmark#1}}%
+ {}%
+ }%
\else%
\@nameuse{bodyfootmark#1}%
\fi%
@@ -16676,7 +16674,7 @@
{\led@error@fail@patch@mempnum}%
}%
{%
- \apptocmd{\pagenumbering}%
+ \pretocmd{\pagenumbering}%
{\par@patch@pagenumbering}%
{}%
{\led@error@fail@patch@pagenumbering}%
diff --git a/macros/latex/contrib/reledmac/reledmac.pdf b/macros/latex/contrib/reledmac/reledmac.pdf
index 4e8e834c1b..ee02ec7f90 100644
--- a/macros/latex/contrib/reledmac/reledmac.pdf
+++ b/macros/latex/contrib/reledmac/reledmac.pdf
Binary files differ
diff --git a/macros/latex/contrib/reledmac/reledpar.pdf b/macros/latex/contrib/reledmac/reledpar.pdf
index 437e917b6c..60759c415b 100644
--- a/macros/latex/contrib/reledmac/reledpar.pdf
+++ b/macros/latex/contrib/reledmac/reledpar.pdf
Binary files differ
diff --git a/macros/luatex/generic/luamplib/NEWS b/macros/luatex/generic/luamplib/NEWS
index f66689f163..72bd87b2ff 100644
--- a/macros/luatex/generic/luamplib/NEWS
+++ b/macros/luatex/generic/luamplib/NEWS
@@ -1,5 +1,8 @@
History of the luamplib package
+2023/08/21 2.25.1
+ * explicit \par in \mplibstoptoPDF to support LaTeX's paragraph hooks
+
2023/08/07 2.25.0
* propagate tex's jobname varible into mplib process as well.
* protect "..." if and only if textextlabel is enabled.
diff --git a/macros/luatex/generic/luamplib/README b/macros/luatex/generic/luamplib/README
index 9518912982..58b6cc9a8c 100644
--- a/macros/luatex/generic/luamplib/README
+++ b/macros/luatex/generic/luamplib/README
@@ -7,6 +7,8 @@ DVIPDFMx is the only DVI tool currently supported.
This package is developed on <http://github.com/lualatex/luamplib>.
+The current maintainer is Dohyun Kim <nomosnomos@gmail.com>.
+
Installation
------------
diff --git a/macros/luatex/generic/luamplib/luamplib.dtx b/macros/luatex/generic/luamplib/luamplib.dtx
index 61e3878a17..949f69c5fe 100644
--- a/macros/luatex/generic/luamplib/luamplib.dtx
+++ b/macros/luatex/generic/luamplib/luamplib.dtx
@@ -85,7 +85,7 @@ See source file '\inFileName' for licencing and contact information.
%<*driver>
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{luamplib.drv}%
- [2023/08/07 v2.25.0 Interface for using the mplib library]%
+ [2023/08/21 v2.25.1 Interface for using the mplib library]%
\documentclass{ltxdoc}
\usepackage{metalogo,multicol,mdwlist,fancyvrb,xspace}
\usepackage[x11names]{xcolor}
@@ -153,7 +153,7 @@ See source file '\inFileName' for licencing and contact information.
% \author{Hans Hagen, Taco Hoekwater, Elie Roux, Philipp Gesang and Kim Dohyun\\
% Maintainer: LuaLaTeX Maintainers ---
% Support: \email{lualatex-dev@tug.org}}
-% \date{2023/08/07 v2.25.0}
+% \date{2023/08/21 v2.25.1}
%
% \maketitle
%
@@ -446,8 +446,8 @@ See source file '\inFileName' for licencing and contact information.
luatexbase.provides_module {
name = "luamplib",
- version = "2.25.0",
- date = "2023/08/07",
+ version = "2.25.1",
+ date = "2023/08/21",
description = "Lua package to typeset Metapost with LuaTeX's MPLib.",
}
@@ -2065,7 +2065,7 @@ luamplib.colorconverter = colorconverter
\else
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{luamplib}
- [2023/08/07 v2.25.0 mplib package for LuaTeX]
+ [2023/08/21 v2.25.1 mplib package for LuaTeX]
\ifx\newluafunction\@undefined
\input ltluatex
\fi
@@ -2350,6 +2350,7 @@ luamplib.colorconverter = colorconverter
\noindent
}
\def\mplibstoptoPDF{%
+ \par
\egroup %
\setbox\mplibscratchbox\hbox %
{\hskip-\MPllx bp%
diff --git a/macros/luatex/generic/luamplib/luamplib.pdf b/macros/luatex/generic/luamplib/luamplib.pdf
index 45be990ec5..301e428103 100644
--- a/macros/luatex/generic/luamplib/luamplib.pdf
+++ b/macros/luatex/generic/luamplib/luamplib.pdf
Binary files differ
diff --git a/macros/luatex/latex/lualinalg/README.txt b/macros/luatex/latex/lualinalg/README.txt
index 243edf9cca..e63acad671 100644
--- a/macros/luatex/latex/lualinalg/README.txt
+++ b/macros/luatex/latex/lualinalg/README.txt
@@ -1,5 +1,5 @@
# The lualinalg package
-# version 1.6
+# version 1.7
# Authors: Chetan Shirore and Ajit Kumar
# Email: mathsbeauty@gmail.com
diff --git a/macros/luatex/latex/lualinalg/lualinalg.pdf b/macros/luatex/latex/lualinalg/lualinalg.pdf
index 24f78d5052..30510d2490 100644
--- a/macros/luatex/latex/lualinalg/lualinalg.pdf
+++ b/macros/luatex/latex/lualinalg/lualinalg.pdf
Binary files differ
diff --git a/macros/luatex/latex/lualinalg/lualinalg.sty b/macros/luatex/latex/lualinalg/lualinalg.sty
index 5d3e502a8d..5c62f329fa 100644
--- a/macros/luatex/latex/lualinalg/lualinalg.sty
+++ b/macros/luatex/latex/lualinalg/lualinalg.sty
@@ -1,9 +1,9 @@
% The lualinalg package
% Authors: Chetan Shirore and Ajit Kumar
-% Version 1.6, Date=09-Aug-2023
+% Version 1.7, Date=21-Aug-2023
% Licensed under LaTeX Project Public License v1.3c or later. The complete license text is available at http://www.latex-project.org/lppl.txt.
-\ProvidesPackage{lualinalg}[1.6]
+\ProvidesPackage{lualinalg}[1.7]
\RequirePackage{xkeyval}
\RequirePackage{amsmath}
\RequirePackage{luamaths}
@@ -1132,7 +1132,7 @@ function vector.gs(inptTbl, brckt, dignum)
local str = ""
k = #inptTbl
- if vector.euclidnorm(inptTbl[1]) ~= complex(0.0) then
+ if complex.round(vector.euclidnorm(inptTbl[1])) ~= complex("0.0") then
tbl[1] = vector.mulnum(inptTbl[1], 1 / vector.euclidnorm(inptTbl[1]))
else
tbl[1] = vector.mulnum(inptTbl[1], 1)
@@ -1146,7 +1146,7 @@ function vector.gs(inptTbl, brckt, dignum)
setmetatable(tbl[j], vector_meta)
tbl[i] = vector.sub(tbl[i], vector.mulnum(tbl[j], vector.dot(tbl[i], tbl[j])))
end
- if vector.euclidnorm(tbl[i]) ~= complex(0.0) then
+ if complex.round(vector.euclidnorm(tbl[i])) ~= complex("0.0") then
tbl[i] = vector.mulnum(tbl[i], 1 / vector.euclidnorm(tbl[i]))
end
tbl[i] = vector.mulnum(tbl[i], 1.0)
@@ -1179,7 +1179,7 @@ function vector.gsX(inptTbl, brckt, dignum)
k = #inptTbl
str = str .. "\\ \\newline Take given vectors as $v_1,\\ldots, v_" .. k .. "$ in order."
- if vector.euclidnorm(inptTbl[1]) ~= complex(0.0) then
+ if complex.round(vector.euclidnorm(inptTbl[1])) ~= complex("0.0") then
tbl[1] = vector.mulnum(inptTbl[1], 1.0 / vector.euclidnorm(inptTbl[1]))
else
tbl[1] = vector.mulnum(inptTbl[1], 1.0)
@@ -1188,7 +1188,7 @@ function vector.gsX(inptTbl, brckt, dignum)
str = str .. "\\ \\newline Step " .. cnt .. ": $$ u_" .. cnt .. "=v_" .. cnt .. "="
str = str .. brcktL .. vector.show(inptTbl[1], dignum) .. brcktR
str = str .. " $$ e_" .. cnt .. "="
- if vector.euclidnorm(tbl[1]) ~= complex(0.0) then
+ if complex.round(vector.euclidnorm(tbl[1])) ~= complex("0.0") then
str = str .. "\\frac{u_{" .. cnt .. "}}" .. "{||u_{" .. cnt .. "}||} ="
end
str = str .. brcktL .. vector.show(tbl[1], dignum) .. brcktR
@@ -1200,7 +1200,7 @@ function vector.gsX(inptTbl, brckt, dignum)
tmpTbl[i] = vector.sub(tbl[i], vector.mulnum(tbl[j], vector.dot(tbl[i], tbl[j])))
tbl[i] = vector.sub(tbl[i], vector.mulnum(tbl[j], vector.dot(tbl[i], tbl[j])))
end
- if vector.euclidnorm(tbl[i]) ~= complex(0.0) then
+ if complex.round(vector.euclidnorm(tbl[i])) ~= complex("0.0") then
tbl[i] = vector.mulnum(tbl[i], 1 / vector.euclidnorm(tbl[i]))
else
tbl[i] = vector.mulnum(tbl[i], 1.0)
diff --git a/macros/luatex/latex/lualinalg/lualinalg.tex b/macros/luatex/latex/lualinalg/lualinalg.tex
index 250acd1544..a5c792be1d 100644
--- a/macros/luatex/latex/lualinalg/lualinalg.tex
+++ b/macros/luatex/latex/lualinalg/lualinalg.tex
@@ -1172,14 +1172,6 @@ The sum of squares of diagonal entries of matrix \(m = 98 + 54\mathrm{i}\).
The sum of matrices \(m1,m2 \text{ and } m3 =\begin{bmatrix} 111 & 222 & 333 \\ 444 & 555 & 666+666\mathrm{i} \end{bmatrix} \).
\end{framed}
-\section{Known issues and limitations}
-\begin{itemize}
-\item The package supports small and big numbers. They can be input in the usual scientific notation. The math library in Lua defines constants with the maximum \verb|math.maxinteger| and the minimum \verb|math.mininteger| values for an integer. The result wraps around when there is a computational operation on integers that would result in a value smaller than the \verb|mininteger| or larger than the \verb|maxinteger|. It means that the computed result is the only number between the \verb|miniinteger| and \verb|maxinteger|.
-\item The package currently supports only numerical computations. The table in a Lua is a data type that implements an associative array. This feature is used in packages to define and store vectors and matrices. This approach is close to object-oriented programming. It will allow easy conversion of algorithms in packages for symbolic computations. Future package updates will consider algorithm conversions to support symbolic calculations.
-
-\item The error handling mechanism in the tool is not robust. There are some custom errors included in the package. However the package mostly depends on error handling mechanism of Lua. The error handling can be strengthened in future updates of the package.
-
-\end{itemize}
\end{document} \ No newline at end of file
diff --git a/macros/luatex/latex/luamaths/README.txt b/macros/luatex/latex/luamaths/README.txt
index 43acb565dd..a4a7a334fd 100644
--- a/macros/luatex/latex/luamaths/README.txt
+++ b/macros/luatex/latex/luamaths/README.txt
@@ -1,5 +1,5 @@
# The luamaths package
-# version 1.3
+# version 1.4
# Authors: Chetan Shirore and Ajit Kumar
# Email: mathsbeauty@gmail.com
diff --git a/macros/luatex/latex/luamaths/luamaths-fractions.lua b/macros/luatex/latex/luamaths/luamaths-fractions.lua
index 540e5b21a2..f13d335245 100644
--- a/macros/luatex/latex/luamaths/luamaths-fractions.lua
+++ b/macros/luatex/latex/luamaths/luamaths-fractions.lua
@@ -1,6 +1,6 @@
-- The luafractions module
-- Authors: Chetan Shirore and Ajit Kumar
--- version 1.1, Date=04-Aug-2023
+-- version 1.2, Date=21-Aug-2023
-- Licensed under LaTeX Project Public License v1.3c or later. The complete license text is available at http://www.latex-project.org/lppl.txt.
M = {} -- the module
@@ -132,7 +132,7 @@ function M.sub(a, b)
if type( a ) == "table" and type(b) =="table" then
if getmetatable( a ) == frac_mt and getmetatable( b ) == complex_meta then
- return setmetatable( { a-b[1], b[2] }, complex_meta )
+ return setmetatable( { a-b[1], -b[2] }, complex_meta )
end
end
diff --git a/macros/luatex/latex/luamaths/luamaths.pdf b/macros/luatex/latex/luamaths/luamaths.pdf
index d5389a3894..13ecb392af 100644
--- a/macros/luatex/latex/luamaths/luamaths.pdf
+++ b/macros/luatex/latex/luamaths/luamaths.pdf
Binary files differ
diff --git a/macros/luatex/latex/luamaths/luamaths.sty b/macros/luatex/latex/luamaths/luamaths.sty
index b73759c00b..1f6bf1ade0 100644
--- a/macros/luatex/latex/luamaths/luamaths.sty
+++ b/macros/luatex/latex/luamaths/luamaths.sty
@@ -1,9 +1,9 @@
% The luamaths package
-% version 1.3
+% version 1.4
% Licensed under LaTeX Project Public License v1.3c or later. The complete license text is available at http://www.latex-project.org/lppl.txt.
%Authors: Chetan Shirore and Ajit Kumar
-\ProvidesPackage{luamaths}[1.3]
+\ProvidesPackage{luamaths}[1.4]
\RequirePackage{xkeyval}
\RequirePackage{amsmath}
\RequirePackage{luacode}