diff options
author | Norbert Preining <norbert@preining.info> | 2024-06-06 03:01:40 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2024-06-06 03:01:40 +0000 |
commit | 271b6f0a476c7be030051dff4c4aaa0caad9f0fd (patch) | |
tree | 4edac3d175454f5a96e62ce70b4222cd39447548 /macros | |
parent | bbc449894843271d26c329a7613672033538160a (diff) |
CTAN sync 202406060301
Diffstat (limited to 'macros')
95 files changed, 1299 insertions, 198 deletions
diff --git a/macros/latex/contrib/xint-regression/README.md b/macros/latex/contrib/xint-regression/README.md new file mode 100644 index 0000000000..4b2977a59b --- /dev/null +++ b/macros/latex/contrib/xint-regression/README.md @@ -0,0 +1,7 @@ +xint-regression is a package to work with classic regressions, with xint. +----------------------------------------------------------------------------------------- +xint-regression est un package pour travailler avec des régressions classiques, avec xint. +------------------------------------------------------------------------------------------ +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/xint-regression/doc/xint-regression-doc.pdf b/macros/latex/contrib/xint-regression/doc/xint-regression-doc.pdf Binary files differnew file mode 100644 index 0000000000..744ccda47f --- /dev/null +++ b/macros/latex/contrib/xint-regression/doc/xint-regression-doc.pdf diff --git a/macros/latex/contrib/xint-regression/doc/xint-regression-doc.tex b/macros/latex/contrib/xint-regression/doc/xint-regression-doc.tex new file mode 100644 index 0000000000..b42f725cdf --- /dev/null +++ b/macros/latex/contrib/xint-regression/doc/xint-regression-doc.tex @@ -0,0 +1,447 @@ +% !TeX TXS-program:compile = txs:///arara +% arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode} +% arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)') + +\documentclass[11pt,a4paper]{ltxdoc} +\usepackage[T1]{fontenc} +\usepackage[utf8]{inputenc} +\usepackage{xint-regression} +\usepackage{fancyvrb} +\usepackage{fancyhdr} +\usepackage{hyperref} +\usepackage{tkz-grapheur} +\usepackage{tcolorbox} +\tcbuselibrary{skins,minted} +\fancyhf{} +\renewcommand{\headrulewidth}{0pt} +\lfoot{\sffamily\small [xint-regression]} +\rfoot{\sffamily\small - \thepage{} -} +\usepackage{hologo} +\providecommand\tikzlogo{Ti\textit{k}Z} +\providecommand\TeXLive{\TeX{}Live\xspace} +\providecommand\PSTricks{\textsf{PSTricks}\xspace} +\let\pstricks\PSTricks +\let\TikZ\tikzlogo + +\urlstyle{same} +\hypersetup{pdfborder=0 0 0} +\usepackage[margin=2cm]{geometry} +\setlength{\parindent}{0pt} +\def\TPversion{0.1.0} +\def\TPdate{05/06/2024} +\usepackage{soul} +\usepackage{tabularray} +\sethlcolor{lightgray!25} +\NewDocumentCommand\MontreCode{ m }{% + \hl{\vphantom{\texttt{pf}}\texttt{#1}}% +} +\usepackage{babel} + +\renewcommand{\footnoterule}{\vfill\kern -3pt \hrule width 0.4\columnwidth \kern 2.6pt} + +\begin{document} + +\pagestyle{fancy} + +\thispagestyle{empty} + +\begin{center} + \begin{minipage}{0.88\linewidth} + \begin{tcolorbox}[colframe=yellow,colback=yellow!15] + \begin{center} + \begin{tabular}{c} + {\Huge \texttt{xint-regression}}\\ + \\ + {\LARGE Classic regressions, with \textsf{xint}.}\\ + \\ + {\small \texttt{Version \TPversion{} -- \TPdate}} + \end{tabular} + \end{center} + \end{tcolorbox} +\end{minipage} +\end{center} + +\begin{center} + \begin{tabular}{c} + \texttt{Cédric Pierquet}\\ + {\ttfamily c pierquet -- at -- outlook . fr}\\ + \texttt{\url{https://forge.apps.education.fr/pierquetcedric/package-latex-xintreg}} \\ +\end{tabular} +\end{center} + +\hrule + +\vfill + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5} +\def\LISTEX{1,2,3,4,5,6} +\def\LISTEY{8.74,8.80,9.52,10.42,11.83,14.62} + +\xintexpreg[Alt]{\LISTEX}{\LISTEY} %raw results +$a \approx \exprega$ and $b \approx \expregb$ + +\xintexpreg[Alt,round=2]{\LISTEX}{\LISTEY} %rounded results +$a \approx \exprega$ and $b \approx \expregb$\\ + +So $y \approx \exprega x+\expregb$. +\end{tcblisting} + +\vspace*{5mm} + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5} +\def\LISTEXX{0,50,100,140} +\def\LISTEYY{275,290,315,350} + +\xintexpoffreg[offset=250]{\LISTEXX}{\LISTEYY} %raw results +$a \approx \expregoffa$ and $b \approx \expregoffb$ + +\xintexpoffreg[offset=250,round=2/1]{\LISTEXX}{\LISTEYY} %rounded results +$a \approx \expregoffa$ and $b \approx \expregoffb$\\ + +So $y \approx 250+\expregoffb e^{\expregoffa x}$ +\end{tcblisting} + +\vfill + +\vspace*{5mm} + +\pagebreak + +\phantomsection + +\hypertarget{matoc}{} + +\tableofcontents + +\vspace*{5mm} + +\hrule + +\vspace*{5mm} + +\pagebreak + +\section{Introduction} + +\subsection{Global usage} + +This package offers \textsf{xint}-based commands for working with classical regressions : + +\begin{itemize} + \item linear regression $ax+b$ ; + \item quadratic regression $ax^2+bx+c$ ; + \item cubic regression $ax^3+bx^2+cx+d$ ; + \item power regression $ax^b$ ; + \item exponential regression $ab^x$ or $e^{ax+b}$ or $be^{ax}$ or $C + be^{ax}$ ; + \item logarithmic regression $a+b\log(x)$ ; + \item hyperbolic regression $a+\displaystyle\frac{b}{x}$. +\end{itemize} + +For each type of regression, results can be stored in macros, either raw or with rounding (with individuals \MontreCode{[optional keys]}). + +\subsection{Packages used} + +This package uses \MontreCode{simplekv}, \MontreCode{xintexpr}, \MontreCode{listofitems} and \MontreCode{xstring}. + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only} +%loading +\usepackage{xint-regression} +\end{tcblisting} + +\subsection{Warnings} + +The precision of the (determination) results seems to be good, which should normally guarantee satisfactory calculations and plots. + +Nevertheless, it is advisable to be cautious about the results obtained and those expected. + +\pagebreak + +\section{The commands} + +\subsection{Linear regression} + +The equation is \fbox{$ax+b$}. + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only} +\xintlinreg[coeffa=...,coeffa=...,round=...]{xlist}{ylist} +\end{tcblisting} + +By default, \MontreCode{coeffa=linrega} ; \MontreCode{coeffb=linregb} and \MontreCode{round} is empty. + +\MontreCode{round=...} can be given within \MontreCode{round=global} or \MontreCode{round=a/b/...}. + +\def\LLX{83,71,64,69,69,64,68,59,81,91,57,65,58,62}% +\def\LLY{183,168,171,178,176,172,165,158,183,182,163,175,164,175}% + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only} +\def\LLX{83,71,64,69,69,64,68,59,81,91,57,65,58,62}% +\def\LLY{183,168,171,178,176,172,165,158,183,182,163,175,164,175}% +\end{tcblisting} + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5} +%default output +\xintlinreg{\LLX}{\LLY}% +$a \approx \linrega$ and $b \approx \linregb$ +\end{tcblisting} + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5} +%personal macros + global rounding +\xintlinreg[coeffa=LINa,coeffb=LINb,round=2]{\LLX}{\LLY}% +$a \approx \LINa$ and $b \approx \LINb$ +\end{tcblisting} + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5} +%personal macros + individual rounding +\xintlinreg[coeffa=LINEARa,coeffb=LINEARb,round=2/0]{\LLX}{\LLY}% +$a \approx \LINEARa$ and $b \approx \LINEARb$ +\end{tcblisting} + +\subsection{Quadratic regression} + +The equation is \fbox{$ax^2+bx+c$}. + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only} +\xintquadreg[coeffa=...,coeffb=...,coeffc=...,round=...]{xlist}{ylist} +\end{tcblisting} + +By default, \MontreCode{coeffa=quadrega} ; \MontreCode{coeffb=quadregb}, \MontreCode{coeffc=quadrega} and \MontreCode{round} is empty. + +\MontreCode{round=...} can be given within \MontreCode{round=global} or \MontreCode{round=a/b/...}. + +\def\LLX{83,71,64,69,69,64,68,59,81,91,57,65,58,62}% +\def\LLY{183,168,171,178,176,172,165,158,183,182,163,175,164,175}% + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only} +\def\LLX{83,71,64,69,69,64,68,59,81,91,57,65,58,62}% +\def\LLY{183,168,171,178,176,172,165,158,183,182,163,175,164,175}% +\end{tcblisting} + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5} +%default output +\xintquadreg{\LLX}{\LLY}% +$a \approx \quadrega$ ; $b \approx \quadregb$ and $c \approx \quadregc$ +\end{tcblisting} + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5} +%personal macros + global rounding +\xintquadreg[coeffa=QUADa,coeffb=QUADb,coeffc=QUADc,round=2]{\LLX}{\LLY}% +$a \approx \QUADa$ ; $b \approx \QUADb$ and $c \approx \QUADc$ +\end{tcblisting} + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5} +%personal macros + individual rounding +\xintquadreg[coeffa=QUADRAa,coeffb=QUADRAb,coeffc=QUADRAc,round=4/3/2]{\LLX}{\LLY}% +$a \approx \QUADRAa$ ; $b \approx \QUADRAb$ and $c \approx \QUADRAc$ +\end{tcblisting} + +\subsection{Cubic regression}%, hyperbolic and logarithmic regression} + +The equation for cubic is \fbox{$ax^3+bx^2+cx+d$}. + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only} +\xintcubreg[coeffa=...,coeffb=...,coeffc=...,coeffd=...,round=...]{xlist}{ylist} +\end{tcblisting} + +By default, \MontreCode{coeffa=cubrega} ; \MontreCode{coeffb=cubregb} ; \MontreCode{coeffc=cubregc} and \MontreCode{coeffd=cubregd}. + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only} +\def\LLX{83,71,64,69,69,64,68,59,81,91,57,65,58,62}% +\def\LLY{183,168,171,178,176,172,165,158,183,182,163,175,164,175}% +\end{tcblisting} + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5} +%individual roudings +\xintcubreg[round=5/3/2/1]{\LLX}{\LLY}% +$a \approx \cubrega$ ; $b \approx \cubregb$ ; $c \approx \cubregc$ and $d \approx \cubregd$ +\end{tcblisting} + +\subsection{Hyperbolic regression} + +The equation for hyperbolic is \fbox{$a+\displaystyle\frac{b}{x}$}. + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only} +\xinthypreg[coeffa=...,coeffb=...,round=...]{xlist}{ylist} +\end{tcblisting} + +By default, \MontreCode{coeffa=hyprega} and \MontreCode{coeffb=hypregb}. + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only} +\def\LLX{83,71,64,69,69,64,68,59,81,91,57,65,58,62}% +\def\LLY{183,168,171,178,176,172,165,158,183,182,163,175,164,175}% +\end{tcblisting} + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5} +%global roudings +\xinthypreg[round=2]{\LLX}{\LLY}% +$a \approx \hyprega$ and $b \approx \hypregb$ +\end{tcblisting} + +\subsection{Logarithmic regression} + +The equation for logarithmic is \fbox{$a+b\,\log(x)$}. + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only} +\xintlogreg[coeffa=...,coeffb=...,round=...]{xlist}{ylist} +\end{tcblisting} + +By default, \MontreCode{coeffa=logrega} and \MontreCode{coeffb=logregb}. + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only} +\def\LLX{83,71,64,69,69,64,68,59,81,91,57,65,58,62}% +\def\LLY{183,168,171,178,176,172,165,158,183,182,163,175,164,175}% +\end{tcblisting} + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5} +%individual roudings +\xintlogreg[round=1/4]{\LLX}{\LLY}% +$a \approx \logrega$ and $b \approx \logregb$ +\end{tcblisting} + +\subsection{Power regression} + +The equation for power is \fbox{$a \times x^{b}$}. + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only} +\xintpowreg[coeffa=...,coeffb=...,round=...]{xlist}{ylist} +\end{tcblisting} + +By default, \MontreCode{coeffa=powrega} and \MontreCode{coeffb=powregb}. + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only} +\def\LLX{83,71,64,69,69,64,68,59,81,91,57,65,58,62}% +\def\LLY{183,168,171,178,176,172,165,158,183,182,163,175,164,175}% +\end{tcblisting} + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5} +%default output +\xintpowreg{\LLX}{\LLY}% +$a \approx \powrega$ and $b \approx \powregb$ +\end{tcblisting} + +\subsection{Exponential regression} + +Available regressions are : + +\begin{itemize} + \item \fbox{$a \times b^{x}$} ; + \item \fbox{$e^{ax+b}$} ; + \item \fbox{$b\,e^{ax}$} ; + \item \fbox{$C+b\,e^{ax}$}. +\end{itemize} + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only} +%a*b^x +\xintexpabreg[coeffa=...,coeffb=...,round=...]{xlist}{ylist} +\end{tcblisting} + +By default, \MontreCode{coeffa=expabrega} and \MontreCode{coeffb=expabregb}. + +\smallskip + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only} +%e^(ax+b) +\xintexpreg[coeffa=...,coeffb=...,round=...]{xlist}{ylist} +\end{tcblisting} + +By default, \MontreCode{coeffa=exprega} and \MontreCode{coeffb=expregb}. + +\smallskip + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only} +%b*e^(ax) +\xintexpreg[Alt,coeffa=...,coeffb=...,round=...]{xlist}{ylist} +\end{tcblisting} + +By default, \MontreCode{coeffa=exprega} and \MontreCode{coeffb=expregb}. + +\smallskip + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only} +%C+b*e^(ax) +\xintexpoffreg[offset=C,coeffa=...,coeffb=...,round=...]{xlist}{ylist} +\end{tcblisting} + +By default, \MontreCode{coeffa=expregoffa} and \MontreCode{coeffb=expregoffb}. + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only} +\def\LLX{83,71,64,69,69,64,68,59,81,91,57,65,58,62}% +\def\LLY{183,168,171,178,176,172,165,158,183,182,163,175,164,175}% +\end{tcblisting} + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5} +%a*b^x +\xintexpabreg{\LLX}{\LLY} +$a \approx \expabrega$ and $b \approx \expabregb$ + +%e^(ax+b) +\xintexpreg{\LLX}{\LLY} +$a \approx \exprega$ and $b \approx \expregb$ + +%b*e^(ax) +\xintexpreg[Alt]{\LLX}{\LLY} +$a \approx \exprega$ and $b \approx \expregb$ + +%C+b*e^(ax) +\xintexpoffreg[offset=50]{\LLX}{\LLY} +$a \approx \expregoffa$ and $b \approx \expregoffb$ +\end{tcblisting} + +\pagebreak + +\section{Integration with other packages} + +\subsection{Number formatting} + +It is possible to format the results, according to locale rules, for example with \textsf{sinuitx}. + +\smallskip + +With \MontreCode{[locale=FR]} : + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5} +%a*b^x +\xintexpabreg[round=1/3]{\LLX}{\LLY}% +So we obtain $y \approx \num{\expabrega} \times e^{\num{\expabregb}\times x}$ +\end{tcblisting} + +\subsection{Plotting} + +It is also possible to integrate the package's commands into a plotting environment, such as \textsf{tikz} or \textsf{pgfplots}. + +\smallskip + +For example, with \textsf{tkz-grapheur} package : + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5} +\def\LISTEXX{0,50,100,140}% +\def\LISTEYY{275,290,315,350}% + +\begin{GraphiqueTikz} + [x=0.05cm,y=0.04cm,Xmin=0,Xmax=160,Xgrille=20,Xgrilles=10, + Origy=250,Ymin=250,Ymax=400,Ygrille=25,Ygrilles=5] + %window + \TracerAxesGrilles[Elargir=2.5mm,Police=\footnotesize]{auto}{auto} + %points + \TracerNuage[Style=o,CouleurNuage=red]{\LISTEXX}{\LISTEYY} + %regression expoffset C+b*epx(ax) + \xintexpoffreg[offset=250]{\LISTEXX}{\LISTEYY} + \DefinirCourbe[Nom=ajust,Couleur=blue,Trace] + <ajust> + {250+\expregoffb*exp(\expregoffa*x)} + %constructions + \PlacerImages[Couleurs=cyan/magenta,Traits]{ajust}{80} + \PlacerAntecedents[Style=x,Couleurs=blue/green!50!black,Traits]{ajust}{325} +\end{GraphiqueTikz} +\end{tcblisting} + +\pagebreak + +\section{History} + +\begin{quote} +\begin{verbatim} +0.1.0 : Initial version +\end{verbatim} +\end{quote} + +\end{document}
\ No newline at end of file diff --git a/macros/latex/contrib/xint-regression/tex/xint-regression.sty b/macros/latex/contrib/xint-regression/tex/xint-regression.sty new file mode 100644 index 0000000000..71413005aa --- /dev/null +++ b/macros/latex/contrib/xint-regression/tex/xint-regression.sty @@ -0,0 +1,662 @@ +% 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{xint-regression}[2024/06/05 0.1.0 Some classic regressions, with xint] +%0.1.0 Initial version + +%------Packages utiles +\RequirePackage{simplekv} +\RequirePackage{xintexpr} +\RequirePackage{listofitems} +\RequirePackage{xstring} + +%régression linéaire +\defKV[CoefRegLin]{% + coeffa=\def\RegLinCoefa{#1},% + coeffb=\def\RegLinCoefb{#1},% + round=\def\RegLinRound{#1} +} + +\setKVdefault[CoefRegLin]{% + coeffa=linrega,% + coeffb=linregb,% + round={} +} + +\newcommand\xintlinreg[3][]{% + \useKVdefault[CoefRegLin]% + \setKV[CoefRegLin]{#1}% on paramètres les nouvelles clés et on les simplifie + %listes des données + \def\xliste{#2}% + \def\yliste{#3}% + \readlist*\LX{\xliste}% + \readlist*\LY{\yliste}% + %taille des listes + \def\LNB{\inteval{\LXlen}}% + %somme des LX et des LY OK + \xdef\LXSomme{0}% + \xdef\LYSomme{0}% + \xintFor* ##1 in {\xintSeq{1}{\LNB}}\do{% + \xdef\LXSomme{\xintfloateval{\LXSomme+(\LX[##1])}}% + \xdef\LYSomme{\xintfloateval{\LYSomme+(\LY[##1])}}% + }% + %moyenne des LX et des LY OK + \xdef\LXmoy{\xintfloateval{\LXSomme/\LNB}}% + \xdef\LYmoy{\xintfloateval{\LYSomme/\LNB}}% + %variance des LX et des LY OK + \xdef\LXvar{0}% + \xintFor* ##1 in {\xintSeq{1}{\LNB}}\do{% + \xdef\LXvar{\xintfloateval{\LXvar+(\LX[##1]-(\LXmoy))*(\LX[##1]-(\LXmoy))}}% + } + \xdef\LXvar{\xintfloateval{\LXvar/\LNB}}% + \xdef\LYvar{0}% + \xintFor* ##1 in {\xintSeq{1}{\LNB}}\do{% + \xdef\LYvar{\xintfloateval{\LYvar+(\LY[##1]-(\LYmoy))*(\LY[##1]-(\LYmoy))}}% + }% + \xdef\LYvar{\xintfloateval{\LYvar/\LNB}}% + %covariance des XY OK + \xdef\LXYvar{0}% + \xintFor* ##1 in {\xintSeq{1}{\LNB}}\do{% + \xdef\LXYvar{\xintfloateval{\LXYvar+(\LX[##1]-(\LXmoy))*(\LY[##1]-(\LYmoy))}}% + }% + \xdef\LXYvar{\xintfloateval{\LXYvar/\LNB}}% + %COEFFS TEMPORAIRES OK + \xdef\tmp@reg@lin@a{\xintfloateval{\LXYvar/\LXvar}}% + \xdef\tmp@reg@lin@b{\xintfloateval{\LYmoy-(\tmp@reg@lin@a)*(\LXmoy)}}% + %STOCKAGE + \IfStrEq{\RegLinRound}{}% + {% + \expandafter\def\csname\RegLinCoefa\endcsname{\tmp@reg@lin@a}% + \expandafter\def\csname\RegLinCoefb\endcsname{\tmp@reg@lin@b}% + }% + {% + \IfSubStr{\RegLinRound}{/}% + {% + \StrCut{\RegLinRound}{/}{\xintarrondisreglina}{\xintarrondisreglinb}% + }% + {% + \xdef\xintarrondisreglina{\RegLinRound}\xdef\xintarrondisreglinb{\RegLinRound}% + }% + \expandafter\def\csname\RegLinCoefa\endcsname{\xintfloateval{round(\tmp@reg@lin@a,\xintarrondisreglina)}}% + \expandafter\def\csname\RegLinCoefb\endcsname{\xintfloateval{round(\tmp@reg@lin@b,\xintarrondisreglinb)}}% + }% +} + + + +%régression quadratique +\defKV[CoeffRegQuad]{% + coeffa=\def\RegQuadCoefa{#1},% + coeffb=\def\RegQuadCoefb{#1},% + coeffc=\def\RegQuadCoefc{#1},% + round=\def\RegQuadRound{#1} +} + +\setKVdefault[CoeffRegQuad]{% + coeffa=quadrega,% + coeffb=quadregb,% + coeffc=quadregc,% + round={} +} + +\newcommand\xintquadreg[3][]{% + \useKVdefault[CoeffRegQuad]% + \setKV[CoeffRegQuad]{#1}% on paramètres les nouvelles clés et on les simplifie + %listes des données + \def\xliste{#2}% + \def\yliste{#3}% + \readlist*\LX{\xliste}% + \readlist*\LY{\yliste}% + %taille des listes + \def\LNB{\inteval{\LXlen}}% + %somme importantes + \xdef\LXSomme{0}% + \xdef\LXCSomme{0}% + \xdef\LYSomme{0}% + \xdef\LXXSomme{0}% + \xdef\LXYSomme{0}% + \xdef\LXXCSomme{0}% + \xdef\LXCXCSomme{0}% + \xdef\LXCYSomme{0}% + %calculs + \xintFor* ##1 in {\xintSeq{1}{\LNB}}\do{% + \xdef\LXSomme{\xintfloateval{\LXSomme+(\LX[##1])}}% + \xdef\LXCSomme{\xintfloateval{\LXCSomme+(\LX[##1])^2}}% + }% + \xintFor* ##1 in {\xintSeq{1}{\LNB}}\do{% + \xdef\LYSomme{\xintfloateval{\LYSomme+(\LY[##1])}}% + }% + \xdef\LXmoy{\xintfloateval{\LXSomme/\LNB}}% + \xdef\LYmoy{\xintfloateval{\LYSomme/\LNB}}% + \xdef\LXCmoy{\xintfloateval{\LXCSomme/\LNB}}% + %calculs suites + \xintFor* ##1 in {\xintSeq{1}{\LNB}}\do{% + \xdef\LXXSomme{\xintfloateval{\LXXSomme+(\LX[##1]-\LXmoy)^2}}% + \xdef\LXYSomme{\xintfloateval{\LXYSomme+(\LX[##1]-\LXmoy)*(\LY[##1]-\LYmoy)}}% + \xdef\LXXCSomme{\xintfloateval{\LXXCSomme+(\LX[##1]-\LXmoy)*((\LX[##1])*(\LX[##1])-\LXCmoy)}}% + \xdef\LXCXCSomme{\xintfloateval{\LXCXCSomme+((\LX[##1])^2-\LXCmoy)^2}}% + \xdef\LXCYSomme{\xintfloateval{\LXCYSomme+((\LX[##1])^2-\LXCmoy)*(\LY[##1]-\LYmoy)}}% + }% + %COEFFS TEMPORAIRES OK + \xdef\tmp@reg@quad@b{\xintfloateval{(\LXYSomme*\LXCXCSomme-\LXCYSomme*\LXXCSomme)/(\LXXSomme*\LXCXCSomme-(\LXXCSomme)^2)}}% + \xdef\tmp@reg@quad@a{\xintfloateval{(\LXCYSomme*\LXXSomme-\LXYSomme*\LXXCSomme)/(\LXXSomme*\LXCXCSomme-(\LXXCSomme)^2)}}% + \xdef\tmp@reg@quad@c{\xintfloateval{\LYmoy-(\tmp@reg@quad@b)*\LXmoy-(\tmp@reg@quad@a)*\LXCmoy}}% + %STOCKAGE + \IfStrEq{\RegQuadRound}{}% + {% + \expandafter\def\csname\RegQuadCoefb\endcsname{\tmp@reg@quad@b}% + \expandafter\def\csname\RegQuadCoefa\endcsname{\tmp@reg@quad@a}% + \expandafter\def\csname\RegQuadCoefc\endcsname{\tmp@reg@quad@c}% + }% + {% + \IfSubStr{\RegQuadRound}{/}% + {% + \StrBefore[1]{\RegQuadRound}{/}[\xintarrondisregquada]% + \StrBetween[1,2]{\RegQuadRound}{/}{/}[\xintarrondisregquadb]% + \StrBehind[2]{\RegQuadRound}{/}[\xintarrondisregquadc]% + }% + {% + \xdef\xintarrondisregquada{\RegQuadRound}% + \xdef\xintarrondisregquadb{\RegQuadRound}% + \xdef\xintarrondisregquadc{\RegQuadRound}% + + }% + \expandafter\def\csname\RegQuadCoefb\endcsname{\xintfloateval{round(\tmp@reg@quad@b,\xintarrondisregquadb)}}% + \expandafter\def\csname\RegQuadCoefa\endcsname{\xintfloateval{round(\tmp@reg@quad@a,\xintarrondisregquada)}}% + \expandafter\def\csname\RegQuadCoefc\endcsname{\xintfloateval{round(\tmp@reg@quad@c,\xintarrondisregquadc)}}% + }% +} + +%régression puissance a*x^b +\defKV[CoeffRegPuiss]{% + coeffa=\def\RegPuissCoefa{#1},% + coeffb=\def\RegPuissCoefb{#1},% + round=\def\RegPuissRound{#1} +} + +\setKVdefault[CoeffRegPuiss]{% + coeffa=powrega,% + coeffb=powregb,% + round={} +} + +\newcommand\xintpowreg[3][]{% + \useKVdefault[CoeffRegPuiss]% + \setKV[CoeffRegPuiss]{#1}% on paramètres les nouvelles clés et on les simplifie + %listes des données + \def\xliste{#2}% + \def\yliste{#3}% + \readlist*\LX{\xliste}% + \readlist*\LY{\yliste}% + %taille des listes + \def\LNB{\inteval{\LXlen}}% + %somme importantes + \xdef\LlnXSomme{0}% + \xdef\LlnYSomme{0}% + \xdef\LlnXlnYSomme{0}% + \xdef\LlncXSomme{0}% + %calculs + \xintFor* ##1 in {\xintSeq{1}{\LNB}}\do{% + \xdef\LlnXSomme{\xintfloateval{\LlnXSomme+log(\LX[##1])}}% + \xdef\LlnYSomme{\xintfloateval{\LlnYSomme+log(\LY[##1])}}% + \xdef\LlnXlnYSomme{\xintfloateval{\LlnXlnYSomme+log(\LX[##1])*log(\LY[##1])}}% + \xdef\LlncXSomme{\xintfloateval{\LlncXSomme+(log(\LX[##1]))^2}}% + }% + %COEFFS TEMPORAIRES OK + \xdef\tmp@reg@pow@b{\xintfloateval{(\LNB*\LlnXlnYSomme-\LlnXSomme*\LlnYSomme)/(\LNB*\LlncXSomme-(\LlnXSomme)^2)}}% + \xdef\tmp@reg@pow@a{\xintfloateval{exp(1/\LNB*\LlnYSomme-(\tmp@reg@pow@b)/\LNB*\LlnXSomme)}}% + %STOCKAGE + \IfStrEq{\RegPuissRound}{}% + {% + \expandafter\def\csname\RegPuissCoefb\endcsname{\xintfloateval{\tmp@reg@pow@b}}% + \expandafter\def\csname\RegPuissCoefa\endcsname{\xintfloateval{\tmp@reg@pow@a}}% + }% + {% + \IfSubStr{\RegPuissRound}{/}% + {% + \StrCut{\RegPuissRound}{/}{\xintarrondisregpowa}{\xintarrondisregpowb}% + }% + {% + \xdef\xintarrondisregpowa{\RegPuissRound}\xdef\xintrrondisregpowb{\RegPuissRound}% + }% + \expandafter\def\csname\RegPuissCoefb\endcsname{\xintfloateval{round(\tmp@reg@pow@b,\xintarrondisregpowb)}}% + \expandafter\def\csname\RegPuissCoefa\endcsname{\xintfloateval{round(\tmp@reg@pow@a,\xintarrondisregpowa)}}% + }% +} + +%régression a*b^x +\defKV[CoeffRegExpoAB]{% + coeffa=\def\RegExpoCoefa{#1},% + coeffb=\def\RegExpoCoefb{#1},% + round=\def\RegExpoRound{#1} +} + +\setKVdefault[CoeffRegExpoAB]{% + coeffa=expabrega,% + coeffb=expabregb,% + round={} +} + +\newcommand\xintexpabreg[3][]{% + \useKVdefault[CoeffRegExpoAB]% + \setKV[CoeffRegExpoAB]{#1}% on paramètres les nouvelles clés et on les simplifie + %listes des données + \def\xliste{#2}% + \def\yliste{#3}% + \readlist*\LX{\xliste}% + \readlist*\LY{\yliste}% + %taille des listes + \def\LNB{\inteval{\LXlen}}% + %somme importantes + \xdef\LXlnYSomme{0}% + \xdef\LXSomme{0}% + \xdef\LlnYSomme{0}% + \xdef\LXcSomme{0}% + %calculs + \xintFor* ##1 in {\xintSeq{1}{\LNB}}\do{% + \xdef\LXlnYSomme{\xintfloateval{\LXlnYSomme+\LX[##1]*log(\LY[##1])}}% + \xdef\LXSomme{\xintfloateval{\LXSomme+\LX[##1]}}% + \xdef\LlnYSomme{\xintfloateval{\LlnYSomme+log(\LY[##1])}}% + \xdef\LXcSomme{\xintfloateval{\LXcSomme+(\LX[##1])^2}}% + }% + %COEFFS TEMPORAIRES OK + \xdef\tmp@reg@expab@b{\xintfloateval{exp((\LNB*\LXlnYSomme-\LXSomme*\LlnYSomme)/(\LNB*\LXcSomme-(\LXSomme)^2))}}% + \xdef\tmp@reg@expab@a{\xintfloateval{exp(1/\LNB*\LlnYSomme-log(\tmp@reg@expab@b)/\LNB*\LXSomme)}}% + %STOCKAGE + \IfStrEq{\RegExpoRound}{}% + {% + \expandafter\def\csname\RegExpoCoefb\endcsname{\tmp@reg@expab@b}% + \expandafter\def\csname\RegExpoCoefa\endcsname{\tmp@reg@expab@a}% + }% + {% + \IfSubStr{\RegExpoRound}{/}% + {% + \StrCut{\RegExpoRound}{/}{\xintarrondisregexpoaba}{\xintarrondisregexpoabb}% + }% + {% + \xdef\xintarrondisregexpoaba{\RegExpoRound}\xdef\xintarrondisregexpoabb{\RegExpoRound}% + }% + \expandafter\def\csname\RegExpoCoefb\endcsname{\xintfloateval{round(\tmp@reg@expab@b,\xintarrondisregexpoabb)}}% + \expandafter\def\csname\RegExpoCoefa\endcsname{\xintfloateval{round(\tmp@reg@expab@a,\xintarrondisregexpoaba)}}% + }% +} + +%régression a+b/x +\defKV[CoeffRegHyperb]{% + coeffa=\def\RegHyperbCoefa{#1},% + coeffb=\def\RegHyperbCoefb{#1},% + round=\def\RegHyperbRound{#1} +} + +\setKVdefault[CoeffRegHyperb]{% + coeffa=hyprega,% + coeffb=hypregb,% + round={} +} + +\newcommand\xinthypreg[3][]{% + \useKVdefault[CoeffRegHyperb]% + \setKV[CoeffRegHyperb]{#1}% on paramètres les nouvelles clés et on les simplifie + %listes des données + \def\xliste{#2}% + \def\yliste{#3}% + \readlist*\LX{\xliste}% + \readlist*\LY{\yliste}% + %taille des listes + \def\LNB{\inteval{\LXlen}}% + %somme importantes + \xdef\LinvXSomme{0}% + \xdef\LYdivXSomme{0}% + \xdef\LYSomme{0}% + \xdef\LinvXcSomme{0}% + %calculs + \xintFor* ##1 in {\xintSeq{1}{\LNB}}\do{% + \xdef\LinvXSomme{\xintfloateval{\LinvXSomme+1/\LX[##1]}}% + \xdef\LYdivXSomme{\xintfloateval{\LYdivXSomme+\LY[##1]/\LX[##1]}}% + \xdef\LYSomme{\xintfloateval{\LYSomme+\LY[##1]}}% + \xdef\LinvXcSomme{\xintfloateval{\LinvXcSomme+1/(\LX[##1])^2}}% + }% + %COEFFS TEMPORAIRES OK + \xdef\tmp@reg@hyp@b{\xintfloateval{(\LNB*\LYdivXSomme-\LinvXSomme*\LYSomme)/(\LNB*\LinvXcSomme-(\LinvXSomme)^2)}}% + \xdef\tmp@reg@hyp@a{\xintfloateval{1/\LNB*\LYSomme-(\tmp@reg@hyp@b)/\LNB*\LinvXSomme}}% + %STOCKAGE + \IfStrEq{\RegHyperbRound}{}% + {% + \expandafter\def\csname\RegHyperbCoefb\endcsname{\tmp@reg@hyp@b}% + \expandafter\def\csname\RegHyperbCoefa\endcsname{\tmp@reg@hyp@a}% + }% + {% + \IfSubStr{\RegHyperbRound}{/}% + {% + \StrCut{\RegHyperbRound}{/}{\xintarrondisreghypa}{\xintarrondisreghypb}% + }% + {% + \xdef\xintarrondisreghypa{\RegHyperbRound}\xdef\xintarrondisreghypb{\RegHyperbRound}% + }% + \expandafter\def\csname\RegHyperbCoefb\endcsname{\xintfloateval{round(\tmp@reg@hyp@b,\xintarrondisreghypb)}}% + \expandafter\def\csname\RegHyperbCoefa\endcsname{\xintfloateval{round(\tmp@reg@hyp@a,\xintarrondisreghypa)}}% + }% +} + +%régression a+b*ln(x) +\defKV[CoeffRegLog]{% + coeffa=\def\RegLogCoefa{#1},% + coeffb=\def\RegLogCoefb{#1},% + round=\def\RegLogRound{#1} +} + +\setKVdefault[CoeffRegLog]{% + coeffa=logrega,% + coeffb=logregb,% + round={} +} + +\newcommand\xintlogreg[3][]{% + \useKVdefault[CoeffRegLog]% + \setKV[CoeffRegLog]{#1}% on paramètres les nouvelles clés et on les simplifie + %listes des données + \def\xliste{#2}% + \def\yliste{#3}% + \readlist*\LX{\xliste}% + \readlist*\LY{\yliste}% + %taille des listes + \def\LNB{\inteval{\LXlen}}% + %somme importantes + \xdef\LYlnXSomme{0}% + \xdef\LlnXSomme{0}% + \xdef\LYSomme{0}% + \xdef\LYlncXSomme{0}% + %calculs + \xintFor* ##1 in {\xintSeq{1}{\LNB}}\do{% + \xdef\LYlnXSomme{\xintfloateval{\LYlnXSomme+\LY[##1]*log(\LX[##1])}}% + \xdef\LlnXSomme{\xintfloateval{\LlnXSomme+log(\LX[##1])}}% + \xdef\LYSomme{\xintfloateval{\LYSomme+\LY[##1]}}% + \xdef\LYlncXSomme{\xintfloateval{\LYlncXSomme+log(\LX[##1])^2}}% + }% + %COEFFS TEMPORAIRES OK + \xdef\tmp@reg@log@b{\xintfloateval{(\LNB*\LYlnXSomme-\LlnXSomme*\LYSomme)/(\LNB*\LYlncXSomme-(\LlnXSomme)^2)}}% + \xdef\tmp@reg@log@a{\xintfloateval{1/\LNB*\LYSomme-(\tmp@reg@log@b)/\LNB*\LlnXSomme}}% + %STOCKAGE + \IfStrEq{\RegLogRound}{}% + {% + \expandafter\def\csname\RegLogCoefb\endcsname{\tmp@reg@log@b}% + \expandafter\def\csname\RegLogCoefa\endcsname{\tmp@reg@log@a}% + }% + {% + \IfSubStr{\RegLogRound}{/}% + {% + \StrCut{\RegLogRound}{/}{\xintarrondisregloga}{\xintarrondisreglogb}% + }% + {% + \xdef\xintarrondisregloga{\RegLogRound}\xdef\xintarrondisreglogb{\RegLogRound}% + }% + \expandafter\def\csname\RegLogCoefb\endcsname{\xintfloateval{round(\tmp@reg@log@b,\xintarrondisreglogb)}}% + \expandafter\def\csname\RegLogCoefa\endcsname{\xintfloateval{round(\tmp@reg@log@a,\xintarrondisregloga)}}% + }% +} + +%régression e^(ax+b) +\defKV[CoeffRegExpo]{% + coeffa=\def\RegExpoNCoefa{#1},% + coeffb=\def\RegExpoNCoefb{#1},% + round=\def\RegExpoNRound{#1} +} + +\setKVdefault[CoeffRegExpo]{% + coeffa=exprega,% + coeffb=expregb,% + Alt=false,% + round={} +} + +\newcommand\xintexpreg[3][]{% + \useKVdefault[CoeffRegExpo]% + \setKV[CoeffRegExpo]{#1}% on paramètres les nouvelles clés et on les simplifie + %listes des données + \def\xliste{#2}% + \def\yliste{#3}% + \readlist*\LX{\xliste}% + \readlist*\LY{\yliste}% + %taille des listes + \def\LNB{\inteval{\LXlen}}% + %somme importantes + \xdef\LXlnYSomme{0}% + \xdef\LXSomme{0}% + \xdef\LlnYSomme{0}% + \xdef\LXcSomme{0}% + %calculs + \xintFor* ##1 in {\xintSeq{1}{\LNB}}\do{% + \xdef\LXlnYSomme{\xintfloateval{\LXlnYSomme+\LX[##1]*log(\LY[##1])}}% + \xdef\LXSomme{\xintfloateval{\LXSomme+\LX[##1]}}% + \xdef\LlnYSomme{\xintfloateval{\LlnYSomme+log(\LY[##1])}}% + \xdef\LXcSomme{\xintfloateval{\LXcSomme+(\LX[##1])^2}}% + }% + %COEFFS TEMPORAIRES + \xdef\TmpCoeffExpoA{\xintfloateval{(\LNB*\LXlnYSomme-\LXSomme*\LlnYSomme)/(\LNB*\LXcSomme-(\LXSomme)^2)}}% + \xdef\TmpCoeffExpoB{\xintfloateval{1/\LNB*\LlnYSomme-(\TmpCoeffExpoA)/\LNB*\LXSomme}}% + \ifboolKV[CoeffRegExpo]{Alt}% + {% + %STOCKAGE + \IfStrEq{\RegExpoNRound}{}% + {% + \expandafter\def\csname\RegExpoNCoefb\endcsname{\xintfloateval{exp(\TmpCoeffExpoB)}}% + \expandafter\def\csname\RegExpoNCoefa\endcsname{\TmpCoeffExpoA}% + }% + {% + \IfSubStr{\RegExpoNRound}{/}% + {% + \StrCut{\RegExpoNRound}{/}{\xintarrondisregexpoa}{\xintarrondisregexpob}% + }% + {% + \xdef\xintarrondisregexpoa{\RegExpoNRound}\xdef\xintarrondisregexpob{\RegExpoNRound}% + }% + \expandafter\def\csname\RegExpoNCoefb\endcsname{\xintfloateval{round(exp(\TmpCoeffExpoB),\xintarrondisregexpob)}}% + \expandafter\def\csname\RegExpoNCoefa\endcsname{\xintfloateval{round(\TmpCoeffExpoA,\xintarrondisregexpoa)}}% + }% + }% + {% + %STOCKAGE + \IfStrEq{\RegExpoNRound}{}% + {% + \expandafter\def\csname\RegExpoNCoefb\endcsname{\TmpCoeffExpoB}% + \expandafter\def\csname\RegExpoNCoefa\endcsname{\TmpCoeffExpoA}% + }% + {% + \IfSubStr{\RegExpoNRound}{/}% + {% + \StrCut{\RegExpoNRound}{/}{\xintarrondisregexpoa}{\xintarrondisregexpob}% + }% + {% + \xdef\xintarrondisregexpoa{\RegExpoNRound}\xdef\xintarrondisregexpob{\RegExpoNRound}% + }% + \expandafter\def\csname\RegExpoNCoefb\endcsname{\xintfloateval{round(\TmpCoeffExpoB,\xintarrondisregexpob)}}% + \expandafter\def\csname\RegExpoNCoefa\endcsname{\xintfloateval{round(\TmpCoeffExpoA,\xintarrondisregexpoa)}}% + }% + }% +} + +%régression C + b*e^(ax) +\defKV[CoeffRegExpoOff]{% + coeffa=\def\RegExpoOffCoefa{#1},% + coeffb=\def\RegExpoOffCoefb{#1},% + offset=\def\RegExpoOffset{#1},% + round=\def\RegExpoOffRound{#1} +} + +\setKVdefault[CoeffRegExpoOff]{% + coeffa=expregoffa,% + coeffb=expregoffb,% + offset=0,% + round={} +} + +\newcommand\xintexpoffreg[3][]{% + \useKVdefault[CoeffRegExpoOff]% + \setKV[CoeffRegExpoOff]{#1}% on paramètres les nouvelles clés et on les simplifie + %listes des données + \def\xliste{#2}% + \def\yliste{#3}% + \readlist*\LX{\xliste}% + \readlist*\LY{\yliste}% + %taille des listes + \def\LNB{\inteval{\LXlen}}% + %somme importantes + \xdef\LXlnYSomme{0}% + \xdef\LXSomme{0}% + \xdef\LlnYSomme{0}% + \xdef\LXcSomme{0}% + %calculs + \xintFor* ##1 in {\xintSeq{1}{\LNB}}\do{% + \xdef\LXlnYSomme{\xintfloateval{\LXlnYSomme+\LX[##1]*log(\LY[##1]-\RegExpoOffset)}}% + \xdef\LXSomme{\xintfloateval{\LXSomme+\LX[##1]}}% + \xdef\LlnYSomme{\xintfloateval{\LlnYSomme+log(\LY[##1]-\RegExpoOffset)}}% + \xdef\LXcSomme{\xintfloateval{\LXcSomme+(\LX[##1])^2}}% + }% + %COEFFS TEMPORAIRES + \xdef\TmpCoeffExpoA{\xintfloateval{(\LNB*\LXlnYSomme-\LXSomme*\LlnYSomme)/(\LNB*\LXcSomme-(\LXSomme)^2)}}% + \xdef\TmpCoeffExpoB{\xintfloateval{1/\LNB*\LlnYSomme-(\TmpCoeffExpoA)/\LNB*\LXSomme}}% + %STOCKAGE + \IfStrEq{\RegExpoOffRound}{}% + {% + \expandafter\def\csname\RegExpoOffCoefb\endcsname{\xintfloateval{exp(\TmpCoeffExpoB)}}% + \expandafter\def\csname\RegExpoOffCoefa\endcsname{\xintfloateval{\TmpCoeffExpoA}}% + }% + {% + \IfSubStr{\RegExpoOffRound}{/}% + {% + \StrCut{\RegExpoOffRound}{/}{\xintarrondisregexpoffa}{\xintarrondisregexpoffb}% + }% + {% + \xdef\xintarrondisregexpoffa{\RegExpoOffRound}\xdef\xintarrondisregexpoffb{\RegExpoOffRound}% + }% + \expandafter\def\csname\RegExpoOffCoefb\endcsname{\xintfloateval{round(exp(\TmpCoeffExpoB),\xintarrondisregexpoffb)}}% + \expandafter\def\csname\RegExpoOffCoefa\endcsname{\xintfloateval{round(\TmpCoeffExpoA,\xintarrondisregexpoffa)}}% + }% +} + +%régression cubique +\defKV[CoeffRegCubic]{% + coeffa=\def\RegCubicCoefa{#1},% + coeffb=\def\RegCubicCoefb{#1},% + coeffc=\def\RegCubicCoefc{#1},% + coeffd=\def\RegCubicCoefd{#1},% + round=\def\RegCubicRound{#1} +} + +\setKVdefault[CoeffRegCubic]{% + coeffa=cubrega,% + coeffb=cubregb,% + coeffc=cubregc,% + coeffd=cubregd,% + round={} +} + +\newcommand\xintcubreg[3][]{% + \useKVdefault[CoeffRegCubic]% + \setKV[CoeffRegCubic]{#1}% on paramètres les nouvelles clés et on les simplifie + %listes des données + \def\xliste{#2}% + \def\yliste{#3}% + \readlist*\LX{\xliste}% + \readlist*\LY{\yliste}% + %taille des listes + \def\LNB{\inteval{\LXlen}}% + %somme importantes + \xdef\LXSomme{0}% + \xdef\LXdSomme{0}% + \xdef\LXtSomme{0}% + \xdef\LXqSomme{0}% + \xdef\LXcSomme{0}% + \xdef\LXsSomme{0}% + \xdef\LYSomme{0}% + \xdef\LXYSomme{0}% + \xdef\LXdYSomme{0}% + \xdef\LXtYSomme{0}% + %calculs + \xintFor* ##1 in {\xintSeq{1}{\LNB}}\do{% + \xdef\LXSomme{\xintfloateval{\LXSomme+\LX[##1]}}% + \xdef\LXdSomme{\xintfloateval{\LXdSomme+(\LX[##1])^2}}% + \xdef\LXtSomme{\xintfloateval{\LXtSomme+(\LX[##1])^3}}% + \xdef\LXqSomme{\xintfloateval{\LXqSomme+(\LX[##1])^4}}% + \xdef\LXcSomme{\xintfloateval{\LXcSomme+(\LX[##1])^5}}% + \xdef\LXsSomme{\xintfloateval{\LXsSomme+(\LX[##1])^6}}% + \xdef\LYSomme{\xintfloateval{\LYSomme+\LY[##1]}}% + \xdef\LXYSomme{\xintfloateval{\LXYSomme+\LX[##1]*\LY[##1]}}% + \xdef\LXdYSomme{\xintfloateval{\LXdYSomme+(\LX[##1])^2*\LY[##1]}}% + \xdef\LXtYSomme{\xintfloateval{\LXtYSomme+(\LX[##1])^3*\LY[##1]}}% + }% + %calculs suites, avec des matrices !! + \def\MatA{\LXtSomme}% + \def\MatB{\LXdSomme}% + \def\MatC{\LXSomme}% + \def\MatD{\LNB}% + \def\MatE{\LXqSomme}% + \def\MatF{\LXtSomme}% + \def\MatG{\LXdSomme}% + \def\MatH{\LXSomme}% + \def\MatI{\LXcSomme}% + \def\MatJ{\LXqSomme}% + \def\MatK{\LXtSomme}% + \def\MatL{\LXdSomme}% + \def\MatM{\LXsSomme}% + \def\MatN{\LXcSomme}% + \def\MatO{\LXqSomme}% + \def\MatP{\LXtSomme}% + \def\MatBA{\LYSomme}% + \def\MatBB{\LXYSomme}% + \def\MatBC{\LXdYSomme}% + \def\MatBD{\LXtYSomme}% + \def\DETMATRICE{\xintfloateval{\MatA*\MatF*\MatK*\MatP-\MatA*\MatF*\MatL*\MatO-\MatA*\MatG*\MatJ*\MatP+\MatA*\MatG*\MatL*\MatN+\MatA*\MatH*\MatJ*\MatO-\MatA*\MatH*\MatK*\MatN-\MatB*\MatE*\MatK*\MatP+\MatB*\MatE*\MatL*\MatO+\MatB*\MatG*\MatI*\MatP-\MatB*\MatG*\MatL*\MatM-\MatB*\MatH*\MatI*\MatO+\MatB*\MatH*\MatK*\MatM+\MatC*\MatE*\MatJ*\MatP-\MatC*\MatE*\MatL*\MatN-\MatC*\MatF*\MatI*\MatP+\MatC*\MatF*\MatL*\MatM+\MatC*\MatH*\MatI*\MatN-\MatC*\MatH*\MatJ*\MatM-\MatD*\MatE*\MatJ*\MatO+\MatD*\MatE*\MatK*\MatN+\MatD*\MatF*\MatI*\MatO-\MatD*\MatF*\MatK*\MatM-\MatD*\MatG*\MatI*\MatN+\MatD*\MatG*\MatJ*\MatM}}% + \def\MatInvA{(\MatF*\MatK*\MatP-\MatF*\MatL*\MatO-\MatG*\MatJ*\MatP+\MatG*\MatL*\MatN+\MatH*\MatJ*\MatO-\MatH*\MatK*\MatN)/\DETMATRICE}% + \def\MatInvB{(-\MatB*\MatK*\MatP+\MatB*\MatL*\MatO+\MatC*\MatJ*\MatP-\MatC*\MatL*\MatN-\MatD*\MatJ*\MatO+\MatD*\MatK*\MatN)/\DETMATRICE}% + \def\MatInvC{(\MatB*\MatG*\MatP-\MatB*\MatH*\MatO-\MatC*\MatF*\MatP+\MatC*\MatH*\MatN+\MatD*\MatF*\MatO-\MatD*\MatG*\MatN)/\DETMATRICE}% + \def\MatInvD{(-\MatB*\MatG*\MatL+\MatB*\MatH*\MatK+\MatC*\MatF*\MatL-\MatC*\MatH*\MatJ-\MatD*\MatF*\MatK+\MatD*\MatG*\MatJ)/\DETMATRICE}% + \def\MatInvE{(-\MatE*\MatK*\MatP+\MatE*\MatL*\MatO+\MatG*\MatI*\MatP-\MatG*\MatL*\MatM-\MatH*\MatI*\MatO+\MatH*\MatK*\MatM)/\DETMATRICE}% + \def\MatInvF{(\MatA*\MatK*\MatP-\MatA*\MatL*\MatO-\MatC*\MatI*\MatP+\MatC*\MatL*\MatM+\MatD*\MatI*\MatO-\MatD*\MatK*\MatM)/\DETMATRICE}% + \def\MatInvG{(-\MatA*\MatG*\MatP+\MatA*\MatH*\MatO+\MatC*\MatE*\MatP-\MatC*\MatH*\MatM-\MatD*\MatE*\MatO+\MatD*\MatG*\MatM)/\DETMATRICE}% + \def\MatInvH{(\MatA*\MatG*\MatL-\MatA*\MatH*\MatK-\MatC*\MatE*\MatL+\MatC*\MatH*\MatI+\MatD*\MatE*\MatK-\MatD*\MatG*\MatI)/\DETMATRICE}% + \def\MatInvI{(\MatE*\MatJ*\MatP-\MatE*\MatL*\MatN-\MatF*\MatI*\MatP+\MatF*\MatL*\MatM+\MatH*\MatI*\MatN-\MatH*\MatJ*\MatM)/\DETMATRICE}% + \def\MatInvJ{(-\MatA*\MatJ*\MatP+\MatA*\MatL*\MatN+\MatB*\MatI*\MatP-\MatB*\MatL*\MatM-\MatD*\MatI*\MatN+\MatD*\MatJ*\MatM)/\DETMATRICE}% + \def\MatInvK{(\MatA*\MatF*\MatP-\MatA*\MatH*\MatN-\MatB*\MatE*\MatP+\MatB*\MatH*\MatM+\MatD*\MatE*\MatN-\MatD*\MatF*\MatM)/\DETMATRICE}% + \def\MatInvL{(-\MatA*\MatF*\MatL+\MatA*\MatH*\MatJ+\MatB*\MatE*\MatL-\MatB*\MatH*\MatI-\MatD*\MatE*\MatJ+\MatD*\MatF*\MatI)/\DETMATRICE}% + \def\MatInvM{(-\MatE*\MatJ*\MatO+\MatE*\MatK*\MatN+\MatF*\MatI*\MatO-\MatF*\MatK*\MatM-\MatG*\MatI*\MatN+\MatG*\MatJ*\MatM)/\DETMATRICE}% + \def\MatInvN{(\MatA*\MatJ*\MatO-\MatA*\MatK*\MatN-\MatB*\MatI*\MatO+\MatB*\MatK*\MatM+\MatC*\MatI*\MatN-\MatC*\MatJ*\MatM)/\DETMATRICE}% + \def\MatInvO{(-\MatA*\MatF*\MatO+\MatA*\MatG*\MatN+\MatB*\MatE*\MatO-\MatB*\MatG*\MatM-\MatC*\MatE*\MatN+\MatC*\MatF*\MatM)/\DETMATRICE}% + \def\MatInvP{(\MatA*\MatF*\MatK-\MatA*\MatG*\MatJ-\MatB*\MatE*\MatK+\MatB*\MatG*\MatI+\MatC*\MatE*\MatJ-\MatC*\MatF*\MatI)/\DETMATRICE}% + %COEFFS TEMPORAIRES OK + \xdef\tmp@reg@cub@a{\xintfloateval{\MatInvA*\MatBA+\MatInvB*\MatBB+\MatInvC*\MatBC+\MatInvD*\MatBD}}% + \xdef\tmp@reg@cub@b{\xintfloateval{\MatInvE*\MatBA+\MatInvF*\MatBB+\MatInvG*\MatBC+\MatInvH*\MatBD}}% + \xdef\tmp@reg@cub@c{\xintfloateval{\MatInvI*\MatBA+\MatInvJ*\MatBB+\MatInvK*\MatBC+\MatInvL*\MatBD}}% + \xdef\tmp@reg@cub@d{\xintfloateval{\MatInvM*\MatBA+\MatInvN*\MatBB+\MatInvO*\MatBC+\MatInvP*\MatBD}}% + %STOCKAGE + \IfStrEq{\RegCubicRound}{}% + {% + \expandafter\def\csname\RegCubicCoefa\endcsname{\tmp@reg@cub@a}% + \expandafter\def\csname\RegCubicCoefb\endcsname{\tmp@reg@cub@b}% + \expandafter\def\csname\RegCubicCoefc\endcsname{\tmp@reg@cub@c}% + \expandafter\def\csname\RegCubicCoefd\endcsname{\tmp@reg@cub@d}% + }% + {% + \IfSubStr{\RegCubicRound}{/}% + {% + \StrBefore[1]{\RegCubicRound}{/}[\xintarrondisregcuba]% + \StrBetween[1,2]{\RegCubicRound}{/}{/}[\xintarrondisregcubb]% + \StrBetween[2,3]{\RegCubicRound}{/}{/}[\xintarrondisregcubc]% + \StrBehind[3]{\RegCubicRound}{/}[\xintarrondisregcubd]% + }% + {% + \xdef\xintarrondisregcuba{\RegCubicRound}% + \xdef\xintarrondisregcubb{\RegCubicRound}% + \xdef\xintarrondisregcubc{\RegCubicRound}% + \xdef\xintarrondisregcubd{\RegCubicRound}% + }% + \expandafter\def\csname\RegCubicCoefa\endcsname{\xintfloateval{round(\tmp@reg@cub@a,\xintarrondisregcuba)}}% + \expandafter\def\csname\RegCubicCoefb\endcsname{\xintfloateval{round(\tmp@reg@cub@b,\xintarrondisregcubb)}}% + \expandafter\def\csname\RegCubicCoefc\endcsname{\xintfloateval{round(\tmp@reg@cub@c,\xintarrondisregcubc)}}% + \expandafter\def\csname\RegCubicCoefd\endcsname{\xintfloateval{round(\tmp@reg@cub@d,\xintarrondisregcubd)}}% + }% +} + +\endinput
\ No newline at end of file diff --git a/macros/latex/required/l3kernel/CHANGELOG.md b/macros/latex/required/l3kernel/CHANGELOG.md index 82eb45806a..c58c1a6188 100644 --- a/macros/latex/required/l3kernel/CHANGELOG.md +++ b/macros/latex/required/l3kernel/CHANGELOG.md @@ -7,11 +7,19 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## [2024-05-27] + +### Added +- Syntax entries of `\keys_set_groups:nnn(n)N` + +### Fixed +- `\peek_analysis_map_inline:n` with active spaces (issue \#1539) + ## [2024-05-08] ### Added - Full set of variants for `\prop_(g)put_if_not_in:Nnn` -- `keys_set_groups:nnn(n)N` to match `keys_set_exclude_groups:nnn(n)N` +- `\keys_set_groups:nnn(n)N` to match `\keys_set_exclude_groups:nnn(n)N` ### Fixed - Implementation of deprecated `\pdf_object_write:nn` @@ -1734,7 +1742,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/2024-05-08...HEAD +[Unreleased]: https://github.com/latex3/latex3/compare/2024-05-27...HEAD +[2024-05-27]: https://github.com/latex3/latex3/compare/2024-05-08...2024-05-27 [2024-05-08]: https://github.com/latex3/latex3/compare/2024-04-11...2024-05-08 [2024-04-11]: https://github.com/latex3/latex3/compare/2024-03-14...2024-04-11 [2024-03-14]: https://github.com/latex3/latex3/compare/2024-02-20...2024-03-14 diff --git a/macros/latex/required/l3kernel/README.md b/macros/latex/required/l3kernel/README.md index 0928ea46ce..8946af1293 100644 --- a/macros/latex/required/l3kernel/README.md +++ b/macros/latex/required/l3kernel/README.md @@ -1,7 +1,7 @@ LaTeX3 Programming Conventions ============================== -Release 2024-05-08 +Release 2024-05-27 Overview -------- diff --git a/macros/latex/required/l3kernel/expl3.dtx b/macros/latex/required/l3kernel/expl3.dtx index f4129aeb02..4b4e61d3c8 100644 --- a/macros/latex/required/l3kernel/expl3.dtx +++ b/macros/latex/required/l3kernel/expl3.dtx @@ -24,7 +24,7 @@ % %<*driver|generic|package|2ekernel> %</driver|generic|package|2ekernel> -\def\ExplFileDate{2024-05-08}% +\def\ExplFileDate{2024-05-27}% %<*driver> \documentclass[full]{l3doc} \usepackage{graphicx} @@ -51,7 +51,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/expl3.pdf b/macros/latex/required/l3kernel/expl3.pdf Binary files differindex dd4f07af68..a6eca24ce4 100644 --- a/macros/latex/required/l3kernel/expl3.pdf +++ b/macros/latex/required/l3kernel/expl3.pdf diff --git a/macros/latex/required/l3kernel/interface3.pdf b/macros/latex/required/l3kernel/interface3.pdf Binary files differindex 309d9c92a7..5c72322e35 100644 --- a/macros/latex/required/l3kernel/interface3.pdf +++ b/macros/latex/required/l3kernel/interface3.pdf diff --git a/macros/latex/required/l3kernel/interface3.tex b/macros/latex/required/l3kernel/interface3.tex index 613eb673b0..62501cfa53 100644 --- a/macros/latex/required/l3kernel/interface3.tex +++ b/macros/latex/required/l3kernel/interface3.tex @@ -58,7 +58,7 @@ for those people who are interested. {latex-team@latex-project.org}% }% } -\date{Released 2024-05-08} +\date{Released 2024-05-27} \pagenumbering{roman} \maketitle diff --git a/macros/latex/required/l3kernel/l3basics.dtx b/macros/latex/required/l3kernel/l3basics.dtx index 4c00ec0032..69e4441580 100644 --- a/macros/latex/required/l3kernel/l3basics.dtx +++ b/macros/latex/required/l3kernel/l3basics.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3bitset.dtx b/macros/latex/required/l3kernel/l3bitset.dtx index 22cf7dc1f7..4559b56fd3 100644 --- a/macros/latex/required/l3kernel/l3bitset.dtx +++ b/macros/latex/required/l3kernel/l3bitset.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3bootstrap.dtx b/macros/latex/required/l3kernel/l3bootstrap.dtx index e17c056909..861f0bb5a6 100644 --- a/macros/latex/required/l3kernel/l3bootstrap.dtx +++ b/macros/latex/required/l3kernel/l3bootstrap.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3box.dtx b/macros/latex/required/l3kernel/l3box.dtx index 5d5aa54027..808d22da23 100644 --- a/macros/latex/required/l3kernel/l3box.dtx +++ b/macros/latex/required/l3kernel/l3box.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3cctab.dtx b/macros/latex/required/l3kernel/l3cctab.dtx index a8c5232b3e..4bf8db41a6 100644 --- a/macros/latex/required/l3kernel/l3cctab.dtx +++ b/macros/latex/required/l3kernel/l3cctab.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3clist.dtx b/macros/latex/required/l3kernel/l3clist.dtx index ebbfa29ddc..5adb01cffb 100644 --- a/macros/latex/required/l3kernel/l3clist.dtx +++ b/macros/latex/required/l3kernel/l3clist.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3coffins.dtx b/macros/latex/required/l3kernel/l3coffins.dtx index 76bbc78d99..62dc5f92ad 100644 --- a/macros/latex/required/l3kernel/l3coffins.dtx +++ b/macros/latex/required/l3kernel/l3coffins.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3color.dtx b/macros/latex/required/l3kernel/l3color.dtx index f9383d0404..b56fb9e0ac 100644 --- a/macros/latex/required/l3kernel/l3color.dtx +++ b/macros/latex/required/l3kernel/l3color.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3debug.dtx b/macros/latex/required/l3kernel/l3debug.dtx index 7fb64a8c13..21e6747a84 100644 --- a/macros/latex/required/l3kernel/l3debug.dtx +++ b/macros/latex/required/l3kernel/l3debug.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % @@ -69,7 +69,7 @@ % % Standard file identification. % \begin{macrocode} -\ProvidesExplFile{l3debug.def}{2024-05-08}{}{L3 Debugging support} +\ProvidesExplFile{l3debug.def}{2024-05-27}{}{L3 Debugging support} % \end{macrocode} % % \begin{variable}{\s_@@_stop} diff --git a/macros/latex/required/l3kernel/l3deprecation.dtx b/macros/latex/required/l3kernel/l3deprecation.dtx index d947bb4599..5852205ddc 100644 --- a/macros/latex/required/l3kernel/l3deprecation.dtx +++ b/macros/latex/required/l3kernel/l3deprecation.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3doc.dtx b/macros/latex/required/l3kernel/l3doc.dtx index 24efea50c7..43b719ce59 100644 --- a/macros/latex/required/l3kernel/l3doc.dtx +++ b/macros/latex/required/l3kernel/l3doc.dtx @@ -71,7 +71,7 @@ and all files in that bundle must be distributed together. % This isn't included in the typeset documentation because it's a bit % ugly: %<*class> -\ProvidesExplClass{l3doc}{2024-05-08}{} +\ProvidesExplClass{l3doc}{2024-05-27}{} {L3 Experimental documentation class} %</class> % \fi @@ -84,7 +84,7 @@ and all files in that bundle must be distributed together. % require you to do updates, if the class changes.}} % % \author{\Team} -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % \maketitle % \tableofcontents % diff --git a/macros/latex/required/l3kernel/l3doc.pdf b/macros/latex/required/l3kernel/l3doc.pdf Binary files differindex 9a856d8aed..42960f5e6f 100644 --- a/macros/latex/required/l3kernel/l3doc.pdf +++ b/macros/latex/required/l3kernel/l3doc.pdf diff --git a/macros/latex/required/l3kernel/l3docstrip.dtx b/macros/latex/required/l3kernel/l3docstrip.dtx index a3b62db0af..fecb228324 100644 --- a/macros/latex/required/l3kernel/l3docstrip.dtx +++ b/macros/latex/required/l3kernel/l3docstrip.dtx @@ -63,7 +63,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3docstrip.pdf b/macros/latex/required/l3kernel/l3docstrip.pdf Binary files differindex d2fe34a02b..efc8882c36 100644 --- a/macros/latex/required/l3kernel/l3docstrip.pdf +++ b/macros/latex/required/l3kernel/l3docstrip.pdf diff --git a/macros/latex/required/l3kernel/l3expan.dtx b/macros/latex/required/l3kernel/l3expan.dtx index 7b859acaa5..d13578bde1 100644 --- a/macros/latex/required/l3kernel/l3expan.dtx +++ b/macros/latex/required/l3kernel/l3expan.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3file.dtx b/macros/latex/required/l3kernel/l3file.dtx index ba460e3fee..546222711e 100644 --- a/macros/latex/required/l3kernel/l3file.dtx +++ b/macros/latex/required/l3kernel/l3file.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % @@ -809,7 +809,6 @@ % Sets the \meta{tl var} to the result of applying % \cs{file_size:n} to the \meta{file}. If the file is not found, % the \meta{tl var} will be set to \cs{q_no_value}. -% This is not available in older versions of \XeTeX{}. % \end{function} % % \begin{function}[rEXP, added = 2019-09-03] @@ -825,7 +824,6 @@ % \meta{minute}\meta{second}\meta{offset}, where the latter may be |Z| % (UTC) or \meta{plus-minus}\meta{hours}|'|\meta{minutes}|'|. % When the file is not found, the result of expansion is empty. -% This is not available in older versions of \XeTeX{}. % \end{function} % % \begin{function}[noTF, added = 2017-07-09, updated = 2019-02-16] @@ -836,7 +834,6 @@ % Sets the \meta{tl var} to the result of applying % \cs{file_timestamp:n} to the \meta{file}. If the file is not found, % the \meta{tl var} will be set to \cs{q_no_value}. -% This is not available in older versions of \XeTeX{}. % \end{function} % % \begin{function}[added = 2019-05-13, updated = 2019-09-20, pTF, EXP] @@ -863,7 +860,6 @@ % \end{verbatim} % to work when the derived file is entirely absent. The timestamp % of two absent files is regarded as different. -% This is not available in older versions of \XeTeX{}. % \end{function} % % \begin{function}[noTF, updated = 2019-02-16] diff --git a/macros/latex/required/l3kernel/l3flag.dtx b/macros/latex/required/l3kernel/l3flag.dtx index bf7776f449..88e726df35 100644 --- a/macros/latex/required/l3kernel/l3flag.dtx +++ b/macros/latex/required/l3kernel/l3flag.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-assign.dtx b/macros/latex/required/l3kernel/l3fp-assign.dtx index 9ef1944a99..e6fa97423e 100644 --- a/macros/latex/required/l3kernel/l3fp-assign.dtx +++ b/macros/latex/required/l3kernel/l3fp-assign.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % \maketitle % % \begin{documentation} diff --git a/macros/latex/required/l3kernel/l3fp-aux.dtx b/macros/latex/required/l3kernel/l3fp-aux.dtx index f788b85df9..1ad33e235e 100644 --- a/macros/latex/required/l3kernel/l3fp-aux.dtx +++ b/macros/latex/required/l3kernel/l3fp-aux.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-basics.dtx b/macros/latex/required/l3kernel/l3fp-basics.dtx index 83c9cc87fa..e2d93219b0 100644 --- a/macros/latex/required/l3kernel/l3fp-basics.dtx +++ b/macros/latex/required/l3kernel/l3fp-basics.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-convert.dtx b/macros/latex/required/l3kernel/l3fp-convert.dtx index e42fb383fe..4983a3dd1f 100644 --- a/macros/latex/required/l3kernel/l3fp-convert.dtx +++ b/macros/latex/required/l3kernel/l3fp-convert.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-expo.dtx b/macros/latex/required/l3kernel/l3fp-expo.dtx index 31eb49093d..7577f640d4 100644 --- a/macros/latex/required/l3kernel/l3fp-expo.dtx +++ b/macros/latex/required/l3kernel/l3fp-expo.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-extended.dtx b/macros/latex/required/l3kernel/l3fp-extended.dtx index e35f0ae55e..596dc86ef2 100644 --- a/macros/latex/required/l3kernel/l3fp-extended.dtx +++ b/macros/latex/required/l3kernel/l3fp-extended.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-functions.dtx b/macros/latex/required/l3kernel/l3fp-functions.dtx index e7667eaa9b..b9e269b988 100644 --- a/macros/latex/required/l3kernel/l3fp-functions.dtx +++ b/macros/latex/required/l3kernel/l3fp-functions.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-logic.dtx b/macros/latex/required/l3kernel/l3fp-logic.dtx index 49ad2b1c02..486a3bc579 100644 --- a/macros/latex/required/l3kernel/l3fp-logic.dtx +++ b/macros/latex/required/l3kernel/l3fp-logic.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-parse.dtx b/macros/latex/required/l3kernel/l3fp-parse.dtx index 7999be7966..7853c40132 100644 --- a/macros/latex/required/l3kernel/l3fp-parse.dtx +++ b/macros/latex/required/l3kernel/l3fp-parse.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-random.dtx b/macros/latex/required/l3kernel/l3fp-random.dtx index 2a3d00cb58..ff999926ab 100644 --- a/macros/latex/required/l3kernel/l3fp-random.dtx +++ b/macros/latex/required/l3kernel/l3fp-random.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-round.dtx b/macros/latex/required/l3kernel/l3fp-round.dtx index b96d496b22..0d39b8a26a 100644 --- a/macros/latex/required/l3kernel/l3fp-round.dtx +++ b/macros/latex/required/l3kernel/l3fp-round.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-symbolic.dtx b/macros/latex/required/l3kernel/l3fp-symbolic.dtx index cdb7383949..88e214f49e 100644 --- a/macros/latex/required/l3kernel/l3fp-symbolic.dtx +++ b/macros/latex/required/l3kernel/l3fp-symbolic.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-traps.dtx b/macros/latex/required/l3kernel/l3fp-traps.dtx index bca459effa..fec48bc163 100644 --- a/macros/latex/required/l3kernel/l3fp-traps.dtx +++ b/macros/latex/required/l3kernel/l3fp-traps.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % \maketitle % % \begin{documentation} diff --git a/macros/latex/required/l3kernel/l3fp-trig.dtx b/macros/latex/required/l3kernel/l3fp-trig.dtx index 8e8bc1cbf8..7c40c6198f 100644 --- a/macros/latex/required/l3kernel/l3fp-trig.dtx +++ b/macros/latex/required/l3kernel/l3fp-trig.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-types.dtx b/macros/latex/required/l3kernel/l3fp-types.dtx index 9764606e83..e9269e1f03 100644 --- a/macros/latex/required/l3kernel/l3fp-types.dtx +++ b/macros/latex/required/l3kernel/l3fp-types.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp.dtx b/macros/latex/required/l3kernel/l3fp.dtx index d49d2431cb..d273b057ea 100644 --- a/macros/latex/required/l3kernel/l3fp.dtx +++ b/macros/latex/required/l3kernel/l3fp.dtx @@ -49,7 +49,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fparray.dtx b/macros/latex/required/l3kernel/l3fparray.dtx index 8b8026a6b8..f48de27af3 100644 --- a/macros/latex/required/l3kernel/l3fparray.dtx +++ b/macros/latex/required/l3kernel/l3fparray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3int.dtx b/macros/latex/required/l3kernel/l3int.dtx index c4e8408af2..45050964de 100644 --- a/macros/latex/required/l3kernel/l3int.dtx +++ b/macros/latex/required/l3kernel/l3int.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % @@ -124,43 +124,7 @@ % input stream as an integer denotation: for positive results an % explicit sequence of decimal digits not starting with~\texttt{0}, % for negative results \texttt{-}~followed by such a sequence, and -% \texttt{0}~for zero. The \meta{int expr} should consist, -% after expansion, of \texttt{+}, \texttt{-}, \texttt{*}, \texttt{/}, -% \texttt{(}, \texttt{)} and of course integer operands. The result -% is calculated by applying standard mathematical rules with the -% following peculiarities: -% \begin{itemize} -% \item \texttt{/} denotes division rounded to the closest integer with -% ties rounded away from zero; -% \item there is an error and the overall expression evaluates to zero -% whenever the absolute value of any intermediate result exceeds -% $2^{31}-1$, except in the case of scaling operations -% $a$\texttt{*}$b$\texttt{/}$c$, for which $a$\texttt{*}$b$ may be -% arbitrarily large; -% \item parentheses may not appear after unary \texttt{+} or -% \texttt{-}, namely placing \texttt{+(} or \texttt{-(} at the start -% of an expression or after \texttt{+}, \texttt{-}, \texttt{*}, -% \texttt{/} or~\texttt{(} leads to an error. -% \end{itemize} -% Each integer operand can be either an integer variable (with no need -% for \cs{int_use:N}) or an integer denotation. For example both -% \begin{verbatim} -% \int_eval:n { 5 + 4 * 3 - ( 3 + 4 * 5 ) } -% \end{verbatim} -% and -% \begin{verbatim} -% \tl_new:N \l_my_tl -% \tl_set:Nn \l_my_tl { 5 } -% \int_new:N \l_my_int -% \int_set:Nn \l_my_int { 4 } -% \int_eval:n { \l_my_tl + \l_my_int * 3 - ( 3 + 4 * 5 ) } -% \end{verbatim} -% evaluate to $-6$ because \cs[no-index]{l_my_tl} expands to the -% integer denotation~|5|. As the \meta{int expr} is fully -% expanded from left to right during evaluation, fully expandable and -% restricted-expandable functions can both be used, and \cs{exp_not:n} -% and its variants have no effect while \cs{exp_not:N} may incorrectly -% interrupt the expression. +% \texttt{0}~for zero. % \begin{texnote} % Exactly two expansions are needed to evaluate \cs{int_eval:n}. % The result is \emph{not} an \meta{internal integer}, and therefore @@ -909,7 +873,6 @@ % \end{syntax} % Evaluates the two \meta{int expr}s and produces a % pseudo-random number between the two (with bounds included). -% This is not available in older versions of \XeTeX{}. % \end{function} % % \begin{function}[EXP, added = 2018-05-05]{\int_rand:n} @@ -918,7 +881,6 @@ % \end{syntax} % Evaluates the \meta{int expr} then produces a % pseudo-random number between $1$ and the \meta{int expr} (included). -% This is not available in older versions of \XeTeX{}. % \end{function} % % \section{Viewing integers} diff --git a/macros/latex/required/l3kernel/l3intarray.dtx b/macros/latex/required/l3kernel/l3intarray.dtx index 20e6219ef8..aa49275e78 100644 --- a/macros/latex/required/l3kernel/l3intarray.dtx +++ b/macros/latex/required/l3kernel/l3intarray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3kernel-functions.dtx b/macros/latex/required/l3kernel/l3kernel-functions.dtx index 6779a3ca6c..c3bb838acf 100644 --- a/macros/latex/required/l3kernel/l3kernel-functions.dtx +++ b/macros/latex/required/l3kernel/l3kernel-functions.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3keys.dtx b/macros/latex/required/l3kernel/l3keys.dtx index f03c628a63..13772d1781 100644 --- a/macros/latex/required/l3kernel/l3keys.dtx +++ b/macros/latex/required/l3kernel/l3keys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % @@ -792,36 +792,6 @@ % } % \end{verbatim} % -% \begin{function}[added = 2011-08-23, updated = 2019-01-29] -% { -% \keys_set_known:nn, \keys_set_known:nV, -% \keys_set_known:nv, \keys_set_known:ne, -% \keys_set_known:no, -% \keys_set_known:nnN, \keys_set_known:nVN, -% \keys_set_known:nvN, \keys_set_known:neN, -% \keys_set_known:noN, -% \keys_set_known:nnnN, \keys_set_known:nVnN, -% \keys_set_known:nvnN, \keys_set_known:nenN, -% \keys_set_known:nonN -% } -% \begin{syntax} -% \cs{keys_set_known:nn} \Arg{module} \Arg{keyval list} -% \cs{keys_set_known:nnN} \Arg{module} \Arg{keyval list} \meta{tl} -% \cs{keys_set_known:nnnN} \Arg{module} \Arg{keyval list} \Arg{root} \meta{tl} -% \end{syntax} -% These functions set keys which are known for the \meta{module}, and -% simply ignore other keys. The \cs{keys_set_known:nn} function parses the -% \meta{keyval list}, and sets those keys which are defined for -% \meta{module}. Any keys which are unknown are not processed further by -% the parser. In addition, \cs{keys_set_known:nnN} stores the key--value -% pairs in the \meta{tl} in comma-separated form (\emph{i.e.}~an edited -% version of the \meta{keyval list}). When a \meta{root} is given -% (\cs{keys_set_known:nnnN}), the key--value entries are returned -% relative to this point in the key tree. When it is absent, only the -% key name and value are provided. The correct list is returned by -% nested calls. -% \end{function} -% % \section{Selective key setting} % \label{sec:l3keys:selective} % @@ -862,33 +832,37 @@ % groups to be made \enquote{active}, or by marking one or more groups to % be ignored in key setting. % -% \begin{function}[added = 2024-01-10] +% \begin{function}[added = 2011-08-23, updated = 2019-01-29] % { -% \keys_set_exclude_groups:nnn, \keys_set_exclude_groups:nnV, -% \keys_set_exclude_groups:nnv, \keys_set_exclude_groups:nno, -% \keys_set_exclude_groups:nnnN, \keys_set_exclude_groups:nnVN, -% \keys_set_exclude_groups:nnvN, \keys_set_exclude_groups:nnoN, -% \keys_set_exclude_groups:nnnnN, \keys_set_exclude_groups:nnVnN, -% \keys_set_exclude_groups:nnvnN, \keys_set_exclude_groups:nnonN, +% \keys_set_known:nn, \keys_set_known:nV, +% \keys_set_known:nv, \keys_set_known:ne, +% \keys_set_known:no, +% \keys_set_known:nnN, \keys_set_known:nVN, +% \keys_set_known:nvN, \keys_set_known:neN, +% \keys_set_known:noN, +% \keys_set_known:nnnN, \keys_set_known:nVnN, +% \keys_set_known:nvnN, \keys_set_known:nenN, +% \keys_set_known:nonN % } % \begin{syntax} -% \cs{keys_set_exclude_groups:nnn} \Arg{module} \Arg{groups} \Arg{keyval list} -% \cs{keys_set_exclude_groups:nnnN} \Arg{module} \Arg{groups} \Arg{keyval list} \meta{tl} -% \cs{keys_set_exclude_groups:nnnnN} \Arg{module} \Arg{groups} \Arg{keyval list} \meta{root} \meta{tl} +% \cs{keys_set_known:nn} \Arg{module} \Arg{keyval list} +% \cs{keys_set_known:nnN} \Arg{module} \Arg{keyval list} \meta{tl~var} +% \cs{keys_set_known:nnnN} \Arg{module} \Arg{keyval list} \Arg{root} \meta{tl~var} % \end{syntax} -% Sets keys by excluding those in the specified \meta{groups}. -% The \meta{groups} are -% given as a comma-separated list. Unknown keys are not assigned to any -% group and are thus always set. The key--value pairs for each -% key which is filtered out are stored in the \meta{tl} in a -% comma-separated form (\emph{i.e.}~an edited version of the \meta{keyval -% list}). The \cs{keys_set_exclude_groups:nnn} version skips this stage. -% -% Use of \cs{keys_set_exclude_groups:nnnN} can be nested, with the correct residual -% \meta{keyval list} returned at each stage. In the version which takes -% a \meta{root} argument, the key list is returned relative to that point -% in the key tree. In the cases without a \meta{root} argument, only -% the key names and values are returned. +% These functions set keys which are known for the \meta{module}, and +% simply ignore other keys. The \cs{keys_set_known:nn} function parses the +% \meta{keyval list}, and sets those keys which are defined for +% \meta{module}. Any keys which are unknown are not processed further by +% the parser. +% +% In addition, \cs{keys_set_known:nnN} and \cs{keys_set_known:nnnN} +% store the key--value pairs for unknown keys in the \meta{tl~var} +% in comma-separated form (\emph{i.e.}~an edited version of the +% \meta{keyval list}). When a \meta{root} is given +% (\cs{keys_set_known:nnnN}), the key--value entries are returned +% relative to this point in the key tree. When it is absent, only the +% key name and value are provided. The correct list is returned by +% nested calls. % \end{function} % % \begin{function}[added = 2013-07-14, updated = 2024-05-08] @@ -902,25 +876,62 @@ % } % \begin{syntax} % \cs{keys_set_groups:nnn} \Arg{module} \Arg{groups} \Arg{keyval list} +% \cs{keys_set_groups:nnnN} \Arg{module} \Arg{groups} \Arg{keyval list} \meta{tl~var} +% \cs{keys_set_groups:nnnnN} \Arg{module} \Arg{groups} \Arg{keyval list} \Arg{root} \meta{tl~var} +% \end{syntax} +% These functions activate key selection in an \enquote{opt-in} sense: +% only keys assigned to one or more of the \meta{groups} specified are set. +% The \meta{groups} are given as a comma-separated list. Unknown keys are +% not assigned to any group and are thus never set. +% +% In addition, \cs{keys_set_groups:nnnN} and \cs{keys_set_groups:nnnnN} +% store the key--value pairs for skipped keys in the \meta{tl~var} +% in comma-separated form (\emph{i.e.}~an edited version of the +% \meta{keyval list}). When a \meta{root} is given +% (\cs{keys_set_groups:nnnnN}), the key--value entries are returned +% relative to this point in the key tree. When it is absent, only the +% key name and value are provided. The correct list is returned by +% nested calls. +% \end{function} +% +% \begin{function}[added = 2024-01-10] +% { +% \keys_set_exclude_groups:nnn, \keys_set_exclude_groups:nnV, +% \keys_set_exclude_groups:nnv, \keys_set_exclude_groups:nno, +% \keys_set_exclude_groups:nnnN, \keys_set_exclude_groups:nnVN, +% \keys_set_exclude_groups:nnvN, \keys_set_exclude_groups:nnoN, +% \keys_set_exclude_groups:nnnnN, \keys_set_exclude_groups:nnVnN, +% \keys_set_exclude_groups:nnvnN, \keys_set_exclude_groups:nnonN, +% } +% \begin{syntax} +% \cs{keys_set_exclude_groups:nnn} \Arg{module} \Arg{groups} \Arg{keyval list} +% \cs{keys_set_exclude_groups:nnnN} \Arg{module} \Arg{groups} \Arg{keyval list} \meta{tl~var} +% \cs{keys_set_exclude_groups:nnnnN} \Arg{module} \Arg{groups} \Arg{keyval list} \Arg{root} \meta{tl~var} % \end{syntax} -% Activates key filtering in an \enquote{opt-in} sense: only keys assigned to -% one or more of the \meta{groups} specified are set. The \meta{groups} are -% given as a comma-separated list. Unknown keys are not assigned to any -% group and are thus never set. The key--value pairs for each -% key which is filtered out are stored in the \meta{tl} in a -% comma-separated form (\emph{i.e.}~an edited version of the \meta{keyval -% list}). The \cs{keys_set_groups:nnn} version skips this stage +% These functions activate key selection in an \enquote{opt-out} sense: +% keys assigned to one or more of the \meta{groups} specified are +% \emph{not} set. The \meta{groups} are given as a comma-separated list. +% Unknown keys are not assigned to any group and are thus always set. +% +% In addition, \cs{keys_set_exclude_groups:nnnN} and +% \cs{keys_set_exclude_groups:nnnnN} store the key--value pairs for +% skipped keys in the \meta{tl~var} in comma-separated form +% (\emph{i.e.}~an edited version of the \meta{keyval list}). When a +% \meta{root} is given (\cs{keys_set_exclude_groups:nnnnN}), the +% key--value entries are returned relative to this point in the key +% tree. When it is absent, only the key name and value are provided. +% The correct list is returned by nested calls. % \end{function} % % \section{Digesting keys} % % \begin{function}[added = 2022-03-09]{\keys_precompile:nnN} % \begin{syntax} -% \cs{keys_precompile:nnN} \Arg{module} \Arg{keyval list} \meta{tl} +% \cs{keys_precompile:nnN} \Arg{module} \Arg{keyval list} \meta{tl~var} % \end{syntax} % Parses the \meta{keyval list} as for \cs{keys_set:nn}, placing the % resulting code for those which set variables or functions into the -% \meta{tl}. Thus this function \enquote{precompiles} the keyval list into +% \meta{tl~var}. Thus this function \enquote{precompiles} the keyval list into % a set of results which can be applied rapidly. % \end{function} % @@ -1687,14 +1698,14 @@ % \begin{variable}{\l_@@_selective_clist} % The list of key groups being filtered in or out during selective setting. % \begin{macrocode} -\seq_new:N \l_@@_selective_clist +\clist_new:N \l_@@_selective_clist % \end{macrocode} % \end{variable} % % \begin{variable}{\l_@@_tmp_clist} % Scratch space used as a data dump. % \begin{macrocode} -\seq_new:N \l_@@_tmp_clist +\clist_new:N \l_@@_tmp_clist % \end{macrocode} % \end{variable} % @@ -2148,7 +2159,7 @@ % % \begin{macro}{\@@_initialise:n} % A set up for initialisation: just run the code if it exists. -% We need to set the key string here, using the deprecated \texttt{tl} +% We need to set the key string here, using the deprecated \texttt{tl~var} % as a piece of scratch space. % \begin{macrocode} \cs_new_protected:Npn \@@_initialise:n #1 diff --git a/macros/latex/required/l3kernel/l3legacy.dtx b/macros/latex/required/l3kernel/l3legacy.dtx index fd30799ea1..4cfce5c5f1 100644 --- a/macros/latex/required/l3kernel/l3legacy.dtx +++ b/macros/latex/required/l3kernel/l3legacy.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3luatex.dtx b/macros/latex/required/l3kernel/l3luatex.dtx index 19d92a1591..eb10d5aecc 100644 --- a/macros/latex/required/l3kernel/l3luatex.dtx +++ b/macros/latex/required/l3kernel/l3luatex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3msg.dtx b/macros/latex/required/l3kernel/l3msg.dtx index 96fc231193..e901b07c06 100644 --- a/macros/latex/required/l3kernel/l3msg.dtx +++ b/macros/latex/required/l3kernel/l3msg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3names.dtx b/macros/latex/required/l3kernel/l3names.dtx index c2af4697f2..5cdd1361e3 100644 --- a/macros/latex/required/l3kernel/l3names.dtx +++ b/macros/latex/required/l3kernel/l3names.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3news.pdf b/macros/latex/required/l3kernel/l3news.pdf Binary files differindex eeea0487e7..4b57ef41c8 100644 --- a/macros/latex/required/l3kernel/l3news.pdf +++ b/macros/latex/required/l3kernel/l3news.pdf diff --git a/macros/latex/required/l3kernel/l3news01.pdf b/macros/latex/required/l3kernel/l3news01.pdf Binary files differindex eed44515b5..b5f45059d3 100644 --- a/macros/latex/required/l3kernel/l3news01.pdf +++ b/macros/latex/required/l3kernel/l3news01.pdf diff --git a/macros/latex/required/l3kernel/l3news02.pdf b/macros/latex/required/l3kernel/l3news02.pdf Binary files differindex 34df11b4f6..0ee8ffaf96 100644 --- a/macros/latex/required/l3kernel/l3news02.pdf +++ b/macros/latex/required/l3kernel/l3news02.pdf diff --git a/macros/latex/required/l3kernel/l3news03.pdf b/macros/latex/required/l3kernel/l3news03.pdf Binary files differindex fa2fc3a7b9..fef9bf3a7b 100644 --- a/macros/latex/required/l3kernel/l3news03.pdf +++ b/macros/latex/required/l3kernel/l3news03.pdf diff --git a/macros/latex/required/l3kernel/l3news04.pdf b/macros/latex/required/l3kernel/l3news04.pdf Binary files differindex c1b5f0e555..0afbb9591e 100644 --- a/macros/latex/required/l3kernel/l3news04.pdf +++ b/macros/latex/required/l3kernel/l3news04.pdf diff --git a/macros/latex/required/l3kernel/l3news05.pdf b/macros/latex/required/l3kernel/l3news05.pdf Binary files differindex a3dc4d6e02..0a44ce6811 100644 --- a/macros/latex/required/l3kernel/l3news05.pdf +++ b/macros/latex/required/l3kernel/l3news05.pdf diff --git a/macros/latex/required/l3kernel/l3news06.pdf b/macros/latex/required/l3kernel/l3news06.pdf Binary files differindex 765174a222..10cec7c17f 100644 --- a/macros/latex/required/l3kernel/l3news06.pdf +++ b/macros/latex/required/l3kernel/l3news06.pdf diff --git a/macros/latex/required/l3kernel/l3news07.pdf b/macros/latex/required/l3kernel/l3news07.pdf Binary files differindex d9d2c2a281..6bfbab4d96 100644 --- a/macros/latex/required/l3kernel/l3news07.pdf +++ b/macros/latex/required/l3kernel/l3news07.pdf diff --git a/macros/latex/required/l3kernel/l3news08.pdf b/macros/latex/required/l3kernel/l3news08.pdf Binary files differindex 810cc505a0..a0130195cc 100644 --- a/macros/latex/required/l3kernel/l3news08.pdf +++ b/macros/latex/required/l3kernel/l3news08.pdf diff --git a/macros/latex/required/l3kernel/l3news09.pdf b/macros/latex/required/l3kernel/l3news09.pdf Binary files differindex 1491fdd32c..3616cc20ca 100644 --- a/macros/latex/required/l3kernel/l3news09.pdf +++ b/macros/latex/required/l3kernel/l3news09.pdf diff --git a/macros/latex/required/l3kernel/l3news10.pdf b/macros/latex/required/l3kernel/l3news10.pdf Binary files differindex 496795ff16..00ec553d1c 100644 --- a/macros/latex/required/l3kernel/l3news10.pdf +++ b/macros/latex/required/l3kernel/l3news10.pdf diff --git a/macros/latex/required/l3kernel/l3news11.pdf b/macros/latex/required/l3kernel/l3news11.pdf Binary files differindex 68a16e2539..59a672d339 100644 --- a/macros/latex/required/l3kernel/l3news11.pdf +++ b/macros/latex/required/l3kernel/l3news11.pdf diff --git a/macros/latex/required/l3kernel/l3news12.pdf b/macros/latex/required/l3kernel/l3news12.pdf Binary files differindex f99bb21037..9c4f937b00 100644 --- a/macros/latex/required/l3kernel/l3news12.pdf +++ b/macros/latex/required/l3kernel/l3news12.pdf diff --git a/macros/latex/required/l3kernel/l3pdf.dtx b/macros/latex/required/l3kernel/l3pdf.dtx index 007cb5b5ad..55f49476e3 100644 --- a/macros/latex/required/l3kernel/l3pdf.dtx +++ b/macros/latex/required/l3kernel/l3pdf.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3prefixes.csv b/macros/latex/required/l3kernel/l3prefixes.csv index 7baa984582..e85412b9d8 100644 --- a/macros/latex/required/l3kernel/l3prefixes.csv +++ b/macros/latex/required/l3kernel/l3prefixes.csv @@ -137,6 +137,7 @@ kgl,kantlipsum,Enrico Gregorio,,,,2013-03-16,2013-03-16, kivitendo,"kiviletter, kivitables",Marei Peischl for Kivitendo,https://www.kivitendo.de/,https://github.com/kivitendo/kivitendo-erp,https://forum.kivitendo.de/,2021-05-28,2021-05-28, langsci,langscibook,Language Science Press,https://langsci-press.org,https://github.com/langsci/langscibook,https://github.com/langsci/langscibook/issues,2021-07-20,2021-07-21, left,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12, +liftarm,liftarm,Matthias Floré,,,,2024-05-25,2024-05-25, lltxmath,lualatex-math,Philipp Stephani,https://github.com/phst/lualatex-math,https://github.com/phst/lualatex-math.git,https://github.com/phst/lualatex-math/issues,2012-11-07,2012-11-07, log,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12, lua,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, diff --git a/macros/latex/required/l3kernel/l3prefixes.pdf b/macros/latex/required/l3kernel/l3prefixes.pdf Binary files differindex 0a721bca11..602ccaaa59 100644 --- a/macros/latex/required/l3kernel/l3prefixes.pdf +++ b/macros/latex/required/l3kernel/l3prefixes.pdf diff --git a/macros/latex/required/l3kernel/l3prg.dtx b/macros/latex/required/l3kernel/l3prg.dtx index 96ef859b3f..bec4e3a712 100644 --- a/macros/latex/required/l3kernel/l3prg.dtx +++ b/macros/latex/required/l3kernel/l3prg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3prop.dtx b/macros/latex/required/l3kernel/l3prop.dtx index 3350b27792..21b8d03dd6 100644 --- a/macros/latex/required/l3kernel/l3prop.dtx +++ b/macros/latex/required/l3kernel/l3prop.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3quark.dtx b/macros/latex/required/l3kernel/l3quark.dtx index c989bd4024..136596a3fe 100644 --- a/macros/latex/required/l3kernel/l3quark.dtx +++ b/macros/latex/required/l3kernel/l3quark.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3regex.dtx b/macros/latex/required/l3kernel/l3regex.dtx index ad44b8c6f9..6ca9c8eeed 100644 --- a/macros/latex/required/l3kernel/l3regex.dtx +++ b/macros/latex/required/l3kernel/l3regex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3seq.dtx b/macros/latex/required/l3kernel/l3seq.dtx index 713e4a33b1..38fc9471a9 100644 --- a/macros/latex/required/l3kernel/l3seq.dtx +++ b/macros/latex/required/l3kernel/l3seq.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % @@ -354,7 +354,6 @@ % \end{syntax} % Selects a pseudo-random item of the \meta{seq~var}. If the % \meta{seq~var} is empty the result is empty. -% This is not available in older versions of \XeTeX{}. % \begin{texnote} % The result is returned within the \tn{unexpanded} % primitive (\cs{exp_not:n}), which means that the \meta{item} diff --git a/macros/latex/required/l3kernel/l3skip.dtx b/macros/latex/required/l3kernel/l3skip.dtx index 3eeb891e3d..6e96b41326 100644 --- a/macros/latex/required/l3kernel/l3skip.dtx +++ b/macros/latex/required/l3kernel/l3skip.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3sort.dtx b/macros/latex/required/l3kernel/l3sort.dtx index 9ba8713244..47cebcad25 100644 --- a/macros/latex/required/l3kernel/l3sort.dtx +++ b/macros/latex/required/l3kernel/l3sort.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3str-convert.dtx b/macros/latex/required/l3kernel/l3str-convert.dtx index 0b280fb109..baf705fe0c 100644 --- a/macros/latex/required/l3kernel/l3str-convert.dtx +++ b/macros/latex/required/l3kernel/l3str-convert.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3str.dtx b/macros/latex/required/l3kernel/l3str.dtx index d4e08b2dd2..f4f7b94b88 100644 --- a/macros/latex/required/l3kernel/l3str.dtx +++ b/macros/latex/required/l3kernel/l3str.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3styleguide.pdf b/macros/latex/required/l3kernel/l3styleguide.pdf Binary files differindex 33333f832f..0113bac571 100644 --- a/macros/latex/required/l3kernel/l3styleguide.pdf +++ b/macros/latex/required/l3kernel/l3styleguide.pdf diff --git a/macros/latex/required/l3kernel/l3styleguide.tex b/macros/latex/required/l3kernel/l3styleguide.tex index 2cffd774e3..bcea3de06e 100644 --- a/macros/latex/required/l3kernel/l3styleguide.tex +++ b/macros/latex/required/l3kernel/l3styleguide.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2024-05-08} +\date{Released 2024-05-27} \begin{document} diff --git a/macros/latex/required/l3kernel/l3syntax-changes.pdf b/macros/latex/required/l3kernel/l3syntax-changes.pdf Binary files differindex 64bf0da4e8..99e93c2ccc 100644 --- a/macros/latex/required/l3kernel/l3syntax-changes.pdf +++ b/macros/latex/required/l3kernel/l3syntax-changes.pdf diff --git a/macros/latex/required/l3kernel/l3syntax-changes.tex b/macros/latex/required/l3kernel/l3syntax-changes.tex index 0b21c09da0..30d8d47747 100644 --- a/macros/latex/required/l3kernel/l3syntax-changes.tex +++ b/macros/latex/required/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 2024-05-08} +\date{Released 2024-05-27} \newcommand{\TF}{\textit{(TF)}} diff --git a/macros/latex/required/l3kernel/l3sys.dtx b/macros/latex/required/l3kernel/l3sys.dtx index 0417a963bc..b2228c7fd9 100644 --- a/macros/latex/required/l3kernel/l3sys.dtx +++ b/macros/latex/required/l3kernel/l3sys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3term-glossary.pdf b/macros/latex/required/l3kernel/l3term-glossary.pdf Binary files differindex b54a47f899..01598ca79a 100644 --- a/macros/latex/required/l3kernel/l3term-glossary.pdf +++ b/macros/latex/required/l3kernel/l3term-glossary.pdf diff --git a/macros/latex/required/l3kernel/l3term-glossary.tex b/macros/latex/required/l3kernel/l3term-glossary.tex index 86ad15568a..141749aa6b 100644 --- a/macros/latex/required/l3kernel/l3term-glossary.tex +++ b/macros/latex/required/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 2024-05-08} +\date{Released 2024-05-27} \newcommand{\TF}{\textit{(TF)}} diff --git a/macros/latex/required/l3kernel/l3text-case.dtx b/macros/latex/required/l3kernel/l3text-case.dtx index 888e6e97b9..89cdb9e2b1 100644 --- a/macros/latex/required/l3kernel/l3text-case.dtx +++ b/macros/latex/required/l3kernel/l3text-case.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3text-map.dtx b/macros/latex/required/l3kernel/l3text-map.dtx index ab4a6db91e..3573002244 100644 --- a/macros/latex/required/l3kernel/l3text-map.dtx +++ b/macros/latex/required/l3kernel/l3text-map.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3text-purify.dtx b/macros/latex/required/l3kernel/l3text-purify.dtx index ec85eb8be4..35390811aa 100644 --- a/macros/latex/required/l3kernel/l3text-purify.dtx +++ b/macros/latex/required/l3kernel/l3text-purify.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3text.dtx b/macros/latex/required/l3kernel/l3text.dtx index a59e047bd7..bcfd15cb62 100644 --- a/macros/latex/required/l3kernel/l3text.dtx +++ b/macros/latex/required/l3kernel/l3text.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3tl-analysis.dtx b/macros/latex/required/l3kernel/l3tl-analysis.dtx index 80a7d74cef..4df9ee68a3 100644 --- a/macros/latex/required/l3kernel/l3tl-analysis.dtx +++ b/macros/latex/required/l3kernel/l3tl-analysis.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % @@ -1303,14 +1303,20 @@ % Expandable tokens (which are automatically |N|-type) can be % \tn{outer} macros, hence the need for \cs{exp_after:wN} and % \cs{exp_not:N} in the code above, which allows the next function to -% safely grab the token as an argument. We run some code that is -% expanded using the primitive \cs{cs_set_nopar:Npe} rather than -% \cs{tl_set:Ne} to avoid grabbing it as an argument as |#1| may be -% \tn{outer}. To allow~|#1| as an argument of the user's function -% (stored in \cs{l_@@_peek_code_tl}), we set it equal to -% \cs{scan_stop:}, but we do it at the last minute because |#1| -% may be some pretty important function such as \cs{exp_after:wN}. -% Then we put the user's function and the elaborate first argument +% safely grab the token as an argument. To allow the +% possibly-\tn{outer} token~|#1| as an argument of the \meta{user's +% function} (which is protected and stored in \cs{l_@@_peek_code_tl}), +% we set it equal to a harmless macro. This must be done at the very +% last minute because |#1| may be some pretty important function such +% as \cs{exp_after:wN}. Using a primitive \cs{cs_set_nopar:Npe} +% expansion (to avoid \tn{outer} problems) we set up to run the code +% \tn{let} |#1| \meta{user's function} \meta{user's function} followed +% by arguments involving~|#1|. Regardless of~|#1| (including the +% user's function itself), the user's function is run. It always +% starts with \cs{group_end:}, which has not been redefined since |#1| +% started out as expandable, and which restores the definition of~|#1|. +% +% Then we put the elaborate first argument % \cs{__kernel_exp_not:w} \cs{exp_after:wN} |{| \cs{exp_not:N} |#1| |}|: % indeed we cannot use \cs{exp_not:n} |{#1}| as this breaks for an % \tn{outer} macro and we cannot use \cs{exp_not:N} |#1|, as @@ -1323,29 +1329,31 @@ % the two cases is easy: since we have made the escape character % printable, \cs{token_to_str:N} gives at least two characters for a % control sequence versus a single one for an active character -% (possibly being a space). Importantly, once we apply -% \cs{token_to_str:N} we no longer need to worry about \tn{outer} -% tokens. +% (possibly being a space, in which case the trailing brace group is +% taken as the first argument of \cs{@@_peek_analysis_exp_aux:Nw}). +% Importantly, |#1| could be an \tn{outer} token (as it is only set to +% \cs{scan_stop:} at the last minute) but once we apply +% \cs{token_to_str:N} we no longer need to worry about it. % \begin{macrocode} \cs_new_protected:Npn \@@_peek_analysis_exp:N #1 { \cs_set_nopar:Npe \l_@@_peek_code_tl { - \tex_let:D \exp_not:N #1 \scan_stop: - \exp_not:o \l_@@_peek_code_tl + \tex_let:D \exp_not:N #1 \l_@@_peek_code_tl + \l_@@_peek_code_tl { \exp_not:n { \__kernel_exp_not:w \exp_after:wN } { \exp_not:N \exp_not:N \exp_not:N #1 } } \exp_after:wN \@@_peek_analysis_exp_aux:Nw - \token_to_str:N #1 \prg_do_nothing: \s_@@ + \token_to_str:N #1 { } \s_@@ } \l_@@_peek_code_tl } \cs_new:Npe \@@_peek_analysis_exp_aux:Nw #1#2 \s_@@ { - \exp_not:N \if:w \scan_stop: #2 \scan_stop: - { \exp_not:N \int_value:w `#1 } \token_to_str:N D + \exp_not:N \if_meaning:w \scan_stop: #2 \scan_stop: + { \exp_not:N \int_value:w `#1 ~ } \token_to_str:N D \exp_not:N \else: { -1 } 0 \exp_not:N \fi: diff --git a/macros/latex/required/l3kernel/l3tl-build.dtx b/macros/latex/required/l3kernel/l3tl-build.dtx index 708ea81680..6cd9822ad2 100644 --- a/macros/latex/required/l3kernel/l3tl-build.dtx +++ b/macros/latex/required/l3kernel/l3tl-build.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3tl.dtx b/macros/latex/required/l3kernel/l3tl.dtx index 940b3cb8d0..71d68d532c 100644 --- a/macros/latex/required/l3kernel/l3tl.dtx +++ b/macros/latex/required/l3kernel/l3tl.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % @@ -994,7 +994,6 @@ % \end{syntax} % Selects a pseudo-random item of the \meta{token list}. If the % \meta{token list} is blank, the result is empty. -% This is not available in older versions of \XeTeX{}. % \begin{texnote} % The result is returned within the \tn{unexpanded} % primitive (\cs{exp_not:n}), which means that the \meta{item} diff --git a/macros/latex/required/l3kernel/l3token.dtx b/macros/latex/required/l3kernel/l3token.dtx index 5c31ab04e7..03bf46b101 100644 --- a/macros/latex/required/l3kernel/l3token.dtx +++ b/macros/latex/required/l3kernel/l3token.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3unicode.dtx b/macros/latex/required/l3kernel/l3unicode.dtx index 3b3bd007a4..179817d490 100644 --- a/macros/latex/required/l3kernel/l3unicode.dtx +++ b/macros/latex/required/l3kernel/l3unicode.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-05-08} +% \date{Released 2024-05-27} % % \maketitle % diff --git a/macros/latex/required/l3kernel/source3.pdf b/macros/latex/required/l3kernel/source3.pdf Binary files differindex 77c8b81892..34279f9e00 100644 --- a/macros/latex/required/l3kernel/source3.pdf +++ b/macros/latex/required/l3kernel/source3.pdf diff --git a/macros/latex/required/l3kernel/source3.tex b/macros/latex/required/l3kernel/source3.tex index 623b9cc1a0..00095ad319 100644 --- a/macros/latex/required/l3kernel/source3.tex +++ b/macros/latex/required/l3kernel/source3.tex @@ -57,7 +57,7 @@ for those people who are interested. {latex-team@latex-project.org}% }% } -\date{Released 2024-05-08} +\date{Released 2024-05-27} \pagenumbering{roman} \maketitle |