diff options
Diffstat (limited to 'tex/context/modules/mkiv/m-asymptote.mkiv')
-rw-r--r-- | tex/context/modules/mkiv/m-asymptote.mkiv | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/tex/context/modules/mkiv/m-asymptote.mkiv b/tex/context/modules/mkiv/m-asymptote.mkiv new file mode 100644 index 000000000..c236ceee5 --- /dev/null +++ b/tex/context/modules/mkiv/m-asymptote.mkiv @@ -0,0 +1,143 @@ +%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 |