
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.
\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.mp
und Ihre Beschriftungen entsprechend erstellt. Außerdem können Sie so ganz einfach einen Maßstab angeben (pic1
siehe unten). - Anstatt das Rechteck und das Etikett separat zu drehen, habe ich sie zusammen gezeichnet und das Ergebnis gedreht.
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 ...
\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
unitsquare
so verschieben, dass sie auf den Ursprung zentriert istdraw
+undraw
mit einem dünneren Stift ist ein nützlicher Trick, um abgerundete Ecken zu erhaltenSie können die
picture
zurückgegebenen Werte skalieren vontextext
Eine kleine zusätzliche zufällige Rotation kann diese Art der Anzeige verbessern