我正在编辑一本使用 Sage 来演示概念的现有微积分书。现有书中有 Sage 代码列表,显示用户重复命令后将看到什么输出。例如,其中一个块具有以下内容:
sage: a,b = var("a,b")
sage: log(sqrt(a))
log(a)/2
sage: log(a/b).simplify_log()
log(a) - log(b)
sage: sin(a+b).simplify_trig()
cos(a)*sin(b) + sin(a)*cos(b)
sage: cos(a+b).simplify_trig()
cos(a)*cos(b) - sin(a)*sin(b)
sage: (a+b)^5
(b + a)^5
sage: expand((a+b)^5)
b^5 + 5*a*b^4 + 10*a^2*b^3 + 10*a^3*b^2 + 5*a^4*b + a^5
(是的,上面引用的一些回应并不正确,这是我在书中纠正的事情之一。)
是否可以使用 SageTeX 来自动响应。我尝试执行以下操作:
\begin{sageblock}
a,b = var("a,b")
log(sqrt(a))
\sage{log(sqrt(a))}
log(a/b).simplify_log()
\sage{log(a/b).simplify_log()}
sin(a+b).simplify_trig()
\sage{sin(a+b).simplify_trig()}
cos(a+b).simplify_trig()
\sage{cos(a+b).simplify_trig()}
(a+b)^5
\sage{(a+b)^5}
expand((a+b)^5)
\sage{expand((a+b)^5)}
\end{sageblock}
但是当我在 SageTeX 生成的文件上运行 Sage 时,出现了一个错误:
$ sage master.sagetex.sage
File "master.sagetex.sage.py", line 11
* BackslashOperator() * sage{log(sqrt(a))}
^
我认为我的错误可能是\sage
命令不能出现在 中sageblock
。
无论如何,我想我已经表达了我的意思想可以做吗?这可能吗?如果可以,我该怎么做?
答案1
您在寻找 sagecommandline 吗?
% !TEX TS-program = sage
\documentclass{article}
\usepackage{sagetex}
\begin{document}
\begin{sagecommandline}
sage: a,b = var("a,b")
sage: sin(a+b).simplify_trig()
sage: (a+b)^2
sage: expand((a+b)^2)
\end{sagecommandline}
\end{document}
此代码将产生
sage: a,b = var("a,b") 1
sage: sin(a+b).simplify_trig() 2
cos(b)*sin(a) + cos(a)*sin(b) 3
sage: (a+b)^2 4
(a + b)^2 5
sage: expand((a+b)^2) 6
a^2 + 2*a*b + b^2 7