Voici deux solutions en un fichier. Bien entendu, on peut encore améliorer la situation en créant une commande (ou en environnement) pour factoriser tout ça. J'utilise une fois `fancyvrb` et une fois `tcolorbox`. Il doit y avoir moyen de faire quelque chose du même genre avec `listings` mais je n'ai pas regarder.
regardé.
\documentclass{article}
\usepackage{fontspec}
\usepackage{luamplib}
\usepackage{fancyvrb}
\usepackage{tcolorbox}
\tcbuselibrary{listings}
\tcbset{listing file=toto.mp}
\begin{document}
\begin{VerbatimOut}[gobble=0]{tata.mp}
beginfig(1);
draw fullcircle scaled 3cm;
endfig;
\end{VerbatimOut}
\begin{mplibcode}
input tata;
\end{mplibcode}
\VerbatimInput{tata.mp}
\bigskip{}
\begin{tcboutputlisting}
beginfig(1);
numeric u;
u = 3cm;
z0 = (0, 0); z1 = (u, 0); z2=(u, u); z3=(0, u);
draw for k=0 upto 3: z[k]-- endfor cycle;
endfig;
\end{tcboutputlisting}
\begin{mplibcode}
input toto;
\end{mplibcode}
\tcbinputlisting{colback=green!5,colframe=green!75!black,listing only}
\end{document}