Ich möchte ein Bild in eine Metapost-Abbildung einfügen (ich verwende MikTeX/LaTeX, kein Metafun). Ich habe (auch dank Adityas Vorschlag) den folgenden Metapost-Code (kompiliert mit -tex=pdftex
Option) ausprobiert:
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
aber es funktioniert nicht, es wird ein Fehler ausgegeben, ! Unable to make mpx file.
wenn ich jpg
das Format verwende, oder es wird kein Fehler ausgegeben, aber auch kein Bild, wenn ich eps
das Format verwende. Irgendeine Ahnung?
UPDATE: Versuch der Metafun-Methode ohne ConTeXt
Mir wurde gesagt (siehe egreg-Kommentar unten), dass ich den externalfigure
Befehl von Metafun verwenden kann (ich verwende LaTeX, also beschäftige ich mich nicht mit Metafun, das, wenn ich es richtig verstehe, ConTeXt-spezifisch ist), indem ich die mpost -mem=metafun
Kompilierungsoption von Metapost verwende, aber mein System (Windows 7, MikTeX/LaTeX) scheint Metafun nicht zu kennen und meldet mir Sorry, I can't find the 'metafun' preload file; will try 'plain'.
den eigentlichen Fehler, ! Isolated expression.
auf den Bezug genommen wird externalfigure
. Wie kann ich Metafun in MikTeX installieren?
Hier ist mein mit Optionen kompilierter Metapost- -mem=metafun
Code -tex=pdftex
:
verbatimtex
\documentclass{minimal}
\begin{document}
etex
beginfig(1);
externalfigure "myimage.jpg";
endfig;
end
Antwort1
Richtige Antwort
NotizIch habe meine vorherige Antwort gelöscht, da dies eine funktionierende Lösung ist:
Verwenden Sie die folgende MP-Datei
beginfig(1);
externalfigure "hacker.jpg" scaled 3cm;
endfig;
end;
und kompilieren Sie es mit
mptopdf --metafun filename
filename.1
Dadurch wird die folgende Datei generiert :
%!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
und eine filename-1.pdf
Datei, die das Bild enthält.
Antwort2
Eine moderne Antwort
Ich weiß, das ist alt, aber es gibt luamplib
jetzt lualatex
eine viel einfachere und praktischere Möglichkeit, externe Bilder in eine Metapost-Zeichnung einzubinden.
\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}
Kompilieren Sie dies, um lualatex
eine PDF-Datei wie diese zu erstellen:
Sie können das Raster (natürlich) entfernen, wenn Sie mit der Position Ihrer Beschriftungen oder anderer Anmerkungen zufrieden sind. Das vom TEX()
Makro (oder von) erzeugte Bild btex ... etex
ist ein normales MP- <picture>
Objekt, Sie können es also nach Bedarf skalieren, drehen, verschieben usw.