Como inserir (se possível) uma imagem dentro de uma figura do Metapost? (em ambiente LaTeX simples)

Como inserir (se possível) uma imagem dentro de uma figura do Metapost? (em ambiente LaTeX simples)

Gostaria de inserir uma imagem em uma figura do Metapost (estou usando MikTeX/LaTeX, não Metafun). Espero ter tentado (também graças à sugestão de Aditya) o seguinte código Metapost (compilado com -tex=pdftexa opção):

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

mas não funciona, dando erro ! Unable to make mpx file.se eu usar jpgo formato, ou nenhum erro mas nem imagem se eu usar epso formato. Qualquer pista?

ATUALIZAÇÃO: tentando o jeito Metafun sem ConTeXt

Disseram-me (veja o comentário egreg abaixo) que posso usar o externalfigurecomando do Metafun (eu uso LaTeX, então não lido com Metafun, que, se bem entendi, é específico do ConTeXt), usando a mpost -mem=metafunopção de compilação do Metapost, mas meu system (Windows 7, MikTeX/LaTeX) parece não ter conhecimento do Metafun e me diz que Sorry, I can't find the 'metafun' preload file; will try 'plain'.o erro real está sendo ! Isolated expression.mencionado externalfigure. Como posso instalar o Metafun dentro do MikTeX?

Aqui está meu código Metapost compilado com -mem=metafunopções -tex=pdftex:

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

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

Responder1

Resposta adequada

ObservaçãoExcluí minha resposta anterior, porque esta é uma solução funcional:

Use o seguinte arquivo MP

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

e compile-o usando

mptopdf --metafun filename

Isso irá gerar o seguinte filename.1arquivo:

%!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

e um filename-1.pdfarquivo que inclui a imagem.

Responder2

Uma resposta moderna

Eu sei que isso é antigo, mas luamplibagora lualatexexiste uma maneira muito mais simples e útil de incluir imagens externas em um desenho do 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}

compile isso para lualatexproduzir um arquivo PDF como este:

insira a descrição da imagem aqui

Você pode (é claro) remover a grade quando estiver satisfeito com a posição de seus rótulos ou outras anotações. A imagem produzida pela TEX()macro (ou por btex ... etexé um objeto MP normal <picture>, então você pode dimensioná-la, girá-la, deslocá-la, etc., conforme necessário.

informação relacionada