[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 : 8115
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

[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é 4525 fois
MB. Rejoignez notre partenaire pCloud et bénéficiez de 10Go de stockage gratuits ou d'une offre premium !
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 2306
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;