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=pdftex
a 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 jpg
o formato, ou nenhum erro mas nem imagem se eu usar eps
o formato. Qualquer pista?
ATUALIZAÇÃO: tentando o jeito Metafun sem ConTeXt
Disseram-me (veja o comentário egreg abaixo) que posso usar o externalfigure
comando do Metafun (eu uso LaTeX, então não lido com Metafun, que, se bem entendi, é específico do ConTeXt), usando a mpost -mem=metafun
opçã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=metafun
opçõ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.1
arquivo:
%!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.pdf
arquivo que inclui a imagem.
Responder2
Uma resposta moderna
Eu sei que isso é antigo, mas luamplib
agora lualatex
existe 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 lualatex
produzir um arquivo PDF como este:
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.