¿Cómo insertar (si es posible) una imagen dentro de una figura de Metapost? (en entorno LaTeX simple)

¿Cómo insertar (si es posible) una imagen dentro de una figura de Metapost? (en entorno LaTeX simple)

Me gustaría insertar una imagen en una figura de Metapost (estoy usando MikTeX/LaTeX, no Metafun). Con suerte, probé (también gracias a la sugerencia de Aditya) el siguiente código Metapost (compilado con -tex=pdftexla opción):

verbatimtex
%&latex
\documentclass{minimal}
\usepackage{graphicx}
\begin{document}
etex

beginfig(1);
picture pct;
pct:=btex \includegraphics{myimage.jpg} etex;
%pct:=btex \includegraphics{myimage.eps} etex;
draw pct;
endfig;
end

pero no funciona, dando error ! Unable to make mpx file.si uso jpgformato, o ningún error pero tampoco imagen si uso epsformato. ¿Cualquier pista?

ACTUALIZACIÓN: probando el modo Metafun sin ConTeXt

Me dijeron (ver el comentario de egreg a continuación) que puedo usar el externalfigurecomando de Metafun (uso LaTeX, por lo que no trato con Metafun, que, según tengo entendido, es específico de ConTeXt), usando la mpost -mem=metafunopción de compilación de Metapost, pero mi El sistema (Windows 7, MikTeX/LaTeX) parece no tener conocimiento de Metafun y me dice , haciendo referencia al Sorry, I can't find the 'metafun' preload file; will try 'plain'.error real . ¿Cómo puedo instalar Metafun dentro de MikTeX?! Isolated expression.externalfigure

Aquí está mi código Metapost compilado con -mem=metafunopciones -tex=pdftex:

verbatimtex
\documentclass{minimal}
\begin{document}
etex

beginfig(1);
externalfigure "myimage.jpg";
endfig;
end

Respuesta1

Respuesta adecuada

NotaEliminé mi respuesta anterior porque esta es una solución funcional:

Utilice el siguiente archivo MP

beginfig(1);
externalfigure "hacker.jpg" scaled 3cm;
endfig;
end;

y compilarlo usando

mptopdf --metafun filename

Esto generará el siguiente filename.1archivo:

%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 0 0 86 86 
%%HiResBoundingBox: 0 0 85.03935 85.03935 
%%Creator: MetaPost 1.504
%%CreationDate: 2013.04.14:1210
%%Pages: 1
%%BeginProlog
%%BeginResource: procset mpost
/bd{bind def}bind def
/hlw{0 dtransform exch truncate exch idtransform pop setlinewidth}bd
/vlw{0 exch dtransform truncate idtransform setlinewidth pop}bd
/l{lineto}bd/r{rlineto}bd/c{curveto}bd/m{moveto}bd/p{closepath}bd/n{newpath}bd
/C{setcmykcolor}bd/G{setgray}bd/R{setrgbcolor}bd/lj{setlinejoin}bd/ml{setmiterlimit}bd
/lc{setlinecap}bd/S{stroke}bd/F{fill}bd/q{gsave}bd/Q{grestore}bd/s{scale}bd/t{concat}bd
/sd{setdash}bd/rd{[] 0 setdash}bd/P{showpage}bd/B{q F Q}bd/W{clip}bd
%%EndResource
%%EndProlog
%%Page: 1 1
%%MetaPostSpecials: 2.0 123 1000
%%MetaPostSpecial: 9 85.03935 0 0 85.03935 0 0 hacker.jpg 1 10
 0.123 0.012 0.001 R
n 0 0 m
0 0 l
0 0 l
0 0 l
 p F
P
%%EOF

y un filename-1.pdfarchivo que incluye la imagen.

Respuesta2

Una respuesta moderna

Sé que esto es antiguo, pero luamplibahora lualatexexiste una forma mucho más simple y útil de incluir imágenes externas en un dibujo de Metapost.

\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\usepackage{graphicx}
\mplibtextextlabel{enable}
\begin{document}
\begin{mplibcode}
beginfig(1);

    picture A; 
    A = TEX("\includegraphics[width=200pt]{example-image-a}");

    % alternative, if you like btex ... etex 
    % A = btex \includegraphics[width=200pt]{example-image-a} etex;
    
    draw A;
    
    % add a grid (to help you measure the coordinates)
    numeric wd, ht; 
    (wd, ht) = urcorner A;
    for x=0 step 10 until wd:
        draw (x, -6) -- (x, ht + 6)
            withcolor if x mod 100 = 0: red else: 7/8 fi;
    endfor
    for y=0 step 10 until ht:
        draw (-6, y) -- (wd + 6, y)
            withcolor if y mod 100 = 0: red else: 7/8 fi;
    endfor
    
    % add a label (or whatever)
    dotlabel.urt("Label here", (125, 133));
endfig;
\end{mplibcode}
\end{document}

compila esto para lualatexproducir un archivo PDF como este:

ingrese la descripción de la imagen aquí

Puede (por supuesto) eliminar la cuadrícula una vez que esté satisfecho con la posición de sus etiquetas u otras anotaciones. La imagen producida por la TEX()macro (o por btex ... etexes un objeto MP normal <picture>, por lo que puede escalarla, rotarla, desplazarla, etc., según sea necesario.

información relacionada