%D \module %D [ file=m-asymptote, %D version=2017.03.24, %D title=\CONTEXT\ Extra Modules, %D subtitle=Asymptote, %D author=Hans Hagen, %D date=\currentdate, %D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. % \enabletrackers[sandbox,buffers.run] %D Currently asymptote assumes \MKII\ but better is to only support \MKIV. A problem %D is that asymptote has this hard coded while for \CONTEXT\ it's better to stick to %D something simple: %D %D \starttyping %D \starttext %D %D \startasymptotepage %D some label %D \stopasymptotepage %D %D \startasymptotepage %D some label %D \stopasymptotepage %D %D \stoptext %D \stoptyping %D %D Which is then run with: %D %D \starttyping %D context --nonstopmode --purge somefile.tex %D \stoptyping %D %D For the moment add "settings.prc=true;" to a graphic that is meant to produce that %D format. See end of file for some examples. \registerctxluafile{m-asymptote}{} \unprotect \unexpanded\def\asymptote {\dodoubleempty\module_asymptote} \unexpanded\def\module_asymptote[#1][#2]% {\iffirstargument \begingroup \getdummyparameters[#2]% \edef\lasttypesetbuffer{\ctxlua{moduledata.asympote.process("asymptote:#1","\dummyparameter\c!type")}}% \externalfigure [\lasttypesetbuffer]% [\c!controls=\lasttypesetbuffer,#2]% \endgroup \fi} \unexpanded\def\startasymptote[#1]% {\begingroup \dostartbuffer[asymptote:#1][startasymptote][stopasymptote]} \unexpanded\def\stopasymptote {\endgroup} \definefittingpage [asymptotepage] [\c!align=\v!normal] \protect \continueifinputfile{m-asymptote.mkiv} \starttext \startasymptote[demo-1] settings.prc=true; import graph3; import palette; size(6cm,6cm); size3(5cm,0); currentprojection=orthographic(3,-6,12); currentlight=light(8,10,2); real g(pair z) {return 1-z.x^2-z.y^2;} real f(pair z) {return -2z.x+2;} real x(real t) {return t;} real y(real t) {return 0;} real z(real t) {return 1-t^2;} real a(real t) {return 1;} real b(real t) {return t;} real c(real t) {return -t^2;} path3 p=graph(x,y,z,-2,2,operator ..); path3 o=graph(a,b,c,-2,2,operator ..); surface r=surface(f,(0,-1),(2,1),nx=3,Spline); surface s=surface(g,(-2,-2),(2,2),nx=5,Spline); path3 q=(-2,-2,-7)--(2,-2,-7)--(2,2,-7)--(-2,2,-7)--cycle; draw(q); draw(p,blue+thick(),Arrow3); draw(o,blue+thick(),Arrow3); draw(s,lightgray+opacity(0.8),nolight,meshpen=black+thick()); draw(r,lightgray+opacity(0.8),nolight,meshpen=black+thick()); draw((1,0,0)--(2,0,-2),black,Arrow3); draw((1,0,0)--(1,1,0),black,Arrow3); \stopasymptote \startasymptote[demo-2] size(6cm,6cm); fill((1cm,2cm)--(3cm,3cm)--(4cm,0cm)--cycle); \stopasymptote % see end of grph-inc.mkiv for some more options: \startluaparameterset[demo-1] toolbar = true, tree = false, view = 'ortho' \stopluaparameterset \asymptote[demo-1][type=prc,width=5cm,height=5cm,frame=on,display=yes,controls=yes,preview=yes] \asymptote[demo-2][type=pdf,width=8cm,frame=on] % \typebuffer[asymptote:demo-1] % \startasymptotepage % test % \stopasymptotepage \stoptext