Using MetaPost graphics in ConTeXt
Hello, I'm trying to use some MetaPost-generated graphics with ConTeXt, but I seem to be unable to do so. I have a file test.1 in the same directory as the ConTeXt source, which is as minimal as: \starttext \input tufte \placefigure[left] {Esempio di settore circolare} {\externalfigure[test.1]} \input knuth \stoptext but it seems like it can't find the file test (no extension); I tried adding options [type=mps] or [method=mps] or both, but each fails with a different error: either it looks for test.mps or it looks for test.unknown ... What should I do (apart renaming the figure file)? -- Giuseppe "Oblomov" Bilotta
Giuseppe Bilotta
Hello,
I'm trying to use some MetaPost-generated graphics with ConTeXt, but I seem to be unable to do so. I have a file test.1 in the same directory as the ConTeXt source, which is as minimal as:
\starttext \input tufte \placefigure[left] {Esempio di settore circolare} {\externalfigure[test.1]}
\useexternalfigure[prova][test.1][width=450pt] % the last one is optional \externalfigure[prova] Greetings Johannes -- Johannes Hüsing There is something fascinating about science. One gets hannes@ruhrau.de such wholesale returns of conjecture from such a trifling investment of fact. Mark Twain
Monday, March 24, 2003 Johannes Hüsing wrote:
I'm trying to use some MetaPost-generated graphics with ConTeXt, but I seem to be unable to do so. I have a file test.1 in the same directory as the ConTeXt source, which is as minimal as:
\starttext \input tufte \placefigure[left] {Esempio di settore circolare} {\externalfigure[test.1]}
JH> \useexternalfigure[prova][test.1][width=450pt] % the last one is optional JH> \externalfigure[prova] Doesn't work either. Fails with the same errors. Again, it works correctly by changing the extension. A possible reason for the error is that the name of the tex file is the same as the name of the figure file (test), because ConTeXt *does* check for this, and this is where it chooses not to handle the picture. Given that the same file works if the extension is mps, I can't understand why it refuses to do the job when the extension is different, and still different from .tex and .pdf (and therefore there is no chance of contrast). -- Giuseppe "Oblomov" Bilotta
At 11:27 AM 3/24/2003 +0100, Giuseppe Bilotta wrote:
Monday, March 24, 2003 Johannes Hüsing wrote:
I'm trying to use some MetaPost-generated graphics with ConTeXt, but I seem to be unable to do so. I have a file test.1 in the same directory as the ConTeXt source, which is as minimal as:
\starttext \input tufte \placefigure[left] {Esempio di settore circolare} {\externalfigure[test.1]}
JH> \useexternalfigure[prova][test.1][width=450pt] % the last one is optional JH> \externalfigure[prova]
Doesn't work either. Fails with the same errors. Again, it works correctly by changing the extension.
A possible reason for the error is that the name of the tex file is the same as the name of the figure file (test), because ConTeXt *does* check for this, and this is where it chooses not to handle the picture. Given that the same file works if the extension is mps, I can't understand why it refuses to do the job when the extension is different, and still different from .tex and .pdf
or xml or the yet to be invented superior coding standard 'number one' with suffix 1 Hans ------------------------------------------------------------------------- Hans Hagen | PRAGMA ADE | pragma@wxs.nl Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: +31 (0)38 477 53 69 | fax: +31 (0)38 477 53 74 | www.pragma-ade.com ------------------------------------------------------------------------- information: http://www.pragma-ade.com/roadmap.pdf documentation: http://www.pragma-ade.com/showcase.pdf -------------------------------------------------------------------------
Monday, March 24, 2003 Hans Hagen wrote:
Doesn't work either. Fails with the same errors. Again, it works correctly by changing the extension.
A possible reason for the error is that the name of the tex file is the same as the name of the figure file (test), because ConTeXt *does* check for this, and this is where it chooses not to handle the picture. Given that the same file works if the extension is mps, I can't understand why it refuses to do the job when the extension is different, and still different from .tex and .pdf
HH> or xml or the yet to be invented superior coding standard 'number one' with HH> suffix 1 Ok, but in the mean time how is one supposed to include MetaPost output without having to rename the files? -- Giuseppe "Oblomov" Bilotta
Monday, March 24, 2003 Hans Hagen wrote:
Doesn't work either. Fails with the same errors. Again, it works correctly by changing the extension.
A possible reason for the error is that the name of the tex file is the same as the name of the figure file (test), because ConTeXt *does* check for this, and this is where it chooses not to handle the picture. Given that the same file works if the extension is mps, I can't understand why it refuses to do the job when the extension is different, and still different from .tex and .pdf
HH> or xml or the yet to be invented superior coding standard 'number one' with HH> suffix 1
Ok, but in the mean time how is one supposed to include MetaPost output without having to rename the files?
I've tried to resist, but I have to ask. Why not write a simple batch file that runs MetaPost *and* changes the extension? That's what I do. ... Are you processing several MP scripts in one file ?? -Gary
Tuesday, March 25, 2003 Gary Pajer wrote:
Ok, but in the mean time how is one supposed to include MetaPost output without having to rename the files?
GP> I've tried to resist, but I have to ask. Why not write a simple batch file GP> that runs MetaPost *and* changes the extension? That's what I do. ... Are GP> you processing several MP scripts in one file ?? Oh, I can do many things. And I don't even *need* it --it's just for testing purpouses, not for production stuff-- but why use a workaround when the problem can be fixed? -- Giuseppe "Oblomov" Bilotta
I'm trying to use some MetaPost-generated graphics with ConTeXt, but I seem to be unable to do so.
A possible reason for the error is that the name of the tex file is the same as the name of the figure file (test), because ConTeXt *does* check for this, and this is where it chooses not to handle the picture.
I can't you whether you supposition is right because if Hans Hagen goes out of his way to avoid name collisions with graphics then it's good enough for me. Here's an example from the metafun manual, that works with \externalfigure (it also avoids name collisions). ----- %output=pdf \setupcolors [state=start] \startMPcode boolean show_labels ; show_labels := true; def draw_problem (expr n, p, q, r, s) = % number & 4 postitions beginfig(n) ; save x,y ; z[1][1] = p ; z[2][1] = q ; z[3][1] = r ; z[4][1] = s ; for i = 1 upto 4 : z[i][1] = (x[i][1],y[i][1]) = z[if i=1: 4 else: i-1 fi][2] ; z[i][2] = (x[i][2],y[i][2]) ; z[i][3] = (x[i][2]-y[i][2]+y[i][1], y[i][2]+x[i][2]-x[i][1]) ; z[i][4] = (x[i][1]-y[i][2]+y[i][1], y[i][1]+x[i][2]-x[i][1]) ; z[i] = 0.5[z[i][1], z[i][3]] ; endfor ; z[0] = whatever[z[1], z[3]] = whatever[z[2], z[4]] ; pickup pencircle scaled .5pt ; for i = 1 upto 4 : draw z[i][1]--z[i][2]--z[i][3]--z[i][4]--cycle ; draw z[i][1]--z[i][3] ; draw z[i][2]--z[i][4] ; if i < 3 : draw z[i]--z[i+2] dashed evenly fi ; endfor ; draw ((1,0)--(1,1)--(0,1)) zscaled (unitvector(z[1]-z[0])*10pt) shifted z[0] ; mark_rt_angle (z[1], z[0], z[2]) ; % z2 is not used at all if show_labels: pickup pencircle scaled 5pt ; dotlabel.llft(btex $Z_{11}$ etex, z[1][1]) ; dotlabel.ulft(btex $Z_{12}$ etex, z[1][2]) ; dotlabel.ulft(btex $Z_{13}$ etex, z[1][3]) ; dotlabel.llft(btex $Z_{14}$ etex, z[1][4]) ; dotlabel.lft (btex $Z_{21}$ etex, z[2][1]) ; dotlabel.llft(btex $Z_{22}$ etex, z[2][2]) ; dotlabel.urt (btex $Z_{23}$ etex, z[2][3]) ; dotlabel.llft(btex $Z_{24}$ etex, z[2][4]) ; dotlabel.urt (btex $Z_{31}$ etex, z[3][1]) ; dotlabel.ulft(btex $Z_{32}$ etex, z[3][2]) ; dotlabel.urt (btex $Z_{33}$ etex, z[3][3]) ; dotlabel.urt (btex $Z_{34}$ etex, z[3][4]) ; dotlabel.lft (btex $Z_{41}$ etex, z[4][1]) ; dotlabel.urt (btex $Z_{42}$ etex, z[4][2]) ; dotlabel.llft(btex $Z_{43}$ etex, z[4][3]) ; dotlabel.lrt (btex $Z_{44}$ etex, z[4][4]) ; dotlabel.urt (btex $Z_{0}$ etex, z[0]) ; dotlabel.lft (btex $Z_{1}$ etex, z[1]) ; dotlabel.top (btex $Z_{2}$ etex, z[2]) ; dotlabel.rt (btex $Z_{3}$ etex, z[3]) ; dotlabel.bot (btex $Z_{4}$ etex, z[4]) ; fi ; endfig ; enddef ; angle_radius = 10pt ; def mark_rt_angle (expr a, b, c) = draw ((1,0)--(1,1)--(0,1)) zscaled (angle_radius*unitvector(a-b)) shifted b enddef ; def do_draw_problem (expr n, i, j) = draw_problem (n, (400pt, 400pt), (400pt, 600pt), i[(400pt,600pt),(550pt,600pt)], j[(400pt,400pt),(550pt,400pt)] ) ; enddef ; do_draw_problem (50, 0.6, 1.0) ; \stopMPcode \starttext \externalfigure[example22-mpgraph.50] \stoptext %%% Local Variables: %%% mode:context %%% End: -----
On Sun, Mar 23, 2003 at 10:38:37PM +0100, Giuseppe Bilotta wrote:
Hello,
I'm trying to use some MetaPost-generated graphics with ConTeXt, but I seem to be unable to do so. I have a file test.1 in the same directory as the ConTeXt source, which is as minimal as:
\starttext \input tufte \placefigure[left] {Esempio di settore circolare} {\externalfigure[test.1]} \input knuth \stoptext
but it seems like it can't find the file test (no extension); I tried adding options [type=mps] or [method=mps] or both, but each fails with a different error: either it looks for test.mps or it looks for test.unknown ...
The macro \calculateexternalfigure seems to set the extension to empty if the figure file name is the same as the jobname: % redo message, only filename \doifparentfileelse\@@effilename {\@EA\removefromcommalist\@EA{\jobsuffix}\figuretypes \let\@@efextension\empty \showmessage\m!figures9\@@effilename \donefalse} \donothing (core-fig.tex) Therefore it does not search for your nonstandard extension. Regards, Simon -- Simon Pepping email: spepping@scaprea.hobby.nl
Monday, March 24, 2003 Simon Pepping wrote:
but it seems like it can't find the file test (no extension); I tried adding options [type=mps] or [method=mps] or both, but each fails with a different error: either it looks for test.mps or it looks for test.unknown ...
SP> The macro \calculateexternalfigure seems to set the extension to empty SP> if the figure file name is the same as the jobname: SP> % redo message, only filename SP> \doifparentfileelse\@@effilename SP> {\@EA\removefromcommalist\@EA{\jobsuffix}\figuretypes SP> \let\@@efextension\empty SP> \showmessage\m!figures9\@@effilename SP> \donefalse} SP> \donothing SP> (core-fig.tex) SP> Therefore it does not search for your nonstandard extension. Yup, after a little debugging I came to the same conclusion, but I still it's incorrect behaviour. It's correct that it removes the jobsuffix from the figuretypes to be searched, but it should still try and look for the figure, after the change. -- Giuseppe "Oblomov" Bilotta
participants (6)
-
Gary Pajer
-
Giuseppe Bilotta
-
Guy Worthington
-
Hans Hagen
-
Johannes Hüsing
-
Simon Pepping