[Lualatex] Dominos en metapost

Tout ce qui concerne le langage TeX/LaTeX et ses variantes. Ce langage est utilisable sur le forum via les balises tex.
[participation réservée aux utilisateurs inscrits]
Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
MB
Administrateur
Administrateur
Messages : 8058
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant
Contact :

[Lualatex] Dominos en metapost

Message non lu par MB »

Un autre petit exemple, qui permet de représenter des dominos via luamplib.

Code : Tout sélectionner

\documentclass{article}
\usepackage{luamplib}

\newcommand{\domino}[2]{\leavevmode\begin{mplibcode}
u := 1cm;
def drawdots(expr n,p) =
    if n mod 2 <> 0:
        drawdot(p+(u/2,u/2));
    fi;
    if n>1:
        drawdot(p+( u/4, u/4));
        drawdot(p+(3u/4,3u/4));
        if n>3:
            drawdot(p+(u/4,3u/4));
            drawdot(p+(3u/4,u/4));
            if n>5:
                drawdot(p+( u/4,u/2));
                drawdot(p+(3u/4,u/2));
            fi;
        fi;
    fi;
enddef;
def domino(expr a,b) =
    pickup pencircle scaled 1pt;
    draw (0,0) -- (2u,0) -- (2u,u) -- (0,u) -- cycle;
    draw (u,0) -- (u,u);
    pickup pencircle scaled 5pt;
    drawdots(a,(0,0));
    drawdots(b,(u,0));
enddef;
beginfig(1); domino(#1,#2); endfig; \end{mplibcode}}

\begin{document}

\begin{center}
\begin{tabular}{cccccc}
\domino{0}{1} & \domino{1}{2} & \domino{2}{3} & \domino{3}{4} & \domino{4}{5} & \domino{5}{6}
\end{tabular}
\end{center}

\end{document}
dominos.png
dominos.png (5.31 Kio) Consulté 2319 fois
MB. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 2238
Inscription : samedi 29 décembre 2007, 00:58

Re: [lualatex] Exemples d'utilisation

Message non lu par projetmbc »

Merci pour ce nouvel exemple...

Pour le code, il me semble plus clair d'opter pour ce qui suit (même si je comprends l'idée d'éviter des tests inutiles).

Code : Tout sélectionner

def drawdots(expr n,p) =
    if n mod 2 <> 0:
        drawdot(p+(u/2,u/2));
    fi;
    if n>1:
        drawdot(p+( u/4, u/4));
        drawdot(p+(3u/4,3u/4));
    fi;
    if n>3:
    	drawdot(p+(u/4,3u/4));
        drawdot(p+(3u/4,u/4));
    fi;
    if n>5:
    	drawdot(p+( u/4,u/2));
    	drawdot(p+(3u/4,u/2));
    fi;
enddef;
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message