%%% % NumberStick %%% \def\filedateNumberStick{2026/10/24}% \def\fileversionNumberStick{0.1}% \message{-- \filedateNumberStick\space v\fileversionNumberStick}% % \makeatletter \setKVdefault[NumberStick]{Couleur=Cornsilk,Complete=false,Visibles={},Facteur=10,Vertical=false,Court=false} \NewDocumentCommand\NumberStick{om}{% \useKVdefault[NumberStick]% \setKV[NumberStick]{#1}% \PfC@BuildNumberStick{#2}{\useKV[NumberStick]{Visibles}}% }% \NewDocumentCommand\PfC@BuildNumberStick{mm}{% \mplibforcehmode% \begin{mplibcode} boolean Complete,Vertical,Court; Complete=\useKV[NumberStick]{Complete}; Vertical=\useKV[NumberStick]{Vertical}; Court=\useKV[NumberStick]{Court}; if Court:Vertical:=false fi; color Couleur; Couleur=\useKV[NumberStick]{Couleur}; numeric Facteur; Facteur=\useKV[NumberStick]{Facteur}; picture Base; Base=image(label(TEX(decimal(Facteur*#1)),(0,0));); if Court:if Facteur>10:Tabcol=0pt else: Tabcol=2pt fi; else: Tabcol=12pt fi; Largeur=Tabcol+ceiling(abs(llcorner Base-lrcorner Base)); path BaseCadre; BaseCadre=if Vertical: unitsquare scaled Largeur else: unitsquare xscaled Largeur yscaled 30pt fi; pair A[],Depla; if Vertical: Depla=Largeur*(0,1); else: Depla=Largeur*(1,0); fi; for k=0 upto Facteur: A[k]=center BaseCadre shifted(k*Depla); fill (BaseCadre shifted(k*Depla)) withcolor white; endfor; if Complete: for k=0 upto Facteur: fill (BaseCadre shifted(k*Depla)) withcolor Couleur; label(TEX(decimal(k*#1)),A[k]); endfor; else: \ifemptyKV[NumberStick]{Visibles}{}{% for p_=#2: fill (BaseCadre shifted(p_*Depla)) withcolor Couleur; label(TEX(decimal(p_*#1)),A[p_]); endfor; }% fi; for k=0 upto Facteur: trace (BaseCadre shifted(k*Depla)); if Vertical: label.rt(TEX("\tiny$\times"&decimal(k)&"$"),iso(lrcorner BaseCadre,urcorner BaseCadre) shifted(k*Depla)); else: label.top(TEX("\tiny$\times"&decimal(k)&"$"),iso(ulcorner BaseCadre,urcorner BaseCadre) shifted(k*Depla)); fi; endfor; if Vertical: label.bot(TEX("\Large\bfseries"&decimal(#1)),iso(llcorner BaseCadre,lrcorner BaseCadre)); else: if Court: label.bot(TEX("\Large\bfseries"&decimal(#1)),iso(llcorner BaseCadre,lrcorner BaseCadre) shifted(Facteur*Depla/2)); else: label.lft(TEX("\Large\bfseries"&decimal(#1)),iso(llcorner BaseCadre,ulcorner BaseCadre)); fi; fi; \end{mplibcode} }% \makeatother