Universe

Package to present long operations (addition, substraction multiplication, square root) and detailed calculations (automatic with etapes-calcul or manually with detail). Inspired by the LaTeX package xlop. Presenting addition and subtraction of durations is also possible.

The new version brings operations in other bases (and convertions) and the possibility to show digits being pulled-down in divisions (thanks to Y. D. X. in https://forum.typst.app/t/how-to-draw-a-vertical-line-across-grid-cells/6384/2). Two functions help-en and help-fr may be used to get help about a function or a parameter (ex: #help-fr("division") or #help-en("detail(add-rounded)")). The manuals and the help functions are made with help from tidy.

MIT License User Manual User Manual

Installing

Install longops by cloning it or importing like this:

#import "@preview/longops:0.2.0": addition

// Cas simple
#addition(15.97, 24.585)
// Plusieurs termes
#addition(12.5, 3.75, 0.8, 14.2)
// Avec résultat caché
#addition(245, 1267,hide-result:true, )
// list et solution:true
#addition(6834,5967,list:(2,9,11,16),solution:true)
exemples d'additions
#import "@preview/longops:0.2.0": soustraction

// Soustraction standard à 2 décimaux
#soustraction(15.67, 8.29)
// Soustraction décimale à plusieurs termes
#soustraction(142.5, 38.75, 12.1,)
// Mode correction d'un exercice à trous (avec solution: false puis true)
#soustraction(524, 187, list: (3, 6, 9), show-borrow:true,type-mask:"",)
#soustraction(524, 187, list: (3, 6, 9), solution: true,show-borrow:true,type-mask:"",solution-color:eastern)
exemples de soustractions
#import "@preview/longops:0.2.0": multiplication

// Multiplication classique à 2 chiffres au multiplicateur
#multiplication(123, 45)
// Multiplication sans mode fr
#multiplication(3.47,3.2,fr:false,mode:"")
// Mode exercice : cache à la fois les lignes intermédiaires ET le résultat
#multiplication(12.3, 45, type-mask: "line", hide-result: true)
// Mode correction de l'exercice ci-dessus
#multiplication(12.3, 45, type-mask: "line", hide-result: true, solution: true)
exemples de multiplications
#import "@preview/longops:0.2.0": division

// Un chiffre en plus que dans a et avec des flèches pour montrer les chiffres qui descendent
#division(62821.64,11,extradigits:1,arrows: true,)
// Cycle entre parenthèses, mode anglais
#division(3.7,7,cycle:true,mode:"",fr:false)
// list de cases masquées
#division(432, 12, list: (0, 4))
// Afficher la solution pour les cases masquées ci-dessus
#division(432, 12, list: (0, 4), solution: true)
exemples de division
#import "@preview/longops:0.2.0": racine

#racine(24368,groups: true)
#racine(24368,fr:false,extradigits: 1)
exemples de calcul d'une racine
#import "@preview/longops:0.2.0": egalite-euclidienne, egalite-decimale, add-en-ligne, sous-en-ligne

$#add-en-ligne(1.2,7,248,45.385)$ et $#sous-en-ligne(248,1.2,7,45.385,digits: 3)$\
#egalite-euclidienne(37,9) et #egalite-decimale(37,8)
exemples des autres fonctions
#import "@preview/longops:0.2.0": *

// Addition en binaire
#addition(base: 2, "111,1", "110",show-base: true)
// Soustraction en hexadécimal (base 16) avec méthode française
#soustraction(base: 16, "1A3", "F4",show-base: true)
// Soustraction en base 16 avec méthode anglo-saxonne (emprunts)
#soustraction(base: 16, fr: false, canceled: true, "1A3", "F4")
// Multiplication en base 20 avec retenues
#multiplication(base: 20, carries: true, "2A", "3F")
// En octal (Base 8), présentation anglo-saxonne, avec cycle et flèches:
#division(base: 8, "754", "12", fr:false, arrows: true, cycle: true, show-base: true)
exemples de calculs dans d'autres bases
#import "@preview/longops:0.2.0": etapes-calcul

// Exemple 1
#etapes-calcul("6 + 5*(23+8/2)",vertical: true,name:"A",highlight: none)
// Exemple 2 : Avec des nombres négatifs et décimaux
#etapes-calcul("12.5 / (2 + 3) * -4 ",vertical: true,fraction: false)
// Exemple 3 : Opérations imbriquées complexes
#etapes-calcul("(3 + 5) * 2^2 - 10 / 2",vertical: true,concomitant: true,)
// Avec des racines et fonctions
#etapes-calcul("sqrt(9/4) + 5", fraction: true, name: "C") 
#etapes-calcul("cos(pi/3) + 3", fraction: true, name: "F")
exemples de calculs détaillés automatiquement
#import "@preview/longops:0.2.0": detail

#detail("A=15/21=(5*r3)/(7*r3)=5/7", add-rounded: true, vertical: true, c: "circle")
#detail(
  "p3*(n7+t4)=p3*n7+p3*t4=g21+12",
  c: "color",
  appro: 0,
  vertical: true,
  add-rounded: "",
)
#detail("ln(5*e^8)=ln(5)+8")
exemples de calculs détaillés manuellement
#import "@preview/longops:0.2.0": addition-durees

#test(
  [Avec convertion\ automatique],
  addition-durees((7, 40), (2.3, 70), show-carry: false)
)
#test(
  [Dépassage 60 min\ et mode convertion],
  addition-durees((50, 40), (20, 20),convertion: true)
)
#test(
  [Propagation complète],
  addition-durees((1, 23, 59, 59), (0, 0, 0, 1), list:(1,9,),solution: true)
)
#test(
  [Disparition des\ colonnes vides],
  addition-durees((1, 23, 0, 0), (2, 12, 0, 0))
)
exemples d'additions de durées
#import "@preview/longops:0.2.0": soustraction-durees

#test(
  [Avec convertion auto\ et sans unités],
  soustraction-durees((7, 20), (2.2, 40), convertion: true, zero-pad: false, show-units: false)
)
#test(
  [Disparition des colonnes vides],
  soustraction-durees((2,0, 1, 0), (2, 0))
)
#test(
  [Disparition des colonnes\ vides et résultat caché],
  soustraction-durees((2, 1, 0, 0), (2, 0, 0), convertion: true, hide-result: true)
)
exemples de soustractions de durées

More on these functions in the french manual or the english manual.

Contributing

Any contributions are welcome! Just fork the repository and make a pull request. Thanks to ObaulG for the idea and most of the work on the durations functions.

Changelog

0.2.0

  • the four basic operations now work in bases from 2 to 36
  • added option ‘arrows’ to division to show when digits are pulled down (thanks to Y.D.X. in https://forum.typst.app/t/how-to-draw-a-vertical-line-across-grid-cells/6384) and ‘arrows-coef’ to adjust the length or the arrows
  • renamed parameters to have them all in english (there was a weird mix of french and english ones) breaking change
  • added help-en and help-fr to get help in english or french (provided by tidy, like the manuals)

0.1.1

  • Added addition-durees and soustractions-durees to work with durations
  • correction of an inconsistency in functions names
  • A few fixes/improvements