Dans cette vidéo, on voit des formes géométriques construites à partir des tables de multiplications représentées dans un modulo (si j'ai bien compris…). Et, évidemment, j'ai été séduit par la beauté de la chose et l'idée m'est venue de vouloir faire la même chose avec LaTeX. TikZ devrait répondre à ma curiosité, n'est-ce pas ? Quelqu'un d'entre vous a-t-il déjà essayé ? J'ai cherché des représentations de ce type, mais n'ai rien trouvé (probablement faute d'avoir utilisé les bons mots-clé). On aura compris que je ne suis pas matheux pour deux ronds… |
Voici une idée. Après une petite réflexion, il me semble que c'est plus pratique avec des arguments donc la commande à utiliser comme suit Ouvrir dans l'éditeur Overleaf
\documentclass[a4paper,french]{article} \usepackage{lmodern} \usepackage[T1]{fontenc} \usepackage{babel} \usepackage[margin=2.5cm]{geometry} \usepackage{tikz} \newcommand{\mttablemultiplicationmodulo}[3][2cm]{% \begin{tikzpicture}[rotate=90] \draw (0,0) circle (#1); \foreach \i in {0,...,\numexpr#3-1} { \fill[green!40!black] (\i*36/#3*10:#1) circle (.4mm); \draw ({(\i+1)*36/#3*10}:#1)--({(mod(\i*#2,#3)+1)*36/#3*10}:#1);} \end{tikzpicture}} \begin{document} \section{Multiplication par 2} \mttablemultiplicationmodulo{2}{10} \mttablemultiplicationmodulo{2}{60} \mttablemultiplicationmodulo{2}{100} \section{Multiplication par 3} \mttablemultiplicationmodulo{3}{10} \mttablemultiplicationmodulo{3}{60} \mttablemultiplicationmodulo{3}{100} \section{Multiplication par 6} \mttablemultiplicationmodulo{6}{10} \mttablemultiplicationmodulo{6}{60} \mttablemultiplicationmodulo{6}{100} \end{document} Réponse originale. On a définie trois macros.
el la macro Ouvrir dans l'éditeur Overleaf
\documentclass[a4paper,french]{article} \usepackage{lmodern} \usepackage[T1]{fontenc} \usepackage{babel} \usepackage[margin=2.5cm]{geometry} \usepackage{tikz} \newcommand{\mtcircle}{2cm} \newcommand{\mttablemultiplicationmodulo}{% \begin{tikzpicture}[rotate=90] \draw (0,0) circle (\mtcircle); \foreach \i in {0,...,\numexpr\mtpoints-1} { \fill[green!40!black] (\i*36/\mtpoints*10:\mtcircle) circle (.4mm); \draw ({(\i+1)*36/\mtpoints*10}:\mtcircle)--({(mod(\i*\mtunite,\mtpoints)+1)*36/\mtpoints*10}:\mtcircle);} \end{tikzpicture}} \begin{document} \section{Multiplication par 2} \newcommand{\mtunite}{2} \newcommand{\mtpoints}{10} \mttablemultiplicationmodulo \renewcommand{\mtpoints}{60} \mttablemultiplicationmodulo \renewcommand{\mtpoints}{100} \mttablemultiplicationmodulo \section{Multiplication par 3} \renewcommand{\mtunite}{3} \renewcommand{\mtpoints}{10} \mttablemultiplicationmodulo \renewcommand{\mtpoints}{60} \mttablemultiplicationmodulo \renewcommand{\mtpoints}{100} \mttablemultiplicationmodulo \section{Multiplication par 6} \renewcommand{\mtunite}{6} \renewcommand{\mtpoints}{10} \mttablemultiplicationmodulo \renewcommand{\mtpoints}{60} \mttablemultiplicationmodulo \renewcommand{\mtpoints}{100} \mttablemultiplicationmodulo \end{document} Publiée 07 Déc '19, 20:57 touhami |
Sans relancer de troll sur les compléments graphiques de l'univers LaTeX... :) voici une solution avec metapost :) Ouvrir dans l'éditeur Overleaf
prologues:=2; mul:=2; modulo:=60; rayon=2.5; path cercle; cercle=fullcircle scaled (2*rayon*1cm); pair A[],O; O=(0,0); A0-O=(0,rayon*1cm); for k=1 upto modulo-1: A[k]=A[k-1] rotatedabout(O,360/modulo); endfor; beginfig(1); draw cercle; for k=1 upto modulo-1: draw A[k]--A[k*mul mod modulo]; endfor; endfig; end ou voici un code à compiler directement sur overleaf Ouvrir dans l'éditeur Overleaf
\documentclass{article} \usepackage[shellescape]{gmp} \begin{document} \begin{mpost} prologues:=2; mul:=2; modulo:=60; rayon=2.5; path cercle; cercle=fullcircle scaled (2*rayon*1cm); pair A[],O; O=(0,0); A0-O=(0,rayon*1cm); for k=1 upto modulo-1: A[k]=A[k-1] rotatedabout(O,360/modulo); endfor; beginfig(1); draw cercle; for k=1 upto modulo-1: draw A[k]--A[k*mul mod modulo]; endfor; endfig; end \end{mpost} \end{document} Publiée 08 Déc '19, 00:12 christophe-poulain @christophe-poulain : ce code metapost a l'air limpide, mais il est dépourvu du préambule qui permettrait au néophyte de le tester en ligne en cliquant sur le lien prévu à cet effet. Pourriez-vous le compléter ?
(08 Déc '19, 13:58)
Pathe ♦♦
2
Pour metapost, pas besoin de préambule... on enregistre le code fourni ci-dessus (sous la forme nomfichier.mp) et on le compile à l'aide de mpost nomfichier. On obtiendra un fichier nomfichier.1 qu'il faudra inclure dans un document LaTeX...
(08 Déc '19, 23:01)
christophe-poulain
4
Après, si vous insistez :), j'ai ajouté un code LaTeX qui peut être testé directement dans overleaf (le lien direct ne fonctionne pas, le préambule LaTeX n'est pas le bon). Cette compilation directe est rendue possible par le package (latex) gmp
(08 Déc '19, 23:05)
christophe-poulain
@christophe-poulain. L'ensemble du fichier .tex m'intéresserait. Et d'autres aussi…
(27 Déc '19, 12:08)
fred02840
1
quel fichier .tex ? Il est fourni... Quels sont les autres ?
(28 Déc '19, 19:54)
christophe-poulain
|