Le paquet «xlop» publié le 08/06/2009 - mis à jour le 09/06/2009
Jean-Côme CHARPENTIER
Présentation
L’extension « xlop » de Jean-Côme CHARPENTIER permet de réaliser des calculs arithmétiques dans un document LaTeX.
Grâce à cette extension, les opérations peuvent être « posées » ou « écrites en ligne » comme à l’école ; on peut contrôler aussi de nombreux paramètres de l’affichage.
Tous les exemples qui suivent sont issus de la documention officielle de cette extension, réalisée par l’auteur.
Ils sont destinés à montrer rapidement ce que l’on peut faire.
Pour des détails et des explications précises, on consultera la documention officielle.
Quelques exemples :
\opadd[decimalsepsymbol={,}, voperator=bottom]{45.05}{78.4}
\opdiv[style=text, period]{1}{49}
\opadd*{45.05}{78.4}{r}%
Le premier chiffre après la virgule de $45,05+78,4$ est un
\opgetdecimaldigit{r}{1}{d}%
$\opprint{d}$.
\opadd*{45.05}{78.4}{r}%
La somme $45,05+78,4$ est
\opcmp{r}{100}%
\ifopgt strictement supérieure
\else\ifoplt strictement inférieure
\else égale
\fi\fi
Le $PGCD$ de $182$ et $442$ est \opgcd{182}{442}{d}%
$\opprint{d}$.
\opexpr{(4+2^3)/3}{r}%
$\frac{4+2^3}{3}=\opprint{r}$
Utilisation
Après avoir installé éventuellement l’extension « xlop » dans sa distribution LaTeX, il s’agira d’écrire dans le préambule du document LaTeX :
\usepackage{xlop}
Pour l’installation et la documentation, on trouvera toutes les indications sur le site melusine.
Addition
L’addition est gérée par la macro « \opadd ».
Quelques exemples :
\opadd{-245}{72}
\opadd[style=text]{-245}{72}
\opadd{4825}{5307}
\opadd[carryadd=false]{4825}{5307}
\opadd[lastcarry]{4825}{5307}
\opadd{012.3427}{5.2773}
\opadd[deletezero=false]{012.3427}{5.2773}
\opadd[style=text]{02.8}{1.2}
\opadd[style=text, deletezero=false]{02.8}{1.2}
Soustraction
La soustraction est gérée par la macro « \opsub ».
Quelques exemples :
\opsub{-245}{72}
\opsub[style=text]{-245}{72}
\opsub{1.2}{2.45}
\opsub[style=text]{1.2}{2.45}
\opsub[carrysub]{1234}{567}
\opsub[carrysub, lastcarry]{1234}{567}
\opsub[carrysub, lastcarry, deletezero=false]{1234}{567}
\opsub[carrysub, lastcarry, deletezero=false]{12.34}{5.67}
\opsub[carrysub, lastcarry, deletezero=false, columnwidth=2.5ex, offsetcarry=-0.4, decimalsepoffset=-3pt]{12.34}{5.67}
Multiplication
La multiplication est gérée par la macro « \opmul ».
Quelques exemples :
\opmul[displayshiftintermediary=shift]{453}{1001205}
\opmul[displayshiftintermediary=all]{453}{1001205}
\opmul[displayshiftintermediary=none]{453}{1001205}
\opmul[displayintermediary=all]{453}{1001205}
\opmul{3.1416}{12.8}
\opmul[hfactor=decimal]{3.1416}{12.8}
\opmul[deletezero=false]{01.44}{25}
\opmul{01.44}{25}
\opmul[deletezero=false, style=text]{01.44}{25}
\opmul[style=text]{01.44}{25}
Division euclidienne
La division euclidienne est gérée par la macro « \opidiv ».
Quelques exemples :
\opidiv{25}{7}
\opidiv[style=text]{314}{2}
\opidiv[style=text]{314}{3}
\opidiv[style=text]{124}{7}
\opidiv[style=text]{124}{-7}
\opidiv[style=text]{-124}{7}
\opidiv[style=text]{-124}{-7}
Division
La division est gérée par la macro « \opdiv ».
Quelques exemples :
\opdiv{25}{7}
\opdiv[style=text]{3.14}{2}
\opdiv[style=text]{3.14}{3}
\opdiv[period]{100}{3}
\opdiv[period, style=text]{150}{7}
\opdiv[period, style=text, equalsymbol=$\approx$, hrulewidth=0.2pt, vruleperiod=0.7, afterperiodsymbol=]{150}{7}
\opdiv[displayintermediary=none, voperation=top]{251}{25}
\opdiv[displayintermediary=nonzero, voperation=top]{251}{25}
\opdiv[displayintermediary=all, voperation=top]{251}{25}
\opdiv[dividendbridge]{1254}{30}
\opdiv[shiftdecimalsep=both]{3.456}{25.6}
\opdiv[shiftdecimalsep=divisor]{3.456}{25.6}
\opdiv[shiftdecimalsep=none]{3.456}{25.6}
\opset{strikedecimalsepsymbol={\rlap{,}\rule[-1pt]{3pt}{0.4pt}}}
\opdiv[shiftdecimalsep=both]{3.456}{25.6}
\opdiv[shiftdecimalsep=divisor]{3.456}{25.6}
\opdiv[shiftdecimalsep=none]{3.456}{25.6}
Macros étoilées
Les macros précédentes ont une version étoilée.
Les calculs sont effectués et le résultat est affecté dans une variable.
Un exemple :
\opmul*{2}{2}{a}%
\opmul*{a}{a}{a}\opmul*{a}{a}{a}%
\opadd[style=text]{a}{1}
Ce code donnera : 256+1=257.