天天看点

latex中利用sage实现数学运算与排版latex中利用sage实现数学运算与排版

latex中利用sage实现数学运算与排版

关键词:latex,sagemath,数学运算,排版

sage对象转换为latex表达式

sage 是基于python的数学工具,可以非常方便的将其对象转换成latex公式。

复制转换后的公式代码,可以方便的在latex文档中使用。比如:

sage: A = matrix(ZZ, 2, 2, range(4))
sage: latex(A)
\left(\begin{array}{rr}
0 & 1 \\
2 & 3
\end{array}\right)
           

其中,sage中的矩阵对象A,利用latex()命令转换成了

\left(\begin{array}{rr}
0 & 1 \\
2 & 3
\end{array}\right)
           

直接将其放入latex文档,就可以得到一个矩阵表示式。

使用sagetex运算和排版

然而sage还提供了一种更为方便的使用方法,即利用sagetex宏包来直接在latex文档中运算和排版。

其基本用法是使用sagetex宏包,然后在数学环境中使用

\sage

命令。

sagemath给出了一个example,内容非常详细,这里为了方便介绍仅给出一个简单示例:

\documentclass{article}
\usepackage{ctex}
\usepackage{sagetex}

\begin{document}

将\verb|\sage|命令放入数学环境中可以在其中进行sage函数运算,比如:
\verb|$\sage{number_of_partitions(1269)}$|计算了 $1269$ 的整数划分组合数。结果为:

$\sage{number_of_partitions(1269)}$ 

又比如,求出$f$的二阶导数,其中$f$定义,既利用sageblock环境直接显示sage运算代码,也在其中定义:

\begin{sageblock}
f(x) = exp(x) * sin(2*x)
\end{sageblock}

二阶导数直接在公式环境中给出:

\begin{equation}
\frac{\mathrm{d}^{2}}{\mathrm{d}x^{2}} \sage{f(x)} =
\sage{diff(f, x, 2)(x)}.
\end{equation}

另外也可以利用\verb|\sageplot|命令来直接利用sage代码画图,其可选参数设置类似与includegraphics命令的设置。比如对$f$ 函数从$-1$画到$1$:

\sageplot[width=6cm,angle=15]{plot(f, -1, 1)}

其中可选参数设置了图片的宽度和旋转角度。

\end{document} 
           

其中

公式结果为:

latex中利用sage实现数学运算与排版latex中利用sage实现数学运算与排版

绘图结果为:

latex中利用sage实现数学运算与排版latex中利用sage实现数学运算与排版

使用及编译方法总结

从上一小结可知用法包括:

  1. 使用

    \usepackage{sagetex}

    引入宏包
  2. 使用

    \sage

    命令在数学环境中直接使用sage运算代码
  3. 使用

    sageblock

    环境定义sage变量和函数,并原样显示
  4. 使用

    \sageplot

    命令来插入sage代码绘制画图

编译方法主要式3步:

  1. 是latex编译1遍
  2. 是sage编译*.sage文件

    (方法式利用sagemathshell,进入tex文件所在文件夹后,利用sage命令编译jobname.sagetex.sage文件)

  3. 是再次latex编译

小结

以上初步总结了latex和sagemath的混合使用,即在latex文档中直接利用sagemath的代码进行运算,并自动排版。

参考文献

  1. sage 的帮助文档:sagetutorial.PDF