Below is how I have used Asymptote in the past with the Context filter module:

download portable ghostsctipt
create dir c:\context\ghostscript and install from https://portableapps.com/apps/utilities/ghostscript_portable

download non-portable asymptote
create dir c:\context\asymptote and install from http://asymptote.sourceforge.net/

create file c:\context\asy.bat with context
ASYMPTOTE_GS=C:context/ghostscript/bin/gswin64.exe
C:/context/asymptote/asy.exe %*

test with:

\usemodule[filter]

\defineexternalfilter[ASY]
   [filter={/context/asy.bat -tex context -outformat pdf
    -outname \externalfilteroutputfile},
    output=\externalfilterbasefile.pdf,
    cache=yes,
    readcommand=\ReadImage,]

\define[1]\ReadImage{\externalfigure[#1]}

\starttext
   Testing if we can include an asymptote image
   \startplacefigure[location={here}, title={An Asymptote figure}]
     \startASY
       size(10cm);
       import graph;
       real f(real x) {return sin(x);}
       draw(graph(f,-3,3,300),blue);
     \stopASY
   \stopplacefigure
\stoptext


OR alternatively:


\usemodule[filter]

\defineexternalfilter[ASY]
   [filter={/context/asy.bat -tex context -outformat pdf
    -outname \externalfilteroutputfile},
    output=\externalfilterbasefile.pdf,
    cache=yes,
    readcommand=\ReadImage,]

\define[1]\ReadImage{\externalfigure[#1]}

\starttext
   Testing if we can include an asymptote image
   \startplacefigure[location={here}, title={An Asymptote figure}]
     \startASY
       unitsize(1cm);
       draw((-.1,0) -- (2,0), arrow=Arrow(TeXHead));
       draw((0,-.1) -- (0,2), arrow=Arrow(TeXHead));
       draw((0,0) .. (1,1) .. (2,sqrt(2)));
     \stopASY
   \stopplacefigure
\stoptext

Op 31/12/2023 om 00:33 schreef Aditya Mahajan:
On Sun, 31 Dec 2023, Shiv Shankar Dayal wrote:

It would be nice to either support Metapost 3D or Asymptote. Right now I
generate images separately and embed them in PDF using externalfigure command 
which works but I have to maintain all the graphics separately.
It is possible to obtain simple integration for asymptote using the filter 
module:

   https://github.com/adityam/filter

Using that you could define an asymptote environment so that:

\startbuffer[asymptote-preamble]
....
\stopbuffer

\starttext

\startasymptote
% Asymptote figure
\stopasymptote

\stoptext

saves the content of the asymptote-preamble and the figure in a separate file, 
runs asymptote to generate a PDF figure and includes the figure. The results 
are cached so the asymptote is re-run only if the content of the figure 
environment changes.

A drawback of this approach is that the labels are generated by asymptote. That 
means that the font, colors, and any macros needed for the figures need to be 
redefined at both context and asymptote end.

Aditya
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / 
https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl
webpage  : https://www.pragma-ade.nl / https://context.aanhet.net (mirror)
archive  : https://github.com/contextgarden/context
wiki     : https://wiki.contextgarden.net
___________________________________________________________________________________
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / 
https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl
webpage  : https://www.pragma-ade.nl / https://context.aanhet.net (mirror)
archive  : https://github.com/contextgarden/context
wiki     : https://wiki.contextgarden.net
___________________________________________________________________________________

Reply via email to