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.