Notas

Notas

La idea es reproducir la imagen lo más fielmente posible. Dos problemas: el parámetro s no se tiene en cuenta; El tamaño de las etiquetas aún es demasiado pequeño.

ingrese la descripción de la imagen aquí

      \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}

Respuesta1

Puede que haya mejores formas, pero aquí hay algo que funciona. Para bien o para mal, cambié un par de cosas en su enfoque original (para obtener una respuesta más cercana a la que tenía originalmente, consulte la primera respuesta en el historial de edición).

  • No sé si se pueden hacer etiquetas sin pasar una cadena en la macro, así que pasé sus etiquetas como cadenas, por ejemplo, "A".
  • Me guié plain.mpe hice tus etiquetas de esa manera. Esto además le permite especificar una escala con bastante facilidad ( pic1a continuación).
  • En lugar de rotar el rectángulo y la etiqueta por separado, los junté y roté el resultado.

ingrese la descripción de la imagen aquí

Editar: modificado para no requerir paquetes adicionales, consulte el historial de edición del original congraphicx

\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}

Respuesta2

Aquí hay otra oportunidad...

ingrese la descripción de la imagen aquí

\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

  • la rotación es más fácil si se desplaza unitsquarepara que quede centrada en el origen

  • draw+ undrawcon un bolígrafo más fino es un truco útil para redondear las esquinas

  • Puedes escalar el pictureretorno detextext

  • Un poco de rotación aleatoria adicional puede mejorar este tipo de visualización.

información relacionada