渐近线和 Exsheets

渐近线和 Exsheets

我怎样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(我认为)。

缺点:

  1. 如果你这样做,每次运行 latex(启用 shell-escape)时,Asymptote 图片都会被重新编译,即使它没有改变。
  2. 环境中可能会有一点额外的空间asypicture。(我实际上不确定这是如何工作的,尽管我确信这个网站上的某些人可以相当轻松地弄清楚。)

作为替代方案,您可以考虑将 Asymptote 代码放入文件中asy,使用 Asymptote 编译它,然后在tex文件中仅包含图像(但不包含 asymptote 代码)。至少在您的 MWE 中,您似乎没有使用任何真正需要在文件中指定 Asymptote 代码的功能tex

相关内容