5.2.4. jinja2utils
— Utilitaires à utiliser avec les templates jinja2¶
Outils à facilitant l’écriture d’exercices avec Jinja2
-
class
pyromaths.outils.jinja2utils.
LatexEnvironment
(*args, **kwargs)[source]¶ Environnement (au sens jinja2) utilisé pour les templates des exercices.
Meta private:
-
pyromaths.outils.jinja2utils.
facteur
(nombre, court='', parentheses=False, zero=False, arrondi=None, signe=False, operation=False, produit=False, variable='')[source]¶ Renvoit le code \(LaTeX\) correspondant au nombre, dans un
\\numprint{}
, en gérant de nombreux cas particuliers.Les cas d’utilisation de cette fonction sont détaillés dans le tutoriel pour écrire un nouvel exercice.
En utilisant les arguments, cette fonction permet de prendre en compte les arrondis, et de nombreux cas particuliers (dans chaque cas, c’est le 3 qui est destiné à être rendu par cette fonction.
- ajout de parenthèses uniquement si nécessaire (produit 2×3 et 2×(-3) plutôt que 2×-3 ou 2×(3)) ;
- ajout du signe, même s’il est positif (produit 1+3x et 1-3x plutôt que 1 3x ou 1+-3x) ;
- n’affiche pas le nombre 1, et seulement le signe de -1 (produit x et -x plutôt que 1x et -1x) ;
- n’affiche pas l’opérande nulle d’un produit (produit 2 plutôt que 2+0x) ;
- etc.
Le séparateur décimal est le point, mais celui-ci sera converti en une virgule par
\\numprint{}
.Paramètres: - nombre (numbers.Real) – Nombre à formatter (il peut aussi être de type
decimal.Decimal
). - court (str) – Version courte des arguments (voir plus loin).
- parentheses (boolean) – Encadre le nombre avec des parenthèses, s’il est négatif (utile pour produire 2×(-3) plutôt que 2×3).
- arrondi (int) – Arrondi le nombre. L’argument est le nombre de chiffres après la virgule à utiliser. Mettre cet argument à
None
pour ne pas arrondir. - zero (boolean) – Ajoute des zéros à la fin du nombre pour avoir autant de chiffres que défini par arrondi (par exemple, avec cette option et un arrondi au centième, 2 devient 2.00).
- signe (boolean) – Produit le signe, même si le nombre est positif (produit alors un +).
- operation (boolean) – Indique que le signe plus ou moins est une opération (comme 2-3) et non pas un opérateur unaire (comme 2×(-3)). Cela a pour effet d’espacer un peu le signe du nombre.
- produit (boolean) – Le facteur est une opérande d’un produit : le nombre 1 ne doit pas être affiché ; du nombre -1, on ne conserve que le signe ; rien n’est affiché si le nombre est 0 (pour produire x, -x ou rien plutôt que 1x, -1x, 0x).
- variable (str) – Seconde opérande du produit. Doit être du code \(LaTeX\) valide.
Renvoie: Le nombre, formatté comme du code \(LaTeX\).
Type renvoyé: Dépendances entre arguments: - Le comportement n’est pas défini si les arguments
operation
etparentheses
sont utilisées en même temps.
Version courte des arguments: Pour que les arguments soient moins verbeux, il est possible d’utiliser la version courte des arguments. Par exemple,
facteur(2, produit=True, parentheses=True, arrondi=3)
peut s’écrire commefacteur(2, '*p3')
.Cet argument est une chaîne de caractères, chaque caractère « activant » une option longue. Par exemple
*p3
active les optionsproduit
,parentheses
etarrondi=3
. L’ordre des caractères n’a aucune importance. Plusieurs comportement sont non-définis :- présence de caractères ne correspondant à aucun argument ;
- utilisation conjointe des arguments courts et longs ;
- utilisation de plusieurs chiffres (pour l’argument
arrondi
).
Les arguments sont :
p
:parentheses
;z
:zero
;s
:signe
;o
:operation
;*
:produit
;- chiffres
0
à9
:arrondi
à l’entier correspondant ; x
,X
,y
,Y
,n
,N
: Raccourcis pour (respectivement)variable="x"
,variable="x^2"
,variable="y"
,variable="y^2"
,variable="n"
,variable="n^2"
.
Exemples: - Cas de base
>>> from pyromaths.outils.jinja2utils import facteur >>> facteur(2) \numprint{2} >>> facteur(2.0) \numprint{2} >>> facteur(2.3) \numprint{2.3} >>> facteur(-122.0) \numprint{-122}
- Arrondi
>>> facteur(12345.6789, arrondi=None) \numprint{12345.6789} >>> facteur(12345.6789, arrondi=0) \numprint{12346} >>> facteur(12345.6789, arrondi=2) \numprint{12345.68} >>> facteur(.6789, arrondi=0) \numprint{1} >>> facteur(.6789, arrondi=2) \numprint{0.68}
- Zéro
>>> facteur(12345.6789, arrondi=None, zero=True) \numprint{12345.6789} >>> facteur(12345, arrondi=2, zero=True) \numprint{12345.00} >>> facteur(12345, arrondi=2, zero=False) \numprint{12345} >>> facteur(12345.7, arrondi=2, zero=True) \numprint{12345.70} >>> facteur(12345.7, arrondi=2, zero=False) \numprint{12345.7}
- Parenthèse
>>> facteur(-2, parentheses=True) \left(\numprint{-2}\right) >>> facteur(2, parentheses=True) \numprint{2}
- Signe
>>> facteur(-2, signe=True) \numprint{-2} >>> facteur(2, signe=True) \numprint{+2} >>> facteur(2, signe=False) \numprint{2}
- Opération
>>> facteur(-2, operation=False) \numprint{-2} >>> facteur(2, signe=True, operation=False) \numprint{+2} >>> facteur(-2, operation=True) -\numprint{2} >>> facteur(2, signe=True, operation=True) +\numprint{2}
- Produit
>>> facteur(1, produit=True, variable="x") x >>> facteur(-1, produit=True, variable="x") -x >>> facteur(0, produit=True, variable="x") <BLANKLINE> >>> facteur(1, produit=False, variable="x") \numprint{1}\,x
- Variable
>>> facteur(2, variable="x") \numprint{2}\,x >>> facteur(-1, produit=True, variable="x") -x
- Version courte des arguments
>>> facteur(-2, court="2zXo") -\numprint{2.00}\,x^2 >>> facteur(-2, court="2zXp") \left(\numprint{-2.00}\,x^2\right) >>> facteur(-3, court="2zY") \numprint{-3.00}\,y^2 >>> facteur(-1, court="y*") -y >>> facteur(1, court="p*x") x >>> facteur(-1, court="p*x") \left(-x\right) >>> facteur(-2, court="p*x") \left(\numprint{-2}\,x\right) >>> facteur(2, court="p*x") \numprint{2}\,x >>> facteur(1, court="s*x") +x
- Fractions
>>> from fractions import Fraction >>> facteur(Fraction(-2, 5), court="p") \left(-\frac{\numprint{2}}{\numprint{5}}\right) >>> facteur(Fraction(7, 1)) \numprint{7} >>> facteur(Fraction(3, 2)) \frac{\numprint{3}}{\numprint{2}}
-
pyromaths.outils.jinja2utils.
iter_facteurs
(liste, short)[source]¶ Applique
facteur()
à une liste de nombres.- Les éléments peuvent être des nombres, ou pas (auquel cas la fonction
str()
est appliquée). - L’argument
short
est transmis àfacteur()
.
- Les éléments peuvent être des nombres, ou pas (auquel cas la fonction
-
pyromaths.outils.jinja2utils.
matrice
(listes, short='')[source]¶ Renvoit le code LaTeX d’une matrice.
- La matrice est sous la forme d’une liste de lignes (où chaque ligne est une liste de coefficients).
- L’argument
short
est transmis àfacteur()
.
>>> from pyromaths.outils.jinja2utils import matrice >>> matrice([[1, 2], [3, 4]]) \begin{pmatrix}\numprint{1} & \numprint{2}\\\numprint{3} & \numprint{4}\\\end{pmatrix}
-
pyromaths.outils.jinja2utils.
signe
(nombre)[source]¶ Renvoit le signe du nombre (c’est-à-dire + ou -).
-
pyromaths.outils.jinja2utils.
tex
(objet)[source]¶ Convertit un objet mathématique en code LaTeX.
- Soit l’objet a une méthode
tex()
, auquel cas objet.tex() est renvoyé ; - sinon, si l’objet est de type
numbers.Real
, une représentation adaptée est renvoyée (même si, pour plus de finesse, il pourra être utile d’utiliserfacteur()
) ; - sinon, si l’objet est une chaîne de caractères, elle est renvoyée ;
- sinon, une exception est levée.
- Soit l’objet a une méthode