我正在尝试使用 sagetex 包,但在运行代码时发现了这种问题, 有人可以帮忙吗?
以下是代码:
\documentclass{article}
\usepackage{sagetex}
\begin{document}
Using Sage\TeX, one can use Sage to compute things and put them into
your \LaTeX{} document. For example, there are
$\sage{number_of_partitions(1269)}$ integer partitions of $1269$.
You don't need to compute the number yourself, or even cut and paste
it from somewhere.
Here's some Sage code:
\begin{sageblock}
f(x) = exp(x) * sin(2*x)
\end{sageblock}
The second derivative of $f$ is
\[
\frac{\mathrm{d}^{2}}{\mathrm{d}x^{2}} \sage{f(x)} =
\sage{diff(f, x, 2)(x)}.
\]
Here's a plot of $f$ from $-1$ to $1$:
\sageplot{plot(f, -1, 1)}
\sageplot[scale=.5]{plot3d(sin(pi*(x^2+y^2))/2,(x,-1,1),(y,-1,1))}
we know that 2010 factors to $\sage{factor(2010)}$
\begin{sagesilent}
m=identity_matrix(QQ,3)
m[0]=m[0]+m[1]
m[1]=m[1]-m[2]
m[2]=m[2]-2*m[1]
m[1]=m[1]+3*m[0]
m[0]=2*m[0]
\end{sagesilent}
Compute the rref of $\sage{m}$
\begin{sageblock}
g(x)=taylor(tan(x),x,0,10)
\end{sageblock}
$$\tan(x)=\sage{g(x)}$$
\end{document}
答案1
要使用该sagetex
软件包,您需要 LaTeX、SAGE、。sagetex
之后这 3 个部分需要相互通信。最简单的解决方案是打开一个免费的可钙帐户,创建一个 LaTeX 文档,将上面的代码复制/粘贴到其中,保存文档,然后按构建。几分钟后您就完成了!非常简单,您可以在世界任何地方(只要有互联网连接)完成工作。
如果您不想使用 Cocalc,那么可能会出现很多问题。假设您使用的是sagetex
包含的 LaTeX 发行版,最有可能的答案是您没有下载 SAGE。我认识的很多人都是这种情况,他们认为既然已经下载了,sagetex
就可以使用它了。问题是 SAGE 需要大约 5 GB 的空间,因此它不是您的 LaTeX 发行版的一部分。您需要转到萨吉迈网站并点击“下载”选项卡,您将在其中选择 Mac/Windows/Linux 版本。请注意,许多 Linux 发行版的存储库中都有 SAGE,在这种情况下,您应该从那里下载。一旦您sagetex
的计算机上有了 LaTeX、SAGE 和,处理文档就是页面上提到的 3 个步骤你的代码来自哪里:首先处理 .tex 文件,然后处理 .sage 文件,然后处理 .tex 文件。Samuel Lelièvre 的回答对此进行了解释,请注意,处理 .sage 文件需要命令行,如我的带图回答中所示这里。这 3 步过程可以通过一些 LaTeX IDE 自动完成。例如,这里基勒进行了讨论,在这里,特克斯工作室适用于 Windows。只需按一个按钮即可执行 3 个步骤,从而节省大量时间。
如果您仍然无法使 3 步流程正常运行,那么这可能是因为 LaTeX 和 SAGE 无法正常通信。之前提到的链接并且可能很难弄清楚。
值得一提的是,你sagetex
向 SAGE 透露的信息以及讨论这里可能会导致以后出现问题,其中写道:“但是,这有几个小问题:首先,您的计算机中会散落着许多不必要的 sagetex.sty 副本。第二个更严重的问题是,如果您升级 Sage 并获得新版本的 SageTeX,SageTeX 的 Python 代码和 LaTeX 代码可能不再匹配,从而导致错误。”使用 Cocalc 意味着其他人会确保所有版本的 LaTeX 都能sagetex
正常工作。
答案2
跑步
pdflatex myfile.tex
生成一个辅助文件,其中包含 Sage 需要执行的所有计算:
myfile.sagetex.sage
在此文件上运行 Sage:
sage myfile.sagetex.sage
计算所有这些计算的结果,以便下次运行
pdflatex myfile.tex
计算结果包含在内并出现在生成的 pdf 中。
答案3
除了这里的其他答案(关于如何使用 sagetex 的基础知识)之外,让我补充一点:文件中有一个错误。正如我在回答中所说的那样https://stackoverflow.com/questions/57369317/why-does-the-result-of-my-sage-command-becomes-question-mark:
当我尝试编译它时,我得到:
**** Error in Sage code on line 23 of file.tex! Traceback follows.
Traceback (most recent call last):
File "file.sagetex.sage.py", line 39, in <module>
_st_.plot(_sage_const_1 , format='notprovided', _p_=plot3d(sin(pi*(x**_sage_const_2 +y**_sage_const_2 ))/_sage_const_2 ,(x,-_sage_const_1 ,_sage_const_1 ),(y,-_sage_const_1 ,_sage_const_1 )))
NameError: name 'y' is not defined
问题出在这一行:
\sageplot[scale=.5]{plot3d(sin(pi*(x^2+y^2))/2,(x,-1,1),(y,-1,1))}
特别是,您没有定义 y。(在 SageMath 中,x 会自动定义为变量,但 y 不会。)如果您在绘图之前添加它,它应该可以工作:
\begin{sagesilent}
var('y')
\end{sagesilent}
答案4
下面肯定是一个黑客工作,但我弄清楚了我的 sage shell 可以访问哪个目录,将其称为目录 A。我从运行 latex 的目录(目录 B)复制并粘贴文件“xxx.sagetex.sage”到目录 A。然后从 sage shell 中,我运行命令 load('intro_to_analysis.sagetex.sage'),在目录 A 中创建了许多文件。我将这些文件复制并粘贴到目录 B 中,然后再次编译 latex,图表就出现在我的文档中。