Ecriture des nombres

Les propositions de correctifs ou d'exercices pour Pyromaths.

Modérateur : Développeurs

Nicolas
Messages : 89
Inscription : 16 janv. 2010, 10:36

Ecriture des nombres

Message par Nicolas » 02 févr. 2010, 10:35

Bonjour à tous,
Poursuivant ma décrouverte de Python et mettant à profit mes habitudes en LaTeX, j'ai noté dans la dernièr documentation de frenchb de babel que la macro \numprint du paquet numprint est à préférer à la macro \nombre (souvent utilisée par pyromaths)

En conséquence, pyromaths ne pourrait-il pas charger en préambule :

Code : Tout sélectionner

\usepackage{numprint}
\let\nombre=\numprint%remplace \nombre par \numprint pour compatibilité
\let\np\numprint         %crée un "raccourci" pour \numprint
l'avantage de \numprint par rapport à \nombre est qu'il converti directement le point décimal en virgule. Il formate les nombres négatifs aussi bien mode texte ou mode math.

Ainsi on aurait un bon affichage :
\numprint{12345,67} donne 12 345,67
et \numprint{12345.67} donne 12 345,67 et converti la décimale

Un tel code rend compatible les anciens script, utilisant la macro \nombre et pourrait permettre d'utiliser la fonction

Code : Tout sélectionner

def TeX_nombre(nombre):
	if isinstance(nombre,int) or isinstance(nombre,float):
		return "\\numprint{"+str(nombre)+"}"
	elif isinstance(nombre,Fractions):
		return "\\dfrac{"+TeX(nombre.n)+"}{"+TeX(nombre.d)+"}"
	elif isinstance(nombre,Fraction):
		return "\\dfrac{"+TeX(nombre.numerator)+"}{"+TeX(nombre.denominator)+"}"    #J'aime bien la récursivité  :P 
	else:
		return str(nombre)
qui renverra, pour n'importe quel nombre (?), le code TeX.

Il est clair que la class Fraction du module fractions est difficile à utiliser dans la mesure ou par défaut il simplifie toutes les fractions donc inutilisable dans la plupart des corrigés.
Mais la classe Fractions de pyromaths ne pose pas ce probleme

Avatar de l’utilisateur
Jérôme
Administrateur - Site Admin
Messages : 1130
Inscription : 26 août 2006, 13:10
Localisation : Nantes
Contact :

Re: Ecriture des nombres

Message par Jérôme » 02 févr. 2010, 11:08

Salut Nicolas,
en effet, c'est nettement plus satisfaisant ainsi. Par contre, j'avais pour projet de supprimer tous les appels à \nombre pour les remplacer par la fonction sep_milliers (je crois) de Pyromaths qui a pour objet de faire ce que tu proposes en convertissant les écritures scientifiques en écritures décimales.
Pyromaths génère des fiches d'exercices et leur corrigé en toute simplicité.
Un programme multi-plateformes libre et gratuit sous licence GPL

Nicolas
Messages : 89
Inscription : 16 janv. 2010, 10:36

Re: Ecriture des nombres

Message par Nicolas » 02 févr. 2010, 12:02

Cela tient d'une démarche similaire.
Il faut choisir si la composition des nombres se fait par Python ou par LaTeX (avec sepmillier ou avec \numprint)
\numprint gère aussi l'affichage des écritures scientifiques (il faudra changer le symbole du produit) et gère correctement le signe moins. (on peut cependant intégrer modifier cela pour les nombres négatifs en mode texte)

Mon penchant pour \numprint vient seulement de la logique :
LaTeX gère la mise en forme ;
Python permet de créer le contenu.
Ce n'est que mon avis.

Mais la fonction sepmillier permet de gérer un affichage original (nombre à trou, ou autre) pour lequel \numprint est inadapté.

Dans les deux cas, une fonction «centralisée» pour afficher tous les nombres sera facile à mettre en place.

Avatar de l’utilisateur
Jérôme
Administrateur - Site Admin
Messages : 1130
Inscription : 26 août 2006, 13:10
Localisation : Nantes
Contact :

Re: Ecriture des nombres

Message par Jérôme » 02 févr. 2010, 22:40

Ton argument tient la route. Cependant, je préfère la solution Python. L'avantage que j'y vois, c'est que laTeX compile plusieurs fois le fichier tex. Alors que Python ne passe qu'une fois. Je pense qu'il est alors plus "efficace" d'utiliser la fonction sep_milliers. À voir si il faut la compléter pour qu'elle soit exhaustive.
Pyromaths génère des fiches d'exercices et leur corrigé en toute simplicité.
Un programme multi-plateformes libre et gratuit sous licence GPL

Nicolas
Messages : 89
Inscription : 16 janv. 2010, 10:36

Re: Ecriture des nombres

Message par Nicolas » 03 févr. 2010, 16:34

« efficace » peut être mais ce sera surtout confortable. Pas besoin de s'occuper du formatage qui sera ainsi effectué une bonne fois pour toutes.

Nicolas
Messages : 89
Inscription : 16 janv. 2010, 10:36

Re: Ecriture des nombres

Message par Nicolas » 06 mars 2010, 09:03

Bonjour,
J'ai déplacé la fonction TeX() dans le fichier outils.Affichage.py et elle doit renvoyer le code LaTeX du nombre à afficher.
Le nombre pouvant être de type int, float, Fractions ou RacineDegre2 (classe pour les racines de polynôme de degré 2).
Elle accepte deux paramètres optionnels
  • terme=True qui ajoute un signe + pour l'afficher comme coefficient dans un polynôme
  • parenthese=True qui entoure de parenthèses en fonctions des besoins : entier relatif, somme,...
ces deux options peuvent être appelée par les fonctions tTeX() ou pTeX()

Code : Tout sélectionner

def tTeX(nombre):
    return TeX(nombre,terme=True)

def pTeX(nombre):
    return TeX(nombre,parenthese=True)
Je me pose deux questions :
  • N'est-il pas pertinent de supprimer les deux paramètres optionnels de TeX() pour ne faire appel qu'à tTeX() ou pTeX() en cas de besoin et ainsi alléger le code de TeX() ?
  • Comment afficher le signe moins du numérateur d'une Fractions ?
    Par défaut, je l'affiche devant la fraction mais ça n'est pas toujours le résultat souhaité.
    Par exemple, si une étape de calcul donne la fraction -3/-2, on souhaitera écrire le signe devant le dénominateur.
    Tandis que le résultat d'une simplification devra plutôt, afficher le signe devant le trait de fraction.
    J'avais ainsi l'idée d'ajouter l'attribut Fractions.est_simple qui serait un booléen
    • False par défaut et la fonction TeX() afficherait le signe moins au numérateur
    • True serait affecté par la méthode Fractions.simplifie() et dans ce cas TeX() choisirait de mettre le signe moins devant la fraction
    Cela me paraît correspondre aux choix de placement du signe moins et donnerait dans le même temps une utilisation simple et transparente.

Répondre