summaryrefslogtreecommitdiff
path: root/macros/latex/contrib
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-02-08 03:02:25 +0000
committerNorbert Preining <norbert@preining.info>2023-02-08 03:02:25 +0000
commitacf3807dc0f375729de890a56d32a063fc95bacf (patch)
treee3767d7ef5cb880f029f25ae54c7a842c5b1d1e3 /macros/latex/contrib
parent9c37af35b32c30471236254cae8f82b9a8a6c44e (diff)
CTAN sync 202302080302
Diffstat (limited to 'macros/latex/contrib')
-rw-r--r--macros/latex/contrib/eolang/LICENSE.txt2
-rw-r--r--macros/latex/contrib/eolang/eolang.dtx14
-rw-r--r--macros/latex/contrib/eolang/eolang.ins4
-rw-r--r--macros/latex/contrib/eolang/eolang.pdfbin2007063 -> 2015121 bytes
-rw-r--r--macros/latex/contrib/l3kernel/CHANGELOG.md14
-rw-r--r--macros/latex/contrib/l3kernel/README.md2
-rw-r--r--macros/latex/contrib/l3kernel/expl3.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/expl3.pdfbin622496 -> 622668 bytes
-rw-r--r--macros/latex/contrib/l3kernel/interface3.pdfbin1778766 -> 1778236 bytes
-rw-r--r--macros/latex/contrib/l3kernel/interface3.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3basics.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3bootstrap.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3box.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3candidates.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3cctab.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3clist.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3coffins.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3color.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3debug.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3deprecation.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3doc.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3doc.pdfbin557491 -> 557684 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3docstrip.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3docstrip.pdfbin151518 -> 151708 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3expan.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3file.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3flag.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-assign.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-aux.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-basics.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-convert.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-expo.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-extended.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-logic.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-parse.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-random.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-round.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-traps.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-trig.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fparray.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3int.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3intarray.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3kernel-functions.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3keys.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3legacy.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3luatex.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3msg.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3names.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3news.pdfbin395876 -> 395876 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news01.pdfbin122710 -> 122710 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news02.pdfbin150674 -> 150674 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news03.pdfbin148706 -> 148706 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news04.pdfbin114586 -> 114586 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news05.pdfbin112485 -> 112485 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news06.pdfbin151569 -> 151569 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news07.pdfbin128316 -> 128316 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news08.pdfbin163456 -> 163456 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news09.pdfbin250136 -> 250136 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news10.pdfbin150283 -> 150283 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news11.pdfbin170076 -> 170076 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news12.pdfbin204992 -> 204992 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3pdf.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3prefixes.pdfbin81614 -> 81614 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3prg.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3prop.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3quark.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3regex.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3seq.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3skip.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3sort.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3str-convert.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3str.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3styleguide.pdfbin295977 -> 296142 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3styleguide.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3syntax-changes.pdfbin242645 -> 242810 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3syntax-changes.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3sys.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3term-glossary.pdfbin215187 -> 215352 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3term-glossary.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3text-case.dtx14
-rw-r--r--macros/latex/contrib/l3kernel/l3text-map.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3text-purify.dtx70
-rw-r--r--macros/latex/contrib/l3kernel/l3text.dtx72
-rw-r--r--macros/latex/contrib/l3kernel/l3tl-analysis.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3tl.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3token.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3unicode.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/source3.pdfbin7326573 -> 7322241 bytes
-rw-r--r--macros/latex/contrib/l3kernel/source3.tex2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md11
-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/fontspec-luatex-tmp-ltx.sty2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx6
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdfbin961697 -> 961811 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx18
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdfbin686355 -> 686518 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdfbin586554 -> 586720 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdfbin514179 -> 514471 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdfbin557485 -> 557646 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdfbin540519 -> 540685 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdfbin543750 -> 542954 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdfbin535929 -> 536072 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdfbin591353 -> 591503 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdfbin515167 -> 515315 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdfbin749265 -> 749402 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdfbin560851 -> 561134 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdfbin681080 -> 681340 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx14
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdfbin837061 -> 810105 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdfbin526049 -> 526218 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdfbin425888 -> 426193 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdfbin587989 -> 588291 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdfbin386776 -> 386602 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx67
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdfbin438899 -> 444424 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx6
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdfbin455472 -> 455780 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty2
-rw-r--r--macros/latex/contrib/physics2/doc/phy2docdef.tex2
-rw-r--r--macros/latex/contrib/physics2/doc/physics2-legacy.pdfbin97795 -> 97692 bytes
-rw-r--r--macros/latex/contrib/physics2/doc/physics2.pdfbin87054 -> 87049 bytes
-rw-r--r--macros/latex/contrib/physics2/tex/phy-ab.braket.sty2
-rw-r--r--macros/latex/contrib/physics2/tex/phy-ab.legacy.sty2
-rw-r--r--macros/latex/contrib/physics2/tex/phy-ab.sty15
-rw-r--r--macros/latex/contrib/physics2/tex/phy-bm-um.legacy.sty2
-rw-r--r--macros/latex/contrib/physics2/tex/phy-braket.sty2
-rw-r--r--macros/latex/contrib/physics2/tex/phy-common.sty2
-rw-r--r--macros/latex/contrib/physics2/tex/phy-diagmat.sty2
-rw-r--r--macros/latex/contrib/physics2/tex/phy-doubleprod.sty2
-rw-r--r--macros/latex/contrib/physics2/tex/phy-explsetup.sty2
-rw-r--r--macros/latex/contrib/physics2/tex/phy-nabla.legacy.sty2
-rw-r--r--macros/latex/contrib/physics2/tex/phy-op.legacy.sty2
-rw-r--r--macros/latex/contrib/physics2/tex/phy-qtext.legacy.sty2
-rw-r--r--macros/latex/contrib/physics2/tex/phy-xmat.sty2
-rw-r--r--macros/latex/contrib/resolsysteme/README.md7
-rw-r--r--macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.pdfbin0 -> 123651 bytes
-rw-r--r--macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.tex626
-rw-r--r--macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples-pyluatex.pdfbin0 -> 95573 bytes
-rw-r--r--macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples-pyluatex.tex107
-rw-r--r--macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples.pdfbin0 -> 134039 bytes
-rw-r--r--macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples.tex103
-rw-r--r--macros/latex/contrib/resolsysteme/tex/ResolSysteme.sty751
159 files changed, 1893 insertions, 262 deletions
diff --git a/macros/latex/contrib/eolang/LICENSE.txt b/macros/latex/contrib/eolang/LICENSE.txt
index bd949ffdab..5744f745f0 100644
--- a/macros/latex/contrib/eolang/LICENSE.txt
+++ b/macros/latex/contrib/eolang/LICENSE.txt
@@ -1,6 +1,6 @@
(The MIT License)
-Copyright (c) 2021-2022 Yegor Bugayenko
+Copyright (c) 2021-2023 Yegor Bugayenko
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the 'Software'), to deal
diff --git a/macros/latex/contrib/eolang/eolang.dtx b/macros/latex/contrib/eolang/eolang.dtx
index f49cc47530..daca8ee56f 100644
--- a/macros/latex/contrib/eolang/eolang.dtx
+++ b/macros/latex/contrib/eolang/eolang.dtx
@@ -1,7 +1,7 @@
% \iffalse meta-comment
% (The MIT License)
%
-% Copyright (c) 2021-2022 Yegor Bugayenko
+% Copyright (c) 2021-2023 Yegor Bugayenko
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the 'Software'), to deal
@@ -50,7 +50,7 @@
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{eolang}
%<*package>
-[2023-01-30 0.11.0 Formulas and Graphs for EO Programming Language]
+[2023-02-07 0.11.1 Formulas and Graphs for EO Programming Language]
%</package>
%<*driver>
\documentclass{ltxdoc}
@@ -767,7 +767,7 @@
$macro = $ARGV[0];
open(my $fh, '<', $ARGV[1]);
my $tex; { local $/; $tex = <$fh>; }
-print '% This file is auto-generated', "\n";
+print "% This file is auto-generated by 0.11.1\n";
print '% There are ', length($tex),
' chars in the input: ', $ARGV[1], "\n";
print '% ---', "\n";
@@ -782,9 +782,13 @@ foreach my $t (@lines) {
print '% ---', "\n";
$tex =~ s/%.*\n/\n/g;
$tex =~ s/^\s+|\s+$//g;
-my $gathered = (0 == $tex =~ /\n\s+/g);
+my $indents = $tex =~ /\n +/g;
+my $gathered = (0 == $indents);
if ($gathered) {
print '% The "gathered" is used since all lines are left-aligned' . "\n";
+} else {
+ print '% The "gathered" is NOT used because ' .
+ $indents . " lines are indented\n";
}
my $align = 0;
print '% The "align" is NOT used by default' . "\n";
@@ -861,7 +865,7 @@ if ($macro ne 'phiq') {
}
}
$tex =~ s/\$/\\xi{}/g;
-$tex =~ s/(?<!\{)\^/\\rho{}/g;
+$tex =~ s/(?<!\{)\^(?!\{)/\\rho{}/g;
$tex =~ s/\[\[/\\llbracket\\mathbin{}/g;
$tex =~ s/\]\]/\\mathbin{}\\rrbracket{}/g;
$tex =~ s/([\s,>(])([0-9A-F]{2}(?:-[0-9A-F]{2})+|
diff --git a/macros/latex/contrib/eolang/eolang.ins b/macros/latex/contrib/eolang/eolang.ins
index 4e11a335ff..329210aa0f 100644
--- a/macros/latex/contrib/eolang/eolang.ins
+++ b/macros/latex/contrib/eolang/eolang.ins
@@ -1,6 +1,6 @@
%% (The MIT License)
%%
-%% Copyright (c) 2021-2022 Yegor Bugayenko
+%% Copyright (c) 2021-2023 Yegor Bugayenko
%%
%% Permission is hereby granted, free of charge, to any person obtaining a copy
%% of this software and associated documentation files (the 'Software'), to deal
@@ -26,7 +26,7 @@
\preamble
(The MIT License)
-Copyright (c) 2021-2022 Yegor Bugayenko
+Copyright (c) 2021-2023 Yegor Bugayenko
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the 'Software'), to deal
diff --git a/macros/latex/contrib/eolang/eolang.pdf b/macros/latex/contrib/eolang/eolang.pdf
index c97623759b..a09b3b17cd 100644
--- a/macros/latex/contrib/eolang/eolang.pdf
+++ b/macros/latex/contrib/eolang/eolang.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/CHANGELOG.md b/macros/latex/contrib/l3kernel/CHANGELOG.md
index 5126f2d23f..82278061e3 100644
--- a/macros/latex/contrib/l3kernel/CHANGELOG.md
+++ b/macros/latex/contrib/l3kernel/CHANGELOG.md
@@ -7,6 +7,15 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2023-02-07]
+
+### Changed
+- Swap meaning of `el` and `el-x-iota` when case changing
+ Greek: match traditional LaTeX approach
+
+### Deprecated
+- `\l_text_accents_tl` and `\l_text_letterlike_tl`
+
## [2023-02-02]
### Fixed
@@ -26,7 +35,7 @@ this project uses date-based 'snapshot' version identifiers.
### Fixed
- Allow for multi-part BCP47 strings in case changing
- Loading with plain TeX due to `\outer` status of `^^L`
- issue [\#1161](https://github.com/latex3/latex3/issues/1161))
+ issue ([\#1161](https://github.com/latex3/latex3/issues/1161))
### Changed
- Leave catcode of `&` unchanged in code environment
@@ -1285,7 +1294,8 @@ this project uses date-based 'snapshot' version identifiers.
- Step functions have been added for dim variables,
e.g. `\dim_step_inline:nnnn`
-[Unreleased]: https://github.com/latex3/latex3/compare/2023-02-02...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2023-02-07...HEAD
+[2023-02-07]: https://github.com/latex3/latex3/compare/2023-02-02...2023-02-07
[2023-02-02]: https://github.com/latex3/latex3/compare/2023-02-01...2023-02-02
[2023-02-01]: https://github.com/latex3/latex3/compare/2023-01-24...2023-02-01
[2023-01-24]: https://github.com/latex3/latex3/compare/2023-01-16...2023-01-24
diff --git a/macros/latex/contrib/l3kernel/README.md b/macros/latex/contrib/l3kernel/README.md
index 6e36cbfae2..9bcc6c0a9d 100644
--- a/macros/latex/contrib/l3kernel/README.md
+++ b/macros/latex/contrib/l3kernel/README.md
@@ -1,7 +1,7 @@
LaTeX3 Programming Conventions
==============================
-Release 2023-02-02
+Release 2023-02-07
Overview
--------
diff --git a/macros/latex/contrib/l3kernel/expl3.dtx b/macros/latex/contrib/l3kernel/expl3.dtx
index e637d81fdb..4d0e803169 100644
--- a/macros/latex/contrib/l3kernel/expl3.dtx
+++ b/macros/latex/contrib/l3kernel/expl3.dtx
@@ -24,7 +24,7 @@
%
%<*driver|generic|package|2ekernel>
%</driver|generic|package|2ekernel>
-\def\ExplFileDate{2023-02-02}%
+\def\ExplFileDate{2023-02-07}%
%<*driver>
\documentclass[full]{l3doc}
\usepackage{graphicx}
@@ -51,7 +51,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/expl3.pdf b/macros/latex/contrib/l3kernel/expl3.pdf
index f2c43ad71f..90d00b4e66 100644
--- a/macros/latex/contrib/l3kernel/expl3.pdf
+++ b/macros/latex/contrib/l3kernel/expl3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/interface3.pdf b/macros/latex/contrib/l3kernel/interface3.pdf
index a7d3482798..e1fee791bd 100644
--- a/macros/latex/contrib/l3kernel/interface3.pdf
+++ b/macros/latex/contrib/l3kernel/interface3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/interface3.tex b/macros/latex/contrib/l3kernel/interface3.tex
index 094b5d62a3..d97dc1ba20 100644
--- a/macros/latex/contrib/l3kernel/interface3.tex
+++ b/macros/latex/contrib/l3kernel/interface3.tex
@@ -54,7 +54,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-02-02}
+\date{Released 2023-02-07}
\pagenumbering{roman}
\maketitle
diff --git a/macros/latex/contrib/l3kernel/l3basics.dtx b/macros/latex/contrib/l3kernel/l3basics.dtx
index d81b2bae1a..d7b2bcc207 100644
--- a/macros/latex/contrib/l3kernel/l3basics.dtx
+++ b/macros/latex/contrib/l3kernel/l3basics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3bootstrap.dtx b/macros/latex/contrib/l3kernel/l3bootstrap.dtx
index 5e748d0749..da2ddd858f 100644
--- a/macros/latex/contrib/l3kernel/l3bootstrap.dtx
+++ b/macros/latex/contrib/l3kernel/l3bootstrap.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3box.dtx b/macros/latex/contrib/l3kernel/l3box.dtx
index 4b569231ea..ed7b1f499a 100644
--- a/macros/latex/contrib/l3kernel/l3box.dtx
+++ b/macros/latex/contrib/l3kernel/l3box.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3candidates.dtx b/macros/latex/contrib/l3kernel/l3candidates.dtx
index 41adf61e05..d7a9faaf36 100644
--- a/macros/latex/contrib/l3kernel/l3candidates.dtx
+++ b/macros/latex/contrib/l3kernel/l3candidates.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
@@ -663,7 +663,7 @@
%
% \begin{implementation}
%
-% \section{\pkg{l3candidates} Implementation}
+% \section{\pkg{l3candidates} implementation}
%
% \begin{macrocode}
%<*package>
diff --git a/macros/latex/contrib/l3kernel/l3cctab.dtx b/macros/latex/contrib/l3kernel/l3cctab.dtx
index b30a0fad2a..a014eca213 100644
--- a/macros/latex/contrib/l3kernel/l3cctab.dtx
+++ b/macros/latex/contrib/l3kernel/l3cctab.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3clist.dtx b/macros/latex/contrib/l3kernel/l3clist.dtx
index 9667a70ce7..18b0bbbf41 100644
--- a/macros/latex/contrib/l3kernel/l3clist.dtx
+++ b/macros/latex/contrib/l3kernel/l3clist.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3coffins.dtx b/macros/latex/contrib/l3kernel/l3coffins.dtx
index e241c13570..6cd5f2f30e 100644
--- a/macros/latex/contrib/l3kernel/l3coffins.dtx
+++ b/macros/latex/contrib/l3kernel/l3coffins.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
@@ -430,7 +430,7 @@
%
% \begin{implementation}
%
-% \section{\pkg{l3coffins} Implementation}
+% \section{\pkg{l3coffins} implementation}
%
% \begin{macrocode}
%<*package>
diff --git a/macros/latex/contrib/l3kernel/l3color.dtx b/macros/latex/contrib/l3kernel/l3color.dtx
index 60d5274c2a..8bb2c04496 100644
--- a/macros/latex/contrib/l3kernel/l3color.dtx
+++ b/macros/latex/contrib/l3kernel/l3color.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
@@ -512,7 +512,7 @@
%
% \begin{implementation}
%
-% \section{\pkg{l3color} Implementation}
+% \section{\pkg{l3color} implementation}
%
% \begin{macrocode}
%<*package>
diff --git a/macros/latex/contrib/l3kernel/l3debug.dtx b/macros/latex/contrib/l3kernel/l3debug.dtx
index 3f62b3acc3..654dc67d82 100644
--- a/macros/latex/contrib/l3kernel/l3debug.dtx
+++ b/macros/latex/contrib/l3kernel/l3debug.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
@@ -116,7 +116,7 @@
%
% \begin{implementation}
%
-% \section{\pkg{l3debug} Implementation}
+% \section{\pkg{l3debug} implementation}
%
% \begin{macrocode}
%<*package>
diff --git a/macros/latex/contrib/l3kernel/l3deprecation.dtx b/macros/latex/contrib/l3kernel/l3deprecation.dtx
index 78ccdb850a..6edda3b0e3 100644
--- a/macros/latex/contrib/l3kernel/l3deprecation.dtx
+++ b/macros/latex/contrib/l3kernel/l3deprecation.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3doc.dtx b/macros/latex/contrib/l3kernel/l3doc.dtx
index e1e458a063..fc8f8a4f6f 100644
--- a/macros/latex/contrib/l3kernel/l3doc.dtx
+++ b/macros/latex/contrib/l3kernel/l3doc.dtx
@@ -85,7 +85,7 @@ and all files in that bundle must be distributed together.
% require you to do updates, if the class changes.}}
%
% \author{\Team}
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
% \maketitle
% \tableofcontents
%
diff --git a/macros/latex/contrib/l3kernel/l3doc.pdf b/macros/latex/contrib/l3kernel/l3doc.pdf
index 47b2917719..e5ea0ed020 100644
--- a/macros/latex/contrib/l3kernel/l3doc.pdf
+++ b/macros/latex/contrib/l3kernel/l3doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3docstrip.dtx b/macros/latex/contrib/l3kernel/l3docstrip.dtx
index 458a42c0d3..eaf08a66a2 100644
--- a/macros/latex/contrib/l3kernel/l3docstrip.dtx
+++ b/macros/latex/contrib/l3kernel/l3docstrip.dtx
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3docstrip.pdf b/macros/latex/contrib/l3kernel/l3docstrip.pdf
index 7975a52eae..67b30abda3 100644
--- a/macros/latex/contrib/l3kernel/l3docstrip.pdf
+++ b/macros/latex/contrib/l3kernel/l3docstrip.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3expan.dtx b/macros/latex/contrib/l3kernel/l3expan.dtx
index 25d18bf883..f0f2be2c6c 100644
--- a/macros/latex/contrib/l3kernel/l3expan.dtx
+++ b/macros/latex/contrib/l3kernel/l3expan.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3file.dtx b/macros/latex/contrib/l3kernel/l3file.dtx
index eaf8a13f43..b353f4d692 100644
--- a/macros/latex/contrib/l3kernel/l3file.dtx
+++ b/macros/latex/contrib/l3kernel/l3file.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3flag.dtx b/macros/latex/contrib/l3kernel/l3flag.dtx
index 06d64bfd61..4c80bf9c8a 100644
--- a/macros/latex/contrib/l3kernel/l3flag.dtx
+++ b/macros/latex/contrib/l3kernel/l3flag.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-assign.dtx b/macros/latex/contrib/l3kernel/l3fp-assign.dtx
index 7824662987..adf9beb783 100644
--- a/macros/latex/contrib/l3kernel/l3fp-assign.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-assign.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
% \maketitle
%
% \begin{documentation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-aux.dtx b/macros/latex/contrib/l3kernel/l3fp-aux.dtx
index dc39e538ff..56944602e4 100644
--- a/macros/latex/contrib/l3kernel/l3fp-aux.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-aux.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-basics.dtx b/macros/latex/contrib/l3kernel/l3fp-basics.dtx
index ec2d23e3e2..5fc4cb3638 100644
--- a/macros/latex/contrib/l3kernel/l3fp-basics.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-basics.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
@@ -50,7 +50,7 @@
%
% \begin{implementation}
%
-% \section{\pkg{l3fp-basics} Implementation}
+% \section{\pkg{l3fp-basics} implementation}
%
% \begin{macrocode}
%<*package>
diff --git a/macros/latex/contrib/l3kernel/l3fp-convert.dtx b/macros/latex/contrib/l3kernel/l3fp-convert.dtx
index 59ca84397e..d456f93ec4 100644
--- a/macros/latex/contrib/l3kernel/l3fp-convert.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-convert.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-expo.dtx b/macros/latex/contrib/l3kernel/l3fp-expo.dtx
index 9319fd88e2..098b706e98 100644
--- a/macros/latex/contrib/l3kernel/l3fp-expo.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-expo.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-extended.dtx b/macros/latex/contrib/l3kernel/l3fp-extended.dtx
index 3a3d8e92c2..22a35fb02b 100644
--- a/macros/latex/contrib/l3kernel/l3fp-extended.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-extended.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-logic.dtx b/macros/latex/contrib/l3kernel/l3fp-logic.dtx
index aa8d81d9f5..22f83cecb8 100644
--- a/macros/latex/contrib/l3kernel/l3fp-logic.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-logic.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
@@ -50,7 +50,7 @@
%
% \begin{implementation}
%
-% \section{\pkg{l3fp-logic} Implementation}
+% \section{\pkg{l3fp-logic} implementation}
%
% \begin{macrocode}
%<*package>
diff --git a/macros/latex/contrib/l3kernel/l3fp-parse.dtx b/macros/latex/contrib/l3kernel/l3fp-parse.dtx
index e513481ec7..0c8f552371 100644
--- a/macros/latex/contrib/l3kernel/l3fp-parse.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-parse.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-random.dtx b/macros/latex/contrib/l3kernel/l3fp-random.dtx
index 699f9d2c33..44f57195d4 100644
--- a/macros/latex/contrib/l3kernel/l3fp-random.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-random.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
@@ -50,7 +50,7 @@
%
% \begin{implementation}
%
-% \section{\pkg{l3fp-random} Implementation}
+% \section{\pkg{l3fp-random} implementation}
%
% \begin{macrocode}
%<*package>
diff --git a/macros/latex/contrib/l3kernel/l3fp-round.dtx b/macros/latex/contrib/l3kernel/l3fp-round.dtx
index 445945e639..ba4ea77f47 100644
--- a/macros/latex/contrib/l3kernel/l3fp-round.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-round.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-traps.dtx b/macros/latex/contrib/l3kernel/l3fp-traps.dtx
index e639360224..3bb294c1c8 100644
--- a/macros/latex/contrib/l3kernel/l3fp-traps.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-traps.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
% \maketitle
%
% \begin{documentation}
@@ -49,7 +49,7 @@
%
% \begin{implementation}
%
-% \section{\pkg{l3fp-traps} Implementation}
+% \section{\pkg{l3fp-traps} implementation}
%
% \begin{macrocode}
%<*package>
diff --git a/macros/latex/contrib/l3kernel/l3fp-trig.dtx b/macros/latex/contrib/l3kernel/l3fp-trig.dtx
index cfc3f01cbb..c52460da1a 100644
--- a/macros/latex/contrib/l3kernel/l3fp-trig.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-trig.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
@@ -50,7 +50,7 @@
%
% \begin{implementation}
%
-% \section{\pkg{l3fp-trig} Implementation}
+% \section{\pkg{l3fp-trig} implementation}
%
% \begin{macrocode}
%<*package>
diff --git a/macros/latex/contrib/l3kernel/l3fp.dtx b/macros/latex/contrib/l3kernel/l3fp.dtx
index 21e6aa21c2..9f871243bd 100644
--- a/macros/latex/contrib/l3kernel/l3fp.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fparray.dtx b/macros/latex/contrib/l3kernel/l3fparray.dtx
index 4141d52c9c..044792037b 100644
--- a/macros/latex/contrib/l3kernel/l3fparray.dtx
+++ b/macros/latex/contrib/l3kernel/l3fparray.dtx
@@ -32,7 +32,7 @@
%
%
% \title{^^A
-% The \textsf{l3fparray} package: fast global floating point arrays^^A
+% The \textsf{l3fparray} package: Fast global floating point arrays^^A
% }
%
% \author{^^A
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3int.dtx b/macros/latex/contrib/l3kernel/l3int.dtx
index 5769d09bdd..7fe87163cb 100644
--- a/macros/latex/contrib/l3kernel/l3int.dtx
+++ b/macros/latex/contrib/l3kernel/l3int.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3intarray.dtx b/macros/latex/contrib/l3kernel/l3intarray.dtx
index 28988ff55c..b6c902814f 100644
--- a/macros/latex/contrib/l3kernel/l3intarray.dtx
+++ b/macros/latex/contrib/l3kernel/l3intarray.dtx
@@ -32,7 +32,7 @@
%
%
% \title{^^A
-% The \textsf{l3intarray} package: fast global integer arrays^^A
+% The \textsf{l3intarray} package: Fast global integer arrays^^A
% }
%
% \author{^^A
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
index 9a6aaed95c..f3707adfba 100644
--- a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
+++ b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3kernel-functions} package\\ Kernel-reserved functions^^A
+% The \pkg{l3kernel-functions} package: Kernel-reserved functions^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3keys.dtx b/macros/latex/contrib/l3kernel/l3keys.dtx
index 053117bc9a..ed30315940 100644
--- a/macros/latex/contrib/l3kernel/l3keys.dtx
+++ b/macros/latex/contrib/l3kernel/l3keys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
@@ -1059,7 +1059,7 @@
%
% \begin{implementation}
%
-% \section{\pkg{l3keys} Implementation}
+% \section{\pkg{l3keys} implementation}
%
% \begin{macrocode}
%<*package>
diff --git a/macros/latex/contrib/l3kernel/l3legacy.dtx b/macros/latex/contrib/l3kernel/l3legacy.dtx
index 58ee6dc083..8c1f7f79c3 100644
--- a/macros/latex/contrib/l3kernel/l3legacy.dtx
+++ b/macros/latex/contrib/l3kernel/l3legacy.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
@@ -89,7 +89,7 @@
%
% \begin{implementation}
%
-% \section{\pkg{l3legacy} Implementation}
+% \section{\pkg{l3legacy} implementation}
%
% \begin{macrocode}
%<*package>
diff --git a/macros/latex/contrib/l3kernel/l3luatex.dtx b/macros/latex/contrib/l3kernel/l3luatex.dtx
index 9b56ccdafc..dd31c52398 100644
--- a/macros/latex/contrib/l3kernel/l3luatex.dtx
+++ b/macros/latex/contrib/l3kernel/l3luatex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3msg.dtx b/macros/latex/contrib/l3kernel/l3msg.dtx
index d4df83f36d..bb4f895b28 100644
--- a/macros/latex/contrib/l3kernel/l3msg.dtx
+++ b/macros/latex/contrib/l3kernel/l3msg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3names.dtx b/macros/latex/contrib/l3kernel/l3names.dtx
index 4b48f239c8..bd52590502 100644
--- a/macros/latex/contrib/l3kernel/l3names.dtx
+++ b/macros/latex/contrib/l3kernel/l3names.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3news.pdf b/macros/latex/contrib/l3kernel/l3news.pdf
index 5dc5869a54..aff1b227c4 100644
--- a/macros/latex/contrib/l3kernel/l3news.pdf
+++ b/macros/latex/contrib/l3kernel/l3news.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news01.pdf b/macros/latex/contrib/l3kernel/l3news01.pdf
index 100b8c6464..203189c5d6 100644
--- a/macros/latex/contrib/l3kernel/l3news01.pdf
+++ b/macros/latex/contrib/l3kernel/l3news01.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news02.pdf b/macros/latex/contrib/l3kernel/l3news02.pdf
index 423d0391c4..3b801b0869 100644
--- a/macros/latex/contrib/l3kernel/l3news02.pdf
+++ b/macros/latex/contrib/l3kernel/l3news02.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news03.pdf b/macros/latex/contrib/l3kernel/l3news03.pdf
index f6270d299d..50b9fa7a66 100644
--- a/macros/latex/contrib/l3kernel/l3news03.pdf
+++ b/macros/latex/contrib/l3kernel/l3news03.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news04.pdf b/macros/latex/contrib/l3kernel/l3news04.pdf
index 9360e407cf..19b7903852 100644
--- a/macros/latex/contrib/l3kernel/l3news04.pdf
+++ b/macros/latex/contrib/l3kernel/l3news04.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news05.pdf b/macros/latex/contrib/l3kernel/l3news05.pdf
index 45ae1d35b9..0d0d1ab94b 100644
--- a/macros/latex/contrib/l3kernel/l3news05.pdf
+++ b/macros/latex/contrib/l3kernel/l3news05.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news06.pdf b/macros/latex/contrib/l3kernel/l3news06.pdf
index 3bea97815f..afc88af47c 100644
--- a/macros/latex/contrib/l3kernel/l3news06.pdf
+++ b/macros/latex/contrib/l3kernel/l3news06.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news07.pdf b/macros/latex/contrib/l3kernel/l3news07.pdf
index 72db554b9d..9fba5965b9 100644
--- a/macros/latex/contrib/l3kernel/l3news07.pdf
+++ b/macros/latex/contrib/l3kernel/l3news07.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news08.pdf b/macros/latex/contrib/l3kernel/l3news08.pdf
index f7e962eb28..5db8d5e6b9 100644
--- a/macros/latex/contrib/l3kernel/l3news08.pdf
+++ b/macros/latex/contrib/l3kernel/l3news08.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news09.pdf b/macros/latex/contrib/l3kernel/l3news09.pdf
index 7cd2bc5943..309a3a0e4c 100644
--- a/macros/latex/contrib/l3kernel/l3news09.pdf
+++ b/macros/latex/contrib/l3kernel/l3news09.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news10.pdf b/macros/latex/contrib/l3kernel/l3news10.pdf
index 2cbe98cdfd..07719156f3 100644
--- a/macros/latex/contrib/l3kernel/l3news10.pdf
+++ b/macros/latex/contrib/l3kernel/l3news10.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news11.pdf b/macros/latex/contrib/l3kernel/l3news11.pdf
index 9675352bbd..d88ae99e25 100644
--- a/macros/latex/contrib/l3kernel/l3news11.pdf
+++ b/macros/latex/contrib/l3kernel/l3news11.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news12.pdf b/macros/latex/contrib/l3kernel/l3news12.pdf
index bcdf74f1fc..6de636c397 100644
--- a/macros/latex/contrib/l3kernel/l3news12.pdf
+++ b/macros/latex/contrib/l3kernel/l3news12.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3pdf.dtx b/macros/latex/contrib/l3kernel/l3pdf.dtx
index ad5331e6d9..711a0356d4 100644
--- a/macros/latex/contrib/l3kernel/l3pdf.dtx
+++ b/macros/latex/contrib/l3kernel/l3pdf.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3prefixes.pdf b/macros/latex/contrib/l3kernel/l3prefixes.pdf
index 76d1d9033f..1109d4214a 100644
--- a/macros/latex/contrib/l3kernel/l3prefixes.pdf
+++ b/macros/latex/contrib/l3kernel/l3prefixes.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3prg.dtx b/macros/latex/contrib/l3kernel/l3prg.dtx
index a38c870780..9d93c1ba4c 100644
--- a/macros/latex/contrib/l3kernel/l3prg.dtx
+++ b/macros/latex/contrib/l3kernel/l3prg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3prop.dtx b/macros/latex/contrib/l3kernel/l3prop.dtx
index eb283e133d..cde6c2e9b5 100644
--- a/macros/latex/contrib/l3kernel/l3prop.dtx
+++ b/macros/latex/contrib/l3kernel/l3prop.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3quark.dtx b/macros/latex/contrib/l3kernel/l3quark.dtx
index 7d8d73af98..9f23be6c1c 100644
--- a/macros/latex/contrib/l3kernel/l3quark.dtx
+++ b/macros/latex/contrib/l3kernel/l3quark.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3regex.dtx b/macros/latex/contrib/l3kernel/l3regex.dtx
index 4313a8d556..a9388f5983 100644
--- a/macros/latex/contrib/l3kernel/l3regex.dtx
+++ b/macros/latex/contrib/l3kernel/l3regex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3seq.dtx b/macros/latex/contrib/l3kernel/l3seq.dtx
index fb61c51d2f..18a0e3ede9 100644
--- a/macros/latex/contrib/l3kernel/l3seq.dtx
+++ b/macros/latex/contrib/l3kernel/l3seq.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3skip.dtx b/macros/latex/contrib/l3kernel/l3skip.dtx
index dd32c108e7..41b0811306 100644
--- a/macros/latex/contrib/l3kernel/l3skip.dtx
+++ b/macros/latex/contrib/l3kernel/l3skip.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3sort.dtx b/macros/latex/contrib/l3kernel/l3sort.dtx
index 847d821745..42350bbacb 100644
--- a/macros/latex/contrib/l3kernel/l3sort.dtx
+++ b/macros/latex/contrib/l3kernel/l3sort.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3str-convert.dtx b/macros/latex/contrib/l3kernel/l3str-convert.dtx
index 28d441bd49..fdad7cda0f 100644
--- a/macros/latex/contrib/l3kernel/l3str-convert.dtx
+++ b/macros/latex/contrib/l3kernel/l3str-convert.dtx
@@ -32,7 +32,7 @@
%
%
% \title{^^A
-% The \textsf{l3str-convert} package: string encoding conversions^^A
+% The \textsf{l3str-convert} package: String encoding conversions^^A
% }
%
% \author{^^A
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3str.dtx b/macros/latex/contrib/l3kernel/l3str.dtx
index caadc5f874..55f9bd7f6c 100644
--- a/macros/latex/contrib/l3kernel/l3str.dtx
+++ b/macros/latex/contrib/l3kernel/l3str.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3styleguide.pdf b/macros/latex/contrib/l3kernel/l3styleguide.pdf
index eb33e858bf..be3d8f1838 100644
--- a/macros/latex/contrib/l3kernel/l3styleguide.pdf
+++ b/macros/latex/contrib/l3kernel/l3styleguide.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3styleguide.tex b/macros/latex/contrib/l3kernel/l3styleguide.tex
index 3410b68916..93da6a38a6 100644
--- a/macros/latex/contrib/l3kernel/l3styleguide.tex
+++ b/macros/latex/contrib/l3kernel/l3styleguide.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-02-02}
+\date{Released 2023-02-07}
\begin{document}
diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
index e3e0b9100b..2a250fbb38 100644
--- a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
+++ b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.tex b/macros/latex/contrib/l3kernel/l3syntax-changes.tex
index 78f9205600..dfc0ec169e 100644
--- a/macros/latex/contrib/l3kernel/l3syntax-changes.tex
+++ b/macros/latex/contrib/l3kernel/l3syntax-changes.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-02-02}
+\date{Released 2023-02-07}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/macros/latex/contrib/l3kernel/l3sys.dtx b/macros/latex/contrib/l3kernel/l3sys.dtx
index 7584376c31..006f044bd0 100644
--- a/macros/latex/contrib/l3kernel/l3sys.dtx
+++ b/macros/latex/contrib/l3kernel/l3sys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.pdf b/macros/latex/contrib/l3kernel/l3term-glossary.pdf
index 74004efcf3..52b130b915 100644
--- a/macros/latex/contrib/l3kernel/l3term-glossary.pdf
+++ b/macros/latex/contrib/l3kernel/l3term-glossary.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.tex b/macros/latex/contrib/l3kernel/l3term-glossary.tex
index e6e9b82093..d0ed2cadb5 100644
--- a/macros/latex/contrib/l3kernel/l3term-glossary.tex
+++ b/macros/latex/contrib/l3kernel/l3term-glossary.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-02-02}
+\date{Released 2023-02-07}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/macros/latex/contrib/l3kernel/l3text-case.dtx b/macros/latex/contrib/l3kernel/l3text-case.dtx
index 6eded32a30..72ecd8c335 100644
--- a/macros/latex/contrib/l3kernel/l3text-case.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-case.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
@@ -1125,12 +1125,6 @@
% \begin{macrocode}
\cs_new:Npn \@@_change_case_upper_el_ypogegrammeni:n #1
{
- \@@_change_case_codepoint:nn { upper } {#1}
- \codepoint_generate:nn { "0399 }
- { \char_value_catcode:n { "0399 } }
- }
-\cs_new:cpn { @@_change_case_upper_el-x-iota_ypogegrammeni:n } #1
- {
\int_case:nnF
{ \@@_codepoint_from_chars:Nw #1 }
{
@@ -1145,6 +1139,12 @@
}
\cs_new:Npn \@@_change_case_upper_el_ypogegrammeni_aux:n #1
{ \codepoint_generate:nn {#1} { \char_value_catcode:n {#1} } }
+\cs_new:cpn { @@_change_case_upper_el-x-iota_ypogegrammeni:n } #1
+ {
+ \@@_change_case_codepoint:nn { upper } {#1}
+ \codepoint_generate:nn { "0399 }
+ { \char_value_catcode:n { "0399 } }
+ }
% \end{macrocode}
% For clearing out trailing combining marks after we have dealt with
% the first one.
diff --git a/macros/latex/contrib/l3kernel/l3text-map.dtx b/macros/latex/contrib/l3kernel/l3text-map.dtx
index e170a00a5d..9b8a706db4 100644
--- a/macros/latex/contrib/l3kernel/l3text-map.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-map.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3text-purify.dtx b/macros/latex/contrib/l3kernel/l3text-purify.dtx
index 5ad506e3cb..01b69e2e95 100644
--- a/macros/latex/contrib/l3kernel/l3text-purify.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-purify.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
@@ -464,40 +464,15 @@
% gets converted to two letters. (At some stage an alternative version
% can presumably be added to \pkg{babel} or similar.)
% \begin{macrocode}
-\bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
+\cs_set_protected:Npn \@@_loop:Nn #1#2
{
- \cs_set_protected:Npn \@@_loop:Nn #1#2
+ \quark_if_recursion_tail_stop:N #1
+ \text_declare_purify_equivalent:Nx #1
{
- \quark_if_recursion_tail_stop:N #1
- \text_declare_purify_equivalent:Nx #1
- {
- \char_generate:nn { "#2 }
- { \char_value_catcode:n { "#2 } }
- }
- \@@_loop:Nn
- }
- }
- {
- \cs_set_protected:Npn \@@_loop:Nn #1#2
- {
- \quark_if_recursion_tail_stop:N #1
- \text_declare_purify_equivalent:Nx #1
- {
- \exp_args:Ne \@@_tmp:n
- { \__kernel_codepoint_to_bytes:n { "#2 } }
- }
- \@@_loop:Nn
- }
- \cs_set:Npn \@@_tmp:n #1 { \@@_tmp:nnnn #1 }
- \cs_set:Npn \@@_tmp:nnnn #1#2#3#4
- {
- \exp_after:wN \exp_after:wN \exp_after:wN
- \exp_not:N \char_generate:nn {#1} { 13 }
- \exp_after:wN \exp_after:wN \exp_after:wN
- \exp_not:N \char_generate:nn {#2} { 13 }
+ \codepoint_generate:nn {"#2}
+ { \char_value_catcode:n {"#2} }
}
+ \@@_loop:Nn
}
\@@_loop:Nn
\AA { 00C5 }
@@ -547,7 +522,7 @@
\exp_not:v { c_@@_purify_ \token_to_str:N #1 _tl }
}
}
-\tl_map_inline:Nn \l_text_accents_tl
+\tl_map_inline:nn { \` \' \^ \~ \= \u \. \" \r \H \v \d \c \k \b \t }
{ \text_declare_purify_equivalent:Nn #1 { \@@_purify_accent:NN #1 } }
% \end{macrocode}
% First set up the combining accents.
@@ -557,34 +532,9 @@
{
\quark_if_recursion_tail_stop:N #1
\tl_const:cx { c_@@_purify_ \token_to_str:N #1 _tl }
- { \@@_tmp:n {#2} }
+ { \codepoint_generate:nn {"#2} { \char_value_catcode:n { "#2 } } }
\@@_loop:Nn
}
- \bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
- {
- \cs_set:Npn \@@_tmp:n #1
- {
- \char_generate:nn { "#1 }
- { \char_value_catcode:n { "#1 } }
- }
- }
- {
- \cs_set:Npn \@@_tmp:n #1
- {
- \exp_args:Ne \@@_tmp_aux:n
- { \__kernel_codepoint_to_bytes:n { "#1 } }
- }
- \cs_set:Npn \@@_tmp_aux:n #1 { \@@_tmp:nnnn #1 }
- \cs_set:Npn \@@_tmp:nnnn #1#2#3#4
- {
- \exp_after:wN \exp_after:wN \exp_after:wN
- \exp_not:N \char_generate:nn {#1} { 13 }
- \exp_after:wN \exp_after:wN \exp_after:wN
- \exp_not:N \char_generate:nn {#2} { 13 }
- }
- }
\@@_loop:Nn
\` { 0300 }
\' { 0301 }
@@ -617,7 +567,7 @@
\quark_if_recursion_tail_stop:N #1
\tl_const:cx
{ c_@@_purify_ \token_to_str:N #1 _ \token_to_str:N #2 _tl }
- { \@@_tmp:n {#3} }
+ { \codepoint_generate:nn {"#3} { \char_value_catcode:n { "#3 } } }
\@@_loop:NNn
}
\@@_loop:NNn
diff --git a/macros/latex/contrib/l3kernel/l3text.dtx b/macros/latex/contrib/l3kernel/l3text.dtx
index b651674006..c9121e6750 100644
--- a/macros/latex/contrib/l3kernel/l3text.dtx
+++ b/macros/latex/contrib/l3kernel/l3text.dtx
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \textsf{l3text} package: text processing^^A
+% The \textsf{l3text} package: Text processing^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
@@ -58,7 +58,8 @@
%
% \section{Expanding text}
%
-% \begin{function}[EXP, added = 2020-01-02]{\text_expand:n}
+% \begin{function}[EXP, added = 2020-01-02, updated = 2023-02-07]
+% {\text_expand:n}
% \begin{syntax}
% \cs{text_expand:n} \Arg{text}
% \end{syntax}
@@ -69,8 +70,7 @@
% \cs{l_text_math_delims_tl} or as the argument to commands listed
% in \cs{l_text_math_arg_tl}). Commands which are neither engine-
% nor \LaTeX{} protected are expanded exhaustively.
-% Any commands listed in \cs{l_text_expand_exclude_tl},
-% \cs{l_text_accents_tl} and \cs{l_text_letterlike_tl} are excluded from
+% Any commands listed in \cs{l_text_expand_exclude_tl} are excluded from
% expansion.
% \end{function}
%
@@ -84,7 +84,11 @@
% \end{syntax}
% Declares that the \meta{replacement} tokens should be used whenever the
% \meta{cmd} (a single token) is encountered. The \meta{replacement} tokens
-% should be expandable.
+% should be expandable. A token can be \enquote{replaced} by itself if
+% the defined replacement wraps it in \cs{exp_not:n}, for example
+% \begin{verbatim}
+% \text_declare_expand_equivalent:Nn \' { \exp_not:n { \' } }
+% \end{verbatim}
% \end{function}
%
% \section{Case changing}
@@ -165,8 +169,9 @@
% \item Greek (\texttt{el}).
% Removes accents from Greek letters when uppercasing; titlecasing
% leaves accents in place. A variant \texttt{el-x-iota} is available
-% which retains the \textit{ypogegrammeni} (subscript muted iota)
-% when uppercasing: the standard version converts these to a following
+% which converts the \textit{ypogegrammeni} (subscript muted iota)
+% to capital iota when uppercasing: the standard version retains the
+% subscript versions.
% capital iota.
% \item Lithuanian (\texttt{lt}).
% The lowercase letters i and j should retain a dot above when the
@@ -255,16 +260,6 @@
%
% \section{Control variables}
%
-% \begin{variable}{\l_text_accents_tl}
-% Lists commands which represent accents, and which are left unchanged
-% by expansion. (Defined only for the \LaTeXe{} package.)
-% \end{variable}
-%
-% \begin{variable}{\l_text_letterlike_tl}
-% Lists commands which represent letters; these are left unchanged by
-% expansion. (Defined only for the \LaTeXe{} package.)
-% \end{variable}
-%
% \begin{variable}{\l_text_math_arg_tl}
% Lists commands present in the \meta{text} where the argument of the
% command should be treated as math mode material. The treatment here is
@@ -794,27 +789,10 @@
% \subsection{Configuration variables}
%
% \begin{variable}{\l_text_accents_tl, \l_text_letterlike_tl}
-% Special cases for accents and letter-like symbols, which in some cases will
-% need to be converted further.
+% Used to be used for excluding these ideas from expansion: now deprecated.
% \begin{macrocode}
\tl_new:N \l_text_accents_tl
-\tl_set:Nn \l_text_accents_tl
- { \` \' \^ \~ \= \u \. \" \r \H \v \d \c \k \b \t }
\tl_new:N \l_text_letterlike_tl
-\tl_set:Nn \l_text_letterlike_tl
- {
- \AA \aa
- \AE \ae
- \DH \dh
- \DJ \dj
- \IJ \ij
- \L \l
- \NG \ng
- \O \o
- \OE \oe
- \SS \ss
- \TH \th
- }
% \end{macrocode}
% \end{variable}
%
@@ -1513,6 +1491,28 @@
% \end{macrocode}
% \end{macro}
%
+% Prevent expansion of various standard values.
+% \begin{macrocode}
+\tl_map_inline:nn
+ { \` \' \^ \~ \= \u \. \" \r \H \v \d \c \k \b \t }
+ { \text_declare_expand_equivalent:Nn #1 { \exp_not:n {#1} } }
+\tl_map_inline:nn
+ {
+ \AA \aa
+ \AE \ae
+ \DH \dh
+ \DJ \dj
+ \IJ \ij
+ \L \l
+ \NG \ng
+ \O \o
+ \OE \oe
+ \SS \ss
+ \TH \th
+ }
+ { \text_declare_expand_equivalent:Nn #1 { \exp_not:n {#1} } }
+% \end{macrocode}
+%
% \begin{macrocode}
%</package>
% \end{macrocode}
diff --git a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
index 5a15396013..6789869b12 100644
--- a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3tl.dtx b/macros/latex/contrib/l3kernel/l3tl.dtx
index c7506c3389..607298dae9 100644
--- a/macros/latex/contrib/l3kernel/l3tl.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3token.dtx b/macros/latex/contrib/l3kernel/l3token.dtx
index cb080df9e0..42efb7c938 100644
--- a/macros/latex/contrib/l3kernel/l3token.dtx
+++ b/macros/latex/contrib/l3kernel/l3token.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3unicode.dtx b/macros/latex/contrib/l3kernel/l3unicode.dtx
index 7cdc28d3c7..425fd5cf07 100644
--- a/macros/latex/contrib/l3kernel/l3unicode.dtx
+++ b/macros/latex/contrib/l3kernel/l3unicode.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-02-02}
+% \date{Released 2023-02-07}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/source3.pdf b/macros/latex/contrib/l3kernel/source3.pdf
index 8c50e540dd..5d4e061c78 100644
--- a/macros/latex/contrib/l3kernel/source3.pdf
+++ b/macros/latex/contrib/l3kernel/source3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/source3.tex b/macros/latex/contrib/l3kernel/source3.tex
index fb2ae94400..c30527964b 100644
--- a/macros/latex/contrib/l3kernel/source3.tex
+++ b/macros/latex/contrib/l3kernel/source3.tex
@@ -53,7 +53,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-02-02}
+\date{Released 2023-02-07}
\pagenumbering{roman}
\maketitle
diff --git a/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md b/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md
index dd6e4ddb0b..6340136c0b 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md
+++ b/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md
@@ -5,7 +5,16 @@ 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.
-## [2022-11-03]
+## [2023-02-07]
+
+### Fixed
+ - pdf A4 uses pdfaid:rev not pdfaid:year.
+ - pdfcreationdate and pdfmoddate key
+
+### Added
+ - firstaid support for luacolor (pdfmode)
+
+## [2022-11-03]
### Added
- ltdocinit: expl3 functions to retrieve values from the document properties.
diff --git a/macros/latex/contrib/pdfmanagement-testphase/README.md b/macros/latex/contrib/pdfmanagement-testphase/README.md
index 3431370418..51efd816a5 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.95t, 2022-11-03
+Version: 0.95u, 2023-02-07
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 582203d369..e6464c3527 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}[2022-11-03 v0.95t
+\ProvidesPackage{color-ltx}[2023-02-07 v0.95u
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 0a9f312282..b9c37a0869 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}{2022-11-03}{0.95t}
+\ProvidesExplPackage{colorspace-patches-tmp-ltx}{2023-02-07}{0.95u}
{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/fontspec-luatex-tmp-ltx.sty b/macros/latex/contrib/pdfmanagement-testphase/fontspec-luatex-tmp-ltx.sty
index eef806874c..d58ac829fd 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/fontspec-luatex-tmp-ltx.sty
+++ b/macros/latex/contrib/pdfmanagement-testphase/fontspec-luatex-tmp-ltx.sty
@@ -40,7 +40,7 @@
\RequirePackage{xparse}
\ProvidesExplPackage{fontspec-luatex-tmp-ltx}%
- {2022/01/15}{2022-11-03}{0.95t}
+ {2022/01/15}{2023-02-07}{0.95u}
%%^^A%% fontspec-code-load.dtx -- part of FONTSPEC <wspr.io/fontspec>
%%^^A%% fontspec-code-vars.dtx -- part of FONTSPEC <wspr.io/fontspec>
diff --git a/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx b/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx
index f8f939c1d1..0a80dc1bda 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.95t, released 2022-11-03}
+% \date{Version 0.95u, released 2023-02-07}
%
% \maketitle
% \begin{documentation}
@@ -969,7 +969,7 @@
%<@@=hyp>
% \end{macrocode}
% \begin{macrocode}
-\ProvidesFile{hgeneric-testphase.def}[2022-11-03 v0.95t %
+\ProvidesFile{hgeneric-testphase.def}[2023-02-07 v0.95u %
generic Hyperref driver for the LaTeX PDF management testphase bundle]
\RequirePackage{etoolbox} %why?
@@ -3940,7 +3940,7 @@
\pdfmanagement_add:nnx {Info}{#2}{(##1)}
}
\@@_store_metadata:nn {pdf#1}{##1}
- \AddToDocumentProperties[document]{#1}{#2}
+ \AddToDocumentProperties[document]{#1}{##1}
}
}
\keys_define:nn { hyp / info }
diff --git a/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf b/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf
index 7de3a1192a..050ce269eb 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 f1d4085ac2..d6c6c742c8 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.95t, released 2022-11-03}
+% \date{Version 0.95u, released 2023-02-07}
%
% \maketitle
%
@@ -56,27 +56,27 @@
% \begin{macrocode}
%<drivers>\ProvidesExplFile
%<*dvipdfmx>
- {l3backend-testphase-dvipdfmx.def}{2022-11-03}{}
+ {l3backend-testphase-dvipdfmx.def}{2023-02-07}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvipdfmx}
%</dvipdfmx>
%<*dvips>
- {l3backend-testphase-dvips.def}{2022-11-03}{}
+ {l3backend-testphase-dvips.def}{2023-02-07}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvips}
%</dvips>
%<*dvisvgm>
- {l3backend-testphase-dvisvgm.def}{2022-11-03}{}
+ {l3backend-testphase-dvisvgm.def}{2023-02-07}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvisvgm}
%</dvisvgm>
%<*luatex>
- {l3backend-testphase-luatex.def}{2022-11-03}{}
+ {l3backend-testphase-luatex.def}{2023-02-07}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (LuaTeX)}
%</luatex>
%<*pdftex>
- {l3backend-testphase-pdftex.def}{2022-11-03}{}
+ {l3backend-testphase-pdftex.def}{2023-02-07}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (pdfTeX)}
%</pdftex>
%<*xdvipdfmx>
- {l3backend-testphase-xetex.def}{2022-11-03}{}
+ {l3backend-testphase-xetex.def}{2023-02-07}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: XeTeX}
%</xdvipdfmx>
% \end{macrocode}
@@ -2001,8 +2001,8 @@
%<*drivers>
\pdfmanagement_add:nnn{Info}{CreationDate}{(D:20010101205959-00'00')}
\pdfmanagement_add:nnn{Info}{ModDate}{(D:20010101205959-00'00')}
- \AddToDocumentProperties[document]{pdfcreationdate}{D:20010101205959-00'00'}
- \AddToDocumentProperties[document]{pdfmoddate}{D:20010101205959-00'00'}
+ \AddToDocumentProperties[document]{creationdate}{D:20010101205959-00'00'}
+ \AddToDocumentProperties[document]{moddate}{D:20010101205959-00'00'}
\AddToDocumentProperties[hyperref]{pdfmetadate}{D:20010101205959-00'00'}
\AddToDocumentProperties[hyperref]{pdfdate}{D:20010101205959-00'00'}
\AddToDocumentProperties[hyperref]{pdfinstanceid}{uuid:0a57c455-157a-4141-8c19-6237d832fc80}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf
index 7d24551cff..9bace5d9c8 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 c42ad3d6dc..b34c9610fd 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.95t, released 2022-11-03}
+% \date{Version 0.95u, released 2023-02-07}
%
% \maketitle
% \begin{documentation}
@@ -432,7 +432,7 @@
% \begin{macrocode}
%<@@=pdfannot>
%<*header>
-\ProvidesExplPackage{l3pdfannot}{2022-11-03}{0.95t}
+\ProvidesExplPackage{l3pdfannot}{2023-02-07}{0.95u}
{PDF-annotations}
\RequirePackage{l3pdfdict}
%</header>
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf
index b8669c8b52..8b8e35a3b4 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 a5c5681945..e8bc32484a 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.95t, released 2022-11-03}
+% \date{Version 0.95u, released 2023-02-07}
%
% \maketitle
% \begin{documentation}
@@ -208,7 +208,7 @@
% \begin{macrocode}
%<@@=pdfdict>
%<*header>
-\ProvidesExplPackage{l3pdfdict}{2022-11-03}{0.95t}
+\ProvidesExplPackage{l3pdfdict}{2023-02-07}{0.95u}
{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 a9df422a86..e83d445c94 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 f7d13de933..96855a08c2 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.95t, released 2022-11-03}
+% \date{Version 0.95u, released 2023-02-07}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf
index 3f9175847c..bebc9d08d4 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 f348aba947..5fba604620 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.95t, released 2022-11-03}
+% \date{Version 0.95u, released 2023-02-07}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf
index 863325d9d2..466fd5a705 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 4fa78b0a70..3c0541b947 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.95t, released 2022-11-03}
+% \date{Version 0.95u, released 2023-02-07}
%
% \maketitle
% \begin{documentation}
@@ -428,7 +428,7 @@
% ,\tl_to_str:n
% ,\use:c
% }
-% \section{\pkg{l3pdffield-radiobutton} Implementation}
+% \section{\pkg{l3pdffield-choice} Implementation}
% \begin{macrocode}
%<*package>
%<@@=pdffield>
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf
index 052361aea2..d506fa15f4 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 f8f8b7ef12..a078ea2fb8 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.95t, released 2022-11-03}
+% \date{Version 0.95u, released 2023-02-07}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf
index 35dd709ee9..853f8adaa9 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 a698c52cc4..36ab234bbf 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.95t, released 2022-11-03}
+% \date{Version 0.95u, released 2023-02-07}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf
index 48a75e5371..838b411c46 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 350a263a81..ecf4211755 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.95t, released 2022-11-03}
+% \date{Version 0.95u, released 2023-02-07}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf
index 59554bbaa1..5c4e030d3e 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 6737658cb8..3bc48a0cb4 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.95t, released 2022-11-03}
+% \date{Version 0.95u, released 2023-02-07}
%
% \maketitle
% \begin{documentation}
@@ -973,7 +973,7 @@
%<*package>
%<@@=pdffield>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesExplPackage{l3pdffield-testphase}{2022-11-03}{0.95t}%
+\ProvidesExplPackage{l3pdffield-testphase}{2023-02-07}{0.95u}%
{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 c2ceb53f6a..60b5c4d669 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 54d84d08b5..e682ad4e10 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.95t, released 2022-11-03}
+% \date{Version 0.95u, released 2023-02-07}
%
% \maketitle
% \begin{documentation}
@@ -396,7 +396,7 @@
%
% \begin{macrocode}
%<*header>
-\ProvidesExplPackage{l3pdffile}{2022-11-03}{0.95t}
+\ProvidesExplPackage{l3pdffile}{2023-02-07}{0.95u}
{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 654b7ebd79..074a7ada21 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 f391e0fd98..a9c96844d9 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.95t, released 2022-11-03}
+% \date{Version 0.95u, released 2023-02-07}
%
% \maketitle
% \begin{documentation}
@@ -632,7 +632,7 @@
%<@@=pdfmanagement>
%<*header>
%
-\ProvidesExplPackage{l3pdfmanagement}{2022-11-03}{0.95t}
+\ProvidesExplPackage{l3pdfmanagement}{2023-02-07}{0.95u}
{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 082ae161ed..1466bb0a6f 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 32cfb038db..be0db1b9f3 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.95t, released 2022-11-03}
+% \date{Version 0.95u, released 2023-02-07}
%
% \maketitle
% \begin{documentation}
@@ -562,7 +562,7 @@
% \begin{macrocode}
%<@@=pdfmeta>
%<*header>
-\ProvidesExplPackage{l3pdfmeta}{2022-11-03}{0.95t}
+\ProvidesExplPackage{l3pdfmeta}{2023-02-07}{0.95u}
{PDF-Standards---LaTeX PDF management testphase bundle}
%</header>
% \end{macrocode}
@@ -2156,14 +2156,14 @@
% CreationDate
% \begin{macrocode}
\@@_xmp_date_get:nNN
- {document/pdfcreationdate}\l_@@_tmpa_tl\l_@@_tmpa_seq
+ {document/creationdate}\l_@@_tmpa_tl\l_@@_tmpa_seq
\@@_xmp_add_packet_line:nne{xmp}{CreateDate}{\@@_xmp_print_date:N\l_@@_tmpa_seq}
\pdfmanagement_add:nnx{Info}{CreationDate}{(\l_@@_tmpa_tl)}
% \end{macrocode}
% ModifyDate
% \begin{macrocode}
\@@_xmp_date_get:nNN
- {document/pdfmoddate}\l_@@_tmpa_tl\l_@@_tmpa_seq
+ {document/moddate}\l_@@_tmpa_tl\l_@@_tmpa_seq
\@@_xmp_add_packet_line:nne{xmp}{ModifyDate}{\@@_xmp_print_date:N\l_@@_tmpa_seq}
\pdfmanagement_add:nnx{Info}{ModDate}{(\l_@@_tmpa_tl)}
% \end{macrocode}
@@ -2191,8 +2191,10 @@
{
\@@_xmp_add_packet_line:nne {pdfaid}{part}{\pdfmeta_standard_item:n{level}}
\@@_xmp_add_packet_line:nne
- {pdfaid}{conformance}{\pdfmeta_standard_item:n{conformance}}
- \@@_xmp_add_packet_line:nne {pdfaid}{year} {\pdfmeta_standard_item:n{year}}
+ {pdfaid}{conformance}{\pdfmeta_standard_item:n{conformance}}
+ \int_compare:nNnTF {0\pdfmeta_standard_item:n{level}}<{4}
+ {\@@_xmp_add_packet_line:nne {pdfaid}{year} {\pdfmeta_standard_item:n{year}}}
+ {\@@_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
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf
index 27f0243093..f13004eea6 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 0cce54f81b..9609617ddc 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.95t, released 2022-11-03}
+% \date{Version 0.95u, released 2023-02-07}
%
% \maketitle
% \begin{documentation}
@@ -211,7 +211,7 @@
%
% \begin{macrocode}
%<*header>
-\ProvidesExplPackage{l3pdftools}{2022-11-03}{0.95t}
+\ProvidesExplPackage{l3pdftools}{2023-02-07}{0.95u}
{candidate commands for l3pdf---LaTeX PDF management testphase bundle}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf
index d998b8d767..01556046ec 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 1da25fb12f..3f6350f95f 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.95t, released 2022-11-03}
+% \date{Version 0.95u, released 2023-02-07}
%
% \maketitle
% \begin{documentation}
@@ -132,7 +132,7 @@
% \begin{macrocode}
%<@@=pdf>
%<*header>
-\ProvidesExplPackage{l3pdfxform}{2022-11-03}{0.95t}
+\ProvidesExplPackage{l3pdfxform}{2023-02-07}{0.95u}
{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 5396976ad4..87ced6bc38 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 8456882f17..ada32d8d2f 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.95t, released 2022-11-03}
+% \date{Version 0.95u, released 2023-02-07}
%
% \maketitle
% \begin{documentation}
@@ -215,7 +215,7 @@
% \begin{macrocode}
%<@@=pdfmanagement>
%<*header>
-\ProvidesExplPackage{ltdocinit}{2022-11-03}{0.95t}
+\ProvidesExplPackage{ltdocinit}{2023-02-07}{0.95u}
{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 bdf6fb8dc0..882188cde8 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.pdf b/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdf
index da529c2630..7d24fbf133 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx
index 45174deaae..2025a4fa18 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.95t, released 2022-11-03}
+% \date{Version 0.95u, released 2023-02-07}
%
% \maketitle
% \begin{documentation}
@@ -63,11 +63,13 @@
% |debug={firstaidoff={name1,name2,...},...}|.
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{pdfmanagement-firstaid}{2022-11-03}{0.95t}
+\ProvidesExplPackage{pdfmanagement-firstaid}{2023-02-07}{0.95u}
{LaTeX PDF management testphase bundle / firstaid-patches}
%<@@=pdfmanagement>
-\clist_map_inline:nn {pgf,transparent,xmp,pdflscape,xcolor,color,beamer,output,colorspace,fontspec}
+\clist_map_inline:nn
+ {pgf,transparent,xmp,pdflscape,xcolor,color,
+ beamer,output,colorspace,fontspec,luacolor}
{
\bool_new:c { g_@@_firstaid_#1_bool }
\bool_gset_true:c { g_@@_firstaid_#1_bool }
@@ -195,6 +197,65 @@
{\RequirePackage{xcolor-patches-tmp-ltx}}
}
% \end{macrocode}
+%
+% \subsection{luacolor}
+%
+% The luacolor package doesn't take colors from l3color into account.
+% We add a fix, but only for pdf mode. It is disable if luacolor is updated,
+% assuming that the update will then handle it (or expl3 directly)
+% \begin{macrocode}
+\bool_lazy_all:nT
+ {
+ {\sys_if_engine_luatex_p:}
+ {\g_@@_firstaid_luacolor_bool}
+ {\sys_if_output_pdf_p:}
+ }
+ {
+ \AddToHook{package/luacolor/after}
+ {
+ \@ifpackagelater{luacolor}{2021-02-18}{}
+ {
+ \cs_set_protected:Npn \__color_backend_select:nn #1#2
+ {
+ \tl_set:Nn \l__color_backend_fill_tl {#1}
+ \tl_set:Nn \l__color_backend_stroke_tl {#2}
+ \LuaCol@setattribute\LuaCol@Attribute
+ {
+ \directlua
+ {
+ oberdiek.luacolor.get("\luaescapestring{#1~#2}")
+ }
+ }
+ }
+ \cs_set_protected:Npn \__color_backend_fill:n #1
+ {
+ \tl_set:Nn \l__color_backend_fill_tl {#1}
+ \LuaCol@setattribute\LuaCol@Attribute
+ {
+ \directlua
+ {
+ oberdiek.luacolor.get("\luaescapestring{#1}")
+ }
+ }
+ }
+ \cs_set_protected:Npn \__color_backend_stroke:n #1
+ {
+ \tl_set:Nn \l__color_backend_stroke_tl {#1}
+ \LuaCol@setattribute\LuaCol@Attribute
+ {
+ \directlua
+ {
+ oberdiek.luacolor.get("\luaescapestring{#1}")
+ }
+ }
+ }
+ \cs_set_protected:Npn \__color_backend_reset: {}
+ \cs_set_eq:NN \__color_backend_fill_reset: \__color_backend_reset:
+ \cs_set_eq:NN \__color_backend_stroke_reset: \__color_backend_reset:
+ }
+ }
+ }
+% \end{macrocode}
% \subsection{\pkg{pgf}}
%
% In \pkg{pgf}, resource management is set up in the file |pgfutil-common.tex|.
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf
index 46da216155..b1cd065bde 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 e9b145d964..8110f77cba 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx
@@ -47,7 +47,7 @@
% }^^A
% }
%
-% \date{Version 0.95t, released 2022-11-03}
+% \date{Version 0.95u, released 2023-02-07}
%
% \maketitle
% \begin{documentation}
@@ -386,7 +386,7 @@
% \begin{macrocode}
%<@@=pdf>
%<*package>
-\ProvidesExplPackage{pdfmanagement-testphase}{2022-11-03}{0.95t}
+\ProvidesExplPackage{pdfmanagement-testphase}{2023-02-07}{0.95u}
{LaTeX PDF management testphase bundle}
\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
\IfFormatAtLeastTF{2020-10-01}{}{
@@ -414,7 +414,7 @@
% to allow to set it in the document.
% \begin{macrocode}
%<*header>
-\ProvidesExplFile{pdfmanagement-testphase.ltx}{2022-11-03}{0.95t}
+\ProvidesExplFile{pdfmanagement-testphase.ltx}{2023-02-07}{0.95u}
{PDF~management~code~(testphase)}
%</header>
%<*package>
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf
index a0461cad30..39df81d3ba 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 ed93544f26..9ef9dcce2d 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}[2022-11-03 v0.95t patch xcolor for l3color]
+\ProvidesPackage{xcolor-patches-tmp-ltx}[2023-02-07 v0.95u patch xcolor for l3color]
\@ifundefined{color_set:nn}{\RequirePackage{l3color}}{}
\ExplSyntaxOn
diff --git a/macros/latex/contrib/physics2/doc/phy2docdef.tex b/macros/latex/contrib/physics2/doc/phy2docdef.tex
index 55ee148034..d5d0699a76 100644
--- a/macros/latex/contrib/physics2/doc/phy2docdef.tex
+++ b/macros/latex/contrib/physics2/doc/phy2docdef.tex
@@ -64,7 +64,7 @@
\newenvironment{example}
{\stepcounter{example}\example@start}{\example@end}
\author{Zhang Tingxuan}
-\date{2023/01/25\quad Version 0.1\thanks{%
+\date{2023/02/07\quad Version 0.1.1\thanks{%
\url{https://www.github.com/AlphaZTX/physics2}}}
\makeatother
\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/physics2/doc/physics2-legacy.pdf b/macros/latex/contrib/physics2/doc/physics2-legacy.pdf
index 5a2d78c54d..796463ab07 100644
--- a/macros/latex/contrib/physics2/doc/physics2-legacy.pdf
+++ b/macros/latex/contrib/physics2/doc/physics2-legacy.pdf
Binary files differ
diff --git a/macros/latex/contrib/physics2/doc/physics2.pdf b/macros/latex/contrib/physics2/doc/physics2.pdf
index a997e2da85..a5721ef991 100644
--- a/macros/latex/contrib/physics2/doc/physics2.pdf
+++ b/macros/latex/contrib/physics2/doc/physics2.pdf
Binary files differ
diff --git a/macros/latex/contrib/physics2/tex/phy-ab.braket.sty b/macros/latex/contrib/physics2/tex/phy-ab.braket.sty
index 4e3ab66141..a65ce94bc5 100644
--- a/macros/latex/contrib/physics2/tex/phy-ab.braket.sty
+++ b/macros/latex/contrib/physics2/tex/phy-ab.braket.sty
@@ -17,7 +17,7 @@
%% The Current Maintainer of this work is Zhang Tingxuan.
%%
\ProvidesFile{phy-ab.braket.sty}
- [2023/1/25 `ab.braket' module of `physics2.sty']
+ [2023/01/25 `ab.braket' module of `physics2.sty']
% This module requires \phy@abopen and \phy@abclose from `ab'.
\phy@requiremodule{ab}
\ifdefined\phy@bra@@
diff --git a/macros/latex/contrib/physics2/tex/phy-ab.legacy.sty b/macros/latex/contrib/physics2/tex/phy-ab.legacy.sty
index 018f221997..d21e52f5d1 100644
--- a/macros/latex/contrib/physics2/tex/phy-ab.legacy.sty
+++ b/macros/latex/contrib/physics2/tex/phy-ab.legacy.sty
@@ -17,7 +17,7 @@
%% The Current Maintainer of this work is Zhang Tingxuan.
%%
\ProvidesFile{phy-ab.legacy.sty}
- [2023/1/25 `ab.legacy' module of `physics2.sty']
+ [2023/01/25 `ab.legacy' module of `physics2.sty']
\phy@requiremodule{ab}
% The `tight' bool option, true or false.
\phy@define@key{ab.legacy}{order}[\mathcal{O}]{\def\phy@ab@ordersym{#1}}
diff --git a/macros/latex/contrib/physics2/tex/phy-ab.sty b/macros/latex/contrib/physics2/tex/phy-ab.sty
index 9bf477804f..089d01b53c 100644
--- a/macros/latex/contrib/physics2/tex/phy-ab.sty
+++ b/macros/latex/contrib/physics2/tex/phy-ab.sty
@@ -17,7 +17,7 @@
%% The Current Maintainer of this work is Zhang Tingxuan.
%%
\ProvidesFile{phy-ab.sty}
- [2023/1/25 `ab' (autobraces) module of `physics2.sty']
+ [2023/02/07 `ab' (autobraces) module of `physics2.sty']
% \phy@requiremodule{common}
% The `tightbraces' bool option, true or false.
\phy@define@key{ab}{tightbraces}[true]{\def\@phy@abtight{#1}}
@@ -67,15 +67,16 @@
\expandafter\def\csname phy@del\string\biggg\endcsname#1#2#3{\bigggl#1#3\bigggr#2}
\expandafter\def\csname phy@del\string\Biggg\endcsname#1#2#3{\Bigggl#1#3\Bigggr#2}
% \phy@AB@gb(a|b|..): gobble (a|b|..) arguments in the middle.
-\def\phy@AB@gba#1#2#3{#1#3}
-% In next two lines, #5 or #6 may contain more than one token, so they're grouped.
\def\phy@AB@gbc#1#2#3#4#5{#1{#5}}
-\def\phy@AB@gbd#1#2#3#4#5#6{#1{#6}}
% \phy@d@lx (phy_del_x): the internal defination of \ab.
% #1: `mb', according to \phy@AB@gen; #2: `ab'; #3: star or big or left delimiter.
-\def\phy@d@lx#1#2#3{\ifcsname phy@del\string#3\endcsname
- \phy@AB@gbd{\csname phy@d@lx#1\endcsname#3}% #3 is star or biggg, then get the next argument.
- \else\phy@AB@gba{\csname phy@d@lx#2\endcsname#3}\fi}% #3 is delimiter, the braces are automatic.
+\def\phy@d@lx#1#2#3{%
+ \ifcsname phy@del\string#3\endcsname%
+ \def\reserved@a{#1}% #3 is star or biggg, then get the next argument.
+ \else%
+ \def\reserved@a{#2}% #3 is delimiter, the braces are automatic.
+ \fi%
+ \csname phy@d@lx\reserved@a\endcsname#3}
% The first two arguments of \phy@d@lx need to be generated by the following two commands.
\def\phy@d@l@genxm#1{% generate arguments like `mb'
\expandafter\def\csname phy@d@lx#1\endcsname##1##2{%
diff --git a/macros/latex/contrib/physics2/tex/phy-bm-um.legacy.sty b/macros/latex/contrib/physics2/tex/phy-bm-um.legacy.sty
index c97b925deb..36ffe206a6 100644
--- a/macros/latex/contrib/physics2/tex/phy-bm-um.legacy.sty
+++ b/macros/latex/contrib/physics2/tex/phy-bm-um.legacy.sty
@@ -16,7 +16,7 @@
%%
%% The Current Maintainer of this work is Zhang Tingxuan.
%%
-\ProvidesExplFile{phy-bm-um.legacy.sty}{2023/1/25}{}
+\ProvidesExplFile{phy-bm-um.legacy.sty}{2023/01/25}{}
{`bm-um.legacy' module of `physics2.sty'}
\AtBeginDocument
{
diff --git a/macros/latex/contrib/physics2/tex/phy-braket.sty b/macros/latex/contrib/physics2/tex/phy-braket.sty
index 29c2656726..a6e88c13cc 100644
--- a/macros/latex/contrib/physics2/tex/phy-braket.sty
+++ b/macros/latex/contrib/physics2/tex/phy-braket.sty
@@ -17,7 +17,7 @@
%% The Current Maintainer of this work is Zhang Tingxuan.
%%
\ProvidesFile{phy-braket.sty}
- [2023/1/25 `braket' module of `physics2.sty']
+ [2023/01/25 `braket' module of `physics2.sty']
% Here we need to get the definition of \phy@abopen and \phy@abclose.
\phy@requiremodule{ab}
\ifdefined\phy@abb@bkv
diff --git a/macros/latex/contrib/physics2/tex/phy-common.sty b/macros/latex/contrib/physics2/tex/phy-common.sty
index 1b0776a807..f20d258365 100644
--- a/macros/latex/contrib/physics2/tex/phy-common.sty
+++ b/macros/latex/contrib/physics2/tex/phy-common.sty
@@ -17,7 +17,7 @@
%% The Current Maintainer of this work is Zhang Tingxuan.
%%
\ProvidesFile{phy-common.sty}
- [2023/1/25 `common' module of `physics2.sty']
+ [2023/01/25 `common' module of `physics2.sty']
% Check if `unicode-math' loaded and (re)define the vert symbols.
% The `\relax'es here are for \ifx to compare.
\AtBeginDocument{\ifcsname symrm\endcsname
diff --git a/macros/latex/contrib/physics2/tex/phy-diagmat.sty b/macros/latex/contrib/physics2/tex/phy-diagmat.sty
index c917f797b7..e90c99d928 100644
--- a/macros/latex/contrib/physics2/tex/phy-diagmat.sty
+++ b/macros/latex/contrib/physics2/tex/phy-diagmat.sty
@@ -16,7 +16,7 @@
%%
%% The Current Maintainer of this work is Zhang Tingxuan.
%%
-\ProvidesExplFile{phy-diagmat.sty}{2023/1/25}{}
+\ProvidesExplFile{phy-diagmat.sty}{2023/01/25}{}
{`diagmat' module of `physics2.sty'}
\phy@requiremodule { explsetup }
\RequirePackage { amsmath }
diff --git a/macros/latex/contrib/physics2/tex/phy-doubleprod.sty b/macros/latex/contrib/physics2/tex/phy-doubleprod.sty
index e8981b8aa7..1888b6e70a 100644
--- a/macros/latex/contrib/physics2/tex/phy-doubleprod.sty
+++ b/macros/latex/contrib/physics2/tex/phy-doubleprod.sty
@@ -17,7 +17,7 @@
%% The Current Maintainer of this work is Zhang Tingxuan.
%%
\ProvidesFile{phy-doubleprod.sty}
- [2023/1/25 `doubleprod' (double binary) module of `physics2.sty']
+ [2023/01/25 `doubleprod' (double binary) module of `physics2.sty']
% The options, true or false.
\phy@define@key{doubleprod}{crosssymbol}{\def\@phy@dbl@c{#1}}
\phy@define@key{doubleprod}{dotsymbol}{\def\@phy@dbl@d{#1}}
diff --git a/macros/latex/contrib/physics2/tex/phy-explsetup.sty b/macros/latex/contrib/physics2/tex/phy-explsetup.sty
index e4aa63c752..a861201f9a 100644
--- a/macros/latex/contrib/physics2/tex/phy-explsetup.sty
+++ b/macros/latex/contrib/physics2/tex/phy-explsetup.sty
@@ -16,7 +16,7 @@
%%
%% The Current Maintainer of this work is Zhang Tingxuan.
%%
-\ProvidesExplFile{phy-explsetup.sty}{2023/1/25}{}
+\ProvidesExplFile{phy-explsetup.sty}{2023/01/25}{}
{`explsetup' module of `physics2.sty'}
% temporary variables
\int_new:N \l__phy_tmpa_int
diff --git a/macros/latex/contrib/physics2/tex/phy-nabla.legacy.sty b/macros/latex/contrib/physics2/tex/phy-nabla.legacy.sty
index d5d225afca..04d75d88fd 100644
--- a/macros/latex/contrib/physics2/tex/phy-nabla.legacy.sty
+++ b/macros/latex/contrib/physics2/tex/phy-nabla.legacy.sty
@@ -17,7 +17,7 @@
%% The Current Maintainer of this work is Zhang Tingxuan.
%%
\ProvidesFile{phy-nabla.legacy.sty}
- [2023/1/25 `nabla.legacy' (autobraces) module of `physics2.sty']
+ [2023/01/25 `nabla.legacy' (autobraces) module of `physics2.sty']
\phy@requiremodule{ab}
% This package required `fixdif' package version 2.x.
\RequirePackage{fixdif}[2023/01/31]
diff --git a/macros/latex/contrib/physics2/tex/phy-op.legacy.sty b/macros/latex/contrib/physics2/tex/phy-op.legacy.sty
index 6125f370e3..ec7bd359d4 100644
--- a/macros/latex/contrib/physics2/tex/phy-op.legacy.sty
+++ b/macros/latex/contrib/physics2/tex/phy-op.legacy.sty
@@ -17,7 +17,7 @@
%% The Current Maintainer of this work is Zhang Tingxuan.
%%
\ProvidesFile{phy-op.legacy.sty}
- [2023/1/25 `op.legacy' module of `physics2.sty']
+ [2023/01/25 `op.legacy' module of `physics2.sty']
\phy@define@key{op.lega}{ReIm}[true]{\def\phy@reserveda{#1}}
% The keys for \PV and \pv
\phy@define@key{op.lega}{PV}{\def\@phy@oplega@PV{#1}}
diff --git a/macros/latex/contrib/physics2/tex/phy-qtext.legacy.sty b/macros/latex/contrib/physics2/tex/phy-qtext.legacy.sty
index a6a3162fca..6ac0d250b0 100644
--- a/macros/latex/contrib/physics2/tex/phy-qtext.legacy.sty
+++ b/macros/latex/contrib/physics2/tex/phy-qtext.legacy.sty
@@ -17,7 +17,7 @@
%% The Current Maintainer of this work is Zhang Tingxuan.
%%
\ProvidesFile{phy-qtext.legacy.sty}
- [2023/1/25 `qtext.legacy' module of `physics2.sty']
+ [2023/01/25 `qtext.legacy' module of `physics2.sty']
\RequirePackage{amstext}
\def\phy@qtext@#1#2{#1\text{#2}\quad}
\DeclareRobustCommand\qqtext{\@ifstar{\phy@qtext@{}}{\phy@qtext@\quad}}
diff --git a/macros/latex/contrib/physics2/tex/phy-xmat.sty b/macros/latex/contrib/physics2/tex/phy-xmat.sty
index 7a0b2d33d3..9e7058b062 100644
--- a/macros/latex/contrib/physics2/tex/phy-xmat.sty
+++ b/macros/latex/contrib/physics2/tex/phy-xmat.sty
@@ -16,7 +16,7 @@
%%
%% The Current Maintainer of this work is Zhang Tingxuan.
%%
-\ProvidesExplFile{phy-xmat.sty}{2023/1/25}{}
+\ProvidesExplFile{phy-xmat.sty}{2023/01/25}{}
{`xmat' module of `physics2.sty'}
\phy@requiremodule { explsetup }
\RequirePackage { amsmath }
diff --git a/macros/latex/contrib/resolsysteme/README.md b/macros/latex/contrib/resolsysteme/README.md
new file mode 100644
index 0000000000..d5227b9250
--- /dev/null
+++ b/macros/latex/contrib/resolsysteme/README.md
@@ -0,0 +1,7 @@
+ResolSysteme is a package to work with Linear Systems and matrix.
+-------------------------------------------------------------------------
+ResolSysteme est un package pour travailler avec des systèmes linéaires.
+-------------------------------------------------------------------------
+Author : Cédric Pierquet
+email : cpierquet@outlook.fr
+Licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt \ No newline at end of file
diff --git a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.pdf b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.pdf
new file mode 100644
index 0000000000..7e155db216
--- /dev/null
+++ b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.tex b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.tex
new file mode 100644
index 0000000000..143dd66394
--- /dev/null
+++ b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.tex
@@ -0,0 +1,626 @@
+% !TeX TXS-program:compile = txs:///arara
+% arara: lualatex: {shell: yes, synctex: no, interaction: batchmode}
+% arara: lualatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)')
+
+\documentclass[a4paper,11pt]{article}
+\def\TPversion{0.1.1}
+\def\TPdate{7 Février 2023}
+\usepackage[executable=python.exe]{pyluatex}
+\usepackage[table,svgnames]{xcolor}
+\usepackage{amsmath,amssymb}
+\usepackage[bold-style=ISO,math-style=french]{unicode-math}
+\setmainfont{TeX Gyre Schola}
+\setmathfont{TeX Gyre Schola Math}
+\usepackage[pyluatex]{ResolSysteme}
+\usepackage{awesomebox}
+\usepackage{fontawesome5}
+\usepackage{systeme}
+\usepackage{enumitem}
+\usepackage{tabularray}
+\usepackage{multicol}
+\usepackage{fancyvrb}
+\usepackage{fancyhdr}
+\sisetup{locale=FR,output-decimal-marker={,}}
+\fancyhf{}
+\renewcommand{\headrulewidth}{0pt}
+\lfoot{\sffamily\small [ResolSysteme]}
+\cfoot{\sffamily\small - \thepage{} -}
+\rfoot{\hyperlink{matoc}{\small\faArrowAltCircleUp[regular]}}
+
+%\usepackage{hvlogos}
+\usepackage{hologo}
+\providecommand\tikzlogo{Ti\textit{k}Z}
+\providecommand\TeXLive{\TeX{}Live\xspace}
+\providecommand\PSTricks{\textsf{PSTricks}\xspace}
+\let\pstricks\PSTricks
+\let\TikZ\tikzlogo
+\newcommand\TableauDocumentation{%
+ \begin{tblr}{width=\linewidth,colspec={X[c]X[c]X[c]X[c]X[c]X[c]},cells={font=\sffamily}}
+ {\huge \LaTeX} & & & & &\\
+ & {\huge \hologo{pdfLaTeX}} & & & & \\
+ & & {\huge \hologo{LuaLaTeX}} & & & \\
+ & & & {\huge \TikZ} & & \\
+ & & & & {\huge \TeXLive} & \\
+ & & & & & {\huge \hologo{MiKTeX}} \\
+ \end{tblr}
+}
+
+\usepackage{hyperref}
+\urlstyle{same}
+\hypersetup{pdfborder=0 0 0}
+\usepackage[margin=1.5cm]{geometry}
+\setlength{\parindent}{0pt}
+\definecolor{LightGray}{gray}{0.9}
+
+\usepackage[french]{babel}
+
+\usepackage[most]{tcolorbox}
+\tcbuselibrary{minted}
+\NewTCBListing{PresentationCode}{ O{blue} m }{%
+ sharp corners=downhill,enhanced,arc=12pt,skin=bicolor,%
+ colback=#1!1!white,colframe=#1!75!black,colbacklower=white,%
+ attach boxed title to top right={yshift=-\tcboxedtitleheight},title=Code \LaTeX,%
+ boxed title style={%
+ colframe=#1!75!black,colback=#1!15!white,%
+ ,sharp corners=downhill,arc=12pt,%
+ },%
+ top=\baselineskip,%
+ fonttitle=\color{#1!90!black}\itshape\ttfamily\footnotesize,%
+ listing engine=minted,minted style=colorful,
+ minted language=tex,minted options={tabsize=4,fontsize=\small,autogobble},
+ #2
+}
+
+\NewTCBListing{PresentationCodePython}{ O{DarkRed} m }{%
+ sharp corners=downhill,enhanced,arc=12pt,skin=bicolor,%
+ colback=#1!1!white,colframe=#1!75!black,colbacklower=white,%
+ attach boxed title to top right={yshift=-\tcboxedtitleheight},title=Code Python,%
+ boxed title style={%
+ colframe=#1!75!black,colback=#1!15!white,%
+ ,sharp corners=downhill,arc=12pt,%
+ },%
+ fonttitle=\color{#1!90!black}\itshape\ttfamily\footnotesize,%
+ listing engine=minted,minted style=colorful,
+ minted language=python,minted options={tabsize=2,fontsize=\footnotesize,autogobble},
+ #2
+}
+
+\newcommand\Cle[1]{{\bfseries\sffamily\textlangle #1\textrangle}}
+
+\begin{document}
+
+\setlength{\aweboxleftmargin}{0.07\linewidth}
+\setlength{\aweboxcontentwidth}{0.93\linewidth}
+\setlength{\aweboxvskip}{8pt}
+
+\pagestyle{fancy}
+
+\thispagestyle{empty}
+
+\vspace{2cm}
+
+\begin{center}
+ \begin{minipage}{0.75\linewidth}
+ \begin{tcolorbox}[colframe=yellow,colback=yellow!15]
+ \begin{center}
+ \begin{tabular}{c}
+ {\Huge \texttt{ResolSysteme [fr]}}\\
+ \\
+ {\LARGE Des outils pour des} \\
+ \\
+ {\LARGE systèmes linéaires,} \\
+ \\
+ {\LARGE avec xint ou pyluatex.} \\
+ \end{tabular}
+
+ \bigskip
+
+ {\small \texttt{Version \TPversion{} -- \TPdate}}
+ \end{center}
+ \end{tcolorbox}
+\end{minipage}
+\end{center}
+
+\vspace{0.5cm}
+
+\begin{center}
+ \begin{tabular}{c}
+ \texttt{Cédric Pierquet}\\
+ {\ttfamily c pierquet -- at -- outlook . fr}\\
+ \texttt{\url{https://github.com/cpierquet/ResolSysteme}}
+\end{tabular}
+\end{center}
+
+\vspace{0.25cm}
+
+{$\blacktriangleright$~~Des commandes pour travailler sur des matrices carrées (2x2, 3x3 ou 4x4).}
+
+\smallskip
+
+{$\blacktriangleright$~~Des commandes pour résoudre des systèmes linéaires (2x2, 3x3 ou 4x4).}
+
+\smallskip
+
+\vspace{1cm}
+
+\begin{center}
+ \begin{tcolorbox}[enhanced,colframe=ForestGreen,colback=lightgray!5,center,width=0.95\linewidth,drop fuzzy shadow=lightgray]
+ Le \textbf{déterminant} de $A=\begin{pNiceMatrix} -1&{0,5} \\ \frac12&4 \end{pNiceMatrix}$ est
+ $\det(A)=\DetMatrice[dec](-1,0.5 § 1/2,4)$.
+
+ \medskip
+
+ L'\textbf{inverse} de la matrice $A=\begin{pNiceMatrix} 1&2&3&4\\5&6&7&0\\1&1&1&1\\-2&-3&-5&-6 \end{pNiceMatrix}$ est $A^{-1}=\MatriceInversePY*[n]<cell-space-limits=2pt>(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § -2,-3,-5,-6)$.
+
+ \medskip
+
+ La \textbf{solution} de $\systeme[xyzt]{y+z+t=1,x+z+t=-1,x+y+t=1,x+y+z=0}$ est $\mathcal{S}=\left\lbrace\SolutionSystemePY*[d](0,1,1,1 § 1,0,1,1 § 1,1,0,1 § 1,1,1,0)(1,-1,1,0)\right\rbrace$.
+ \end{tcolorbox}
+\end{center}
+
+\vspace{0.5cm}
+
+%\hfill{}\textit{Merci aux membres du groupe \faFacebook{} du \og Coin \LaTeX{} \fg{} pour leur aide et leurs idées !}
+
+%\hfill{}\textit{Merci à Denis Bitouzé et à Patrick Bideault pour leurs retours et idées !}
+
+\vfill
+
+\hrule
+
+\medskip
+
+\TableauDocumentation
+
+\medskip
+
+\hrule
+
+\medskip
+
+\newpage
+
+\phantomsection
+\hypertarget{matoc}{}
+
+\tableofcontents
+
+\newpage
+
+\part{Introduction}
+
+\section{Le package ResolSysteme}
+
+\subsection{Introduction}
+
+\begin{noteblock}
+L'idée est de \textit{proposer} des outils pour travailler sur des systèmes linéaires (de taille réduite !) :
+
+\begin{itemize}
+ \item en affichant la \textbf{solution} (si elle existe) ;
+ \item en affichant le \textbf{déterminant} et l'éventuelle \textbf{inverse} de la matrice des coefficients.
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{noteblock}
+
+\begin{importantblock}
+À noter que les calculs -- en interne -- peuvent être effectués de deux manières :
+
+\begin{itemize}
+ \item via les packages \textsf{xint*} pour des formats \textbf{2x2} ou \textbf{3x3} ;
+ \item via \textsf{python} et le package \textsf{pyluatex} (à charger manuellement du fait des options spécifiques) pour des formats \textbf{2x2}, \textbf{3x3} ou \textbf{4x4}.
+\end{itemize}
+
+Il n'est pas prévu -- pour le moment -- de travailler sur des matrices/systèmes plus grands.
+\end{importantblock}
+
+\begin{warningblock}
+L'utilisation de \textsf{pyluatex} nécessite une compilation adaptée, à savoir en \hologo{LuaLaTeX} et en activant le mode \textsf{--shell-escape}.
+
+\smallskip
+
+La méthode par \textsf{python} utilise quoi qu'il en soit le module \texttt{sympy}, qui doit donc être installé !
+\end{warningblock}
+
+\subsection{Packages utilisés, choix de formatage}
+
+\begin{noteblock}
+Le package charge les packages suivantes :
+
+\begin{itemize}
+ \item \texttt{xintexpr} et \texttt{xinttools} ;
+ \item \texttt{sinuitx}, \texttt{nicefrac} et \texttt{nicematrix} ;
+ \item \texttt{xstring} et \texttt{listofitems}.
+\end{itemize}
+
+Il est compatible avec les compilations usuelles en \textsf{latex}, \textsf{pdflatex}, \textsf{lualatex} (obligatoire pour \textsf{pyluatex} !!) ou \textsf{xelatex}.
+\end{noteblock}
+
+\begin{importantblock}
+Les nombres sont formatés par la commande \texttt{\textbackslash num} de \textsf{sinuitx}, donc les options choisies par l'utilisateur se propageront aux résultats numériques.
+
+\smallskip
+
+L'affichage des matrices est gérée par le package \textsf{nicematrix}, et des options spécifiques \textit{simples} pourront être placées dans les différentes commandes.
+\end{importantblock}
+
+\subsection{Chargement du package, et option}
+
+\begin{importantblock}
+Le package peut donc se charger de deux manières différentes, suivant si l'utilisateur utilise \textsf{python} ou non. Les commandes \textit{classiques} sont disponibles même si \textsf{python} est utilisé.
+\end{importantblock}
+
+\begin{PresentationCode}{listing only}
+%chargement du package sans passer par pyluatex, calculs via xint
+\usepackage{ResolSysteme}
+\end{PresentationCode}
+
+\begin{PresentationCode}{listing only}
+%chargement du package pyluatex et du package avec [pyluatex]
+\usepackage[options]{pyluatex}
+\usepackage[pyluatex]{ResolSysteme}
+\end{PresentationCode}
+
+\pagebreak
+
+\part{Commandes}
+
+\section{Une commande interne : écriture sous forme d'une fraction}
+
+\subsection{La commande}
+
+\begin{cautionblock}
+En \textit{interne}, le code utilise une commande pour formater un résultat sous forme fractionnaire, avec gestion des entiers et gestion du signe \og $-$ \fg.
+\end{cautionblock}
+
+\begin{PresentationCode}{listing only}
+\ConvVersFrac(*)[option de formatage]{calcul}
+\end{PresentationCode}
+
+\subsection{Utilisation}
+
+\begin{tipblock}
+Concernant cette commande, qui est dans un bloc \texttt{ensuremath} :
+
+\begin{itemize}
+ \item la version \textit{étoilée} force l'écriture du signe \og $-$ \fg{} avant l'éventuelle fraction ;
+ \item le premier argument, \textit{optionnel} et entre \textsf{[...]} permet de spécifier un formatage du résultat :
+ \begin{itemize}
+ \item \Cle{t} pour l'affichage de la fraction en mode \textsf{tfrac} ;
+ \item \Cle{d} pour l'affichage de la fraction en mode \textsf{dfrac} ;
+ \item \Cle{n} pour l'affichage de la fraction en mode \textsf{nicefrac} ;
+ \item \Cle{dec} pour l'affichage du résultat en mode \texttt{décimal} (sans arrondi !) ;
+ \item \Cle{dec=k} pour l'affichage du résultat en mode \texttt{décimal} arrondi à $10^{-k}$ ;
+ \end{itemize}
+ \item le second argument, \textit{obligatoire}, est quant à lui, le calcul en syntaxe \textsf{xint}.
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{tipblock}
+
+\begin{PresentationCode}{listing only}
+\ConvVersFrac{-10+1/3*(-5/16)} %sortie par défaut (fraction avec - sur numérateur)
+
+\ConvVersFrac*{-10+1/3*(-5/16)} %sortie avec - avant la fraction
+
+\ConvVersFrac*[d]{-10+1/3*(-5/16)} %sortie en displaystyle
+
+\ConvVersFrac[n]{-10+1/3*(-5/16)} %sortie en nicefrac
+
+\ConvVersFrac[dec=4]{-10+1/3*(-5/16)} %sortie en décimal arrondi à 0,0001
+
+\ConvVersFrac{2+91/7} %entier correctement formaté
+\end{PresentationCode}
+
+\begin{PresentationCode}{text only}
+\hfill\ConvVersFrac{-10+1/3*(-5/16)} \qquad
+\ConvVersFrac*{-10+1/3*(-5/16)} \qquad
+\ConvVersFrac*[d]{-10+1/3*(-5/16)} \qquad
+\ConvVersFrac[n]{-10+1/3*(-5/16)} \qquad
+\ConvVersFrac[dec=4]{-10+1/3*(-5/16)} \qquad
+\ConvVersFrac{2+91/7}\hfill~
+\end{PresentationCode}
+
+\subsection{Interaction avec les commandes \og matricielles \fg, limitations}
+
+\begin{warningblock}
+En \textit{interne}, le formatage des résultats est géré par cette commande, et les options disponibles existent donc de la même manière pour les commandes liées aux systèmes linéaires.
+
+\smallskip
+
+Il ne sera par contre pas possible de spécifier des options différentes pour chacun des coefficients, autrement dit l'éventuelle option se propagera sur l'ensemble des résultats !
+
+\smallskip
+
+Les \textit{transformations} en fraction devraient pouvoir fonctionner avec des calculs \textit{classiques}, mais il est possible que, dans des cas \textit{spécifiques}, les résultats ne soient pas ceux attendus !
+\end{warningblock}
+
+\pagebreak
+
+\section{Calcul de déterminant}
+
+\subsection{Introduction}
+
+\begin{cautionblock}
+La première commande (matricielle) disponible est pour calculer le déterminant d'une matrice :
+
+\begin{itemize}
+ \item \textbf{2x2} ou \textbf{3x3} pour le package \textit{classique} ;
+ \item \textbf{2x2} ou \textbf{3x3} ou \textbf{4x4} pour le package \textit{lua}.
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{cautionblock}
+
+\begin{PresentationCode}{listing only}
+%version classique
+\DetMatrice(*)[option de formatage](matrice)
+
+%version python
+\DetMatricePY(*)[option de formatage](matrice)
+\end{PresentationCode}
+
+\subsection{Utilisation}
+
+\begin{tipblock}
+Concernant cette commande, qui est à insérer dans un environnement \textit{math} :
+
+\begin{itemize}
+ \item la version \textit{étoilée} force l'écriture du signe \og $-$ \fg{} avant l'éventuelle fraction ;
+ \item le premier argument, \textit{optionnel} et entre \textsf{[...]} permet de spécifier un formatage du résultat :
+ \begin{itemize}
+ \item \Cle{t} pour l'affichage de la fraction en mode \textsf{tfrac} ;
+ \item \Cle{d} pour l'affichage de la fraction en mode \textsf{dfrac} ;
+ \item \Cle{n} pour l'affichage de la fraction en mode \textsf{nicefrac} ;
+ \item \Cle{dec} pour l'affichage du résultat en mode \texttt{décimal} (sans arrondi !) ;
+ \item \Cle{dec=k} pour l'affichage du résultat en mode \texttt{décimal} arrondi à $10^{-k}$ ;
+ \end{itemize}
+ \item le second argument, \textit{obligatoire} et entre \textsf{(...)}, est quant à lui, la matrice donnée par ses coefficients \textsf{a11,a12,... § a21,a22,...} (syntaxe \textit{héritée} de \texttt{sympy}).
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{tipblock}
+
+\begin{PresentationCode}{}
+%version classique
+Le dét. de $A=\begin{pNiceMatrix}1&2\\3&4\end{pNiceMatrix}$ est
+$\det(A)=\DetMatrice(1,2 § 3,4)$.
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+%version classique
+Le dét. de $A=\begin{pNiceMatrix}-1&{0,5}\\\frac12&4\end{pNiceMatrix}$ est
+$\det(A)=\DetMatrice[dec](-1,0.5 § 1/2,4)$.
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+%version classique
+Le dét. de $A=\begin{pNiceMatrix}-1&\frac13&4\\\frac13&4&-1\\-1&0&0\end{pNiceMatrix}$ est
+$\det(A) \approx \DetMatrice[dec=3](-1,1/3,4 § 1/3,4,-1 § -1,0,0)$.
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+%version python
+Le dé. de $A=\begin{pNiceMatrix}1&2\\3&4\end{pNiceMatrix}$ est
+$\det(A)=\DetMatricePY(1,2 § 3,4)$.
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+Le dét. de $A=\begin{pNiceMatrix}-1&{0,5}\\\frac12&4\end{pNiceMatrix}$ est
+$\det(A)=\DetMatricePY*[d](-1,0.5 § 1/2,4)$.\end{PresentationCode}
+
+\begin{PresentationCode}{}
+%version python
+Le dét. de $A=\begin{pNiceMatrix}-1&\frac13&4\\\frac13&4&-1\\-1&0&0\end{pNiceMatrix}$ est
+$\det(A) \approx \DetMatricePY[dec=3](-1,1/3,4 § 1/3,4,-1 § -1,0,0)$.
+\end{PresentationCode}
+
+\section{Inverse d'une matrice}
+
+\subsection{Introduction}
+
+\begin{cautionblock}
+La deuxième commande (matricielle) disponible est pour calculer l'éventuelle inverse d'une matrice :
+
+\begin{itemize}
+ \item \textbf{2x2} ou \textbf{3x3} pour le package \textit{classique} ;
+ \item \textbf{2x2} ou \textbf{3x3} ou \textbf{4x4} pour le package \textit{lua}.
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{cautionblock}
+
+\begin{PresentationCode}{listing only}
+%version classique
+\MatriceInverse(*)[option de formatage]<options nicematrix>(matrice)
+
+%version python
+\MatriceInversePY(*)[option de formatage]<options nicematrix>(matrice)
+\end{PresentationCode}
+
+\subsection{Utilisation}
+
+\begin{tipblock}
+Concernant cette commande, qui est à insérer dans un environnement \textit{math} :
+
+\begin{itemize}
+ \item la version \textit{étoilée} force l'écriture du signe \og $-$ \fg{} avant l'éventuelle fraction ;
+ \item le premier argument, \textit{optionnel} et entre \textsf{[...]} permet de spécifier un formatage du résultat :
+ \begin{itemize}
+ \item \Cle{t} pour l'affichage de la fraction en mode \textsf{tfrac} ;
+ \item \Cle{d} pour l'affichage de la fraction en mode \textsf{dfrac} ;
+ \item \Cle{n} pour l'affichage de la fraction en mode \textsf{nicefrac} ;
+ \item \Cle{dec} pour l'affichage du résultat en mode \texttt{décimal} (sans arrondi !) ;
+ \item \Cle{dec=k} pour l'affichage du résultat en mode \texttt{décimal} arrondi à $10^{-k}$ ;
+ \end{itemize}
+ \item le deuxième argument, \textit{optionnel} et entre \textsf{<...>} correspond aux \Cle{options} à passer à l'environnement \texttt{pNiceMatrix} ;
+ \item le troisième argument, \textit{obligatoire} et entre \textsf{(...)}, est quant à lui, la matrice donnée par ses coefficients \textsf{a11,a12,... § a21,a22,...} (syntaxe héritée de \texttt{sympy}).
+\end{itemize}
+À noter que si la matrice n'est pas inversible, le texte \texttt{Matrice non inversible} est affiché.
+\end{tipblock}
+
+\begin{PresentationCode}{}
+%version classique
+L'inverse de $A=\begin{pNiceMatrix}1&2\\3&4\end{pNiceMatrix}$ est
+$A^{-1}=\MatriceInverse<cell-space-limits=2pt>(1,2 § 3,4)$.
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+%version classique
+L'inverse de $A=\begin{pNiceMatrix}1&2&3\\4&5&6\\7&8&8\end{pNiceMatrix}$ est
+$A^{-1}=\MatriceInverse[n]<cell-space-limits=2pt>(1,2,3 § 4,5,6 § 7,8,8)$.
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+%version python
+L'inverse de $A=\begin{pNiceMatrix}1&2\\3&4\end{pNiceMatrix}$ est
+$A^{-1}=\MatriceInversePY*[d]<cell-space-limits=2pt>(1,2 § 3,4)$.
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+%version python
+L'inv. de $A=\begin{pNiceMatrix}1&2&3&4\\5&6&7&0\\1&1&1&1\\-2&-3&-5&-6\end{pNiceMatrix}$ est
+$A^{-1}=
+\MatriceInversePY*[n]<cell-space-limits=2pt>(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § -2,-3,-5,-6)$.
+\end{PresentationCode}
+
+\section{Résolution d'un système linéaire}
+
+\subsection{Introduction}
+
+\begin{cautionblock}
+La deuxième commande (matricielle) disponible est pour déterminer l'éventuelle solution d'un système linéaire qui s'écrit matriciellement $A\times X=B$:
+
+\begin{itemize}
+ \item \textbf{2x2} ou \textbf{3x3} pour le package \textit{classique} ;
+ \item \textbf{2x2} ou \textbf{3x3} ou \textbf{4x4} pour le package \textit{lua}.
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{cautionblock}
+
+\begin{PresentationCode}{listing only}
+%version classique
+\SolutionSysteme(*)[opt de formatage]<opts nicematrix>(matriceA)(matriceB)[opt Matrice]
+
+%version python
+\SolutionSystemePY(*)[opt de formatage]<opts nicematrix>(matriceA)(matriceB)[opt Matrice]
+\end{PresentationCode}
+
+\subsection{Utilisation}
+
+\begin{tipblock}
+Concernant cette commande, qui est à insérer dans un environnement \textit{math} :
+
+\begin{itemize}
+ \item la version \textit{étoilée} force l'écriture du signe \og $-$ \fg{} avant l'éventuelle fraction ;
+ \item le premier argument, \textit{optionnel} et entre \textsf{[...]} permet de spécifier un formatage du résultat :
+ \begin{itemize}
+ \item \Cle{t} pour l'affichage de la fraction en mode \textsf{tfrac} ;
+ \item \Cle{d} pour l'affichage de la fraction en mode \textsf{dfrac} ;
+ \item \Cle{n} pour l'affichage de la fraction en mode \textsf{nicefrac} ;
+ \item \Cle{dec} pour l'affichage du résultat en mode \texttt{décimal} (sans arrondi !) ;
+ \item \Cle{dec=k} pour l'affichage du résultat en mode \texttt{décimal} arrondi à $10^{-k}$ ;
+ \end{itemize}
+ \item le deuxième argument, \textit{optionnel} et entre \textsf{<...>} correspond aux \Cle{options} à passer à l'environnement \texttt{pNiceMatrix} ;
+ \item le troisième argument, \textit{obligatoire} et entre \textsf{(...)}, est quant à lui, la matrice $A$ donnée par ses coefficients \textsf{a11,a12,... § a21,a22,...} (syntaxe héritée de \texttt{sympy}) ;
+ \item le quatrième argument, \textit{obligatoire} et entre \textsf{(...)}, est quant à lui, la matrice $B$ donnée par ses coefficients \textsf{b11,b21,...} (syntaxe héritée de \texttt{sympy}) ;
+ \item le dernier argument, \textit{optionnel} et entre \textsf{[...]}, permet -- grâce à \Cle{Matrice} -- de présenter le vecteur solution.
+\end{itemize}
+À noter que si la matrice n'est pas inversible, le texte \texttt{Matrice non inversible} est affiché.
+\end{tipblock}
+
+\begin{PresentationCode}{}
+%version classique
+La solution de $\systeme{3x+y-2z=-1,2x-y+z=4,x-y-2z=5}$ est $\mathcal{S}=%
+\left\lbrace \SolutionSysteme*[d](3,1,-2 § 2,-1,1 § 1,-1,-2)(-1,4,5) \right\rbrace$.\\
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+%version python
+La solution de $\systeme{x+y+z=-1,3x+2y-z=6,-x-y+2z=-5}$ est $\mathcal{S}=%
+\left\lbrace \SolutionSystemePY(1,1,1 § 3,2,-1 § -1,-1,2)(-1,6,-5) \right\rbrace$.
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+%version python
+La solution de $\systeme[xyzt]{x+2y+3z+4t=-10,5x+6y+7z=0,x+y+z+t=4,-2x-3y-5z-6t=7}$
+est $\mathcal{S}=%
+\left\lbrace
+ \SolutionSystemePY%
+ [dec]<cell-space-limits=2pt>%
+ (1,2,3,4 § 5,6,7,0 § 1,1,1,1 § -2,-3,-5,-6)(-10,0,4,7)%
+ [Matrice]
+\right\rbrace$.
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+%pas de solution
+La solution de $\systeme{x+2y=-5,4x+8y=1}$ est $\mathcal{S}=%
+\left\lbrace \SolutionSystemePY(1,2 § 4,8)(-5,1) \right\rbrace$.
+\end{PresentationCode}
+
+\pagebreak
+
+\part{Fonctions python utilisées}
+
+\begin{cautionblock}
+Les fonctions utilisées par les packages \textsf{pyluatex} ou \textsf{pythontex} sont données ci-dessous.
+
+Elles sont accessibles en \textit{natif} une fois l'option \textsf{lua} activée, grâce notamment à la macro \texttt{\textbackslash py}.
+\end{cautionblock}
+
+\begin{PresentationCodePython}{listing only}
+import sympy as sy
+x = sy.Symbol('x')
+y = sy.Symbol('y')
+z = sy.Symbol('z')
+t = sy.Symbol('t')
+
+def resol_systeme_QQ(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,u) :
+ solution=sy.solve([a*x+b*y+c*z+d*t-e,f*x+g*y+h*z+i*t-j,k*x+l*y+m*z+n*t-o,p*x+q*y+r*z+s*t-u],[x,y,z,t])
+ return solution
+
+def resol_systeme_TT(a,b,c,d,e,f,g,h,i,j,k,l) :
+ solution=sy.solve([a*x+b*y+c*z-d,e*x+f*y+g*z-h,i*x+j*y+k*z-l],[x,y,z])
+ return solution
+
+def resol_systeme_DD(a,b,c,d,e,f) :
+ solution=sy.solve([a*x+b*y-c,d*x+e*y-f],[x,y])
+ return solution
+
+def det_matrice_QQ(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) :
+ MatTmp = sy.Matrix(([a,b,c,d],[e,f,g,h],[i,j,k,l],[m,n,o,p]))
+ DetMatTmp = MatTmp.det()
+ return DetMatTmp
+
+def det_matrice_TT(a,b,c,d,e,f,g,h,i) :
+ MatTmp = sy.Matrix(([a,b,c],[d,e,f],[g,h,i]))
+ DetMatTmp = MatTmp.det()
+ return DetMatTmp
+
+def det_matrice_DD(a,b,c,d) :
+ MatTmp = sy.Matrix(([a,b],[c,d]))
+ DetMatTmp = MatTmp.det()
+ return DetMatTmp
+
+def inverse_matrice_QQ(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) :
+ MatTmp = sy.Matrix(([a,b,c,d],[e,f,g,h],[i,j,k,l],[m,n,o,p]))
+ DetMatTmp = MatTmp.inv()
+ return DetMatTmp
+
+def inverse_matrice_DD(a,b,c,d) :
+ MatTmp = sy.Matrix(([a,b],[c,d]))
+ InvMatTmp = MatTmp.inv()
+ return InvMatTmp
+
+def inverse_matrice_TT(a,b,c,d,e,f,g,h,i) :
+ MatTmp = sy.Matrix(([a,b,c],[d,e,f],[g,h,i]))
+ InvMatTmp = MatTmp.inv()
+ return InvMatTmp
+\end{PresentationCodePython}
+
+\pagebreak
+
+\part{Historique}
+
+\verb|v0.1.1|~:~~~~Correction d'un bug avec le caractère \og ; \fg{}
+
+\verb|v0.1.0|~:~~~~Version initiale
+
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples-pyluatex.pdf b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples-pyluatex.pdf
new file mode 100644
index 0000000000..3275b5262e
--- /dev/null
+++ b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples-pyluatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples-pyluatex.tex b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples-pyluatex.tex
new file mode 100644
index 0000000000..c6439a053c
--- /dev/null
+++ b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples-pyluatex.tex
@@ -0,0 +1,107 @@
+% !TeX TXS-program:compile = txs:///lualatex/[--shell-escape]
+
+\documentclass[french,a4paper,10pt]{article}
+\usepackage[margin=1.5cm]{geometry}
+\usepackage[executable=python.exe]{pyluatex}
+\usepackage[pyluatex]{ResolSysteme}
+\usepackage{systeme}
+\usepackage[most]{tcolorbox}
+\sisetup{locale=FR,output-decimal-marker={,}}
+\usepackage{babel}
+\newtcblisting{ShowCodeTeX}[1][]{colback=white,colframe=red!75!black,listing options={style=tcblatex},#1}
+
+\begin{document}
+
+\part*{Version \og pyluatex \fg}
+
+\section{Préambule, avec le package pyluatex}
+
+\begin{ShowCodeTeX}[listing only]
+\documentclass[french,a4paper,10pt]{article}
+\usepackage[margin=1.5cm]{geometry}
+\usepackage[executable=python.exe]{pyluatex}
+\usepackage[pyluatex]{ResolSysteme} %version pyluatex, lua + shell-escape
+\usepackage{systeme}
+\sisetup{locale=FR,output-decimal-marker={,}}
+\end{ShowCodeTeX}
+
+\section{Inverse d'une matrice, 2x2 ou 3x3 ou 4x4}
+
+\begin{ShowCodeTeX}
+L'inverse de $A=\begin{pNiceMatrix} 1&2 \\ 3&4 \end{pNiceMatrix}$ est
+$A^{-1}=\MatriceInversePY<cell-space-limits=2pt>(1,2 § 3,4)$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+L'inverse de $A=\begin{pNiceMatrix} 1&2 \\ 3&4 \end{pNiceMatrix}$ est
+$A^{-1}=\MatriceInversePY*<cell-space-limits=2pt>(1,2 § 3,4)$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+L'inverse de $A=\begin{pNiceMatrix} 1&2 \\ 3&6 \end{pNiceMatrix}$ est
+$A^{-1}=\MatriceInversePY<cell-space-limits=2pt>(1,2 § 3,6)$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+L'inverse de $A=\begin{pNiceMatrix} 1&2 \\ 3&4 \end{pNiceMatrix}$ est
+$A^{-1}=\MatriceInversePY*[d]<cell-space-limits=2pt>(1,2 § 3,4)$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+L'inverse de $A=\begin{pNiceMatrix} 1&2&3\\4&5&6\\7&8&8 \end{pNiceMatrix}$ est
+$A^{-1}=\MatriceInversePY<cell-space-limits=2pt>(1,2,3 § 4,5,6 § 7,8,8)$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+L'inverse de $A=\begin{pNiceMatrix} 1&2&3\\4&5&6\\7&8&8 \end{pNiceMatrix}$ est
+$A^{-1}=\MatriceInversePY*<cell-space-limits=2pt>(1,2,3 § 4,5,6 § 7,8,8)$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+L'inverse de $A=\begin{pNiceMatrix} 1&2&3&4\\5&6&7&0\\1&1&1&1\\2&-3&-5&-6 \end{pNiceMatrix}$
+est $A^{-1}=\MatriceInversePY*[n]<cell-space-limits=2pt>(1,2,3,4 § 5,6,7,0 § 1,1,1,1 § 2,-3,-5,-6)$.
+\end{ShowCodeTeX}
+
+\section{Résolution d'un système, 2x2 ou 3x3 ou 4x4}
+
+\begin{ShowCodeTeX}
+La solution de $\systeme{-9x-8y=-8,3x-6y=-7}$ est $\mathcal{S}=%
+\left\lbrace \SolutionSystemePY(-9,-8 § 3,-6)(-8,-7) \right\rbrace$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+La solution de $\systeme{x+2y=-5,4x+8y=1}$ est $\mathcal{S}=%
+\left\lbrace \SolutionSystemePY(1,2 § 4,8)(-5,1) \right\rbrace$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+La solution de $\systeme{-9x-8y=-8,3x-6y=-7}$ est $\mathcal{S}=%
+\left\lbrace \SolutionSystemePY*[d](-9,-8 § 3,-6)(-8,-7) \right\rbrace$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+La solution de $\systeme{x+y+z=-1,3x+2y-z=6,-x-y+2z=-5}$ est $\mathcal{S}=%
+\left\lbrace \SolutionSystemePY(1,1,1 § 3,2,-1 § -1,-1,2)(-1,6,-5) \right\rbrace$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+La solution de $\systeme{x+y+z=-1,3x+2y-z=-5,-x-y+2z=0}$ est donnée par $X=%
+\SolutionSystemePY*[d]<cell-space-limits=2pt>(1,1,1 § 3,2,-1 § -1,-1,2)(-1,-5,0)[Matrice]$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+La solution de $\systeme[xyzt]{y+z+t=1,x+z+t=-1,x+y+t=1,x+y+z=0}$ est $\mathcal{S}=%
+\left\lbrace\SolutionSystemePY*[d](0,1,1,1 § 1,0,1,1 § 1,1,0,1 § 1,1,1,0)(1,-1,1,0)\right\rbrace$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+La solution de $\systeme[xyzt]{x+2y+3z+4t=-10,5x+6y+7z=0,x+y+z+t=4,-2x-3y-5z-6t=7}$ est $\mathcal{S}=
+\left\lbrace
+\SolutionSystemePY
+ [dec]<cell-space-limits=2pt>
+ (1,2,3,4 § 5,6,7,0 § 1,1,1,1 § -2,-3,-5,-6)(-10,0,4,7)
+ [Matrice]
+\right\rbrace$.
+\end{ShowCodeTeX}
+
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples.pdf b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples.pdf
new file mode 100644
index 0000000000..2afa0bbc42
--- /dev/null
+++ b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples.pdf
Binary files differ
diff --git a/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples.tex b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples.tex
new file mode 100644
index 0000000000..f9daeb9826
--- /dev/null
+++ b/macros/latex/contrib/resolsysteme/doc/ResolSysteme-exemples.tex
@@ -0,0 +1,103 @@
+% !TeX document-id = {f9c98d52-d889-44e1-8a1d-1b1aa5b344f6}
+% !TeX TXS-program:compile = txs:///pdflatex
+
+\documentclass[french,a4paper,10pt]{article}
+\usepackage[margin=1.5cm]{geometry}
+\usepackage{ResolSysteme}
+\usepackage{systeme}
+\usepackage{babel}
+\usepackage[most]{tcolorbox}
+\sisetup{locale=FR,output-decimal-marker={,}}
+\newtcblisting{ShowCodeTeX}[1][]{colback=white,colframe=red!75!black,listing options={style=tcblatex},#1}
+
+\begin{document}
+
+\part*{Version \og classique \fg{} avec xint}
+
+\section{Préambule sans utiliser python}
+
+\begin{ShowCodeTeX}[listing only]
+\documentclass[french,a4paper,10pt]{article}
+\usepackage[margin=1.5cm]{geometry}
+\usepackage{ResolSysteme} %version classique
+\usepackage{systeme}
+\sisetup{locale=FR,output-decimal-marker={,}}
+\end{ShowCodeTeX}
+
+\section{Déterminant d'une matrice, 2x2 ou 3x3}
+
+\begin{ShowCodeTeX}
+Le déterminant de $A=\begin{pNiceMatrix} 1&2 \\ 3&4 \end{pNiceMatrix}$ est
+$\det(A)=\DetMatrice(1,2 § 3,4)$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+Le déterminant de $A=\begin{pNiceMatrix} -1&{0,5} \\ \frac12&4 \end{pNiceMatrix}$ est
+$\det(A)=\DetMatrice[dec](-1,0.5 § 1/2,4)$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+Le dét. de $A=\begin{pNiceMatrix} -1&\frac13&4 \\ \frac13&4&-1 \\ -1&0&0 \end{pNiceMatrix}$ est
+$\det(A) \approx \DetMatrice[dec=3](-1,1/3,4 § 1/3,4,-1 § -1,0,0)$.
+\end{ShowCodeTeX}
+
+\section{Inverse d'une matrice, 2x2 ou 3x3}
+
+\begin{ShowCodeTeX}
+L'inverse de $A=\begin{pNiceMatrix} 1&2 \\ 3&4 \end{pNiceMatrix}$ est
+$A^{-1}=\MatriceInverse<cell-space-limits=2pt>(1,2 § 3,4)$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+L'inverse de $A=\begin{pNiceMatrix} 1&2 \\ 3&4 \end{pNiceMatrix}$ est
+$A^{-1}=\MatriceInverse*<cell-space-limits=2pt>(1,2 § 3,4)$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+L'inverse de $A=\begin{pNiceMatrix} 1&2 \\ 3&4 \end{pNiceMatrix}$ est
+$A^{-1}=\MatriceInverse[d]<cell-space-limits=2pt>(1,2 § 3,4)$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+L'inverse de $A=\begin{pNiceMatrix} 1&2&3\\4&5&6\\7&8&8 \end{pNiceMatrix}$ est
+$A^{-1}=\MatriceInverse<cell-space-limits=2pt>(1,2,3 § 4,5,6 § 7,8,8)$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+L'inverse de $A=\begin{pNiceMatrix} 1&2&3\\4&5&6\\7&8&8 \end{pNiceMatrix}$ est
+$A^{-1}=\MatriceInverse[n]<cell-space-limits=2pt>(1,2,3 § 4,5,6 § 7,8,8)$.
+\end{ShowCodeTeX}
+
+\section*{Résolution d'un système, 2x2 ou 3x3}
+
+\begin{ShowCodeTeX}
+La solution de $\systeme{-9x-8y=-8,3x-6y=-7}$ est $\mathcal{S}=%
+\left\lbrace \SolutionSysteme(-9,-8 § 3,-6)(-8,-7) \right\rbrace$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+La solution de $\systeme{-9x-8y=-8,3x-6y=-7}$ est $\mathcal{S}=%
+\left\lbrace \SolutionSysteme*[d](-9,-8 § 3,-6)(-8,-7) \right\rbrace$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+La solution de $\systeme{x+y+z=-1,3x+2y-z=6,-x-y+2z=-5}$ est $\mathcal{S}=%
+\left\lbrace \SolutionSysteme(1,1,1 § 3,2,-1 § -1,-1,2)(-1,6,-5) \right\rbrace$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+La solution de $\systeme{x+y+z=-1,3x+2y-z=6,-x-y+2z=-5}$ est donnée par $X=%
+\SolutionSysteme(1,1,1 § 3,2,-1 § -1,-1,2)(-1,6,-5)[Matrice]$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+La solution de $\systeme{3x+y-2z=-1,2x-y+z=4,x-y-2z=5}$ est $\mathcal{S}=%
+\left\lbrace \SolutionSysteme(3,1,-2 § 2,-1,1 § 1,-1,-2)(-1,4,5) \right\rbrace$.
+\end{ShowCodeTeX}
+
+\begin{ShowCodeTeX}
+La solution de $\systeme{3x+y-2z=-1,2x-y+z=4,x-y-2z=5}$ est $\mathcal{S}=%
+\left\lbrace \SolutionSysteme*[d](3,1,-2 § 2,-1,1 § 1,-1,-2)(-1,4,5) \right\rbrace$.
+\end{ShowCodeTeX}
+
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/resolsysteme/tex/ResolSysteme.sty b/macros/latex/contrib/resolsysteme/tex/ResolSysteme.sty
new file mode 100644
index 0000000000..338e8b3d3c
--- /dev/null
+++ b/macros/latex/contrib/resolsysteme/tex/ResolSysteme.sty
@@ -0,0 +1,751 @@
+% Author.........: C. Pierquet
+% licence........: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{ResolSysteme}[2023/02/07 v0.1.1 Travailler sur un systeme lineaire avec xint ou pyluatex]
+% 0.1.1 Correction d'un bug avec le séparateur ";"
+% 0.1.0 Version initiale
+
+%------Option(s)
+\newif\if@pyluatex \@pyluatexfalse
+\DeclareOption{pyluatex}{\@pyluatextrue}
+\DeclareOption*{}
+\ProcessOptions\relax
+
+%------Packages utiles
+\RequirePackage{nicematrix}
+\RequirePackage{ifthen}
+\RequirePackage{xintexpr}
+\RequirePackage{xinttools}
+\RequirePackage{listofitems}
+\RequirePackage{siunitx}
+\RequirePackage{nicefrac}
+\RequirePackage{xstring}
+
+%-------Option pyluatex pour les scripts python via pyluatex !
+\if@pyluatex %package pyluatex à charger par l'utilisateur !
+\begin{python}
+import sympy as sy
+x = sy.Symbol('x')
+y = sy.Symbol('y')
+z = sy.Symbol('z')
+t = sy.Symbol('t')
+
+def resol_systeme_QQ(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,u) :
+ solution=sy.solve([a*x+b*y+c*z+d*t-e,f*x+g*y+h*z+i*t-j,k*x+l*y+m*z+n*t-o,p*x+q*y+r*z+s*t-u],[x,y,z,t])
+ return solution
+
+def resol_systeme_TT(a,b,c,d,e,f,g,h,i,j,k,l) :
+ solution=sy.solve([a*x+b*y+c*z-d,e*x+f*y+g*z-h,i*x+j*y+k*z-l],[x,y,z])
+ return solution
+
+def resol_systeme_DD(a,b,c,d,e,f) :
+ solution=sy.solve([a*x+b*y-c,d*x+e*y-f],[x,y])
+ return solution
+
+def det_matrice_QQ(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) :
+ MatTmp = sy.Matrix(([a,b,c,d],[e,f,g,h],[i,j,k,l],[m,n,o,p]))
+ DetMatTmp = MatTmp.det()
+ return DetMatTmp
+
+def det_matrice_TT(a,b,c,d,e,f,g,h,i) :
+ MatTmp = sy.Matrix(([a,b,c],[d,e,f],[g,h,i]))
+ DetMatTmp = MatTmp.det()
+ return DetMatTmp
+
+def det_matrice_DD(a,b,c,d) :
+ MatTmp = sy.Matrix(([a,b],[c,d]))
+ DetMatTmp = MatTmp.det()
+ return DetMatTmp
+
+def inverse_matrice_QQ(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) :
+ MatTmp = sy.Matrix(([a,b,c,d],[e,f,g,h],[i,j,k,l],[m,n,o,p]))
+ DetMatTmp = MatTmp.inv()
+ return DetMatTmp
+
+def inverse_matrice_DD(a,b,c,d) :
+ MatTmp = sy.Matrix(([a,b],[c,d]))
+ InvMatTmp = MatTmp.inv()
+ return InvMatTmp
+
+def inverse_matrice_TT(a,b,c,d,e,f,g,h,i) :
+ MatTmp = sy.Matrix(([a,b,c],[d,e,f],[g,h,i]))
+ InvMatTmp = MatTmp.inv()
+ return InvMatTmp
+
+\end{python}
+\fi
+
+%------conversion en fraction, version interne !
+\NewDocumentCommand\ConvVersFrac{ s O{} m }{%
+ %*=moins devant
+ %2=argument.optionnel[d/t/dec=...]
+ %3=argument mandataire {calcul ou fraction}
+ \def\calculargument{\xintPRaw{\xintIrr{\xinteval{#3}}}}%on calcule et on transforme en A/B
+ \IfSubStr{\calculargument}{/}%on teste si le symbole / apparaît
+ {%si oui := fraction
+ \StrBefore{\calculargument}{/}[\numerateur]%on extrait le numérateur
+ \StrBehind{\calculargument}{/}[\denominateur]%on extrait le dénominateur
+ \ifblank{#2}%
+ {%
+ \IfBooleanTF{#1}%
+ {%
+ \ifthenelse{\numerateur < 0}%
+ {\ensuremath{-\frac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
+ {\ensuremath{\frac{\num{\numerateur}}{\num{\denominateur}}}}%
+ }%
+ {\ensuremath{\frac{\num{\numerateur}}{\num{\denominateur}}}}%
+ }%
+ {}%si l'argument optionnel est vide
+ \IfStrEq{#2}{d}%
+ {%
+ \IfBooleanTF{#1}%
+ {%
+ \ifthenelse{\numerateur < 0}%
+ {\ensuremath{-\dfrac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
+ {\ensuremath{\dfrac{\num{\numerateur}}{\num{\denominateur}}}}%
+ }%
+ {\ensuremath{\dfrac{\num{\numerateur}}{\num{\denominateur}}}}%
+ }%
+ {}%si l'argument optionnel est vide
+ \IfStrEq{#2}{t}%
+ {%
+ \IfBooleanTF{#1}%
+ {%
+ \ifthenelse{\numerateur < 0}%
+ {\ensuremath{-\tfrac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
+ {\ensuremath{\tfrac{\num{\numerateur}}{\num{\denominateur}}}}%
+ }%
+ {\ensuremath{\tfrac{\num{\numerateur}}{\num{\denominateur}}}}%
+ }%
+ {}%si l'argument optionnel est vide
+ \IfStrEq{#2}{n}%
+ {%
+ \IfBooleanTF{#1}%
+ {%
+ \ifthenelse{\numerateur < 0}%
+ {\ensuremath{-\nicefrac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
+ {\ensuremath{\nicefrac{\num{\numerateur}}{\num{\denominateur}}}}%
+ }%
+ {\ensuremath{\nicefrac{\num{\numerateur}}{\num{\denominateur}}}}%
+ }%
+ {}%si l'argument optionnel est vide
+ \IfSubStr{#2}{dec}%on veut la forme décimale
+ {%
+ \IfSubStr{#2}{=}%si on rajoute une précision
+ {%
+ \StrBehind{#2}{=}[\precdecimal]%
+ \ensuremath{\num{\xintfloateval{round(#3,\precdecimal)}}}%
+ }%
+ {%
+ \ensuremath{\num{\xintfloateval{#3}}}%
+ }%
+ }%
+ {}%si l'argument optionnel est vide
+ }{%si non := entier
+ \num{\calculargument}%on affiche l'entier, avec le package siunitx
+ }%
+}
+
+%------Commande classique, 2x2 ou 3x3
+\NewDocumentCommand\MatriceInverse{ s O{} D<>{} r() }{%
+ %*=fractions avec - devant
+ %2=options conversion
+ %3=options nicematrix
+ %4=matrice (,,;,,)
+ %---------------------
+ %lectures des matrices
+ \setsepchar{§/,}%
+ \readlist*\MAMATRICEA{#4}%
+ \def\MatDim{\MAMATRICEAlen}%
+ %les coeffs de A et le déterminant et les coeff de l'inverse
+ \ifnum \MAMATRICEAlen=3
+ \itemtomacro\MAMATRICEA[1,1]\MatA
+ \itemtomacro\MAMATRICEA[1,2]\MatB
+ \itemtomacro\MAMATRICEA[1,3]\MatC
+ \itemtomacro\MAMATRICEA[2,1]\MatD
+ \itemtomacro\MAMATRICEA[2,2]\MatE
+ \itemtomacro\MAMATRICEA[2,3]\MatF
+ \itemtomacro\MAMATRICEA[3,1]\MatG
+ \itemtomacro\MAMATRICEA[3,2]\MatH
+ \itemtomacro\MAMATRICEA[3,3]\MatI
+ %le déterminant
+ \def\DETMATRICE{\xinteval{\MatA*\MatE*\MatI+\MatD*\MatH*\MatC+\MatB*\MatF*\MatG-\MatG*\MatE*\MatC-\MatD*\MatB*\MatI-\MatA*\MatH*\MatF}}%
+ %matrice inverse, si elle existe...
+ \xintifboolexpr{\DETMATRICE == 0}%
+ {\text{Matrice non inversible}}%
+ {%
+ \IfBooleanTF{#1}%
+ {%
+ \def\MatInvA{\ConvVersFrac*[#2]{(\MatE*\MatI-\MatH*\MatF)/\DETMATRICE}}%
+ \def\MatInvB{\ConvVersFrac*[#2]{(-\MatB*\MatI+\MatC*\MatH)/\DETMATRICE}}%
+ \def\MatInvC{\ConvVersFrac*[#2]{(\MatB*\MatF-\MatC*\MatE)/\DETMATRICE}}%
+ \def\MatInvD{\ConvVersFrac*[#2]{(-\MatD*\MatI+\MatF*\MatG)/\DETMATRICE}}%
+ \def\MatInvE{\ConvVersFrac*[#2]{(\MatA*\MatI-\MatC*\MatG)/\DETMATRICE}}%
+ \def\MatInvF{\ConvVersFrac*[#2]{(-\MatA*\MatF+\MatD*\MatC)/\DETMATRICE}}%
+ \def\MatInvG{\ConvVersFrac*[#2]{(\MatD*\MatH-\MatE*\MatG)/\DETMATRICE}}%
+ \def\MatInvH{\ConvVersFrac*[#2]{(-\MatA*\MatH+\MatB*\MatG)/\DETMATRICE}}%
+ \def\MatInvI{\ConvVersFrac*[#2]{(\MatA*\MatE-\MatB*\MatD)/\DETMATRICE}}%
+ }%
+ {%
+ \def\MatInvA{\ConvVersFrac[#2]{(\MatE*\MatI-\MatH*\MatF)/\DETMATRICE}}%
+ \def\MatInvB{\ConvVersFrac[#2]{(-\MatB*\MatI+\MatC*\MatH)/\DETMATRICE}}%
+ \def\MatInvC{\ConvVersFrac[#2]{(\MatB*\MatF-\MatC*\MatE)/\DETMATRICE}}%
+ \def\MatInvD{\ConvVersFrac[#2]{(-\MatD*\MatI+\MatF*\MatG)/\DETMATRICE}}%
+ \def\MatInvE{\ConvVersFrac[#2]{(\MatA*\MatI-\MatC*\MatG)/\DETMATRICE}}%
+ \def\MatInvF{\ConvVersFrac[#2]{(-\MatA*\MatF+\MatD*\MatC)/\DETMATRICE}}%
+ \def\MatInvG{\ConvVersFrac[#2]{(\MatD*\MatH-\MatE*\MatG)/\DETMATRICE}}%
+ \def\MatInvH{\ConvVersFrac[#2]{(-\MatA*\MatH+\MatB*\MatG)/\DETMATRICE}}%
+ \def\MatInvI{\ConvVersFrac[#2]{(\MatA*\MatE-\MatB*\MatD)/\DETMATRICE}}%
+ }%
+ \begin{pNiceMatrix}[#3]
+ {\MatInvA}&{\MatInvB}&{\MatInvC} \\
+ {\MatInvD}&{\MatInvE}&{\MatInvF} \\
+ {\MatInvG}&{\MatInvH}&{\MatInvI}
+ \end{pNiceMatrix}%
+ }%
+ \fi
+ \ifnum \MAMATRICEAlen=2
+ \itemtomacro\MAMATRICEA[1,1]\MatA
+ \itemtomacro\MAMATRICEA[1,2]\MatB
+ \itemtomacro\MAMATRICEA[2,1]\MatC
+ \itemtomacro\MAMATRICEA[2,2]\MatD
+ %le déterminant
+ \def\DETMATRICE{\xinteval{\MatA*\MatD-\MatB*\MatC}}%
+ %matrice inverse, si elle existe...
+ \xintifboolexpr{\DETMATRICE == 0}%
+ {\text{Matrice non inversible}}%
+ {%
+ \IfBooleanTF{#1}%
+ {%
+ \def\MatInvA{\ConvVersFrac*[#2]{(\MatD)/\DETMATRICE}}%
+ \def\MatInvB{\ConvVersFrac*[#2]{(-\MatB)/\DETMATRICE}}%
+ \def\MatInvC{\ConvVersFrac*[#2]{(-\MatC)/\DETMATRICE}}%
+ \def\MatInvD{\ConvVersFrac*[#2]{(\MatA)/\DETMATRICE}}%
+ }%
+ {%
+ \def\MatInvA{\ConvVersFrac[#2]{(\MatD)/\DETMATRICE}}%
+ \def\MatInvB{\ConvVersFrac[#2]{(-\MatB)/\DETMATRICE}}%
+ \def\MatInvC{\ConvVersFrac[#2]{(-\MatC)/\DETMATRICE}}%
+ \def\MatInvD{\ConvVersFrac[#2]{(\MatA)/\DETMATRICE}}%
+ }%
+ \begin{pNiceMatrix}[#3]
+ {\MatInvA}&{\MatInvB} \\
+ {\MatInvC}&{\MatInvD}
+ \end{pNiceMatrix}%
+ }%
+ \fi
+}
+
+\NewDocumentCommand\DetMatrice{ s O{} r() }{%
+ %*=fractions avec - devant
+ %2=options conversion
+ %3=matrice (,,;,,)
+ %---------------------
+ %lectures des matrices
+ \setsepchar{§/,}%
+ \readlist*\MAMATRICEA{#3}%
+ %les coeffs de A et le déterminant et les coeff de l'inverse
+ \ifnum \MAMATRICEAlen=3
+ \itemtomacro\MAMATRICEA[1,1]\MatA
+ \itemtomacro\MAMATRICEA[1,2]\MatB
+ \itemtomacro\MAMATRICEA[1,3]\MatC
+ \itemtomacro\MAMATRICEA[2,1]\MatD
+ \itemtomacro\MAMATRICEA[2,2]\MatE
+ \itemtomacro\MAMATRICEA[2,3]\MatF
+ \itemtomacro\MAMATRICEA[3,1]\MatG
+ \itemtomacro\MAMATRICEA[3,2]\MatH
+ \itemtomacro\MAMATRICEA[3,3]\MatI
+ %le déterminant
+ \def\DETMATRICE{\xinteval{\MatA*\MatE*\MatI+\MatD*\MatH*\MatC+\MatB*\MatF*\MatG-\MatG*\MatE*\MatC-\MatD*\MatB*\MatI-\MatA*\MatH*\MatF}}%
+ \fi
+ \ifnum \MAMATRICEAlen=2
+ \itemtomacro\MAMATRICEA[1,1]\MatA
+ \itemtomacro\MAMATRICEA[1,2]\MatB
+ \itemtomacro\MAMATRICEA[2,1]\MatC
+ \itemtomacro\MAMATRICEA[2,2]\MatD
+ %le déterminant
+ \def\DETMATRICE{\xinteval{\MatA*\MatD-\MatB*\MatC}}%
+ \fi
+ \IfBooleanTF{#1}%
+ {%
+ \ConvVersFrac*[#2]{\DETMATRICE}%
+ }%
+ {%
+ \ConvVersFrac[#2]{\DETMATRICE}%
+ }%
+}
+
+\NewDocumentCommand\SolutionSysteme{ s O{} D<>{} r() r() O{} }{%
+ %*=fractions avec - devant
+ %2=options conversion
+ %3=options nicematrix
+ %4=matrice (,,;,,) principale
+ %5=matrice (;;) second membre
+ %6=résultat sous forme d'une matrice
+ %---------------------
+ %lectures des matrices
+ \setsepchar{§/,}%
+ \readlist*\MAMATRICEA{#4}%
+ \setsepchar{,}%
+ \readlist*\MAMATRICEB{#5}%
+ \def\MatDim{\MAMATRICEAlen}%
+ %les coeffs de A et le déterminant et les coeff de l'inverse
+ \ifnum \MAMATRICEAlen=3
+ \itemtomacro\MAMATRICEA[1,1]\MatA
+ \itemtomacro\MAMATRICEA[1,2]\MatB
+ \itemtomacro\MAMATRICEA[1,3]\MatC
+ \itemtomacro\MAMATRICEA[2,1]\MatD
+ \itemtomacro\MAMATRICEA[2,2]\MatE
+ \itemtomacro\MAMATRICEA[2,3]\MatF
+ \itemtomacro\MAMATRICEA[3,1]\MatG
+ \itemtomacro\MAMATRICEA[3,2]\MatH
+ \itemtomacro\MAMATRICEA[3,3]\MatI
+ %le déterminant
+ \def\DETMATRICE{\xinteval{\MatA*\MatE*\MatI+\MatD*\MatH*\MatC+\MatB*\MatF*\MatG-\MatG*\MatE*\MatC-\MatD*\MatB*\MatI-\MatA*\MatH*\MatF}}%
+ %les coeffs de B
+ \itemtomacro\MAMATRICEB[1]\MatBA
+ \itemtomacro\MAMATRICEB[2]\MatBB
+ \itemtomacro\MAMATRICEB[3]\MatBC
+ %matrice inverse, si elle existe...
+ \xintifboolexpr{\DETMATRICE == 0}%
+ {\text{Matrice non inversible}}%
+ {%
+ \def\MatInvA{(\MatE*\MatI-\MatH*\MatF)/\DETMATRICE}%
+ \def\MatInvB{(-\MatB*\MatI+\MatC*\MatH)/\DETMATRICE}%
+ \def\MatInvC{(\MatB*\MatF-\MatC*\MatE)/\DETMATRICE}%
+ \def\MatInvD{(-\MatD*\MatI+\MatF*\MatG)/\DETMATRICE}%
+ \def\MatInvE{(\MatA*\MatI-\MatC*\MatG)/\DETMATRICE}%
+ \def\MatInvF{(-\MatA*\MatF+\MatD*\MatC)/\DETMATRICE}%
+ \def\MatInvG{(\MatD*\MatH-\MatE*\MatG)/\DETMATRICE}%
+ \def\MatInvH{(-\MatA*\MatH+\MatB*\MatG)/\DETMATRICE}%
+ \def\MatInvI{(\MatA*\MatE-\MatB*\MatD)/\DETMATRICE}%
+ %
+ \IfBooleanTF{#1}%version étoilée := moinsdevant
+ {%
+ \def\MatResA{\ConvVersFrac*[#2]{\MatInvA*\MatBA+\MatInvB*\MatBB+\MatInvC*\MatBC}}%
+ \def\MatResB{\ConvVersFrac*[#2]{\MatInvD*\MatBA+\MatInvE*\MatBB+\MatInvF*\MatBC}}%
+ \def\MatResC{\ConvVersFrac*[#2]{\MatInvG*\MatBA+\MatInvH*\MatBB+\MatInvI*\MatBC}}%
+ }%
+ {%
+ \def\MatResA{\ConvVersFrac[#2]{\MatInvA*\MatBA+\MatInvB*\MatBB+\MatInvC*\MatBC}}%
+ \def\MatResB{\ConvVersFrac[#2]{\MatInvD*\MatBA+\MatInvE*\MatBB+\MatInvF*\MatBC}}%
+ \def\MatResC{\ConvVersFrac[#2]{\MatInvG*\MatBA+\MatInvH*\MatBB+\MatInvI*\MatBC}}%
+ }%
+ \IfStrEq{#6}{Matrice}%si matrice
+ {%
+ \begin{pNiceMatrix}[#3]
+ {\MatResA} \\
+ {\MatResB} \\
+ {\MatResC}
+ \end{pNiceMatrix}%
+ }%
+ {%
+ \left( {\MatResA} ; {\MatResB} ; {\MatResC} \right)%
+ }%
+ }%
+ \fi
+ \ifnum \MAMATRICEAlen=2
+ \itemtomacro\MAMATRICEA[1,1]\MatA
+ \itemtomacro\MAMATRICEA[1,2]\MatB
+ \itemtomacro\MAMATRICEA[2,1]\MatC
+ \itemtomacro\MAMATRICEA[2,2]\MatD
+ %le déterminant
+ \def\DETMATRICE{\xinteval{\MatA*\MatD-\MatB*\MatC}}%
+ %les coeffs de B
+ \itemtomacro\MAMATRICEB[1]\MatBA
+ \itemtomacro\MAMATRICEB[2]\MatBB
+ %matrice inverse, si elle existe...
+ \xintifboolexpr{\DETMATRICE == 0}%
+ {\text{Matrice non inversible}}%
+ {%
+ \def\MatInvA{(\MatD)/\DETMATRICE}%
+ \def\MatInvB{(-\MatB)/\DETMATRICE}%
+ \def\MatInvC{(-\MatC)/\DETMATRICE}%
+ \def\MatInvD{(\MatA)/\DETMATRICE}%
+ %
+ \IfBooleanTF{#1}%
+ {%
+ \def\MatResA{\ConvVersFrac*[#2]{\MatInvA*\MatBA+\MatInvB*\MatBB}}%
+ \def\MatResB{\ConvVersFrac*[#2]{\MatInvC*\MatBA+\MatInvD*\MatBB}}%
+ }%
+ {%
+ \def\MatResA{\ConvVersFrac[#2]{\MatInvA*\MatBA+\MatInvB*\MatBB}}%
+ \def\MatResB{\ConvVersFrac[#2]{\MatInvC*\MatBA+\MatInvD*\MatBB}}%
+ }%
+ \IfStrEq{#6}{Matrice}%si matrice
+ {%
+ \begin{pNiceMatrix}[#3]
+ {\MatResA} \\
+ {\MatResB}
+ \end{pNiceMatrix}%
+ }%
+ {%
+ \left( {\MatResA} ; {\MatResB} \right)%
+ }%
+ }%
+ \fi
+}
+
+%------Commandes via pyluatex
+\if@pyluatex %package pyluatex à charger par l'utilisateur !
+\NewDocumentCommand\SolutionSystemePY{ s O{} D<>{} r() r() O{} }{%
+ %*=avec le moins devant
+ %2=Option Fraction
+ %3=matrice du système
+ %4=second membre
+ %5=option NiceMatrix
+ %6=résultat sous forme d'une matrice
+ %---------------------
+ %lectures des matrices
+ \setsepchar{§/,}%
+ \readlist*\MAMATRICEA{#4}%
+ \setsepchar{,}%
+ \readlist*\MAMATRICEB{#5}%
+ %système QuatreQuatre
+ \ifnum \MAMATRICEAlen=4
+ \itemtomacro\MAMATRICEA[1,1]\MatA
+ \itemtomacro\MAMATRICEA[1,2]\MatB
+ \itemtomacro\MAMATRICEA[1,3]\MatC
+ \itemtomacro\MAMATRICEA[1,4]\MatD
+ \itemtomacro\MAMATRICEA[2,1]\MatE
+ \itemtomacro\MAMATRICEA[2,2]\MatF
+ \itemtomacro\MAMATRICEA[2,3]\MatG
+ \itemtomacro\MAMATRICEA[2,4]\MatH
+ \itemtomacro\MAMATRICEA[3,1]\MatI
+ \itemtomacro\MAMATRICEA[3,2]\MatJ
+ \itemtomacro\MAMATRICEA[3,3]\MatK
+ \itemtomacro\MAMATRICEA[3,4]\MatL
+ \itemtomacro\MAMATRICEA[4,1]\MatM
+ \itemtomacro\MAMATRICEA[4,2]\MatN
+ \itemtomacro\MAMATRICEA[4,3]\MatO
+ \itemtomacro\MAMATRICEA[4,4]\MatP
+ %les coeffs de B
+ \itemtomacro\MAMATRICEB[1]\MatBA
+ \itemtomacro\MAMATRICEB[2]\MatBB
+ \itemtomacro\MAMATRICEB[3]\MatBC
+ \itemtomacro\MAMATRICEB[4]\MatBD
+ %les solutions
+ \def\DETMATRICE{\xinteval{\py{det_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)}}}%
+ \xintifboolexpr{\DETMATRICE == 0}%
+ {\text{Matrice non inversible}}%
+ {%
+ \IfBooleanTF{#1}%
+ {
+ \def\MatResA{\ConvVersFrac*[#2]{\py{resol_systeme_QQ(\MatA,\MatB,\MatC,\MatD,\MatBA,\MatE,\MatF,\MatG,\MatH,\MatBB,\MatI,\MatJ,\MatK,\MatL,\MatBC,\MatM,\MatN,\MatO,\MatP,\MatBD)[x]}}}%
+ \def\MatResB{\ConvVersFrac*[#2]{\py{resol_systeme_QQ(\MatA,\MatB,\MatC,\MatD,\MatBA,\MatE,\MatF,\MatG,\MatH,\MatBB,\MatI,\MatJ,\MatK,\MatL,\MatBC,\MatM,\MatN,\MatO,\MatP,\MatBD)[y]}}}%
+ \def\MatResC{\ConvVersFrac*[#2]{\py{resol_systeme_QQ(\MatA,\MatB,\MatC,\MatD,\MatBA,\MatE,\MatF,\MatG,\MatH,\MatBB,\MatI,\MatJ,\MatK,\MatL,\MatBC,\MatM,\MatN,\MatO,\MatP,\MatBD)[z]}}}%
+ \def\MatResD{\ConvVersFrac*[#2]{\py{resol_systeme_QQ(\MatA,\MatB,\MatC,\MatD,\MatBA,\MatE,\MatF,\MatG,\MatH,\MatBB,\MatI,\MatJ,\MatK,\MatL,\MatBC,\MatM,\MatN,\MatO,\MatP,\MatBD)[t]}}}%
+ }%
+ {%
+ \def\MatResA{\ConvVersFrac[#2]{\py{resol_systeme_QQ(\MatA,\MatB,\MatC,\MatD,\MatBA,\MatE,\MatF,\MatG,\MatH,\MatBB,\MatI,\MatJ,\MatK,\MatL,\MatBC,\MatM,\MatN,\MatO,\MatP,\MatBD)[x]}}}%
+ \def\MatResB{\ConvVersFrac[#2]{\py{resol_systeme_QQ(\MatA,\MatB,\MatC,\MatD,\MatBA,\MatE,\MatF,\MatG,\MatH,\MatBB,\MatI,\MatJ,\MatK,\MatL,\MatBC,\MatM,\MatN,\MatO,\MatP,\MatBD)[y]}}}%
+ \def\MatResC{\ConvVersFrac[#2]{\py{resol_systeme_QQ(\MatA,\MatB,\MatC,\MatD,\MatBA,\MatE,\MatF,\MatG,\MatH,\MatBB,\MatI,\MatJ,\MatK,\MatL,\MatBC,\MatM,\MatN,\MatO,\MatP,\MatBD)[z]}}}%
+ \def\MatResD{\ConvVersFrac[#2]{\py{resol_systeme_QQ(\MatA,\MatB,\MatC,\MatD,\MatBA,\MatE,\MatF,\MatG,\MatH,\MatBB,\MatI,\MatJ,\MatK,\MatL,\MatBC,\MatM,\MatN,\MatO,\MatP,\MatBD)[t]}}}%
+ }%
+ \IfStrEq{#6}{Matrice}%si matrice
+ {%
+ \begin{pNiceMatrix}[#3]
+ {\MatResA} \\
+ {\MatResB} \\
+ {\MatResC} \\
+ {\MatResD}
+ \end{pNiceMatrix}%
+ }%
+ {%
+ \left( {\MatResA} ; {\MatResB} ; {\MatResC} ; {\MatResD} \right)%
+ }%
+ }%
+ \fi
+ %système TroisTrois
+ \ifnum \MAMATRICEAlen=3
+ \itemtomacro\MAMATRICEA[1,1]\MatA
+ \itemtomacro\MAMATRICEA[1,2]\MatB
+ \itemtomacro\MAMATRICEA[1,3]\MatC
+ \itemtomacro\MAMATRICEA[2,1]\MatD
+ \itemtomacro\MAMATRICEA[2,2]\MatE
+ \itemtomacro\MAMATRICEA[2,3]\MatF
+ \itemtomacro\MAMATRICEA[3,1]\MatG
+ \itemtomacro\MAMATRICEA[3,2]\MatH
+ \itemtomacro\MAMATRICEA[3,3]\MatI
+ %les coeffs de B
+ \itemtomacro\MAMATRICEB[1]\MatBA
+ \itemtomacro\MAMATRICEB[2]\MatBB
+ \itemtomacro\MAMATRICEB[3]\MatBC
+ %les solutions
+ \def\DETMATRICE{\xinteval{\py{det_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)}}}%
+ \xintifboolexpr{\DETMATRICE == 0}%
+ {\text{Matrice non inversible}}%
+ {%
+ \IfBooleanTF{#1}%
+ {
+ \def\MatResA{\ConvVersFrac*[#2]{\py{resol_systeme_TT(\MatA,\MatB,\MatC,\MatBA,\MatD,\MatE,\MatF,\MatBB,\MatG,\MatH,\MatI,\MatBC)[x]}}}%
+ \def\MatResB{\ConvVersFrac*[#2]{\py{resol_systeme_TT(\MatA,\MatB,\MatC,\MatBA,\MatD,\MatE,\MatF,\MatBB,\MatG,\MatH,\MatI,\MatBC)[y]}}}%
+ \def\MatResC{\ConvVersFrac*[#2]{\py{resol_systeme_TT(\MatA,\MatB,\MatC,\MatBA,\MatD,\MatE,\MatF,\MatBB,\MatG,\MatH,\MatI,\MatBC)[z]}}}%
+ }%
+ {%
+ \def\MatResA{\ConvVersFrac[#2]{\py{resol_systeme_TT(\MatA,\MatB,\MatC,\MatBA,\MatD,\MatE,\MatF,\MatBB,\MatG,\MatH,\MatI,\MatBC)[x]}}}%
+ \def\MatResB{\ConvVersFrac[#2]{\py{resol_systeme_TT(\MatA,\MatB,\MatC,\MatBA,\MatD,\MatE,\MatF,\MatBB,\MatG,\MatH,\MatI,\MatBC)[y]}}}%
+ \def\MatResC{\ConvVersFrac[#2]{\py{resol_systeme_TT(\MatA,\MatB,\MatC,\MatBA,\MatD,\MatE,\MatF,\MatBB,\MatG,\MatH,\MatI,\MatBC)[z]}}}%
+ }%
+ \IfStrEq{#6}{Matrice}%si matrice
+ {%
+ \begin{pNiceMatrix}[#3]
+ {\MatResA} \\
+ {\MatResB} \\
+ {\MatResC}
+ \end{pNiceMatrix}%
+ }%
+ {%
+ \left( {\MatResA} ; {\MatResB} ; {\MatResC} \right)%
+ }%
+ }%
+ \fi
+ %système DeuxDeux
+ \ifnum \MAMATRICEAlen=2
+ \itemtomacro\MAMATRICEA[1,1]\MatA
+ \itemtomacro\MAMATRICEA[1,2]\MatB
+ \itemtomacro\MAMATRICEA[2,1]\MatC
+ \itemtomacro\MAMATRICEA[2,2]\MatD
+ %les coeffs de B
+ \itemtomacro\MAMATRICEB[1]\MatBA
+ \itemtomacro\MAMATRICEB[2]\MatBB
+ %solutions
+ \def\DETMATRICE{\xinteval{\py{det_matrice_DD(\MatA,\MatB,\MatC,\MatD)}}}%
+ \xintifboolexpr{\DETMATRICE == 0}%
+ {\text{Matrice non inversible}}%
+ {%
+ \IfBooleanTF{#1}%
+ {
+ \def\MatResA{\ConvVersFrac*[#2]{\py{resol_systeme_DD(\MatA,\MatB,\MatBA,\MatC,\MatD,\MatBB)[x]}}}%
+ \def\MatResB{\ConvVersFrac*[#2]{\py{resol_systeme_DD(\MatA,\MatB,\MatBA,\MatC,\MatD,\MatBB)[y]}}}%
+ }%
+ {%
+ \def\MatResA{\ConvVersFrac[#2]{\py{resol_systeme_DD(\MatA,\MatB,\MatBA,\MatC,\MatD,\MatBB)[x]}}}%
+ \def\MatResB{\ConvVersFrac[#2]{\py{resol_systeme_DD(\MatA,\MatB,\MatBA,\MatC,\MatD,\MatBB)[y]}}}%
+ }%
+ \IfStrEq{#6}{Matrice}%si matrice
+ {%
+ \begin{pNiceMatrix}[#3]
+ {\MatResA} \\
+ {\MatResB}
+ \end{pNiceMatrix}%
+ }%
+ {%
+ \left( {\MatResA} ; {\MatResB} \right)%
+ }%
+ }%
+ \fi
+}
+
+\NewDocumentCommand\MatriceInversePY{ s O{} D<>{} r() }{%
+ %*=fractions avec - devant
+ %2=options conversion
+ %3=options nicematrix
+ %4=matrice (,,;,,)
+ %---------------------
+ %lectures des matrices
+ \setsepchar{§/,}%
+ \readlist*\MAMATRICEA{#4}%
+ %les coeffs de A et le déterminant et les coeff de l'inverse
+ \ifnum \MAMATRICEAlen=4
+ \itemtomacro\MAMATRICEA[1,1]\MatA
+ \itemtomacro\MAMATRICEA[1,2]\MatB
+ \itemtomacro\MAMATRICEA[1,3]\MatC
+ \itemtomacro\MAMATRICEA[1,4]\MatD
+ \itemtomacro\MAMATRICEA[2,1]\MatE
+ \itemtomacro\MAMATRICEA[2,2]\MatF
+ \itemtomacro\MAMATRICEA[2,3]\MatG
+ \itemtomacro\MAMATRICEA[2,4]\MatH
+ \itemtomacro\MAMATRICEA[3,1]\MatI
+ \itemtomacro\MAMATRICEA[3,2]\MatJ
+ \itemtomacro\MAMATRICEA[3,3]\MatK
+ \itemtomacro\MAMATRICEA[3,4]\MatL
+ \itemtomacro\MAMATRICEA[4,1]\MatM
+ \itemtomacro\MAMATRICEA[4,2]\MatN
+ \itemtomacro\MAMATRICEA[4,3]\MatO
+ \itemtomacro\MAMATRICEA[4,4]\MatP
+ %les solutions
+ \def\DETMATRICE{\xinteval{\py{det_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)}}}%
+ \xintifboolexpr{\DETMATRICE == 0}%
+ {\text{Matrice non inversible}}%
+ {%
+ \IfBooleanTF{#1}%
+ {
+ \def\MatInvA{\ConvVersFrac*[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[0]}}}%
+ \def\MatInvB{\ConvVersFrac*[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[1]}}}%
+ \def\MatInvC{\ConvVersFrac*[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[2]}}}%
+ \def\MatInvD{\ConvVersFrac*[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[3]}}}%
+ \def\MatInvE{\ConvVersFrac*[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[4]}}}%
+ \def\MatInvF{\ConvVersFrac*[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[5]}}}%
+ \def\MatInvG{\ConvVersFrac*[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[6]}}}%
+ \def\MatInvH{\ConvVersFrac*[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[7]}}}%
+ \def\MatInvI{\ConvVersFrac*[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[8]}}}%
+ \def\MatInvJ{\ConvVersFrac*[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[9]}}}%
+ \def\MatInvK{\ConvVersFrac*[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[10]}}}%
+ \def\MatInvL{\ConvVersFrac*[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[11]}}}%
+ \def\MatInvM{\ConvVersFrac*[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[12]}}}%
+ \def\MatInvN{\ConvVersFrac*[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[13]}}}%
+ \def\MatInvO{\ConvVersFrac*[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[14]}}}%
+ \def\MatInvP{\ConvVersFrac*[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[15]}}}%
+ }%
+ {%
+ \def\MatInvA{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[0]}}}%
+ \def\MatInvB{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[1]}}}%
+ \def\MatInvC{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[2]}}}%
+ \def\MatInvD{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[3]}}}%
+ \def\MatInvE{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[4]}}}%
+ \def\MatInvF{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[5]}}}%
+ \def\MatInvG{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[6]}}}%
+ \def\MatInvH{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[7]}}}%
+ \def\MatInvI{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[8]}}}%
+ \def\MatInvJ{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[9]}}}%
+ \def\MatInvK{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[10]}}}%
+ \def\MatInvL{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[11]}}}%
+ \def\MatInvM{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[12]}}}%
+ \def\MatInvN{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[13]}}}%
+ \def\MatInvO{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[14]}}}%
+ \def\MatInvP{\ConvVersFrac[#2]{\py{inverse_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)[15]}}}%
+ }%
+ \begin{pNiceMatrix}[#3]
+ {\MatInvA} & {\MatInvB} & {\MatInvC} & {\MatInvD} \\
+ {\MatInvE} & {\MatInvF} & {\MatInvG} & {\MatInvH} \\
+ {\MatInvI} & {\MatInvJ} & {\MatInvK} & {\MatInvL} \\
+ {\MatInvM} & {\MatInvN} & {\MatInvO} & {\MatInvP} \\
+ \end{pNiceMatrix}%
+ }%
+ \fi
+ \ifnum \MAMATRICEAlen=3
+ \itemtomacro\MAMATRICEA[1,1]\MatA
+ \itemtomacro\MAMATRICEA[1,2]\MatB
+ \itemtomacro\MAMATRICEA[1,3]\MatC
+ \itemtomacro\MAMATRICEA[2,1]\MatD
+ \itemtomacro\MAMATRICEA[2,2]\MatE
+ \itemtomacro\MAMATRICEA[2,3]\MatF
+ \itemtomacro\MAMATRICEA[3,1]\MatG
+ \itemtomacro\MAMATRICEA[3,2]\MatH
+ \itemtomacro\MAMATRICEA[3,3]\MatI
+ \def\DETMATRICE{\xinteval{\py{det_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)}}}%
+ \xintifboolexpr{\DETMATRICE == 0}%
+ {\text{Matrice non inversible}}%
+ {%
+ \IfBooleanTF{#1}%
+ {%
+ \def\MatInvA{\ConvVersFrac*[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[0]}}}
+ \def\MatInvB{\ConvVersFrac*[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[1]}}}
+ \def\MatInvC{\ConvVersFrac*[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[2]}}}
+ \def\MatInvD{\ConvVersFrac*[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[3]}}}
+ \def\MatInvE{\ConvVersFrac*[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[4]}}}
+ \def\MatInvF{\ConvVersFrac*[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[5]}}}
+ \def\MatInvG{\ConvVersFrac*[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[6]}}}
+ \def\MatInvH{\ConvVersFrac*[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[7]}}}
+ \def\MatInvI{\ConvVersFrac*[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[8]}}}
+ }%
+ {%
+ \def\MatInvA{\ConvVersFrac[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[0]}}}
+ \def\MatInvB{\ConvVersFrac[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[1]}}}
+ \def\MatInvC{\ConvVersFrac[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[2]}}}
+ \def\MatInvD{\ConvVersFrac[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[3]}}}
+ \def\MatInvE{\ConvVersFrac[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[4]}}}
+ \def\MatInvF{\ConvVersFrac[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[5]}}}
+ \def\MatInvG{\ConvVersFrac[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[6]}}}
+ \def\MatInvH{\ConvVersFrac[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[7]}}}
+ \def\MatInvI{\ConvVersFrac[#2]{\py{inverse_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)[8]}}}
+ }%
+ \begin{pNiceMatrix}[#3]
+ {\MatInvA} & {\MatInvB} & {\MatInvC} \\
+ {\MatInvD} & {\MatInvE} & {\MatInvF} \\
+ {\MatInvG} & {\MatInvH} & {\MatInvI}
+ \end{pNiceMatrix}%
+ }%
+ \fi
+ \ifnum \MAMATRICEAlen=2
+ \itemtomacro\MAMATRICEA[1,1]\MatA
+ \itemtomacro\MAMATRICEA[1,2]\MatB
+ \itemtomacro\MAMATRICEA[2,1]\MatC
+ \itemtomacro\MAMATRICEA[2,2]\MatD
+ \def\DETMATRICE{\xinteval{\py{det_matrice_DD(\MatA,\MatB,\MatC,\MatD)}}}%
+ \xintifboolexpr{\DETMATRICE == 0}%
+ {\text{Matrice non inversible}}%
+ {%
+ \IfBooleanTF{#1}%
+ {%
+ \def\MatInvA{\ConvVersFrac*[#2]{\py{inverse_matrice_DD(\MatA,\MatB,\MatC,\MatD)[0]}}}
+ \def\MatInvB{\ConvVersFrac*[#2]{\py{inverse_matrice_DD(\MatA,\MatB,\MatC,\MatD)[1]}}}
+ \def\MatInvC{\ConvVersFrac*[#2]{\py{inverse_matrice_DD(\MatA,\MatB,\MatC,\MatD)[2]}}}
+ \def\MatInvD{\ConvVersFrac*[#2]{\py{inverse_matrice_DD(\MatA,\MatB,\MatC,\MatD)[3]}}}
+ }%
+ {%
+ \def\MatInvA{\ConvVersFrac[#2]{\py{inverse_matrice_DD(\MatA,\MatB,\MatC,\MatD)[0]}}}
+ \def\MatInvB{\ConvVersFrac[#2]{\py{inverse_matrice_DD(\MatA,\MatB,\MatC,\MatD)[1]}}}
+ \def\MatInvC{\ConvVersFrac[#2]{\py{inverse_matrice_DD(\MatA,\MatB,\MatC,\MatD)[2]}}}
+ \def\MatInvD{\ConvVersFrac[#2]{\py{inverse_matrice_DD(\MatA,\MatB,\MatC,\MatD)[3]}}}
+ }%
+ \begin{pNiceMatrix}[#3]
+ {\MatInvA} & {\MatInvB} \\
+ {\MatInvC} & {\MatInvD}
+ \end{pNiceMatrix}%
+ }%
+ \fi
+}
+
+\NewDocumentCommand\DetMatricePY{ s O{} r() }{%
+ %*=fractions avec - devant
+ %2=options conversion
+ %3=matrice (,,;,,)
+ %---------------------
+ %lectures des matrices
+ \setsepchar{§/,}%
+ \readlist*\MAMATRICEA{#3}%
+ \def\MatDim{\MAMATRICEAlen}%
+ %les coeffs de A et le déterminant et les coeff de l'inverse
+ \ifnum \MAMATRICEAlen=4
+ \itemtomacro\MAMATRICEA[1,1]\MatA
+ \itemtomacro\MAMATRICEA[1,2]\MatB
+ \itemtomacro\MAMATRICEA[1,3]\MatC
+ \itemtomacro\MAMATRICEA[1,4]\MatD
+ \itemtomacro\MAMATRICEA[2,1]\MatE
+ \itemtomacro\MAMATRICEA[2,2]\MatF
+ \itemtomacro\MAMATRICEA[2,3]\MatG
+ \itemtomacro\MAMATRICEA[2,4]\MatH
+ \itemtomacro\MAMATRICEA[3,1]\MatI
+ \itemtomacro\MAMATRICEA[3,2]\MatJ
+ \itemtomacro\MAMATRICEA[3,3]\MatK
+ \itemtomacro\MAMATRICEA[3,4]\MatL
+ \itemtomacro\MAMATRICEA[4,1]\MatM
+ \itemtomacro\MAMATRICEA[4,2]\MatN
+ \itemtomacro\MAMATRICEA[4,3]\MatO
+ \itemtomacro\MAMATRICEA[4,4]\MatP
+ %les solutions
+ \def\DETMATRICE{\xinteval{\py{det_matrice_QQ(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI,\MatJ,\MatK,\MatL,\MatM,\MatN,\MatO,\MatP)}}}%
+ \fi
+ \ifnum \MAMATRICEAlen=3
+ \itemtomacro\MAMATRICEA[1,1]\MatA
+ \itemtomacro\MAMATRICEA[1,2]\MatB
+ \itemtomacro\MAMATRICEA[1,3]\MatC
+ \itemtomacro\MAMATRICEA[2,1]\MatD
+ \itemtomacro\MAMATRICEA[2,2]\MatE
+ \itemtomacro\MAMATRICEA[2,3]\MatF
+ \itemtomacro\MAMATRICEA[3,1]\MatG
+ \itemtomacro\MAMATRICEA[3,2]\MatH
+ \itemtomacro\MAMATRICEA[3,3]\MatI
+ \def\DETMATRICE{\xinteval{\py{det_matrice_TT(\MatA,\MatB,\MatC,\MatD,\MatE,\MatF,\MatG,\MatH,\MatI)}}}%
+ \fi
+ \ifnum \MAMATRICEAlen=2
+ \itemtomacro\MAMATRICEA[1,1]\MatA
+ \itemtomacro\MAMATRICEA[1,2]\MatB
+ \itemtomacro\MAMATRICEA[2,1]\MatC
+ \itemtomacro\MAMATRICEA[2,2]\MatD
+ \def\DETMATRICE{\xinteval{\py{det_matrice_DD(\MatA,\MatB,\MatC,\MatD)}}}%
+ \fi
+ \IfBooleanTF{#1}%
+ {%
+ \ConvVersFrac*[#2]{\DETMATRICE}%
+ }%
+ {%
+ \ConvVersFrac[#2]{\DETMATRICE}%
+ }%
+}
+\fi
+
+\endinput \ No newline at end of file