我怎样asymptote
在问题中使用语言exsheets
?
例如,下面的代码可以完美地编译。但如果asypicture
将环境移到exsheets
问题环境中,就会发生错误。
(如果使用包asy
中的环境,则使用相同的行为。)asymptote
\documentclass{article}
\usepackage{asypictureB}
\usepackage{exsheets}
\begin{document}
\begin{question}
How can I use asymptote inside a question?
\end{question}
\begin{asypicture}{}
import graph3;
import palette;
size3(400,400,200,IgnoreAspect);
currentprojection=orthographic(1,-3,50);
real f(pair r) {return r.x^3-3*r.x*r.y^2;}
real Arg(triple v) {return degrees(cos(v.z),warn=false);}
surface s=surface(f,(-4,-4),(4,4),20,Spline);
s.colors(palette(s.map(zpart),Rainbow()+opacity(0.75) ));
draw(s,render(compression=Low,merge=true),meshpen=black);
real xmin = -5;
real xmax = +5;
real ymin = -5;
real ymax = +5;
pen axisPen = red + 0.75;
draw(Label("$x$",1),(xmin,0,0)--(xmax,0,0),axisPen,Arrow3);
draw(Label("$y$",1),(0,ymin,0)--(0,ymax,0),axisPen,Arrow3);
pen p=fontsize(12pt);
pair P = (2.5,-2);
dot("$P$",(P.x,P.y,f(P)),N,p);
xaxis3("$x$",Bounds,InTicks);
yaxis3("$y$",Bounds,InTicks(beginlabel=false));
zaxis3("$f$",Bounds,InTicks);
\end{asypicture}
\end{document}
答案1
简短回答:你不能。事实上,你甚至不能verbatim
在 exsheetsquestion
环境中使用该环境。[这表明这个“环境”实际上是一个伪装的命令。]
长答案:如果你准备稍微颠覆一下这个包,你可以这样做:
\documentclass{article}
\usepackage{asypictureB}
\usepackage{exsheets}
\begin{document}
\begin{asypicture}{}
import graph3;
import palette;
size3(400,400,200,IgnoreAspect);
currentprojection=orthographic(1,-3,50);
real f(pair r) {return r.x^3-3*r.x*r.y^2;}
real Arg(triple v) {return degrees(cos(v.z),warn=false);}
surface s=surface(f,(-4,-4),(4,4),20,Spline);
s.colors(palette(s.map(zpart),Rainbow()+opacity(0.75) ));
draw(s,render(compression=Low,merge=true),meshpen=black);
real xmin = -5;
real xmax = +5;
real ymin = -5;
real ymax = +5;
pen axisPen = red + 0.75;
draw(Label("$x$",1),(xmin,0,0)--(xmax,0,0),axisPen,Arrow3);
draw(Label("$y$",1),(0,ymin,0)--(0,ymax,0),axisPen,Arrow3);
pen p=fontsize(12pt);
pair P = (2.5,-2);
dot("$P$",(P.x,P.y,f(P)),N,p);
xaxis3("$x$",Bounds,InTicks);
yaxis3("$y$",Bounds,InTicks(beginlabel=false));
zaxis3("$f$",Bounds,InTicks);
shipout("my_picture");
\end{asypicture}
\begin{question}
How can I use asymptote inside a question?
\includegraphics{my_picture}
\end{question}
\end{document}
通过包含shipout
非默认名称的命令,您可以让 Asymptote 生成一个环境asypicture
不期望的名称的图像。因此,asypicture
环境不会获得要包含的图形,但您可以在以后选择的时间包含实际图形。同样的技巧应该适用于包asy
中的环境asymptote
(我认为)。
缺点:
- 如果你这样做,每次运行 latex(启用 shell-escape)时,Asymptote 图片都会被重新编译,即使它没有改变。
- 环境中可能会有一点额外的空间
asypicture
。(我实际上不确定这是如何工作的,尽管我确信这个网站上的某些人可以相当轻松地弄清楚。)
作为替代方案,您可以考虑将 Asymptote 代码放入文件中asy
,使用 Asymptote 编译它,然后在tex
文件中仅包含图像(但不包含 asymptote 代码)。至少在您的 MWE 中,您似乎没有使用任何真正需要在文件中指定 Asymptote 代码的功能tex
。