Anmerkungen

Anmerkungen

Ziel ist es, das Bild so originalgetreu wie möglich wiederzugeben. Zwei Probleme: Der Parameter s wird nicht berücksichtigt. Die Größe der Beschriftungen ist immer noch zu klein.

Bildbeschreibung hier eingeben

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

Antwort1

Es mag bessere Wege geben, aber hier ist etwas, das funktioniert. Ob gut oder schlecht, ich habe ein paar Dinge an Ihrem ursprünglichen Ansatz geändert (eine Antwort, die näher an Ihrer ursprünglichen Antwort liegt, finden Sie in der ersten Antwort im Bearbeitungsverlauf).

  • Ich weiß nicht, ob und wie Beschriftungen erstellt werden können, ohne im Makro eine Zeichenfolge zu übergeben, daher habe ich Ihre Beschriftungen als Zeichenfolgen übergeben, z. B. „A“.
  • Ich habe mich an Ihren Hinweisen orientiert plain.mpund Ihre Beschriftungen entsprechend erstellt. Außerdem können Sie so ganz einfach einen Maßstab angeben ( pic1siehe unten).
  • Anstatt das Rechteck und das Etikett separat zu drehen, habe ich sie zusammen gezeichnet und das Ergebnis gedreht.

Bildbeschreibung hier eingeben

Bearbeiten: geändert, sodass keine zusätzlichen Pakete erforderlich sind, siehe Bearbeitungsverlauf für Original mitgraphicx

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

Antwort2

Hier ist ein weiterer Versuch ...

Bildbeschreibung hier eingeben

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

Anmerkungen

  • Die Drehung ist einfacher, wenn Sie unitsquareso verschieben, dass sie auf den Ursprung zentriert ist

  • draw+ undrawmit einem dünneren Stift ist ein nützlicher Trick, um abgerundete Ecken zu erhalten

  • Sie können die picturezurückgegebenen Werte skalieren vontextext

  • Eine kleine zusätzliche zufällige Rotation kann diese Art der Anzeige verbessern

verwandte Informationen