summaryrefslogtreecommitdiff
path: root/macros/latex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2024-01-03 03:03:02 +0000
committerNorbert Preining <norbert@preining.info>2024-01-03 03:03:02 +0000
commit92effab22b73c432933e7eb8e12c1cefda221df9 (patch)
treecdf3576ee645074d1df994e376d9ca2483c81ec5 /macros/latex
parent6b10e9901a24325e837f0fdc2cbce8f43f18ccff (diff)
CTAN sync 202401030303
Diffstat (limited to 'macros/latex')
-rw-r--r--macros/latex/contrib/changebar/CATALOG2
-rw-r--r--macros/latex/contrib/changebar/README4
-rw-r--r--macros/latex/contrib/changebar/changebar.bug11
-rw-r--r--macros/latex/contrib/changebar/changebar.dtx28
-rw-r--r--macros/latex/contrib/changebar/changebar.pdfbin483608 -> 484332 bytes
-rw-r--r--macros/latex/contrib/eolang/eolang.dtx88
-rw-r--r--macros/latex/contrib/eolang/eolang.pdfbin1935887 -> 1937780 bytes
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix-code.dtx90
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix-code.pdfbin0 -> 973857 bytes
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix-french.pdfbin596600 -> 596978 bytes
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix-french.tex16
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix.ins4
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix.pdfbin612159 -> 611795 bytes
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix.tex17
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdfbin1444492 -> 1450770 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex4
-rw-r--r--macros/latex/contrib/proflycee/tex/ProfLycee.sty5
-rw-r--r--macros/latex/contrib/proflycee/tex/proflycee-tools-analyse.tex80
-rw-r--r--macros/latex/contrib/proflycee/tex/proflycee-tools-arithm.tex24
-rw-r--r--macros/latex/contrib/proflycee/tex/proflycee-tools-complexes.tex609
20 files changed, 850 insertions, 132 deletions
diff --git a/macros/latex/contrib/changebar/CATALOG b/macros/latex/contrib/changebar/CATALOG
index 4878681f57..74e408ac34 100644
--- a/macros/latex/contrib/changebar/CATALOG
+++ b/macros/latex/contrib/changebar/CATALOG
@@ -1,7 +1,7 @@
Name: ChangeBar
Problems-To: johannes.braams(at)texniek.nl
Author: J.L. Braams
-Version: 3.7b
+Version: 3.7c
Description:
diff --git a/macros/latex/contrib/changebar/README b/macros/latex/contrib/changebar/README
index e5ef309494..847be179da 100644
--- a/macros/latex/contrib/changebar/README
+++ b/macros/latex/contrib/changebar/README
@@ -1,6 +1,6 @@
changebar bundle
- December 30, 2023
+ January 1, 2024
This bundle contains a package that I maintain to add changebars to a
LaTeX document.
@@ -14,7 +14,7 @@ be used to compare two versions of a document and automatically add
the changebars.
The file chbar.1, also contributed, documents the workings of chbar.sh
-Copyright (C) 2023 Johannes L. Braams johannes.braams(at)texniek.nl
+Copyright (C) 2024 Johannes L. Braams johannes.braams(at)texniek.nl
This program can be redistributed and/or modified under the terms
of the LaTeX Project Public License Distributed from CTAN
diff --git a/macros/latex/contrib/changebar/changebar.bug b/macros/latex/contrib/changebar/changebar.bug
index aed1dc80a7..4d2b9fa0a7 100644
--- a/macros/latex/contrib/changebar/changebar.bug
+++ b/macros/latex/contrib/changebar/changebar.bug
@@ -6,6 +6,7 @@
% VTeX (Michael Vulis)
% PDFTeX (Piet van Oostrum)
% XeTeX (Apostolos Syropoulos)
+% luaTeX
%
% change history
%
@@ -205,6 +206,16 @@
%
% v3.7a JLB: Added support for LuaTeX based on the pdfTEX and XeTeX code
%
+% v3.7b JLB: In creating the support for luaTeX a XeTeX error message got
+% inadvertantly remove, reinserted.
+% After adding those four lines the production of changebar.dtx
+% led to a runaway argument error. It turned out that the comma's,
+% used in were in one instance replaced by \TeX-code. Replaced
+% the comma's with ";" to solve this.
+%
+% v3.7c JLB: Arash Esbati reported inconsistent spacing whit or without the
+% optional argumenty to \cbstart or \begin{changebar}.
+%
% Known problems
% - changebars for marginal paragraphs collide with changebars
% for the main body of text
diff --git a/macros/latex/contrib/changebar/changebar.dtx b/macros/latex/contrib/changebar/changebar.dtx
index e4d71b5c39..2c67180adb 100644
--- a/macros/latex/contrib/changebar/changebar.dtx
+++ b/macros/latex/contrib/changebar/changebar.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% Copyright 1994-2023 (C) Johannes Braams. All rights reserved.
+%% Copyright 1994-2024 (C) Johannes Braams. All rights reserved.
%
% This file is part of the changebar package.
% -------------------------------------------
@@ -24,7 +24,7 @@
% and covered by LPPL is defined by the unpacking scripts (with
% extension .ins) which are part of the distribution.
% \fi
-% \CheckSum{2952}
+% \CheckSum{2953}
%
%\iffalse
% This file is built for \LaTeXe, so we make sure an error is
@@ -39,7 +39,7 @@
\ProvidesFile{changebar.dtx}
%</dtx>
%<+package>\ProvidesPackage{changebar}
- [2023/12/30 v3.7b Indicate changes with marginal bars]
+ [2024/01/01 v3.7c Indicate changes with marginal bars]
% \end{macrocode}
%
% \section{A driver for this document}
@@ -162,7 +162,7 @@
% commands supported by `dvi drivers'. Currently six different
% \changes{v3.5a}{2005/05/23}{PDF\TeX{} support added}
% \changes{v3.6a}{2011/04/30}{Xe\TeX{} support added}
-% drivers are supported, plus pdftex and Xe\TeX
+% drivers are supported, plus pdftex, Xe\TeX\ and lua\TeX\
% support. More can easily be added.
% \end{abstract}
%
@@ -752,7 +752,6 @@
% \item V\TeX
% \item PDF\TeX
% \item Xe\TeX
-%
% \cbstart\item luaTeX\cbend
% \end{itemize}
%
@@ -2236,7 +2235,7 @@
% grouping errors.}
% \changes{v3.4e}{2002/10/28}{Reverted the change from version 3.3i}
% \begin{macrocode}
-\newcommand*{\cbstart}{\@ifnextchar [%]
+\newcommand*{\cbstart}{\@ifnextchar[%]
{\cb@start}%
{\cb@start[\changebarwidth]}}
% \end{macrocode}
@@ -2257,7 +2256,7 @@
% The default width (and length) of it are stored in
% |\deletebarwidth|.
% \begin{macrocode}
-\newcommand*{\cbdelete}{\@ifnextchar [%]
+\newcommand*{\cbdelete}{\@ifnextchar[%]
{\cb@delete}%
{\cb@delete[\deletebarwidth]}}
% \end{macrocode}
@@ -2280,8 +2279,8 @@
% environments.
% \begin{macrocode}
\newenvironment{changebar}%
- {\@ifnextchar [{\cb@start}%
- {\cb@start[\changebarwidth]}}%
+ {\@ifnextchar[{\cb@start}%]
+ {\cb@start[\changebarwidth]}}%
{\cb@end}
% \end{macrocode}
% \end{macro}
@@ -2373,7 +2372,8 @@
% depends on the model.
% \begin{macrocode}
\DeclareRobustCommand\cbcolor{%
- \@ifnextchar[\@undeclaredcbcolor\@declaredcbcolor}
+ \@ifnextchar[%]
+ \@undeclaredcbcolor\@declaredcbcolor}
% \end{macrocode}
% \end{macro}
%
@@ -2471,9 +2471,11 @@
\fi
% \end{macrocode}
% Restore |\cb@pagecount|.
+% \changes{v3.7c}{2024/01/01}{Added \cs{ignorespaces} at the end to
+% prevent a spcae token from creaping into the output}
% \begin{macrocode}
\cb@pagecount\cb@cnta
- \cb@advancePoint}
+ \cb@advancePoint\ignorespaces}
% \end{macrocode}
% \end{macro}
%
@@ -2523,6 +2525,8 @@
\cb@checkpage\thr@@
% \end{macrocode}
% Again, we need to temporarily overwrite |\cb@pagecount|.
+% \changes{v3.7c}{2024/01/01}{We need \cs{ignorespacesafterend} here,
+% not \cs{ignorespaces}}
% \begin{macrocode}
\cb@cnta\cb@pagecount
\cb@pagecount\cb@page\advance\cb@pagecount\m@ne
@@ -2533,7 +2537,7 @@
\fi
\cb@pagecount\cb@cnta
\fi
- \ignorespaces}
+ \ignorespacesafterend}
% \end{macrocode}
%\end{macro}
%
diff --git a/macros/latex/contrib/changebar/changebar.pdf b/macros/latex/contrib/changebar/changebar.pdf
index 549d3e8883..ef79e6b5dc 100644
--- a/macros/latex/contrib/changebar/changebar.pdf
+++ b/macros/latex/contrib/changebar/changebar.pdf
Binary files differ
diff --git a/macros/latex/contrib/eolang/eolang.dtx b/macros/latex/contrib/eolang/eolang.dtx
index 9407f46eb6..9e1bd88e9d 100644
--- a/macros/latex/contrib/eolang/eolang.dtx
+++ b/macros/latex/contrib/eolang/eolang.dtx
@@ -50,7 +50,7 @@
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{eolang}
%<*package>
-[2023-12-28 0.17.0 Formulas and Graphs for EO Programming Language]
+[2024-01-02 0.17.1 Formulas and Graphs for EO Programming Language]
%</package>
%<*driver>
\documentclass{ltxdoc}
@@ -84,16 +84,19 @@
% \maketitle
%
% \textbf{\color{red}NB!}
-% You must run \TeX{} processor with |--shell-escape| option
+% You must run \TeX{} processor with |-shell-escape| option
% and you must have \href{https://www.perl.org}{Perl} installed.
-% If you omit the |--shell-escape| option, the package will try
+% If you omit the |-shell-escape| option, the package will try
% to use cached files, if they exist. If they don't, compilation will
-% crash. Thus, when you must prepare your document for a compilation
-% without the |--shell-escape| option, run it locally with the option
-% and then package all files (including the files in the |_eolang| directory)
-% into a single ZIP archive.
+% fail. Thus, when you must prepare your document for a compilation
+% without the |-shell-escape| option, run it locally with the option provided
+% and then package all files (including the files in the |_eolang-*| directories)
+% into a single ZIP archive. It is advised to use |tmpdir| package option
+% in this case, in order to make the directory name not depend on the
+% \LaTeX{} engine.
%
-% If |--shell-escape| is set, this package doesn't work on Windows.
+% If |-shell-escape| is set, this package won't work on Windows, because
+% it uses POSIX command line interface.
% \section{Introduction}
%
@@ -778,12 +781,21 @@
% Then, we make a directory where all temporary files will be kept:
% \begin{macrocode}
-\ifnum\ShellEscapeStatus=1%
- \iexec[null]{mkdir -p "\eolang@tmpdir/\jobname"}%
-\else%
- \message{eolang: Temporary directory "\eolang@tmpdir/\jobname"
- is not created, because --shell-escape is not set^^J}%
-\fi%
+\RequirePackage{shellesc}
+\IfFileExists
+ {\eolang@tmpdir/\jobname}
+ {\message{eolang: Temporary directory "\eolang@tmpdir/\jobname"
+ already exists^^J}}
+ {%
+ \ifnum\ShellEscapeStatus=1%
+ \iexec[null]{mkdir -p "\eolang@tmpdir/\jobname"}%
+ \else%
+ \message{eolang: Temporary directory "\eolang@tmpdir/\jobname"
+ is not created, because -shell-escape is not set, and
+ it doesn't exist, most probably the compilation
+ will fail later^^J}%
+ \fi%
+ }
% \end{macrocode}
% \begin{macro}{\eolang@lineno}
@@ -805,7 +817,7 @@
% \end{macrocode}
% \end{macro}
-% \begin{macro}{eolang-phi.pl}
+% \begin{macro}{-phi.pl}
% \changes{0.0.2}{2022/10/21}{The symbols ``\texttt{[}'' and ``\texttt{]}'' replaced with ``\texttt{[[}'' and ``\texttt{]]}'' for abstract object brackets, because they conflicted with normal square brackets}
% \changes{0.0.2}{2022/10/21}{New symbol added for basket slots}
% \changes{0.0.2}{2022/10/21}{Parsing of the symbols ``\texttt{@},'' ``\texttt{\^{}},'' and ``\texttt{\&}'' enabled (\texttt{\char`\\varphi}, \texttt{\char`\\rho}, and \texttt{\char`\\sigma})}
@@ -828,11 +840,17 @@
% \href{https://ctan.org/pkg/fancyvrb}{fancyvrb}:
% \begin{macrocode}
\makeatletter
-\begin{VerbatimOut}{\eolang@tmpdir/eolang-phi.pl}
+\openin 15=\eolang@tmpdir/\jobname-phi.pl
+\ifeof 15
+\message{eolang: Perl script is going to be created,
+ because it is absent at "\eolang@tmpdir/\jobname-phi.pl",
+ but if -shell-escape is not set, the compilation will
+ most likely fail now^^J}
+\begin{VerbatimOut}{\eolang@tmpdir/\jobname-phi.pl}
$macro = $ARGV[0];
open(my $fh, '<', $ARGV[1]);
my $tex; { local $/; $tex = <$fh>; }
-print "% This file is auto-generated by 0.17.0\n";
+print "% This file is auto-generated by 0.17.1\n";
print '% There are ', length($tex),
' chars in the input: ', $ARGV[1], "\n";
print '% ---', "\n";
@@ -909,9 +927,9 @@ $tex =~ s/([^\\{a-z0-9]|^)D>/\1\\Delta{}..>/g;
$tex =~ s/([^\\{a-z0-9]|^)L>/\1\\lambda{}..>/g;
$tex =~ s/"([^"]+)"/|"\1"|/g;
$tex =~ s/(^|(?<=[\s)(\]\[,.>\/]))([a-zA-Z][a-z0-9]+)(?=[\s)(\]\[,.-]|$)/|\2|/g;
-$tex =~ s/([^^_]|^)([0-9]+|\*)\/(\\?[a-z]+|\|[a-z]+\|)
+$tex =~ s/([^_^]|^)([0-9]+|\*)\/(\\?[a-z]+|\|[a-z]+\|)
(->|\.\.>|~>|:=|!->)/\1\\alpha_{\2}\\vert{}\3\\space{}\4/xg;
-$tex =~ s/([^^_]|^)([0-9]+|\*)
+$tex =~ s/([^_^]|^)([0-9]+|\*)
(->|\.\.>|~>|:=|!->)/\1\\alpha_{\2}\\space{}\3/xg;
if ($macro ne 'phiq') {
if (not $splitting) {
@@ -999,7 +1017,12 @@ if ($macro eq 'phiq') {
print '\endinput';
\end{VerbatimOut}
\message{eolang: File with Perl script
- '\eolang@tmpdir/eolang-phi.pl' saved^^J}%
+ '\eolang@tmpdir/\jobname-phi.pl' saved^^J}
+\else
+ \message{eolang: Perl script already exists at
+ "\eolang@tmpdir/\jobname-phi.pl"^^J}
+\fi
+\closein 15
\makeatother
% \end{macrocode}
% \end{macro}
@@ -1027,7 +1050,7 @@ print '\endinput';
\input{#1}}
{%
\ifnum\ShellEscapeStatus=1\else%
- \message{eolang: The --shell-escape command line
+ \message{eolang: The -shell-escape command line
option is not provided, most probably compilation
will fail now:^^J}%
\fi%
@@ -1053,7 +1076,7 @@ print '\endinput';
"\eolang@tmpdir/\jobname/\hash.tex"}%
\message{Start parsing 'phi' at line no. \the\inputlineno^^J}
\iexec[trace,stdout=\eolang@tmpdir/\jobname/\hash-post.tex]{
- perl "\eolang@tmpdir/eolang-phi.pl"
+ perl "\eolang@tmpdir/\jobname-phi.pl"
'#1'
"\eolang@tmpdir/\jobname/\hash.tex"
\ifdefined\eolang@nocomments | perl -pe 's/\%.*(\\n|$)//g'\fi
@@ -1097,7 +1120,7 @@ print '\endinput';
\iexec[quiet,null]{cp "\eolang@tmpdir/\jobname/phiq.tex"
"\eolang@tmpdir/\jobname/\hash-phiq.tex"}%
\iexec[trace,stdout=\eolang@tmpdir/\jobname/\hash-phiq-post.tex]{
- perl \eolang@tmpdir/eolang-phi.pl 'phiq'
+ perl \eolang@tmpdir/\jobname-phi.pl 'phiq'
"\eolang@tmpdir/\jobname/\hash-phiq.tex"
\ifdefined\eolang@nocomments | perl -pe 's/\%.*(\\n|$)//g' \fi}%
}%
@@ -1120,7 +1143,7 @@ print '\endinput';
% \end{macrocode}
% \end{macro}
-% \begin{macro}{eolang-sodg.pl}
+% \begin{macro}{-sodg.pl}
% \changes{0.0.2}{2022/10/24}{The Perl file now has a fixed name, which doesn't depend on the name of the TeX job. This file may be shared among jobs, no need to make it uniquely named.}
% \changes{0.1.0}{2022/10/26}{There are two Perl scripts now: one for \texttt{phiquation}, another one for \texttt{sodg}.}
% \changes{0.2.0}{2022/10/28}{The content of the \texttt{atom} and the \texttt{data} boxes is parsed automatically as formulas and numbers, respectively.}
@@ -1140,7 +1163,13 @@ print '\endinput';
% \href{https://ctan.org/pkg/fancyvrb}{fancyvrb}:
% \begin{macrocode}
\makeatletter
-\begin{VerbatimOut}{\eolang@tmpdir/eolang-sodg.pl}
+\openin 15=\eolang@tmpdir/\jobname-sodg.pl
+\ifeof 15
+\message{eolang: Perl script is going to be created,
+ because it is absent at "\eolang@tmpdir/\jobname-sodg.pl",
+ but if -shell-escape is not set, the compilation will
+ most likely fail now^^J}
+\begin{VerbatimOut}{\eolang@tmpdir/\jobname-sodg.pl}
sub num {
my ($i) = @_;
$i =~ s/(\+|-)\./\10./g;
@@ -1413,7 +1442,12 @@ print '% --- (' . (0+@cmds) . " lines)\n";
print '\endinput';
\end{VerbatimOut}
\message{eolang: File with Perl script
- '\eolang@tmpdir/eolang-sodg.pl' saved^^J}%
+ '\eolang@tmpdir/\jobname-sodg.pl' saved^^J}
+\else
+ \message{eolang: Perl script already exists at
+ "\eolang@tmpdir/\jobname-sodg.pl"^^J}
+\fi
+\closein 15
\makeatother
% \end{macrocode}
% \end{macro}
@@ -1559,7 +1593,7 @@ print '\endinput';
"\eolang@tmpdir/\jobname/\hash.tex"}%
\message{eolang: Start parsing `sodg' at line no. \the\inputlineno^^J}
\iexec[trace,stdout=\eolang@tmpdir/\jobname/\hash-sodg-post.tex]{
- perl "\eolang@tmpdir/eolang-sodg.pl"
+ perl "\eolang@tmpdir/\jobname-sodg.pl"
"\eolang@tmpdir/\jobname/\hash.tex"
\ifdefined\eolang@nocomments | perl -pe 's/\%.*(\\n|$)//g'\fi
\ifdefined\eolang@sodgSaveTo > \eolang@sodgSaveTo\fi}%
diff --git a/macros/latex/contrib/eolang/eolang.pdf b/macros/latex/contrib/eolang/eolang.pdf
index c970e3b189..759f2c3ac6 100644
--- a/macros/latex/contrib/eolang/eolang.pdf
+++ b/macros/latex/contrib/eolang/eolang.pdf
Binary files differ
diff --git a/macros/latex/contrib/nicematrix/nicematrix-code.dtx b/macros/latex/contrib/nicematrix/nicematrix-code.dtx
index cfb0eb00d0..dea9c0ecd7 100644
--- a/macros/latex/contrib/nicematrix/nicematrix-code.dtx
+++ b/macros/latex/contrib/nicematrix/nicematrix-code.dtx
@@ -2,7 +2,7 @@
%
% This file should be compiled with $xelatex$.
%
-% Copyright (C) 2018-2023 by F. Pantigny
+% Copyright (C) 2018-2024 by F. Pantigny
% ------------------------------------------
%
% This file may be distributed and/or modified under the
@@ -17,8 +17,8 @@
%
% \fi
% \iffalse
-\def\myfileversion{6.26b}
-\def\myfiledate{2023/12/13}
+\def\myfileversion{6.26c}
+\def\myfiledate{2024/01/02}
%
%
%<*batchfile>
@@ -29,7 +29,7 @@
\preamble
-Copyright (C) 2018-2023 by F. Pantigny
+Copyright (C) 2018-2024 by F. Pantigny
-----------------------------------
This file may be distributed and/or modified under the
@@ -121,7 +121,7 @@ version 2005/12/01 or later.
% \pkg{nicematrix} relies upon the fact that the package |{array}| uses
% |\ialign| to begin the |\halign|.
%
-%
+%
% \bigskip
% \section{Declaration of the package and packages loaded}
%
@@ -1821,15 +1821,15 @@ version 2005/12/01 or later.
% argument of |\tabularnote|.}
% \item During the composition of the main tabular, the tabular notes will be
% numbered from |\g_@@_notes_caption_int|+1 and the notes will be stored in
-% |\g_@@_notes_seq|. Each composant of |\g_@@_notes_seq| will be a kind of
+% |\g_@@_notes_seq|. Each component of |\g_@@_notes_seq| will be a kind of
% couple of the form : \texttt{\{\textsl{label}\}\{\textsl{text of the
-% tabularnote}\}}. The first composante is the optional argument (between square
+% tabularnote}\}}. The first component is the optional argument (between square
% brackets) of the command |\tabularnote| (if the optional argument is not used,
% the value will be the special marker |\c_novalue_tl|).
% \item During the composition of the caption (value of |\l_@@_caption_tl|), the
% tabular notes will be numbered from $1$ to |\g_@@_notes_caption_int| and the
% notes themselves will be stored in |\g_@@_notes_in_caption_seq|. The structure
-% of the composantes of that sequence will be the same as for |\g_@@_notes_seq|.
+% of the components of that sequence will be the same as for |\g_@@_notes_seq|.
% \item After the composition of the main tabular and after the composition of
% the caption, the sequences |\g_@@_notes_in_caption_seq| and |\g_@@_notes_seq|
% will be merged (in that order) and the notes will be composed.
@@ -1973,6 +1973,11 @@ version 2005/12/01 or later.
}
% \end{macrocode}
%
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_test_first_novalue:nnn #1 #2 #3
+ { \tl_if_novalue:nT { #1 } { #3 } }
+% \end{macrocode}
+%
% \bigskip
% For the version in normal conditions, that is to say not in the |caption|.
% |#1| is the optional argument of |\tabularnote| (maybe equal to the special
@@ -1998,12 +2003,20 @@ version 2005/12/01 or later.
% \end{center}
% If the user have used |\tabularnote| without the optional argument, the
% \texttt{\textsl{label}} will be the special marker |\c_novalue_tl|.
+%
+% When we will go through the sequence |\g_@@_notes_seq|, we will count in
+% |\l_tmpb_int| the notes without explicit label in order to have the
+% ``current'' value of the counter |\c@tabularnote|.
% \begin{macrocode}
+ \int_zero:N \l_tmpb_int
\seq_map_indexed_inline:Nn \g_@@_notes_seq
{
+ \@@_test_first_novalue:nnn ##2 { \int_incr:N \l_tmpb_int }
\tl_if_eq:nnT { { #1 } { #2 } } { ##2 }
- {
- \int_set:Nn \l_tmpa_int { ##1 }
+ {
+ \tl_if_novalue:nTF { #1 }
+ { \int_set_eq:NN \l_tmpa_int \l_tmpb_int }
+ { \int_set:Nn \l_tmpa_int { ##1 } }
\seq_map_break:
}
}
@@ -4536,7 +4549,7 @@ version 2005/12/01 or later.
% Now, we prepare the token list for the instructions that we will have to write
% on the |aux| file at the end of the environment.
% \begin{macrocode}
- \tl_build_gbegin:N \g_@@_aux_tl
+ \tl_gclear:N \g_@@_aux_tl
% \end{macrocode}
%
% \begin{macrocode}
@@ -4609,7 +4622,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\int_compare:nNnT \g_@@_total_X_weight_int > \c_zero_int
{
- \tl_build_gput_right:Nx \g_@@_aux_tl
+ \tl_gput_right:Nx \g_@@_aux_tl
{
\bool_set_true:N \l_@@_X_columns_aux_bool
\dim_set:Nn \l_@@_X_columns_dim
@@ -4804,7 +4817,6 @@ version 2005/12/01 or later.
% We write on the |aux| file all the informations corresponding to the
% current environment.
% \begin{macrocode}
- \tl_build_gend:N \g_@@_aux_tl
\iow_now:Nn \@mainaux { \ExplSyntaxOn }
\iow_now:Nn \@mainaux { \char_set_catcode_space:n { 32 } }
\iow_now:Nx \@mainaux
@@ -6410,7 +6422,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\int_compare:nNnT \g_@@_notes_caption_int > \c_zero_int
{
- \tl_build_gput_right:Nx \g_@@_aux_tl
+ \tl_gput_right:Nx \g_@@_aux_tl
{
\tl_set:Nn \exp_not:N \l_@@_note_in_caption_tl
{ \int_use:N \g_@@_notes_caption_int }
@@ -7637,7 +7649,7 @@ version 2005/12/01 or later.
%
% \medskip
% \begin{macrocode}
- \tl_build_gput_right:Nx \g_@@_aux_tl
+ \tl_gput_right:Nx \g_@@_aux_tl
{
\seq_gset_from_clist:Nn \exp_not:N \g_@@_size_seq
{
@@ -7656,7 +7668,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\seq_if_empty:NF \g_@@_pos_of_blocks_seq
{
- \tl_build_gput_right:Nx \g_@@_aux_tl
+ \tl_gput_right:Nx \g_@@_aux_tl
{
\seq_gset_from_clist:Nn \exp_not:N \g_@@_pos_of_blocks_seq
{ \seq_use:Nnnn \g_@@_pos_of_blocks_seq , , , }
@@ -7664,7 +7676,7 @@ version 2005/12/01 or later.
}
\seq_if_empty:NF \g_@@_multicolumn_cells_seq
{
- \tl_build_gput_right:Nx \g_@@_aux_tl
+ \tl_gput_right:Nx \g_@@_aux_tl
{
\seq_gset_from_clist:Nn \exp_not:N \g_@@_multicolumn_cells_seq
{ \seq_use:Nnnn \g_@@_multicolumn_cells_seq , , , }
@@ -7872,7 +7884,7 @@ version 2005/12/01 or later.
\seq_if_empty:NF \g_@@_rowlistcolors_seq { \@@_clear_rowlistcolors_seq: }
\tl_if_empty:NF \g_@@_pre_code_before_tl
{
- \tl_build_gput_right:Nx \g_@@_aux_tl
+ \tl_gput_right:Nx \g_@@_aux_tl
{
\tl_gset:Nn \exp_not:N \g_@@_pre_code_before_tl
{ \exp_not:o \g_@@_pre_code_before_tl }
@@ -7881,7 +7893,7 @@ version 2005/12/01 or later.
}
\tl_if_empty:NF \g_nicematrix_code_before_tl
{
- \tl_build_gput_right:Nx \g_@@_aux_tl
+ \tl_gput_right:Nx \g_@@_aux_tl
{
\tl_gset:Nn \exp_not:N \g_@@_code_before_tl
{ \exp_not:o \g_nicematrix_code_before_tl }
@@ -10060,10 +10072,8 @@ version 2005/12/01 or later.
\keys_define:nn { NiceMatrix / RowStyle }
{
cell-space-top-limit .dim_set:N = \l_tmpa_dim ,
- cell-space-top-limit .initial:n = \c_zero_dim ,
cell-space-top-limit .value_required:n = true ,
cell-space-bottom-limit .dim_set:N = \l_tmpb_dim ,
- cell-space-bottom-limit .initial:n = \c_zero_dim ,
cell-space-bottom-limit .value_required:n = true ,
cell-space-limits .meta:n =
{
@@ -10095,6 +10105,8 @@ version 2005/12/01 or later.
\tl_clear:N \l_tmpa_tl % value of \rowcolor
\tl_clear:N \l_@@_color_tl
\int_set_eq:NN \l_@@_key_nb_rows_int \c_one_int
+ \dim_zero:N \l_tmpa_dim
+ \dim_zero:N \l_tmpb_dim
\keys_set:nn { NiceMatrix / RowStyle } { #1 }
% \end{macrocode}
% If the key |rowcolor| has been used.
@@ -10135,15 +10147,16 @@ version 2005/12/01 or later.
% \begin{macrocode}
\dim_compare:nNnT \l_tmpa_dim > \c_zero_dim
{
- \@@_put_in_row_style:n
+ \exp_args:Nx \@@_put_in_row_style:n
{
- \exp_not:n
- {
- \tl_gput_right:Nn \g_@@_cell_after_hook_tl
- {
- \dim_set:Nn \l_@@_cell_space_top_limit_dim
- { \dim_use:N \l_tmpa_dim }
- }
+ \tl_gput_right:Nn \exp_not:N \g_@@_cell_after_hook_tl
+ {
+% \end{macrocode}
+% It's not possible to chanage the following code by using |\dim_set_eq:NN|
+% (because of expansion).
+% \begin{macrocode}
+ \dim_set:Nn \l_@@_cell_space_top_limit_dim
+ { \dim_use:N \l_tmpa_dim }
}
}
}
@@ -10152,15 +10165,12 @@ version 2005/12/01 or later.
% \begin{macrocode}
\dim_compare:nNnT \l_tmpb_dim > \c_zero_dim
{
- \@@_put_in_row_style:n
+ \exp_args:Nx \@@_put_in_row_style:n
{
- \exp_not:n
- {
- \tl_gput_right:Nn \g_@@_cell_after_hook_tl
- {
- \dim_set:Nn \l_@@_cell_space_bottom_limit_dim
- { \dim_use:N \l_tmpb_dim }
- }
+ \tl_gput_right:Nn \exp_not:N \g_@@_cell_after_hook_tl
+ {
+ \dim_set:Nn \l_@@_cell_space_bottom_limit_dim
+ { \dim_use:N \l_tmpb_dim }
}
}
}
@@ -12345,7 +12355,7 @@ version 2005/12/01 or later.
% commands which color the |rows|, |columns| and |cells| must not color the
% cells in the corners.
% \begin{macrocode}
- \tl_build_gput_right:Nx \g_@@_aux_tl
+ \tl_gput_right:Nx \g_@@_aux_tl
{
\seq_set_from_clist:Nn \exp_not:N \l_@@_corners_cells_seq
{ \seq_use:Nnnn \l_@@_corners_cells_seq , , , }
@@ -17156,6 +17166,7 @@ version 2005/12/01 or later.
left-margin,~
light-syntax,~
matrix/columns-type,~
+ no-cell-nodes,~
notes~(several~subkeys),~
nullify-dots,~
pgf-node-code,~
@@ -17214,6 +17225,7 @@ version 2005/12/01 or later.
left-margin,~
light-syntax,~
name,~
+ no-cell-nodes,~
nullify-dots,~
pgf-node-code,~
renew-dots,~
@@ -17278,6 +17290,7 @@ version 2005/12/01 or later.
left-margin,~
light-syntax,~
name,~
+ no-cell-nodes,~
nullify-dots,~
pgf-node-code,~
r,~
@@ -17340,6 +17353,7 @@ version 2005/12/01 or later.
left-margin,~
light-syntax,~
name,~
+ no-cell-nodes,~
notes~(several~subkeys),~
nullify-dots,~
pgf-node-code,~
diff --git a/macros/latex/contrib/nicematrix/nicematrix-code.pdf b/macros/latex/contrib/nicematrix/nicematrix-code.pdf
new file mode 100644
index 0000000000..f05f5fc311
--- /dev/null
+++ b/macros/latex/contrib/nicematrix/nicematrix-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/nicematrix/nicematrix-french.pdf b/macros/latex/contrib/nicematrix/nicematrix-french.pdf
index 456c820b75..5245e44dce 100644
--- a/macros/latex/contrib/nicematrix/nicematrix-french.pdf
+++ b/macros/latex/contrib/nicematrix/nicematrix-french.pdf
Binary files differ
diff --git a/macros/latex/contrib/nicematrix/nicematrix-french.tex b/macros/latex/contrib/nicematrix/nicematrix-french.tex
index 64ac62e240..3ba956b397 100644
--- a/macros/latex/contrib/nicematrix/nicematrix-french.tex
+++ b/macros/latex/contrib/nicematrix/nicematrix-french.tex
@@ -316,6 +316,10 @@ $\begin{pNiceMatrix}
\end{pNiceMatrix}$
\end{scope}
+\bigskip
+Il est également possible de changer ces paramètres pour certaines lignes
+seulement grâce à la commande |\RowStyle| (cf.~p.~\pageref{RowStyle}).
+
\medskip
\section{La clé baseline}
@@ -1780,10 +1784,6 @@ Rappelons que l'extension \pkg{colortbl} peut être chargée directement par
\texttt{table} : |\usepackage[table]{xcolor}|.
\medskip
-Comme l'extension \pkg{nicematrix} est fondée sur \pkg{array}, il est possible
-d'utiliser \pkg{colortbl} avec \pkg{nicematrix}.
-
-\medskip
Il y a néanmoins deux inconvénients :
\begin{itemize}
\item L'extension \pkg{colortbl} patche \pkg{array}, ce qui entraîne des
@@ -5199,6 +5199,7 @@ environnement de \pkg{nicematrix}, elle est sans effet.
Pour un exemple d'utilisation, voir \url{tex.stackexchange.com/questions/488566}
+
\section{Utilisation de TikZ avec nicematrix}
\label{name}\label{PGF-nodes}
@@ -5207,6 +5208,8 @@ Pour un exemple d'utilisation, voir \url{tex.stackexchange.com/questions/488566}
\subsection{Les nœuds correspondant aux contenus des cases}
+\index{no-cell-nodes}
+
L'extension \pkg{nicematrix} crée un nœud PGF-TikZ\footnote{On rappelle que TikZ
est une sur-couche de PGF. L'extension \pkg{nicematrix} charge PGF et ne
charge pas TikZ. On parle de «nœud PGF-TikZ» pour rappeler que, en fait, les
@@ -5225,6 +5228,11 @@ lignes pointillées (cf.~p.~\pageref{Cdots}) et la détermination des «coins»
(cf. p.~\pageref{corners}).}
\medskip
+Comme la création de ces nœuds requiert du temps et de la mémoire, il est
+possible de la désactiver ponctuellement avec la clé |no-cell-nodes| pour
+accéler les compilations.
+
+\medskip
Tous les nœuds du document doivent avoir des noms deux à deux distincts et le
nom de ces nœuds doit donc faire intervenir le numéro de l'environnement
courant. Les environnements créés par \pkg{nicematrix} sont en effet numérotés
diff --git a/macros/latex/contrib/nicematrix/nicematrix.ins b/macros/latex/contrib/nicematrix/nicematrix.ins
index 171d3f7449..88bb4d6754 100644
--- a/macros/latex/contrib/nicematrix/nicematrix.ins
+++ b/macros/latex/contrib/nicematrix/nicematrix.ins
@@ -1,5 +1,5 @@
%%
-%% Copyright (C) 2018-2023 by F. Pantigny
+%% Copyright (C) 2018-2024 by F. Pantigny
%%
%%
%% This file may be distributed and/or modified under the
@@ -17,7 +17,7 @@
\usedir{tex/latex/nicematrix}
\preamble
-Copyright (C) 2018-2023 by F. Pantigny
+Copyright (C) 2018-2024 by F. Pantigny
This file may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either
diff --git a/macros/latex/contrib/nicematrix/nicematrix.pdf b/macros/latex/contrib/nicematrix/nicematrix.pdf
index cc1afcb859..e1f5e455dd 100644
--- a/macros/latex/contrib/nicematrix/nicematrix.pdf
+++ b/macros/latex/contrib/nicematrix/nicematrix.pdf
Binary files differ
diff --git a/macros/latex/contrib/nicematrix/nicematrix.tex b/macros/latex/contrib/nicematrix/nicematrix.tex
index 10dd6c789a..e1cd2af742 100644
--- a/macros/latex/contrib/nicematrix/nicematrix.tex
+++ b/macros/latex/contrib/nicematrix/nicematrix.tex
@@ -288,7 +288,9 @@ $\begin{pNiceMatrix}
\end{pNiceMatrix}$
\end{scope}
-
+\bigskip
+It's also possible to change these parameters for only a few rows by using the
+command |\RowStyle| provided by \pkg{nicematrix} (cf.~p.~\pageref{RowStyle}).
@@ -1728,10 +1730,6 @@ We recall that the package \pkg{colortbl} can be loaded directly with
|\usepackage[table]{xcolor}|.
\medskip
-Since the package \pkg{nicematrix} is based on \pkg{array}, it's possible to
-use \pkg{colortbl} with \pkg{nicematrix}.
-
-\medskip
However, there is two drawbacks:
\begin{itemize}
\item The package \pkg{colortbl} patches \pkg{array}, leading to some
@@ -5095,10 +5093,12 @@ For an example of utilisation, see \url{tex.stackexchange.com/questions/488566}
\label{name}\label{PGF-nodes}
\index{tikza@TikZ (utilisation with \pkg{nicematrix})}
-\index{node@\textbf{Nodes of PGF/TikZ|}(}
+\index{node@\textbf{Nodes of PGF/TikZ}|(}
\subsection{The nodes corresponding to the contents of the cells}
+\index{no-cell-nodes}
+
The package \pkg{nicematrix} creates a PGF/TikZ node\footnote{We recall that TikZ
is a layer over PGF. The extension \pkg{nicematrix} loads PGF but does not
load TikZ. We speak of PGF/TikZ nodes to emphase the fact that the PGF nodes
@@ -5119,6 +5119,11 @@ lines (cf. p.~\pageref{Cdots}) and the computation of the ``corners''
(cf.~p.~\pageref{corners}).}
\medskip
+The creation of those nodes needs time and memory. It's possible to desactive
+ponctually the creation of those nodes with the key |no-cell-nodes| in order to
+speed up the compilations.
+
+\medskip
The nodes of a document must have distinct names. That's why the names of the
nodes created by \pkg{nicematrix} contains the number of the current
environment. Indeed, the environments of \pkg{nicematrix} are numbered by a
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
index 21a32e22f8..7928e78fef 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
index 0dfda9ed87..806a31ab3b 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
@@ -5,8 +5,8 @@
% arara: lualatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)')
\documentclass[a4paper,french,11pt]{article}
-\def\PLversion{3.01a}
-\def\PLdate{6 décembre 2023}
+\def\PLversion{3.01b}
+\def\PLdate{2 janvier 2024}
\usepackage{amsfonts}
\usepackage{ProfLycee}
\useproflyclib{piton,minted,pythontex,ecritures}
diff --git a/macros/latex/contrib/proflycee/tex/ProfLycee.sty b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
index 6d2d836957..d1c9f5a086 100644
--- a/macros/latex/contrib/proflycee/tex/ProfLycee.sty
+++ b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
@@ -3,7 +3,8 @@
% or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ProfLycee}[2023/12/06 3.01a Aide pour l'utilisation de LaTeX en lycee]
+\ProvidesPackage{ProfLycee}[2024/01/02 3.01b Aide pour l'utilisation de LaTeX en lycee]
+% 3.01b Ajout de la division euclidienne + correction du bugs mineurs
% 3.01a Ajout des courbes ECC/FCC + paramètres par interpolation
% 3.00g Amélioration de la marge Gauche dans le PseudoCode
% 3.00f Conversion d'une écriture décimale périodique en fraction (avec rédaction éventuelle)
@@ -187,6 +188,8 @@
\input{proflycee-tools-aleatoire.tex}
%%------Suites
\input{proflycee-tools-suites.tex}
+%%------Complexes
+\input{proflycee-tools-complexes.tex}
%%------Géométrie
\input{proflycee-tools-geom.tex}
%%------Récréations diverses
diff --git a/macros/latex/contrib/proflycee/tex/proflycee-tools-analyse.tex b/macros/latex/contrib/proflycee/tex/proflycee-tools-analyse.tex
index 00f6f0206a..90672aaf1d 100644
--- a/macros/latex/contrib/proflycee/tex/proflycee-tools-analyse.tex
+++ b/macros/latex/contrib/proflycee/tex/proflycee-tools-analyse.tex
@@ -2,6 +2,8 @@
% Copyright 2023 Cédric Pierquet
% Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
+%Correction d'un bug sur la raacine carrée... le cas où ça fait 1 !
+
%%------SimplFrac nouvelle version
\NewDocumentCommand\ConversionFraction{ s O{} m }{%
%*=moins sur le numérateur
@@ -295,43 +297,49 @@
%%------SIMPLIFRACINES
\DeclareDocumentCommand\SimplificationRacine{ m }{% argument mandataire {calcul ou fraction}
\xdef\calculargument{\xintIrr{\xinteval{#1}}}%
- \IfEndWith{\calculargument}{/1}%
- {%si c'est un entier !
- \xdef\calculargument{\xintiieval{#1}}%
- \xdef\ExtractRacStop{\xintiFloor{\xintfloateval{sqrt(\calculargument)}}}%
- \xintFor* ##1 in {\xintSeq{1}{\ExtractRacStop}}\do{%
- \xintifboolexpr{ \xintiiRem{\calculargument}{\xintiieval{##1*##1}} == 0}%si le carré divise
- {\xdef\ExtractRacID{##1}}%
- {}%
- }%
- \xdef\ExtracReste{\xintiieval{\calculargument/(\ExtractRacID*\ExtractRacID)}}%
- \ensuremath{\xintifboolexpr{\ExtractRacID == 1 && \ExtracReste == 1}%
- {1}%
- { \xintifboolexpr{\ExtractRacID == 1}{}{\num{\xintiieval{\ExtractRacID}}}%
- \xintifboolexpr{\ExtracReste == 1}{}{\sqrt{\num{\ExtracReste}}} }}%
-% }%
- }%
- {%on va mettre sous forme a\sqrt(d)/b := buggue avec des millièmes...
- \StrBefore{\calculargument}{/}[\numerateur]%on extrait le numérateur
- \StrBehind{\calculargument}{/}[\denominateur]%on extrait le dénominateur
- \xdef\ExtractRacNNum{\xintiieval{\numerateur*\denominateur}}%
- \xdef\ExtractRacStop{\xintiFloor{\xintfloateval{sqrt(\ExtractRacNNum)}}}%
- \xintFor* ##1 in {\xintSeq{1}{\ExtractRacStop}}\do{%
- \xintifboolexpr{ \xintiiRem{\ExtractRacNNum}{\xintiieval{##1*##1}} == 0}%si le carré divise
- {\xdef\ExtractRacID{##1}}%
- {}
+ \xintifboolexpr{\calculargument == 1}%
+ {%
+ \ensuremath{1}%
}%
- \xdef\ExtractRacGCD{\xintiiGCD{\ExtractRacID}{\denominateur}}%
- \xdef\RacNumSimpl{\xintiieval{\ExtractRacID/\ExtractRacGCD}}%simpl num
- \xdef\RacDenomSimpl{\xintiieval{\denominateur/\ExtractRacGCD}}%
- \xdef\RacRacSimpl{\xintiieval{\ExtractRacNNum/(\ExtractRacID*\ExtractRacID)}}%
- \ensuremath{\frac{%
- \xintifboolexpr{\RacNumSimpl == 1 && \RacRacSimpl == 1}%
- {1}%
- { \xintifboolexpr{\RacNumSimpl == 1}{}{\RacNumSimpl} \xintifboolexpr{\RacRacSimpl == 1}{}{\sqrt{\num{\RacRacSimpl}}} }%
+ {%
+ \IfEndWith{\calculargument}{/1}%
+ {%si c'est un entier !
+ \xdef\calculargument{\xintiieval{#1}}%
+ \xdef\ExtractRacStop{\xintiFloor{\xintfloateval{sqrt(\calculargument)}}}%
+ \xintFor* ##1 in {\xintSeq{1}{\ExtractRacStop}}\do{%
+ \xintifboolexpr{ \xintiiRem{\calculargument}{\xintiieval{##1*##1}} == 0}%si le carré divise
+ {\xdef\ExtractRacID{##1}}%
+ {}%
+ }%
+ \xdef\ExtracReste{\xintiieval{\calculargument/(\ExtractRacID*\ExtractRacID)}}%
+ \ensuremath{\xintifboolexpr{\ExtractRacID == 1 && \ExtracReste == 1}%
+ {1}%
+ { \xintifboolexpr{\ExtractRacID == 1}{}{\num{\xintiieval{\ExtractRacID}}}%
+ \xintifboolexpr{\ExtracReste == 1}{}{\sqrt{\num{\ExtracReste}}} }}%
+ % }%
+ }%
+ {%on va mettre sous forme a\sqrt(d)/b := buggue avec des millièmes...
+ \StrBefore{\calculargument}{/}[\numerateur]%on extrait le numérateur
+ \StrBehind{\calculargument}{/}[\denominateur]%on extrait le dénominateur
+ \xdef\ExtractRacNNum{\xintiieval{\numerateur*\denominateur}}%
+ \xdef\ExtractRacStop{\xintiFloor{\xintfloateval{sqrt(\ExtractRacNNum)}}}%
+ \xintFor* ##1 in {\xintSeq{1}{\ExtractRacStop}}\do{%
+ \xintifboolexpr{ \xintiiRem{\ExtractRacNNum}{\xintiieval{##1*##1}} == 0}%si le carré divise
+ {\xdef\ExtractRacID{##1}}%
+ {}
}%
- { \RacDenomSimpl }}%
- }%
+ \xdef\ExtractRacGCD{\xintiiGCD{\ExtractRacID}{\denominateur}}%
+ \xdef\RacNumSimpl{\xintiieval{\ExtractRacID/\ExtractRacGCD}}%simpl num
+ \xdef\RacDenomSimpl{\xintiieval{\denominateur/\ExtractRacGCD}}%
+ \xdef\RacRacSimpl{\xintiieval{\ExtractRacNNum/(\ExtractRacID*\ExtractRacID)}}%
+ \ensuremath{\frac{%
+ \xintifboolexpr{\RacNumSimpl == 1 && \RacRacSimpl == 1}%
+ {1}%
+ { \xintifboolexpr{\RacNumSimpl == 1}{}{\RacNumSimpl} \xintifboolexpr{\RacRacSimpl == 1}{}{\sqrt{\num{\RacRacSimpl}}} }%
+ }%
+ { \RacDenomSimpl }}%
+ }%
+ }%
}
%%------DICHOTOMIE
@@ -631,6 +639,8 @@
%clés
\restoreKV[FracPeriod]% revenir au valeurs par défaut
\setKV[FracPeriod]{#1}% lit les arguments optionnels
+ %vmode ?
+ \ifvmode\leavevmode\fi%
%les variables utiles
\IfEndWith{#2}{.}%
{%
diff --git a/macros/latex/contrib/proflycee/tex/proflycee-tools-arithm.tex b/macros/latex/contrib/proflycee/tex/proflycee-tools-arithm.tex
index cabba276fb..9b2d9eb653 100644
--- a/macros/latex/contrib/proflycee/tex/proflycee-tools-arithm.tex
+++ b/macros/latex/contrib/proflycee/tex/proflycee-tools-arithm.tex
@@ -502,11 +502,11 @@
\xintFor* ##1 in {\xintSeq{2}{\argcal}}\do{%
\xintifboolexpr{ \xintiiRem{\argcal}{##1} == 0 }%
{%
- \xdef\tmplistdiv{\tmplistdiv /\num{##1}}
+ \xdef\tmplistdiv{\tmplistdiv /\num{##1}}%
}%
{}%
}%
- \ensuremath{\ifboolKV[listdiv]{AffNom}{\IfBooleanTF{#1}{\mathscr{D}}{\mathcal{D}}_{\num{\argcal}}=}{}\EcritureEnsemble[\strut]{\tmplistdiv}}
+ \ensuremath{\ifboolKV[listdiv]{AffNom}{\IfBooleanTF{#1}{\mathscr{D}}{\mathcal{D}}_{\num{\argcal}}=}{}\EcritureEnsemble[\strut]{\tmplistdiv}}%
}
%arbre diviseurs
@@ -913,4 +913,24 @@
}%
}
+%====DIV EUCL (OK)
+\setKVdefault[diveucl]{%
+ Quotient=true,%
+ Reste=true,%
+ Vide=false,%
+ Pointilles=\ldots
+}
+\NewDocumentCommand\DivEucl{ s O{} m m }{%
+ \restoreKV[diveucl]%
+ \setKV[diveucl]{#2}%
+ \ifboolKV[diveucl]{Vide}%
+ {%
+ \setKV[diveucl]{Quotient=false,Reste=false}%
+ }%
+ {}%
+ \xdef\tmp@quotient{\xintiiQuo{#3}{#4}}\xdef\tmp@reste{\xintiiRem{#3}{#4}}%
+ \ensuremath{\num{#3}=\num{#4}\times\ifboolKV[diveucl]{Quotient}{\xintifboolexpr{\tmp@quotient < 0}{(\num{\tmp@quotient})}{\num{\tmp@quotient}}}{\useKV[diveucl]{Pointilles}}+\ifboolKV[diveucl]{Reste}{\num{\tmp@reste}}{\useKV[diveucl]{Pointilles}}}%
+ \IfBooleanT{#1}{~avec $0 \leqslant \num{\xintiiRem{#3}{#4}} < \xintifboolexpr{#4 < 0}{\lvert\num{#4}\rvert}{\num{#4}}$}%
+}
+
\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/proflycee/tex/proflycee-tools-complexes.tex b/macros/latex/contrib/proflycee/tex/proflycee-tools-complexes.tex
new file mode 100644
index 0000000000..ca64c0ac40
--- /dev/null
+++ b/macros/latex/contrib/proflycee/tex/proflycee-tools-complexes.tex
@@ -0,0 +1,609 @@
+% proflycee-tools-complexes.tex
+% Copyright 2023 Cédric Pierquet
+% Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
+
+\NewDocumentCommand\PartieReelle{ D<>{} m O{\PartReRes} }{%
+ \StrSubstitute{#2}{I}{0}[#3]%
+ \IfEq{#1}{n}%
+ {\ensuremath{\num{\xinteval{#3}}}}{}%
+ \IfEq{#1}{f}%
+ {\ensuremath{\ConversionFraction{#3}}}{}%
+ \IfEq{#1}{df}%
+ {\ensuremath{\ConversionFraction[d]{#3}}}{}%
+}
+\NewDocumentCommand\PartieImaginaire{ D<>{} m O{\PartImRes} }{%
+ \StrSubstitute{#2}{I}{0}[\TmpPartReCplxA]%
+ \StrSubstitute{(#2)-(\TmpPartReCplxA)}{I}{1}[#3]%
+ \IfEq{#1}{n}%
+ {\ensuremath{\num{\xinteval{#3}}}}{}%
+ \IfEq{#1}{f}%
+ {\ensuremath{\ConversionFraction{#3}}}{}%
+ \IfEq{#1}{df}%
+ {\ensuremath{\ConversionFraction[d]{#3}}}{}%
+}
+
+\NewDocumentCommand\AffComplexe{ O{} }{%
+ \ensuremath{%
+ \xintifboolexpr{\xinttmpreCalc == 0 'and' \xinttmpimCalc == 0}{0}{}%
+ \xintifboolexpr{\xinttmpreCalc == 0 'and' \xinttmpimCalc == 1}{\i}{}%
+ \xintifboolexpr{\xinttmpreCalc == 0 'and' \xinttmpimCalc == -1}{-\i}{}%
+ \xintifboolexpr{\xinttmpreCalc == 0 'and' abs(\xinttmpimCalc) != 1 'and' \xinttmpimCalc != 0}{\ConversionFraction[#1]{\tmpimCalc}\i}{}%
+ \xintifboolexpr{\xinttmpreCalc != 0 'and' \xinttmpimCalc < 0 'and' \xinttmpimCalc != -1}{\ConversionFraction[#1]{\tmpreCalc}-\ConversionFraction[#1]{-(\tmpimCalc)}\i}{}%
+ \xintifboolexpr{\xinttmpreCalc != 0 'and' \xinttmpimCalc == -1}{\ConversionFraction[#1]{\tmpreCalc}-\i}{}%
+ \xintifboolexpr{\xinttmpreCalc != 0 'and' \xinttmpimCalc == 1}{\ConversionFraction[#1]{\tmpreCalc}+\i}{}%
+ \xintifboolexpr{\xinttmpreCalc != 0 'and' \xinttmpimCalc > 0 'and' \xinttmpimCalc != 1}{\ConversionFraction[#1]{\tmpreCalc}+\ConversionFraction[#1]{\tmpimCalc}\i}{}%
+ \xintifboolexpr{\xinttmpreCalc != 0 'and' \xinttmpimCalc == 0}{\ConversionFraction[#1]{\tmpreCalc}}{}%
+ }%
+}
+
+\NewDocumentCommand\Complexe{ O{} m }{%
+ \PartieReelle{#2}[\tmpreA]%
+ \PartieImaginaire{#2}[\tmpimA]%
+ \xdef\xinttmpreCalc{\xinteval{\tmpreA}}%
+ \xdef\xinttmpimCalc{\xinteval{\tmpimA}}%
+ \ensuremath{%
+ \xintifboolexpr{\xinttmpreCalc == 0 'and' \xinttmpimCalc == 0}{0}{}%
+ \xintifboolexpr{\xinttmpreCalc == 0 'and' \xinttmpimCalc == 1}{\i}{}%
+ \xintifboolexpr{\xinttmpreCalc == 0 'and' \xinttmpimCalc == -1}{-\i}{}%
+ \xintifboolexpr{\xinttmpreCalc == 0 'and' abs(\xinttmpimCalc) != 1 'and' \xinttmpimCalc != 0}{\ConversionFraction[#1]{\tmpimA}\i}{}%
+ \xintifboolexpr{\xinttmpreCalc != 0 'and' \xinttmpimCalc < 0 'and' \xinttmpimCalc != -1}{\ConversionFraction[#1]{\tmpreA}-\ConversionFraction[#1]{-(\tmpimA)}\i}{}%
+ \xintifboolexpr{\xinttmpreCalc != 0 'and' \xinttmpimCalc == -1}{\ConversionFraction[#1]{\tmpreA}-\i}{}%
+ \xintifboolexpr{\xinttmpreCalc != 0 'and' \xinttmpimCalc == 1}{\ConversionFraction[#1]{\tmpreA}+\i}{}%
+ \xintifboolexpr{\xinttmpreCalc != 0 'and' \xinttmpimCalc > 0 'and' \xinttmpimCalc != 1}{\ConversionFraction[#1]{\tmpreA}+\ConversionFraction[#1]{\tmpimA}\i}{}%
+ \xintifboolexpr{\xinttmpreCalc != 0 'and' \xinttmpimCalc == 0}{\ConversionFraction[#1]{\tmpreA}}{}%
+ }%
+}
+
+\NewDocumentCommand\SommeComplexes{ O{} m m }{%
+ \PartieReelle{#2}[\tmpreA]%
+ \PartieReelle{#3}[\tmpreB]%
+ \PartieImaginaire{#2}[\tmpimA]%
+ \PartieImaginaire{#3}[\tmpimB]%
+ \xdef\tmpreCalc{(\tmpreA)+(\tmpreB)}%
+ \xdef\xinttmpreCalc{\xinteval{(\tmpreA)+(\tmpreB)}}%
+ \xdef\tmpimCalc{(\tmpimA)+(\tmpimB)}%
+ \xdef\xinttmpimCalc{\xinteval{(\tmpimA)+(\tmpimB)}}%
+ %\xinttmpreCalc\text{ et }\xinttmpimCalc.
+ \AffComplexe[#1]%
+}
+
+\NewDocumentCommand\ProduitComplexes{ O{} m m }{%
+ \PartieReelle{#2}[\tmpreA]%
+ \PartieReelle{#3}[\tmpreB]%
+ \PartieImaginaire{#2}[\tmpimA]%
+ \PartieImaginaire{#3}[\tmpimB]%
+ \xdef\tmpreCalc{(\tmpreA)*(\tmpreB)-(\tmpimA)*(\tmpimB)}%
+ \xdef\xinttmpreCalc{\xinteval{\tmpreCalc}}%
+ \xdef\tmpimCalc{(\tmpreA)*(\tmpimB)+(\tmpimA)*(\tmpreB)}%
+ \xdef\xinttmpimCalc{\xinteval{\tmpimCalc}}%
+ %\xinttmpreCalc\text{ et }\xinttmpimCalc.
+ \AffComplexe[#1]%
+}
+
+\NewDocumentCommand\QuotientComplexes{ O{} m m }{%
+ \PartieReelle{#2}[\tmpreA]%
+ \PartieReelle{#3}[\tmpreB]%
+ \PartieImaginaire{#2}[\tmpimA]%
+ \PartieImaginaire{#3}[\tmpimB]%
+ \xdef\tmpreCalc{((\tmpreA)*(\tmpreB)+(\tmpimA)*(\tmpimB))/((\tmpreB)*(\tmpreB)+(\tmpimB)*(\tmpimB))}%
+ \xdef\xinttmpreCalc{\xinteval{\tmpreCalc}}%
+ \xdef\tmpimCalc{(-(\tmpreA)*(\tmpimB)+(\tmpimA)*(\tmpreB))/((\tmpreB)*(\tmpreB)+(\tmpimB)*(\tmpimB))}%
+ \xdef\xinttmpimCalc{\xinteval{\tmpimCalc}}%
+ %\xinttmpreCalc\text{ et }\xinttmpimCalc.
+ \AffComplexe[#1]%
+}
+
+\NewDocumentCommand\CarreComplexe{ O{} m }{%
+ \PartieReelle{#2}[\tmpreA]%
+ \PartieImaginaire{#2}[\tmpimA]%
+ \xdef\tmpreCalc{(\tmpreA)*(\tmpreA)-(\tmpimA)*(\tmpimA)}%
+ \xdef\xinttmpreCalc{\xinteval{\tmpreCalc}}%
+ \xdef\tmpimCalc{2*(\tmpreA)*(\tmpimA)}%
+ \xdef\xinttmpimCalc{\xinteval{\tmpimCalc}}%
+ %\xinttmpreCalc\text{ et }\xinttmpimCalc.
+ \AffComplexe[#1]%
+}
+
+\NewDocumentCommand\CubeComplexe{ O{} m }{%
+ \PartieReelle{#2}[\tmpreA]%
+ \PartieImaginaire{#2}[\tmpimA]%
+ \xdef\tmpreCalc{(\tmpreA)*(\tmpreA)*(\tmpreA)-3*(\tmpreA)*(\tmpimA)*(\tmpimA)}%
+ \xdef\xinttmpreCalc{\xinteval{\tmpreCalc}}%
+ \xdef\tmpimCalc{3*(\tmpreA)*(\tmpreA)*(\tmpimA)-(\tmpimA)*(\tmpimA)*(\tmpimA)}%
+ \xdef\xinttmpimCalc{\xinteval{\tmpimCalc}}%
+ %\xinttmpreCalc\text{ et }\xinttmpimCalc.
+ \AffComplexe[#1]%
+}
+
+\NewDocumentCommand\ModuleComplexe{ m }{%
+ \PartieReelle{#1}[\tmpreA]%
+ \PartieImaginaire{#1}[\tmpimA]%
+ \IfSubStr{\tmpreA}{sqrt}%
+ {%
+ \StrDel{\tmpreA}{sqrt}[\tmpretmpA]%
+ }%
+ {%
+ \xdef\tmpretmpA{\tmpreA}%
+ }%
+ \IfSubStr{\tmpimA}{sqrt}%
+ {%
+ \StrDel{\tmpimA}{sqrt}[\tmpimtmpA]%
+ }%
+ {%
+ \xdef\tmpimtmpA{\tmpimA}%
+ }%
+ \IfSubStr{\tmpreA}{sqrt}%
+ {%
+ \IfSubStr{\tmpimA}{sqrt}%
+ {%
+ \xdef\tmpCarreModule{abs(\tmpretmpA)+abs(\tmpimtmpA)}%
+ }%
+ {%
+ \xdef\tmpCarreModule{abs(\tmpretmpA)+(\tmpimtmpA)*(\tmpimtmpA)}%
+ }%
+ }%
+ {%
+ \xdef\tmpCarreModule{(\tmpretmpA)*(\tmpretmpA)+(\tmpimtmpA)*(\tmpimtmpA)}%
+ }%
+ \ensuremath{\SimplificationRacine{\tmpCarreModule}}%
+}
+
+\NewDocumentCommand\ArgumentComplexe{ O{} m }{%
+ \PartieReelle{#2}[\tmpreA]%
+ \PartieImaginaire{#2}[\tmpimA]%
+ \xdef\tmpCarreModule{(\tmpreA)*(\tmpreA)+(\tmpimA)*(\tmpimA)}%
+ \xdef\tmpModUnRe{(\tmpreA)/(sqrt(\tmpCarreModule))}%
+ \xdef\tmpModUnIm{(\tmpimA)/(sqrt(\tmpCarreModule))}%
+ \ensuremath{%
+ \xintifboolexpr{\tmpModUnRe == 1 'and' \tmpModUnIm == 0}{0}{}%
+ \xintifboolexpr{\tmpModUnRe == -1 'and' \tmpModUnIm == 0}{\pi}{}%
+ \xintifboolexpr{\tmpModUnRe == 0.5 'and' \tmpModUnIm > 0}{\IfEq{#1}{d}{\dfrac{\pi}{3}}{\frac{\pi}{3}}}{}%
+ \xintifboolexpr{\tmpModUnRe == 0.5 'and' \tmpModUnIm < 0}{\IfEq{#1}{d}{\dfrac{-\pi}{3}}{\frac{-\pi}{3}}}{}%
+ \xintifboolexpr{\tmpModUnRe == -0.5 'and' \tmpModUnIm > 0}{\IfEq{#1}{d}{\dfrac{2\pi}{3}}{\frac{2\pi}{3}}}{}%
+ \xintifboolexpr{\tmpModUnRe == -0.5 'and' \tmpModUnIm < 0}{\IfEq{#1}{d}{\dfrac{-2\pi}{3}}{\frac{-2\pi}{3}}}{}%
+ \xintifboolexpr{\tmpModUnRe > 0 'and' \tmpModUnIm == 0.5}{\IfEq{#1}{d}{\dfrac{\pi}{6}}{\frac{\pi}{6}}}{}%
+ \xintifboolexpr{\tmpModUnRe < 0 'and' \tmpModUnIm == 0.5}{\IfEq{#1}{d}{\dfrac{5\pi}{6}}{\frac{5\pi}{6}}}{}%
+ \xintifboolexpr{\tmpModUnRe > 0 'and' \tmpModUnIm == -0.5}{\IfEq{#1}{d}{\dfrac{-\pi}{6}}{\frac{-\pi}{6}}}{}%
+ \xintifboolexpr{\tmpModUnRe < 0 'and' \tmpModUnIm == -0.5}{\IfEq{#1}{d}{\dfrac{-5\pi}{6}}{\frac{-5\pi}{6}}}{}%
+ \xintifboolexpr{\tmpModUnRe == \tmpModUnIm 'and' \tmpModUnRe > 0}{\IfEq{#1}{d}{\dfrac{\pi}{4}}{\frac{\pi}{4}}}{}%
+ \xintifboolexpr{\tmpModUnRe == \tmpModUnIm 'and' \tmpModUnRe < 0}{\IfEq{#1}{d}{\dfrac{-3\pi}{4}}{\frac{-3\pi}{4}}}{}%
+ \xintifboolexpr{\tmpModUnRe == -\tmpModUnIm 'and' \tmpModUnRe > 0}{\IfEq{#1}{d}{\dfrac{-\pi}{4}}{\frac{-\pi}{4}}}{}%
+ \xintifboolexpr{\tmpModUnRe == -\tmpModUnIm 'and' \tmpModUnRe < 0}{\IfEq{#1}{d}{\dfrac{3\pi}{4}}{\frac{3\pi}{4}}}{}%
+ \xintifboolexpr{\tmpModUnRe == 0 'and' \tmpModUnIm == 1}{\IfEq{#1}{d}{\dfrac{\pi}{2}}{\frac{\pi}{2}}}{}%
+ \xintifboolexpr{\tmpModUnRe == 0 'and' \tmpModUnIm == -1}{\IfEq{#1}{d}{\dfrac{-\pi}{2}}{\frac{-\pi}{2}}}{}%
+ }%
+}
+
+\NewDocumentCommand\FormeExpoComplexe{ m }{%
+ \PartieReelle{#1}[\tmpreA]%
+ \PartieImaginaire{#1}[\tmpimA]%
+ \IfSubStr{\tmpreA}{sqrt}%
+ {%
+ \StrDel{\tmpreA}{sqrt}[\tmpretmpA]%
+ }%
+ {%
+ \xdef\tmpretmpA{\tmpreA}%
+ }%
+ \IfSubStr{\tmpimA}{sqrt}%
+ {%
+ \StrDel{\tmpimA}{sqrt}[\tmpimtmpA]%
+ }%
+ {%
+ \xdef\tmpimtmpA{\tmpimA}%
+ }%
+ \IfSubStr{\tmpreA}{sqrt}%
+ {%
+ \IfSubStr{\tmpimA}{sqrt}%
+ {%
+ \xdef\tmpCarreModule{abs(\tmpretmpA)+abs(\tmpimtmpA)}%
+ }%
+ {%
+ \xdef\tmpCarreModule{abs(\tmpretmpA)+(\tmpimtmpA)*(\tmpimtmpA)}%
+ }%
+ }%
+ {%
+ \xdef\tmpCarreModule{(\tmpretmpA)*(\tmpretmpA)+(\tmpimtmpA)*(\tmpimtmpA)}%
+ }%
+ \xdef\tmpModUnRe{(\tmpreA)/(sqrt(\tmpCarreModule))}%
+ \xdef\tmpModUnIm{(\tmpimA)/(sqrt(\tmpCarreModule))}%
+ \ensuremath{%
+ \xintifboolexpr{\tmpCarreModule == 1}{}{\SimplificationRacine{\tmpCarreModule}}%
+ \e^{%
+ \xintifboolexpr{\tmpModUnRe == 1 'and' \tmpModUnIm == 0}{0}{}%
+ \xintifboolexpr{\tmpModUnRe == -1 'and' \tmpModUnIm == 0}{\i\pi}{}%
+ \xintifboolexpr{\tmpModUnRe == 0.5 'and' \tmpModUnIm > 0}{\IfEq{#1}{d}{\dfrac{\i\pi}{3}}{\frac{\i\pi}{3}}}{}%
+ \xintifboolexpr{\tmpModUnRe == 0.5 'and' \tmpModUnIm < 0}{\IfEq{#1}{d}{\dfrac{-\i\pi}{3}}{\frac{-\i\pi}{3}}}{}%
+ \xintifboolexpr{\tmpModUnRe == -0.5 'and' \tmpModUnIm > 0}{\IfEq{#1}{d}{\dfrac{2\i\pi}{3}}{\frac{2\i\pi}{3}}}{}%
+ \xintifboolexpr{\tmpModUnRe == -0.5 'and' \tmpModUnIm < 0}{\IfEq{#1}{d}{\dfrac{-2\i\pi}{3}}{\frac{-2\i\pi}{3}}}{}%
+ \xintifboolexpr{\tmpModUnRe > 0 'and' \tmpModUnIm == 0.5}{\IfEq{#1}{d}{\dfrac{\i\pi}{6}}{\frac{\i\pi}{6}}}{}%
+ \xintifboolexpr{\tmpModUnRe < 0 'and' \tmpModUnIm == 0.5}{\IfEq{#1}{d}{\dfrac{5\i\pi}{6}}{\frac{5\i\pi}{6}}}{}%
+ \xintifboolexpr{\tmpModUnRe > 0 'and' \tmpModUnIm == -0.5}{\IfEq{#1}{d}{\dfrac{-\i\pi}{6}}{\frac{-\i\pi}{6}}}{}%
+ \xintifboolexpr{\tmpModUnRe < 0 'and' \tmpModUnIm == -0.5}{\IfEq{#1}{d}{\dfrac{-5\i\pi}{6}}{\frac{-5\i\pi}{6}}}{}%
+ \xintifboolexpr{\tmpModUnRe == \tmpModUnIm 'and' \tmpModUnRe > 0}{\IfEq{#1}{d}{\dfrac{\i\pi}{4}}{\frac{\i\pi}{4}}}{}%
+ \xintifboolexpr{\tmpModUnRe == \tmpModUnIm 'and' \tmpModUnRe < 0}{\IfEq{#1}{d}{\dfrac{-3\i\pi}{4}}{\frac{-3\i\pi}{4}}}{}%
+ \xintifboolexpr{\tmpModUnRe == -\tmpModUnIm 'and' \tmpModUnRe > 0}{\IfEq{#1}{d}{\dfrac{-\i\pi}{4}}{\frac{-\i\pi}{4}}}{}%
+ \xintifboolexpr{\tmpModUnRe == -\tmpModUnIm 'and' \tmpModUnRe < 0}{\IfEq{#1}{d}{\dfrac{3\i\pi}{4}}{\frac{3\i\pi}{4}}}{}%
+ \xintifboolexpr{\tmpModUnRe == 0 'and' \tmpModUnIm == 1}{\IfEq{#1}{d}{\dfrac{\i\pi}{2}}{\frac{\i\pi}{2}}}{}%
+ \xintifboolexpr{\tmpModUnRe == 0 'and' \tmpModUnIm == -1}{\IfEq{#1}{d}{\dfrac{-\i\pi}{2}}{\frac{-\i\pi}{2}}}{}%
+ }%
+ }%
+}
+
+%====commandes alternatives
+\NewDocumentCommand\ExtractionCoeffExprRacines{ m O{\tmpCoeffA} O{\tmpCoeffB} O{\tmpCoeffC} O{\tmpCoeffD} }{%a*rac(b)+c*rac(d)
+ \IfSubStr{#1}{+}
+ {%
+ \StrCut{#1}{+}{\exprtestG}{\exprtestD}%
+ \IfSubStr{\exprtestG}{*sqrt}%
+ {%
+ \StrBefore{\exprtestG}{*}[#2]%
+ \StrBetween{\exprtestG}{sqrt(}{)}[#3]%
+ }%
+ {%
+ \xdef#2{\exprtestG}\xdef#3{1}%
+ }%
+ \IfSubStr{\exprtestD}{*sqrt}%
+ {%
+ \StrBefore{\exprtestD}{*}[#4]%
+ \StrBetween{\exprtestD}{sqrt(}{)}[#5]%
+ }%
+ {%
+ \xdef#4{\exprtestD}\xdef#5{1}%
+ }%
+ }%
+ {%
+ %si 2 moins...
+ \StrCount{#1}{-}[\tmpNbmoins]%
+ \xintifboolexpr{\tmpNbmoins == 2}%
+ {%
+ \StrCut[2]{#1}{-}{\exprtestG}{\exprtestD}%
+ }%
+ {%
+ \StrCut{#1}{-}{\exprtestG}{\exprtestD}%
+ }%
+ \IfSubStr{\exprtestG}{*sqrt}%
+ {%
+ \StrBefore{\exprtestG}{*}[#2]%
+ \StrBetween{\exprtestG}{sqrt(}{)}[#3]%
+ }%
+ {%
+ \xdef#2{\exprtestG}\xdef#3{1}%
+ }%
+ \IfSubStr{\exprtestD}{*sqrt}%
+ {%
+ \StrBefore{\exprtestD}{*}[#4]%
+ \xdef#4{-#4}%
+ \StrBetween{\exprtestD}{sqrt(}{)}[#5]%
+ }%
+ {%
+ \xdef#4{-#4}\xdef#5{1}%
+ }%
+ }%
+}
+
+\NewDocumentCommand\SimplifCarreExprRacine{ O{} m }{%
+ \ExtractionCoeffExprRacines{#2}%
+ \xintifboolexpr{\tmpCoeffA > 0 'and' \tmpCoeffC > 0}%
+ {%
+ \ensuremath{%
+ \ConversionFraction[#1]{(\tmpCoeffA)*(\tmpCoeffA)*(\tmpCoeffB)+(\tmpCoeffC)*(\tmpCoeffC)*(\tmpCoeffD)}+%
+ \IfEq{#1}{d}{\displaystyle}{}\SimplificationRacine{4*(\tmpCoeffA)*(\tmpCoeffA)*(\tmpCoeffC)*(\tmpCoeffC)*(\tmpCoeffB)*(\tmpCoeffD)}%
+ }%
+ }%
+ {}%
+ \xintifboolexpr{\tmpCoeffA > 0 'and' \tmpCoeffC < 0}%
+ {%
+ \ensuremath{%
+ \ConversionFraction[#1]{(\tmpCoeffA)*(\tmpCoeffA)*(\tmpCoeffB)+(\tmpCoeffC)*(\tmpCoeffC)*(\tmpCoeffD)}-%
+ \IfEq{#1}{d}{\displaystyle}{}\SimplificationRacine{4*(\tmpCoeffA)*(\tmpCoeffA)*(\tmpCoeffC)*(\tmpCoeffC)*(\tmpCoeffB)*(\tmpCoeffD)}%
+ }%
+ }%
+ {}%
+ \xintifboolexpr{\tmpCoeffA < 0 'and' \tmpCoeffC > 0}%
+ {%
+ \ensuremath{%
+ \ConversionFraction[#1]{(\tmpCoeffA)*(\tmpCoeffA)*(\tmpCoeffB)+(\tmpCoeffC)*(\tmpCoeffC)*(\tmpCoeffD)}-%
+ \IfEq{#1}{d}{\displaystyle}{}\SimplificationRacine{4*(\tmpCoeffA)*(\tmpCoeffA)*(\tmpCoeffC)*(\tmpCoeffC)*(\tmpCoeffB)*(\tmpCoeffD)}%
+ }%
+ }%
+ {}%
+ \xintifboolexpr{\tmpCoeffA < 0 'and' \tmpCoeffC < 0}%
+ {%
+ \ensuremath{%
+ \ConversionFraction[#1]{(\tmpCoeffA)*(\tmpCoeffA)*(\tmpCoeffB)+(\tmpCoeffC)*(\tmpCoeffC)*(\tmpCoeffD)}+%
+ \IfEq{#1}{d}{\displaystyle}{}\SimplificationRacine{4*(\tmpCoeffA)*(\tmpCoeffA)*(\tmpCoeffC)*(\tmpCoeffC)*(\tmpCoeffB)*(\tmpCoeffD)}%
+ }%
+ }%
+ {}%
+}
+
+\NewDocumentCommand\CalculModuleCplx{ O{} m m }{%
+ \ExtractionCoeffExprRacines{#2}[\Crea][\Creb][\Crec][\Cred]%
+ \ExtractionCoeffExprRacines{#3}[\Cima][\Cimb][\Cimc][\Cimd]%
+ \xdef\TmpCoeffsDebut{(\Crea)*(\Crea)*(\Creb)+(\Crec)*(\Crec)*(\Cred)+(\Cima)*(\Cima)*(\Cimb)+(\Cimc)*(\Cimc)*(\Cimd)}%
+ \xdef\TmpCoeffsRacineA{4*(\Crea)*(\Crea)*(\Crec)*(\Crec)*(\Creb)*(\Cred)}%
+ \xdef\TmpCoeffsRacineB{4*(\Cima)*(\Cima)*(\Cimc)*(\Cimc)*(\Cimb)*(\Cimd)}%
+ %\xinteval{\TmpCoeffsDebut}/\xinteval{\TmpCoeffsRacineA}/\xinteval{\TmpCoeffsRacineB}/\xinteval{(\Crea)*(\Crec)}/\xinteval{(\Cima)*(\Cimc)}=
+ \xintifboolexpr{\TmpCoeffsRacineA == 0 'and' \TmpCoeffsRacineB == 0}%
+ {%
+ \ensuremath{\IfEq{#1}{d}{\displaystyle}{}\SimplificationRacine{\TmpCoeffsDebut}}%
+ }%
+ {}%
+ \xintifboolexpr{\TmpCoeffsRacineA == 0 'and' \TmpCoeffsRacineB != 0}%
+ {%
+ \ensuremath{\IfEq{#1}{d}{\displaystyle}{}\sqrt{\SimplificationRacine{(\TmpCoeffsDebut)*(\TmpCoeffsDebut)}\xintifboolexpr{(\Cima)*(\Cimc) < 0}{-}{+}\SimplificationRacine{\TmpCoeffsRacineB}}}%
+ }%
+ {}%
+ \xintifboolexpr{\TmpCoeffsRacineA != 0 'and' \TmpCoeffsRacineB == 0}%
+ {%
+ \ensuremath{\IfEq{#1}{d}{\displaystyle}{}\sqrt{\SimplificationRacine{(\TmpCoeffsDebut)*(\TmpCoeffsDebut)}\xintifboolexpr{(\Crea)*(\Crec) < 0}{-}{+}\SimplificationRacine{\TmpCoeffsRacineA}}}%
+ }%
+ {}%
+ \xintifboolexpr{\TmpCoeffsRacineA != 0 'and' \TmpCoeffsRacineB != 0 'and' (\Crea)*(\Crec) < 0 'and' (\Cima)*(\Cimc) > 0 'and' \TmpCoeffsRacineA == \TmpCoeffsRacineB}%
+ {%
+ \ensuremath{\IfEq{#1}{d}{\displaystyle}{}\SimplificationRacine{\TmpCoeffsDebut}}%
+ }%
+ {}%
+ \xintifboolexpr{\TmpCoeffsRacineA != 0 'and' \TmpCoeffsRacineB != 0 'and' (\Crea)*(\Crec) > 0 'and' (\Cima)*(\Cimc) < 0 'and' \TmpCoeffsRacineA == \TmpCoeffsRacineB}%
+ {%
+ \ensuremath{\IfEq{#1}{d}{\displaystyle}{}\SimplificationRacine{\TmpCoeffsDebut}}%
+ }%
+ {}%
+ \xintifboolexpr{\TmpCoeffsRacineA != \TmpCoeffsRacineB}%
+ {%
+ \ensuremath{\IfEq{#1}{d}{\displaystyle}{}\sqrt{\SimplificationRacine{(\TmpCoeffsDebut)*(\TmpCoeffsDebut)}\xintifboolexpr{(\Crea)*(\Crec) < 0}{-}{+}\SimplificationRacine{\TmpCoeffsRacineA}\xintifboolexpr{(\Cima)*(\Cimc) < 0}{-}{+}\SimplificationRacine{\TmpCoeffsRacineB}}}%
+ }%
+ {}%
+}
+
+\NewDocumentCommand\TestArgumentComplexe{ O{} m m m }{%
+ \xintifboolexpr{\TmpArg == #2 'or' \TmpArg == #3}{\ensuremath{\IfEq{#1}{d}{\displaystyle}{}#4}}{}%
+}
+
+\NewDocumentCommand\CalculArgumentCplx{ s O{} m m }{%
+ \xdef\TmpArg{\xintfloateval{trunc(Argd(#3,#4),1)}}%\TmpArg%
+ \IfBooleanTF{#1}%
+ {%
+ %les pi/2
+ \TestArgumentComplexe[#2]{0}{0.0}{0}%
+ \TestArgumentComplexe[#2]{90}{90.0}{\frac{\pi}{2}}%
+ \TestArgumentComplexe[#2]{-90}{-90.0}{\frac{3\pi}{2}}%
+ \TestArgumentComplexe[#2]{180}{180.0}{\pi}%
+ %les pi/3
+ \TestArgumentComplexe[#2]{60}{60.0}{\frac{\pi}{3}}%
+ \TestArgumentComplexe[#2]{120}{120.0}{\frac{2\pi}{3}}%
+ \TestArgumentComplexe[#2]{-60}{-60.0}{\frac{5\pi}{3}}%
+ \TestArgumentComplexe[#2]{-120}{-120.0}{\frac{4\pi}{3}}%
+ %les pi/4
+ \TestArgumentComplexe[#2]{45}{45.0}{\frac{\pi}{4}}%
+ \TestArgumentComplexe[#2]{135}{135.0}{\frac{3\pi}{4}}%
+ \TestArgumentComplexe[#2]{-45}{-45.0}{\frac{7\pi}{4}}%
+ \TestArgumentComplexe[#2]{-135}{-135.0}{\frac{5\pi}{4}}%
+ %les pi/5
+ \TestArgumentComplexe[#2]{36}{36.0}{\frac{\pi}{5}}%
+ \TestArgumentComplexe[#2]{72}{72.0}{\frac{2\pi}{5}}%
+ \TestArgumentComplexe[#2]{108}{108.0}{\frac{3\pi}{5}}%
+ \TestArgumentComplexe[#2]{144}{144.0}{\frac{4\pi}{5}}%
+ \TestArgumentComplexe[#2]{-36}{-36.0}{\frac{9\pi}{5}}%
+ \TestArgumentComplexe[#2]{-72}{-72.0}{\frac{8\pi}{5}}%
+ \TestArgumentComplexe[#2]{-108}{-108.0}{\frac{7\pi}{5}}%
+ \TestArgumentComplexe[#2]{-144}{-144.0}{\frac{6\pi}{5}}%
+ %les pi/6
+ \TestArgumentComplexe[#2]{30}{30.0}{\frac{\pi}{6}}%
+ \TestArgumentComplexe[#2]{150}{150.0}{\frac{5\pi}{6}}%
+ \TestArgumentComplexe[#2]{-30}{-30.0}{\frac{11\pi}{6}}%
+ \TestArgumentComplexe[#2]{-150}{-150.0}{\frac{7\pi}{6}}%
+ %les pi/8
+ \TestArgumentComplexe[#2]{22.5}{22.5}{\frac{\pi}{8}}%
+ \TestArgumentComplexe[#2]{67.5}{67.5}{\frac{3\pi}{8}}%
+ \TestArgumentComplexe[#2]{112.5}{112.5}{\frac{5\pi}{8}}%
+ \TestArgumentComplexe[#2]{157.5}{157.5}{\frac{7\pi}{8}}%
+ \TestArgumentComplexe[#2]{-22.5}{-22.5}{\frac{15\pi}{8}}%
+ \TestArgumentComplexe[#2]{-67.5}{-67.5}{\frac{13\pi}{8}}%
+ \TestArgumentComplexe[#2]{-112.5}{-112.5}{\frac{11\pi}{8}}%
+ \TestArgumentComplexe[#2]{-157.5}{-157.5}{\frac{9\pi}{8}}%
+ %les pi/12
+ \TestArgumentComplexe[#2]{15}{15.0}{\frac{\pi}{12}}%
+ \TestArgumentComplexe[#2]{75}{75.0}{\frac{5\pi}{12}}%
+ \TestArgumentComplexe[#2]{105}{105.0}{\frac{7\pi}{12}}%
+ \TestArgumentComplexe[#2]{165}{165.0}{\frac{11\pi}{12}}%
+ \TestArgumentComplexe[#2]{-15}{-15.0}{\frac{23\pi}{12}}%
+ \TestArgumentComplexe[#2]{-75}{-75.0}{\frac{19\pi}{12}}%
+ \TestArgumentComplexe[#2]{-105}{-105.0}{\frac{17\pi}{12}}%
+ \TestArgumentComplexe[#2]{-165}{-165.0}{\frac{13\pi}{12}}%
+ %les pi/10
+ \TestArgumentComplexe[#2]{18}{18.0}{\frac{\pi}{10}}%
+ \TestArgumentComplexe[#2]{54}{54.0}{\frac{3\pi}{10}}%
+ \TestArgumentComplexe[#2]{126}{126.0}{\frac{7\pi}{10}}%
+ \TestArgumentComplexe[#2]{162}{162.0}{\frac{9\pi}{10}}%
+ \TestArgumentComplexe[#2]{-18}{-18.0}{\frac{19\pi}{10}}%
+ \TestArgumentComplexe[#2]{-54}{-54.0}{\frac{17\pi}{10}}%
+ \TestArgumentComplexe[#2]{-126}{-126.0}{\frac{13\pi}{10}}%
+ \TestArgumentComplexe[#2]{-162}{-162.0}{\frac{11\pi}{10}}%
+ }%
+ {%
+ %les pi/2
+ \TestArgumentComplexe[#2]{0}{0.0}{0}%
+ \TestArgumentComplexe[#2]{90}{90.0}{\frac{\pi}{2}}%
+ \TestArgumentComplexe[#2]{-90}{-90.0}{\frac{-\pi}{2}}%
+ \TestArgumentComplexe[#2]{180}{180.0}{\pi}%
+ %les pi/3
+ \TestArgumentComplexe[#2]{60}{60.0}{\frac{\pi}{3}}%
+ \TestArgumentComplexe[#2]{120}{120.0}{\frac{2\pi}{3}}%
+ \TestArgumentComplexe[#2]{-60}{-60.0}{\frac{-\pi}{3}}%
+ \TestArgumentComplexe[#2]{-120}{-120.0}{\frac{-2\pi}{3}}%
+ %les pi/4
+ \TestArgumentComplexe[#2]{45}{45.0}{\frac{\pi}{4}}%
+ \TestArgumentComplexe[#2]{135}{135.0}{\frac{3\pi}{4}}%
+ \TestArgumentComplexe[#2]{-45}{-45.0}{\frac{-\pi}{4}}%
+ \TestArgumentComplexe[#2]{-135}{-135.0}{\frac{-3\pi}{4}}%
+ %les pi/5
+ \TestArgumentComplexe[#2]{36}{36.0}{\frac{\pi}{5}}%
+ \TestArgumentComplexe[#2]{72}{72.0}{\frac{2\pi}{5}}%
+ \TestArgumentComplexe[#2]{108}{108.0}{\frac{3\pi}{5}}%
+ \TestArgumentComplexe[#2]{144}{144.0}{\frac{4\pi}{5}}%
+ \TestArgumentComplexe[#2]{-36}{-36.0}{\frac{-\pi}{5}}%
+ \TestArgumentComplexe[#2]{-72}{-72.0}{\frac{-2\pi}{5}}%
+ \TestArgumentComplexe[#2]{-108}{-108.0}{\frac{-3\pi}{5}}%
+ \TestArgumentComplexe[#2]{-144}{-144.0}{\frac{-4\pi}{5}}%
+ %les pi/6
+ \TestArgumentComplexe[#2]{30}{30.0}{\frac{\pi}{6}}%
+ \TestArgumentComplexe[#2]{150}{150.0}{\frac{5\pi}{6}}%
+ \TestArgumentComplexe[#2]{-30}{-30.0}{\frac{-\pi}{6}}%
+ \TestArgumentComplexe[#2]{-150}{-150.0}{\frac{-5\pi}{6}}%
+ %les pi/8
+ \TestArgumentComplexe[#2]{22.5}{22.5}{\frac{\pi}{8}}%
+ \TestArgumentComplexe[#2]{67.5}{67.5}{\frac{3\pi}{8}}%
+ \TestArgumentComplexe[#2]{112.5}{112.5}{\frac{5\pi}{8}}%
+ \TestArgumentComplexe[#2]{157.5}{157.5}{\frac{7\pi}{8}}%
+ \TestArgumentComplexe[#2]{-22.5}{-22.5}{\frac{-\pi}{8}}%
+ \TestArgumentComplexe[#2]{-67.5}{-67.5}{\frac{-3\pi}{8}}%
+ \TestArgumentComplexe[#2]{-112.5}{-112.5}{\frac{-5\pi}{8}}%
+ \TestArgumentComplexe[#2]{-157.5}{-157.5}{\frac{-7\pi}{8}}%
+ %les pi/12
+ \TestArgumentComplexe[#2]{15}{15.0}{\frac{\pi}{12}}%
+ \TestArgumentComplexe[#2]{75}{75.0}{\frac{5\pi}{12}}%
+ \TestArgumentComplexe[#2]{105}{105.0}{\frac{7\pi}{12}}%
+ \TestArgumentComplexe[#2]{165}{165.0}{\frac{11\pi}{12}}%
+ \TestArgumentComplexe[#2]{-15}{-15.0}{\frac{-\pi}{12}}%
+ \TestArgumentComplexe[#2]{-75}{-75.0}{\frac{-5\pi}{12}}%
+ \TestArgumentComplexe[#2]{-105}{-105.0}{\frac{-7\pi}{12}}%
+ \TestArgumentComplexe[#2]{-165}{-165.0}{\frac{-11\pi}{12}}%
+ %les pi/10
+ \TestArgumentComplexe[#2]{18}{18.0}{\frac{\pi}{10}}%
+ \TestArgumentComplexe[#2]{54}{54.0}{\frac{3\pi}{10}}%
+ \TestArgumentComplexe[#2]{126}{126.0}{\frac{7\pi}{10}}%
+ \TestArgumentComplexe[#2]{162}{162.0}{\frac{9\pi}{10}}%
+ \TestArgumentComplexe[#2]{-18}{-18.0}{\frac{-\pi}{10}}%
+ \TestArgumentComplexe[#2]{-54}{-54.0}{\frac{-3\pi}{10}}%
+ \TestArgumentComplexe[#2]{-126}{-126.0}{\frac{-7\pi}{10}}%
+ \TestArgumentComplexe[#2]{-162}{-162.0}{\frac{-9\pi}{10}}%
+ }%
+}
+
+\NewDocumentCommand\CalculFormeExpoCplx{ s O{} m m }{%
+ \xdef\TmpArg{\xintfloateval{trunc(Argd(#3,#4),1)}}%\TmpArg%
+ \ensuremath{%
+ \xintifboolexpr{(#3)**2+(#4)**2 == 1 'and' \TmpArg == 0}{1}{}%
+ \xintifboolexpr{(#3)**2+(#4)**2 == 1 'and' \TmpArg != 0}{}{\CalculModuleCplx[#2]{#3}{#4}}%
+ \IfBooleanTF{#1}%
+ {%
+ %les pi/2
+ \TestArgumentComplexe[#2]{0}{0.0}{}%
+ \TestArgumentComplexe[#2]{90}{90.0}{\e^{\frac{\i\pi}{2}}}%
+ \TestArgumentComplexe[#2]{-90}{-90.0}{\e^{\frac{3\i\pi}{2}}}%
+ \TestArgumentComplexe[#2]{180}{180.0}{\e^{\i\pi}}%
+ %les pi/3
+ \TestArgumentComplexe[#2]{60}{60.0}{\e^{\frac{\i\pi}{3}}}%
+ \TestArgumentComplexe[#2]{120}{120.0}{\e^{\frac{2\i\pi}{3}}}%
+ \TestArgumentComplexe[#2]{-60}{-60.0}{\e^{\frac{5\i\pi}{3}}}%
+ \TestArgumentComplexe[#2]{-120}{-120.0}{\e^{\frac{4\i\pi}{3}}}%
+ %les pi/4
+ \TestArgumentComplexe[#2]{45}{45.0}{\e^{\frac{\i\pi}{4}}}%
+ \TestArgumentComplexe[#2]{135}{135.0}{\e^{\frac{3\i\pi}{4}}}%
+ \TestArgumentComplexe[#2]{-45}{-45.0}{\e^{\frac{7\i\pi}{4}}}%
+ \TestArgumentComplexe[#2]{-135}{-135.0}{\e^{\frac{5\i\pi}{4}}}%
+ %les pi/5
+ \TestArgumentComplexe[#2]{36}{36.0}{\e^{\frac{\i\pi}{5}}}%
+ \TestArgumentComplexe[#2]{72}{72.0}{\e^{\frac{2\i\pi}{5}}}%
+ \TestArgumentComplexe[#2]{108}{108.0}{\e^{\frac{3\i\pi}{5}}}%
+ \TestArgumentComplexe[#2]{144}{144.0}{\e^{\frac{4\i\pi}{5}}}%
+ \TestArgumentComplexe[#2]{-36}{-36.0}{\e^{\frac{9\i\pi}{5}}}%
+ \TestArgumentComplexe[#2]{-72}{-72.0}{\e^{\frac{8\i\pi}{5}}}%
+ \TestArgumentComplexe[#2]{-108}{-108.0}{\e^{\frac{7\i\pi}{5}}}%
+ \TestArgumentComplexe[#2]{-144}{-144.0}{\e^{\frac{6\i\pi}{5}}}%
+ %les pi/6
+ \TestArgumentComplexe[#2]{30}{30.0}{\e^{\frac{\i\pi}{6}}}%
+ \TestArgumentComplexe[#2]{150}{150.0}{\e^{\frac{5\i\pi}{6}}}%
+ \TestArgumentComplexe[#2]{-30}{-30.0}{\e^{\frac{11\i\pi}{6}}}%
+ \TestArgumentComplexe[#2]{-150}{-150.0}{\e^{\frac{7\i\pi}{6}}}%
+ %les pi/8
+ \TestArgumentComplexe[#2]{22.5}{22.5}{\e^{\frac{\i\pi}{8}}}%
+ \TestArgumentComplexe[#2]{67.5}{67.5}{\e^{\frac{3\i\pi}{8}}}%
+ \TestArgumentComplexe[#2]{112.5}{112.5}{\e^{\frac{5\i\pi}{8}}}%
+ \TestArgumentComplexe[#2]{157.5}{157.5}{\e^{\frac{7\i\pi}{8}}}%
+ \TestArgumentComplexe[#2]{-22.5}{-22.5}{\e^{\frac{15\i\pi}{8}}}%
+ \TestArgumentComplexe[#2]{-67.5}{-67.5}{\e^{\frac{13\i\pi}{8}}}%
+ \TestArgumentComplexe[#2]{-112.5}{-112.5}{\e^{\frac{11\i\pi}{8}}}%
+ \TestArgumentComplexe[#2]{-157.5}{-157.5}{\e^{\frac{9\i\pi}{8}}}%
+ %les pi/12
+ \TestArgumentComplexe[#2]{15}{15.0}{\e^{\frac{\i\pi}{12}}}%
+ \TestArgumentComplexe[#2]{75}{75.0}{\e^{\frac{5\i\pi}{12}}}%
+ \TestArgumentComplexe[#2]{105}{105.0}{\e^{\frac{7\i\pi}{12}}}%
+ \TestArgumentComplexe[#2]{165}{165.0}{\e^{\frac{11\i\pi}{12}}}%
+ \TestArgumentComplexe[#2]{-15}{-15.0}{\e^{\frac{23\i\pi}{12}}}%
+ \TestArgumentComplexe[#2]{-75}{-75.0}{\e^{\frac{19\i\pi}{12}}}%
+ \TestArgumentComplexe[#2]{-105}{-105.0}{\e^{\frac{17\i\pi}{12}}}%
+ \TestArgumentComplexe[#2]{-165}{-165.0}{\e^{\frac{13\i\pi}{12}}}%
+ %les pi/10
+ \TestArgumentComplexe[#2]{18}{18.0}{\e^{\frac{\i\pi}{10}}}%
+ \TestArgumentComplexe[#2]{54}{54.0}{\e^{\frac{3\i\pi}{10}}}%
+ \TestArgumentComplexe[#2]{126}{126.0}{\e^{\frac{7\i\pi}{10}}}%
+ \TestArgumentComplexe[#2]{162}{162.0}{\e^{\frac{9\i\pi}{10}}}%
+ \TestArgumentComplexe[#2]{-18}{-18.0}{\e^{\frac{19\i\pi}{10}}}%
+ \TestArgumentComplexe[#2]{-54}{-54.0}{\e^{\frac{17\i\pi}{10}}}%
+ \TestArgumentComplexe[#2]{-126}{-126.0}{\e^{\frac{13\i\pi}{10}}}%
+ \TestArgumentComplexe[#2]{-162}{-162.0}{\e^{\frac{11\i\pi}{10}}}%
+ }%
+ {%
+ %les pi/2
+ \TestArgumentComplexe[#2]{0}{0.0}{}%
+ \TestArgumentComplexe[#2]{90}{90.0}{\e^{\frac{\i\pi}{2}}}%
+ \TestArgumentComplexe[#2]{-90}{-90.0}{\e^{\frac{-\i\pi}{2}}}%
+ \TestArgumentComplexe[#2]{180}{180.0}{\e^{\i\pi}}%
+ %les pi/3
+ \TestArgumentComplexe[#2]{60}{60.0}{\e^{\frac{\i\pi}{3}}}%
+ \TestArgumentComplexe[#2]{120}{120.0}{\e^{\frac{2\i\pi}{3}}}%
+ \TestArgumentComplexe[#2]{-60}{-60.0}{\e^{\frac{-\i\pi}{3}}}%
+ \TestArgumentComplexe[#2]{-120}{-120.0}{\e^{\frac{-2\i\pi}{3}}}%
+ %les pi/4
+ \TestArgumentComplexe[#2]{45}{45.0}{\e^{\frac{\i\pi}{4}}}%
+ \TestArgumentComplexe[#2]{135}{135.0}{\e^{\frac{3\i\pi}{4}}}%
+ \TestArgumentComplexe[#2]{-45}{-45.0}{\e^{\frac{-\i\pi}{4}}}%
+ \TestArgumentComplexe[#2]{-135}{-135.0}{\e^{\frac{-3\i\pi}{4}}}%
+ %les pi/5
+ \TestArgumentComplexe[#2]{36}{36.0}{\e^{\frac{\i\pi}{5}}}%
+ \TestArgumentComplexe[#2]{72}{72.0}{\e^{\frac{2\i\pi}{5}}}%
+ \TestArgumentComplexe[#2]{108}{108.0}{\e^{\frac{3\i\pi}{5}}}%
+ \TestArgumentComplexe[#2]{144}{144.0}{\e^{\frac{4\i\pi}{5}}}%
+ \TestArgumentComplexe[#2]{-36}{-36.0}{\e^{\frac{-\i\pi}{5}}}%
+ \TestArgumentComplexe[#2]{-72}{-72.0}{\e^{\frac{-2\i\pi}{5}}}%
+ \TestArgumentComplexe[#2]{-108}{-108.0}{\e^{\frac{-3\i\pi}{5}}}%
+ \TestArgumentComplexe[#2]{-144}{-144.0}{\e^{\frac{-4\i\pi}{5}}}%
+ %les pi/6
+ \TestArgumentComplexe[#2]{30}{30.0}{\e^{\frac{\i\pi}{6}}}%
+ \TestArgumentComplexe[#2]{150}{150.0}{\e^{\frac{5\i\pi}{6}}}%
+ \TestArgumentComplexe[#2]{-30}{-30.0}{\e^{\frac{-\i\pi}{6}}}%
+ \TestArgumentComplexe[#2]{-150}{-150.0}{\e^{\frac{-5\i\pi}{6}}}%
+ %les pi/8
+ \TestArgumentComplexe[#2]{22.5}{22.5}{\e^{\frac{\i\pi}{8}}}%
+ \TestArgumentComplexe[#2]{67.5}{67.5}{\e^{\frac{3\i\pi}{8}}}%
+ \TestArgumentComplexe[#2]{112.5}{112.5}{\e^{\frac{5\i\pi}{8}}}%
+ \TestArgumentComplexe[#2]{157.5}{157.5}{\e^{\frac{7\i\pi}{8}}}%
+ \TestArgumentComplexe[#2]{-22.5}{-22.5}{\e^{\frac{-\i\pi}{8}}}%
+ \TestArgumentComplexe[#2]{-67.5}{-67.5}{\e^{\frac{-3\i\pi}{8}}}%
+ \TestArgumentComplexe[#2]{-112.5}{-112.5}{\e^{\frac{-5\i\pi}{8}}}%
+ \TestArgumentComplexe[#2]{-157.5}{-157.5}{\e^{\frac{-7\i\pi}{8}}}%
+ %les pi/12
+ \TestArgumentComplexe[#2]{15}{15.0}{\e^{\frac{\i\pi}{12}}}%
+ \TestArgumentComplexe[#2]{75}{75.0}{\e^{\frac{5\i\pi}{12}}}%
+ \TestArgumentComplexe[#2]{105}{105.0}{\e^{\frac{7\i\pi}{12}}}%
+ \TestArgumentComplexe[#2]{165}{165.0}{\e^{\frac{11\i\pi}{12}}}%
+ \TestArgumentComplexe[#2]{-15}{-15.0}{\e^{\frac{-\i\pi}{12}}}%
+ \TestArgumentComplexe[#2]{-75}{-75.0}{\e^{\frac{-5\i\pi}{12}}}%
+ \TestArgumentComplexe[#2]{-105}{-105.0}{\e^{\frac{-7\i\pi}{12}}}%
+ \TestArgumentComplexe[#2]{-165}{-165.0}{\e^{\frac{-11\i\pi}{12}}}%
+ %les pi/10
+ \TestArgumentComplexe[#2]{18}{18.0}{\e^{\frac{\i\pi}{10}}}%
+ \TestArgumentComplexe[#2]{54}{54.0}{\e^{\frac{3\i\pi}{10}}}%
+ \TestArgumentComplexe[#2]{126}{126.0}{\e^{\frac{7\i\pi}{10}}}%
+ \TestArgumentComplexe[#2]{162}{162.0}{\e^{\frac{9\i\pi}{10}}}%
+ \TestArgumentComplexe[#2]{-18}{-18.0}{\e^{\frac{-\i\pi}{10}}}%
+ \TestArgumentComplexe[#2]{-54}{-54.0}{\e^{\frac{-3\i\pi}{10}}}%
+ \TestArgumentComplexe[#2]{-126}{-126.0}{\e^{\frac{-7\i\pi}{10}}}%
+ \TestArgumentComplexe[#2]{-162}{-162.0}{\e^{\frac{-9\i\pi}{10}}}%
+ }%
+ }%
+}
+
+\endinput \ No newline at end of file