Notas

Notas

A ideia é reproduzir a imagem da forma mais fiel possível. Dois problemas: o parâmetro s não é levado em consideração; o tamanho das etiquetas ainda é muito pequeno.

insira a descrição da imagem aqui

      \documentclass[border=5mm]{standalone}
      \usepackage{luatex85}
      \usepackage{luamplib}
      \usepackage{unicode-math}
      \setmainfont{TeX Gyre Pagella}
      \setmathfont{TeX Gyre Pagella Math}
      \begin{document}
      \mplibtextextlabel{enable}
     \begin{mplibcode}

     vardef card(expr a, c, s) = image(
         save rectangle;
         path rectangle;
         rectangle = unitsquare xscaled 2 cm yscaled 4cm;
         draw rectangle rotatedaround((1cm,2cm),a) withcolor c;
         label(btex \Huge s etex ,center rectangle) rotatedaround((1cm,2cm),a) withcolor c;
       )

    enddef;

 beginfig(1)
    pickup pencircle scaled 4;

    color pink;
    pink = (3/4, 1/3, 1/3);

    draw card(-10, 1/4[red, white], A);
    draw card(10 , 1/4[green, white], L) shifted 80 right;
    draw card(-10, 1/4[blue, white], E) shifted 160 right;
    draw card(10, pink, A) shifted 240 right;
 endfig;    

\end{mplibcode}
\end{document}

Responder1

Pode haver maneiras melhores, mas aqui está algo que funciona. Para melhor ou para pior, mudei algumas coisas em sua abordagem original (para uma resposta mais próxima do que você tinha originalmente, consulte a primeira resposta no histórico de edições).

  • Não sei se ou como os rótulos podem ser feitos sem passar uma string na macro, então passei seus rótulos como strings, por exemplo, "A".
  • Segui orientação plain.mpe fiz seus rótulos dessa forma. Além disso, isso permite que você especifique uma escala com bastante facilidade ( pic1abaixo).
  • Em vez de girar o retângulo e o rótulo separadamente, juntei-os e girei o resultado.

insira a descrição da imagem aqui

Editar: alterado para não exigir pacotes extras, consulte o histórico de edição do original comgraphicx

\documentclass[border=5mm]{standalone}
\usepackage{luatex85}
\usepackage{luamplib}
\mplibtextextlabel{enable}
\usepackage{unicode-math}
\setmainfont{TeX Gyre Pagella}
\setmathfont{TeX Gyre Pagella Math}
\begin{document}
\begin{mplibcode}

    vardef card(expr a, c, s) = image(
         save pic,rectangle;
         picture pic[];
         path rectangle;
         rectangle = unitsquare xscaled 2 cm yscaled 4cm;
         pic1= s infont defaultfont scaled 4;% change your scale here
         pic2=image(
                    draw rectangle;
                    draw pic1 shifted (center rectangle-center pic1);
                    );
         draw pic2 rotatedaround((1cm,2cm),a) withcolor c;
       )
    enddef;

 beginfig(1)
    pickup pencircle scaled 4;

    color pink;
    pink = (3/4, 1/3, 1/3);

    draw card(-10, 1/4[red, white], "A");
    draw card(10 , 1/4[green, white], "L") shifted 80 right;
    draw card(-10, 1/4[blue, white], "E") shifted 160 right;
    draw card(10, pink, "A") shifted 240 right;
 endfig;    

\end{mplibcode}
\end{document}

Responder2

Aqui está outra tentativa...

insira a descrição da imagem aqui

\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\usepackage{fontspec}
\setmainfont{Arial Rounded MT Bold}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}

vardef card(expr rotation, shade, letter) = image(
    path rectangle; rectangle = unitsquare shifted (-1/2, -1/2) xscaled 56 yscaled 91 ; 
    unfill rectangle;
    draw rectangle withpen pencircle scaled 4.2;
    undraw rectangle withpen pencircle scaled 3 withcolor 1/2[shade, background];
    label(textext(letter) scaled 6, origin) withcolor shade;
    currentpicture := currentpicture rotated rotation;
) enddef;

beginfig(1);
    draw card(normaldeviate + 10, 1/2 red, "A");
    draw card(normaldeviate - 10, 1/2 green, "L") shifted 80 right;
    draw card(normaldeviate + 10, 1/4[blue, white], "E") shifted 160 right;
    draw card(normaldeviate - 10, 1/2[red, blue], "A") shifted 240 right;
endfig;

\end{mplibcode}
\end{document}

Notas

  • a rotação é mais fácil se você mudar unitsquarepara que fique centralizado na origem

  • draw+ undrawcom uma caneta mais fina é um truque útil para obter cantos arredondados

  • Você pode dimensionar o pictureretornado detextext

  • Uma pequena rotação aleatória extra pode melhorar esse tipo de exibição

informação relacionada