texlive[68684] Master/texmf-dist: calcfrac (28oct23)

commits+karl at tug.org commits+karl at tug.org
Sat Oct 28 22:05:31 CEST 2023


Revision: 68684
          https://tug.org/svn/texlive?view=revision&revision=68684
Author:   karl
Date:     2023-10-28 22:05:30 +0200 (Sat, 28 Oct 2023)
Log Message:
-----------
calcfrac (28oct23)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/generic/calcfrac/README
    trunk/Master/texmf-dist/tex/generic/calcfrac/calcfrac.sty
    trunk/Master/texmf-dist/tex/generic/calcfrac/calcfrac.tex

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/generic/calcfrac/calcfrac-fr.pdf
    trunk/Master/texmf-dist/doc/generic/calcfrac/calcfrac-fr.tex

Modified: trunk/Master/texmf-dist/doc/generic/calcfrac/README
===================================================================
--- trunk/Master/texmf-dist/doc/generic/calcfrac/README	2023-10-27 23:43:51 UTC (rev 68683)
+++ trunk/Master/texmf-dist/doc/generic/calcfrac/README	2023-10-28 20:05:30 UTC (rev 68684)
@@ -1,8 +1,8 @@
 ____________________________________
 
               calcfrac
-                v0.1
-             26/10/2023
+                v0.2
+             28/10/2023
 
          TeX & LaTeX package
 ____________________________________
@@ -14,7 +14,7 @@
 Status  : maintained
 
 ************************ LISEZ-MOI FRANÇAIS ************************
-Ce package a des intentions pédagogiques. Les vidéos montrant la
+Ce package a des intentions pédagogiques. Les 7 vidéos montrant la
 totalité de son écriture à partir de rien sont disponibles sur
 youtube à partir de l'épisode 24 :
 
@@ -38,7 +38,7 @@
 
 
 ************************** README ENGLISH **************************
-This package is intended for educational purposes. The videos
+This package is intended for educational purposes. The 7 videos
 showing its writing from scratch are available on youtube from
 episode 24:
 

Added: trunk/Master/texmf-dist/doc/generic/calcfrac/calcfrac-fr.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/generic/calcfrac/calcfrac-fr.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/generic/calcfrac/calcfrac-fr.pdf	2023-10-27 23:43:51 UTC (rev 68683)
+++ trunk/Master/texmf-dist/doc/generic/calcfrac/calcfrac-fr.pdf	2023-10-28 20:05:30 UTC (rev 68684)

Property changes on: trunk/Master/texmf-dist/doc/generic/calcfrac/calcfrac-fr.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/generic/calcfrac/calcfrac-fr.tex
===================================================================
--- trunk/Master/texmf-dist/doc/generic/calcfrac/calcfrac-fr.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/generic/calcfrac/calcfrac-fr.tex	2023-10-28 20:05:30 UTC (rev 68684)
@@ -0,0 +1,161 @@
+\documentclass[10pt,a4paper,french]{article}
+\usepackage[margin=2.25cm]{geometry}
+\usepackage[no-math]{fontspec}
+\usepackage[libertine]{newtxmath}
+\usepackage{libertineRoman,babel,calcfrac,longtable,hyperref,enumitem}
+\usepackage[scaled=0.8]{GoMono}
+\frenchbsetup{StandardLists=true,og=«,fg=»}
+\newcommand*\tabstrut{\vrule width0pt height3.25ex depth2ex }
+\newcommand*\calcfractab[1]{\tabstrut\texttt{\string\calcfrac\{\textbf{#1}\}}&\calcfrac{#1}\\}
+\newcommand*\printfrdate{\expandafter\printfrdatea\calcfracdate\relax}
+\def\printfrdatea#1/#2/#3\relax{#3/#2/#1}
+\setitemize{leftmargin=3em,topsep=0pt,parsep=0pt,itemsep=4pt,label=--}
+\parindent=0pt
+\parskip=5pt
+\pagestyle{empty}
+\begin{document}
+\parskip=8pt plus 2.5pt minus 1.5pt
+\begingroup
+	\centering
+	\parskip=0pt
+	\null\vskip.5cm
+	{\large\bfseries L'extension pour \TeX\space\& \LaTeX\par \Huge \calcfracname\par}
+	\bigbreak
+	\calcfracver
+	\smallbreak
+	\printfrdate
+	\vskip.5cm
+	\TeX périmental\smallbreak
+	\href{mailto:texperimental at mailo.fr}{\texttt{texperimental at mailo.fr}}\par
+\endgroup
+\vskip1cm
+
+\hfill
+	\vtop{\hsize=0.62\linewidth
+	\small
+	Cette extension est un moteur de calcul d'expressions numériques contenant des fractions. La valeur numérique de l'expression est calculée de façon non développable et affichée sous forme d'une fraction irréductible ou, le cas écheant, d'un entier.\par
+	L'extension \texttt{calcfrac} ne dépend d'aucune extension et est écrite en \TeX.
+	}%
+\hfill\null
+\vskip1cm
+\section{Présentation}
+Ce document est autant un manuel \emph{minimaliste} à destination des utilisateurs qu'un recueil d'exemples.
+
+Le package se charge classiquement à l'aide de:
+\begin{itemize}
+	\item \verb|\usepackage{calcfrac}| pour les utilisateurs de \LaTeX;
+	\item \verb|\input calcfrac.tex| pour les utilisateurs de \TeX.
+\end{itemize}
+
+Le package \texttt{calcfrac} est avant tout un package à vocation pédagogique puisque sa génèse fait l'objet de 7~vidéos sur youtube. On y voit la création de ce package, entièrement enregistrée du tout début jusqu'à sa publication sur le CTAN. Toutes les explications nécessaires à la compréhension de son fonctionnement y sont données. Les personnes désireuses de découvrir la machinerie \TeX{} qui agit en coulisses ou souhaitant en apprendre davantage sur la programmation en \TeX{} sont invitées à visionner ces vidéos. Il s'agit de l'épisode~24 (\href{https://youtu.be/6lF4P6B3msw}{https://youtu.be/6lF4P6B3msw}) et suivants.
+
+\section{Fonctionnement}
+La macro non développable \verb|\calcfrac| lit un argument obligatoire qui est non développé et détokénisé. S'il est vide, aucune action n'est faite sinon, il doit contenir une expression numérique. Cette expression numérique est constituée de nombres, des opérations arithmétiques classiques \texttt+, \texttt-, \texttt* et \texttt/ ainsi que de parenthèses correctement équilibrées. Les espaces sont ignorés.
+
+Un seul signe \texttt+ ou \texttt- est admis avant chaque terme et donc, l'expression \verb|2/3--3/2| produira une erreur, alors que \verb|2/3-(-3/2)| est valide. Par ailleurs, un signe \texttt+ ou \texttt- n'est pas accepté après \texttt* ou \texttt/. L'expression \verb|2/7*-3/5| n'est donc pas licite. L'utilisateur devrait écrire \verb|2/7*(-3)/5| ou \verb|2/7*(-3/5)|.
+
+Après avoir évalué l'expresssion numérique, \texttt{calcfrac} renvoie 3~arguments représentant le résultat : son signe (\texttt+ ou~\texttt-) et 2~nombres \emph{non signés} qui sont le numérateur et le dénominateur. Ces 3~arguments sont passés à la macro \verb|\cfdisp| qui les lit. Par défaut, cette macro affiche le résultat de façon «naturelle», c'est-à-dire que le signe est omis s'il est positif et un entier est affiché si le dénominateur est~1. Si une fraction doit être affichée, la macro \verb|\frac| est utilisée pour les utilisateurs de \LaTeX{} et c'est la primitive \verb|\over| pour ceux compilant avec \TeX.
+
+Il appartient à l'utilisateur de programmer \verb|\cfdisp| selon ses convenances s'il souhaite faire une autre utilisation des 3~arguments.
+
+À titre d'information, voici la version par défaut de la macro \verb|\cfdisp|, à gauche pour \LaTeX{} et à droite pour \TeX.
+
+\leavevmode\vtop{%
+\hsize=0.3\linewidth
+\small
+\begin{verbatim}
+\def\cfdisp#1#2#3{%
+    \ensuremath
+        {%
+        \ifnum#11=-1 -\fi
+        \ifnum#3=1
+            #2%
+        \else
+            \frac{#2}{#3}%
+        \fi
+        }%
+}%
+\end{verbatim}
+}
+\hfill
+\vtop{%
+\hsize=0.6\linewidth
+\small
+\begin{verbatim}
+\def\cfdisp#1#2#3{%
+    \ifmmode\expandafter\cf at execarg\else\expandafter\cf at matharg\fi
+            {\ifnum#11=-1 -\fi
+            {\ifnum#3=1
+                #2%
+            \else
+                #2\over#3%
+            \fi
+            }%
+            }%
+}%
+\end{verbatim}
+}\hfill\null
+\section{Exemples}
+Le tableau ci-dessous reprend les expressions utilisées par les tests unitaires exécutés lors de l'élaboration du package. Ils testent tout d'abord des expresions sans parenthèses pour ensuite finir avec des expressions plus complexes avec parenthèses. Il va sans dire que les tous tests unitaires ont été passés sans erreur et donc, les résultats affichés qui sont calculés par \texttt{calcfrac}, sont exacts.
+
+\begin{longtable}[c]{lc}\hline
+	\tabstrut Commande&Affichage\\\hline\endhead
+	\calcfractab{7/40+3/5-1/2+9/10}
+	\calcfractab{1/2+1/3}
+	\calcfractab{0}
+	\calcfractab{-1+1}
+	\calcfractab{1/2+1/2}
+	\calcfractab{-11/12+5/6-1/4}
+	\calcfractab{1-1/2+1/3-1/4+1/5-1/6}
+	\calcfractab{2/3/4*5-2*3/4/5}
+	\calcfractab{2*3*4*5/3/4/5/6-1}
+	\calcfractab{100/100}
+	\calcfractab{-100/100}
+	\calcfractab{1/2/3-2/3/4-3/4/5}
+	\calcfractab{1*2*3-2*3*4-4*5*6}
+	\calcfractab{9/10-10/11+11/12-12/13}
+	\calcfractab{9/10*10/11*11/12*12/13}
+	\calcfractab{7/20-8/25+7/10-3/50}
+	\calcfractab{2023/2024-2024/2023}
+	\calcfractab{1/2-2/1-2/2}
+	\calcfractab{1-2+3-4+5-6/2}
+	\calcfractab{-1/4-1/3-1/2+1}
+	\calcfractab{-9/10*5/2+2*8-7}
+	\calcfractab{0-0/2+0/3-0/4+0/5}
+	\calcfractab{-1/2+1/4-1/8+1/16}
+	\calcfractab{1/2+1/4+1/8+1/16+1/32+1/64+1/64}
+	\calcfractab{1/4+1/4+1/4+1/4-1/4-1/4-1/4-1/4}
+	\calcfractab{-1+1/2+1/3+1/4}
+	\calcfractab{32227/42143}
+	\calcfractab{(1)}
+	\calcfractab{((((((((((((((((((1))))))))))))))))))}
+	\calcfractab{(-1)}
+	\calcfractab{((((((((((((((((((-1))))))))))))))))))}
+	\calcfractab{(1/2-1/3)*(-1/4)}
+	\calcfractab{(1/2-2/5)*2}
+	\calcfractab{(1/2-2/5)*(-2)}
+	\calcfractab{2*(1/2-2/5)}
+	\calcfractab{(2/7-2/5)/21}
+	\calcfractab{1/21*(2/7-2/5)}
+	\calcfractab{1/(1/2-1/3)/(1/3-1/4)/(1/4-1/5)}
+	\calcfractab{(1/2-1/3)*(1/3-1/4)*(1/4-1/5)}
+	\calcfractab{(1/2-5/6*(3/8-2/3))*(1-1/4)}
+	\calcfractab{1/2-(1/3-(1/4-(1/5-1/6)))}
+	\calcfractab{1+1/(2+1/(2+1/(2+1/(2+1/2))))}
+	\calcfractab{-1-(-2-(-3-(-4-(-5-6))))}
+	\calcfractab{-1*(-2*(-3*(-4*(-5-6))))}
+	\calcfractab{-1/(-2/(-3/(-4/(-5-6))))}
+	\calcfractab{(1+1/2)*(1+1/3)*(1+1/4)*(1+1/5)*(1+1/6)}
+	\calcfractab{(1+1/2)/(1+1/3)+(1+1/4)/(1+1/5)-(1+1/6)}
+	\calcfractab{-(-1-(-2-(-3-4-5)))}
+	\calcfractab{-1/(-1-2/(-2-3/(-3-4)))}
+	\calcfractab{1/2/(1/2-1/(1/2-1))}
+	\calcfractab{(((1/2-1)/2-1)/3-1)/4}
+	\calcfractab{-(-(-(-(1-2)-3)-4)-5)-6}
+	\calcfractab{-2*(-3*(1-5)-3)/(-4)}
+	\calcfractab{-(-1-(-1-(-1-2)/3)/4)/5}
+	\calcfractab{-1*(-2*(-3*(-4-5/6)/7)/8)/9}
+	\calcfractab{(1+1/(1+1/(1+1/(1+1/2)/3)))*4}
+	\hline
+\end{longtable}
+\end{document}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/generic/calcfrac/calcfrac-fr.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/generic/calcfrac/calcfrac.sty
===================================================================
--- trunk/Master/texmf-dist/tex/generic/calcfrac/calcfrac.sty	2023-10-27 23:43:51 UTC (rev 68683)
+++ trunk/Master/texmf-dist/tex/generic/calcfrac/calcfrac.sty	2023-10-28 20:05:30 UTC (rev 68684)
@@ -1,13 +1,28 @@
+% ____________________________________
+
+%               calcfrac
+%                 v0.2
+%              28/10/2023
+
+%          TeX & LaTeX package
+% ____________________________________
+
+% Author  : TeXpérimental
+% Email   : texperimental at mailo.fr
+% Licence : Released under the LaTeX Project Public License v1.3c or
+%           later, see http://www.latex-project.org/lppl.txt
+% Status  : maintained
+
 \input calcfrac.tex
-\ProvidesPackage{\calcfracname}[\calcfracver\space Calcul d'expressions avec fractions]
+\ProvidesPackage{\calcfracname}[\calcfracdate\space\calcfracver\space Calcul d'expressions avec fractions]
 \def\cfdisp#1#2#3{%
 	\ensuremath
-		{\ifnum#11=-1 -\fi
-		{\ifnum#3=1
+		{%
+		\ifnum#11=-1 -\fi
+		\ifnum#3=1
 			#2%
 		\else
 			\frac{#2}{#3}%
 		\fi
 		}%
-		}%
 }
\ No newline at end of file

Modified: trunk/Master/texmf-dist/tex/generic/calcfrac/calcfrac.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/calcfrac/calcfrac.tex	2023-10-27 23:43:51 UTC (rev 68683)
+++ trunk/Master/texmf-dist/tex/generic/calcfrac/calcfrac.tex	2023-10-28 20:05:30 UTC (rev 68684)
@@ -1,8 +1,8 @@
 % ____________________________________
 
 %               calcfrac
-%                 v0.1
-%              26/10/2023
+%                 v0.2
+%              28/10/2023
 
 %          TeX & LaTeX package
 % ____________________________________
@@ -16,8 +16,8 @@
 \csname calcfraconce\endcsname
 \let\calcfraconce\endinput
 \def\calcfracname{calcfrac}
-\def\calcfracver{0.1}
-\def\calcfracdate{2023/10/26}
+\def\calcfracver{v0.2}
+\def\calcfracdate{2023/10/28}
 
 \catcode`\@11
 \def\cf at test@ifx#1{%
@@ -54,22 +54,33 @@
 \newcount\cf at tmp@count
 \newcount\cf at frac@cnt
 \newif\if at inparen
-\def\calcfrac at err#1#2\relax{%
+\def\calcfrac at err{%
+	\cf at test@ifnum{\currentgrouplevel>\cf at nestparen\relax}
+		{%
+		\endgroup
+		\calcfrac at err
+		}
+		{%
+		\calcfrac at err@a
+		}%
+}
+\def\calcfrac at err@a#1#2\relax{%
 	\errmessage{Illegal char "#1", "#2" ignored}%
 }
 \def\calcfrac{%
+	\xdef\cf at nestparen{\the\currentgrouplevel}%
 	\begingroup
 		\catcode32=9 % espaces ignorés
 		\calcfrac at a
 }
 \def\calcfrac at a#1{%
-	\endgroup
-	\ifcat\relax\detokenize{#1}\relax
-	\else
+	\ifcat\relax\detokenize{#1}\relax\expandafter\cf at execfirst\else\expandafter\cf at execsecond\fi
+		{}
+		{%
 		\cf at frac@cnt=0
 		\@inparenfalse
 		\expandafter\cf at read@frac\detokenize{#1}\relax
-	\fi
+		}%
 }
 \def\cf at read@frac{% [1 signe optionnel + ou-]<entier non signé>[1 signe / ou * suivi d'un entier non signé]*n
 	\advance\cf at frac@cnt1
@@ -95,7 +106,7 @@
 		\afterassignment\cf at update@afterint
 		\cf at tmp@count#1%
 		}
-		{% TODO : si #1=parenthèse
+		{% si #1=parenthèse
 		\if(#1\expandafter\cf at execfirst\else\expandafter\cf at execsecond\fi
 			{%
 			\begingroup
@@ -223,13 +234,13 @@
 			\expandafter\cf at read@int\expanded{\cf at paren@numer\if*\cf at current@op/\else*\fi\cf at paren@denom}%
 			}
 			{%
+				\expandafter
+			\endgroup
 			\expandafter\cfdisp\expanded{{\cf at result@sign}{\cf at result@numer}{\cf at result@denom}}%
 			}%
 }
 \def\cfdisp#1#2#3{%
-	\ifmmode\expandafter\cf at execfirst\else\expandafter\cf at execsecond\fi
-		{\cf at execarg}
-		{\cf at matharg}
+	\ifmmode\expandafter\cf at execarg\else\expandafter\cf at matharg\fi
 			{\ifnum#11=-1 -\fi
 			{\ifnum#3=1
 				#2%
@@ -243,4 +254,9 @@
 \endinput
 
 VERSIONS :
-v0.1 : version initiale
\ No newline at end of file
+v0.1 26/10/2023
+	version initiale
+v0.2 28/10/2023
+	corrections de bugs
+	améliorations du code
+	ajout d'un fichier pdf (manuel succint + exemples)
\ No newline at end of file



More information about the tex-live-commits mailing list.