![Metapost 図の中に画像を挿入するにはどうすればいいですか (可能な場合)? (プレーンな LaTeX 環境で)](https://rvso.com/image/266399/Metapost%20%E5%9B%B3%E3%81%AE%E4%B8%AD%E3%81%AB%E7%94%BB%E5%83%8F%E3%82%92%E6%8C%BF%E5%85%A5%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%81%84%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%20(%E5%8F%AF%E8%83%BD%E3%81%AA%E5%A0%B4%E5%90%88)%3F%20(%E3%83%97%E3%83%AC%E3%83%BC%E3%83%B3%E3%81%AA%20LaTeX%20%E7%92%B0%E5%A2%83%E3%81%A7).png)
Metapost の図に画像を挿入したいと思います (Metafun ではなく MikTeX/LaTeX を使用しています)。次の Metapost コード (-tex=pdftex
オプション付きでコンパイル) を試してみました (Aditya の提案にも感謝します)。
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
しかし、それは機能しません。フォーマットを! Unable to make mpx file.
使用するとエラーが発生jpg
します。または、フォーマットを使用するとエラーは発生しませんが、画像も表示されませんeps
。何か手がかりはありますか?
更新: ConTeXt なしで Metafun の方法を試す
externalfigure
Metapost のコンパイル オプションを使用して、Metafun コマンド (私は LaTeX を使用しているため、Metafun は扱っていません。私の理解では、Metafun は ConTeXt 固有のものです) を使用できると聞きましmpost -mem=metafun
た (以下の egreg のコメントを参照)。しかし、私のシステム (Windows 7、MikTeX/LaTeX) は Metafun を認識していないようで、 が表示されます。Sorry, I can't find the 'metafun' preload file; will try 'plain'.
実際のエラーは です。MikTeX 内に Metafun をインストールする! Isolated expression.
にはexternalfigure
どうすればよいでしょうか。
-mem=metafun
以下はオプションを使用してコンパイルされた Metapost コードです-tex=pdftex
:
verbatimtex
\documentclass{minimal}
\begin{document}
etex
beginfig(1);
externalfigure "myimage.jpg";
endfig;
end
答え1
正しい答え
注記これは実用的な解決策なので、以前の回答を削除しました。
次のMPファイルを使用してください
beginfig(1);
externalfigure "hacker.jpg" scaled 3cm;
endfig;
end;
そしてそれをコンパイルする
mptopdf --metafun filename
これにより、次のfilename.1
ファイルが生成されます。
%!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
filename-1.pdf
画像を含むファイル。
答え2
現代的な答え
これは古い方法だとはわかっていますが、 および を使用すると、luamplib
Metapostlualatex
図面に外部画像を含めるためのはるかにシンプルで使いやすい方法があります。
\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}
これをコンパイルすると、lualatex
次のような PDF ファイルが生成されます。
ラベルやその他の注釈の位置に満足したら、(もちろん)グリッドを削除できます。マクロTEX()
(または )によって生成された画像は、btex ... etex
通常の MP<picture>
オブジェクトであるため、必要に応じて拡大縮小、回転、移動などを行うことができます。