Macro pour barême
Réponses
-
Bonsoir,
Je propose ceci pour le problème du barème :\documentclass{article} \usepackage{siunitx} \sisetup{ output-decimal-marker = {,}, % virgule comme séparateur décimal } \DeclareSIUnit{\point}{point} \DeclareSIUnit{\points}{points} % un peu laid, mais ça fonctionne :-) \ExplSyntaxOn \NewDocumentCommand \points { m } { \fp_compare:nNnTF {#1} < { 2 } { \qty[mode = text]{#1}{\point} } { \qty[mode = text]{#1}{\points} } } \ExplSyntaxOff \begin{document} \points{0} ; \points{1.5} ; \points{2} ; \points{3.5} \end{document}
Je veux bien implémenter une syntaxe avec des crochets, mais il faudrait pour cela que l'argument soit optionnel (autrement, on violerait les conventions LaTeX). L'est-il ?
Si \qty n'est pas reconnue, mets à jour ta distribution pour avoir siunitx v3, ou remplace \qty par l'ancienne commande \SI.
Il y a plein d'autres façons de faire. La plus primitive serait avec \ifdim (comparaison de longueurs rigides ; il faudrait par exemple comparer #1pt à 2pt).
Le principal avantage à utiliser siunitx ici : le séparateur décimal utilisé en sortie suit la configuration en vigueur dans le document (par contre, il faut utiliser un point en entrée car c'est ce qu'attend l3fp). -
Bonsoir
Je propose à mon tour une solution, peut-être moins élégante :\newcommand\point[1]{#1 point\ifdim#1 pt>2pt s \else \ifdim#1 pt<-2pt s% \else \ifdim#1 pt=2pt s \else \ifdim#1 pt=-2pt s\fi{} \fi{} \fi{} \fi{}}
Cette macro prend également en compte les points négatifs, au cas où. -
Ah, super, merci beaucoup ! (tu)
Je suis vraiment épaté, deux solutions alors que google et quant ne m'avaient rien donné de probant.
Oui, l'argument est optionnel (si on ne précise pas, c'est un point).
Pour l'instant, je suis parti de la solution de Kolakoski, en rajoutant du rouge et en marquant 1 comme valeur par défaut. -
Voilà avec l'argument optionnel — c'est presque la même chose.
\documentclass{article} \usepackage{siunitx} \sisetup{ output-decimal-marker = {,}, % virgule comme séparateur décimal } \DeclareSIUnit{\point}{point} \DeclareSIUnit{\points}{points} % un peu laid, mais ça fonctionne :-) \ExplSyntaxOn \NewDocumentCommand \points { O{1} } { \fp_compare:nNnTF {#1} < { 2 } { \qty[mode = text]{#1}{\point} } { \qty[mode = text]{#1}{\points} } } \ExplSyntaxOff \begin{document} \points[0] ; \points\ ; \points[1.5] ; \points[2] ; \points[3.5] \end{document}
Connectez-vous ou Inscrivez-vous pour répondre.
Bonjour!
Catégories
- 165.4K Toutes les catégories
- 62 Collège/Lycée
- 22.2K Algèbre
- 37.6K Analyse
- 6.3K Arithmétique
- 61 Catégories et structures
- 1.1K Combinatoire et Graphes
- 13 Sciences des données
- 5.1K Concours et Examens
- 23 CultureMath
- 51 Enseignement à distance
- 2.9K Fondements et Logique
- 10.8K Géométrie
- 84 Géométrie différentielle
- 1.1K Histoire des Mathématiques
- 79 Informatique théorique
- 3.9K LaTeX
- 39K Les-mathématiques
- 3.5K Livres, articles, revues, (...)
- 2.7K Logiciels pour les mathématiques
- 26 Mathématiques et finance
- 342 Mathématiques et Physique
- 5K Mathématiques et Société
- 3.3K Pédagogie, enseignement, orientation
- 10.1K Probabilités, théorie de la mesure
- 804 Shtam
- 4.2K Statistiques
- 3.8K Topologie
- 1.4K Vie du Forum et de ses membres