Wie fügt man (falls möglich) ein Bild in eine Metapost-Abbildung ein? (in einer einfachen LaTeX-Umgebung)

Wie fügt man (falls möglich) ein Bild in eine Metapost-Abbildung ein? (in einer einfachen LaTeX-Umgebung)

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=pdftexOption) 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 jpgdas Format verwende, oder es wird kein Fehler ausgegeben, aber auch kein Bild, wenn ich epsdas Format verwende. Irgendeine Ahnung?

UPDATE: Versuch der Metafun-Methode ohne ConTeXt

Mir wurde gesagt (siehe egreg-Kommentar unten), dass ich den externalfigureBefehl 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=metafunKompilierungsoption 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=metafunCode -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.1Dadurch 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.pdfDatei, die das Bild enthält.

Antwort2

Eine moderne Antwort

Ich weiß, das ist alt, aber es gibt luamplibjetzt lualatexeine 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 lualatexeine PDF-Datei wie diese zu erstellen:

Bildbeschreibung hier eingeben

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 ... etexist ein normales MP- <picture>Objekt, Sie können es also nach Bedarf skalieren, drehen, verschieben usw.

verwandte Informationen