\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).
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.
Réponses
Je propose ceci pour le problème du barème : 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).
Je propose à mon tour une solution, peut-être moins élégante : Cette macro prend également en compte les points négatifs, au cas où.
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.