概览
以下三点解释了LaTeX为什么能与Sage契合得很好。
- Sage中每个”对象”都必须有一个LaTeX表达式。你可以在notebook或Sage命令行中输入
latex(foo)来查看它(foo为某个对象)。输出的字符串可以被TeX的数学功能准确的渲染为foo的表达式(比如被一对$符号包含)。在下面给出了一些例子。 这样Sage就可以很方便地在LaTeX文档中插入内容,只需要:建立对象或进行运算,使用latex()来输出表达式并将它剪贴或粘贴到文档中。 - notebook界面使用了MathJax在浏览器中渲染数学表达式。MathJax是一个开源的JavaScript引擎,用于在现代浏览器中渲染数学表达式。它实现了TeX的大部分渲染功能,包括TeX的”文档片段”,但并不支持复杂的表格、段落以及文档管理。因而在notebook里MathJaX可以将
latex()得到的表达式(上一点中提到的)自动渲染成HTML形式。 MathJaX使用了可缩放的字体,因此比其他将表达式转换为图片的工具效果更好。 - 如果LaTeX安装在系统文件夹中,就可以在Sage命令行,以及notebook里引入TeX的功能。除了TeX外,Sage包含了几乎所有用于生成、使用的工具。你只需要安装了TeX并配置相关功能关联,就能使用Sage的完整功能了。
下面给出一些latex()的基础使用例子。
sage: var('z')zsage: latex(z^12)z^{12}sage: latex(integrate(z^4, z))\frac{1}{5} \, z^{5}sage: latex('a string')\text{\texttt{a{ }string}}sage: latex(QQ)\Bold{Q}sage: latex(matrix(QQ, 2, 3,[[2,4,6],[-1,-1,-1]]))\left(\begin{array}{rrr}2 & 4 & 6 \\-1 & -1 & -1\end{array}\right)
在notebook中MathJaX将自动完成转换,但我们可以调用MathJaX类来手动完成。eval方法将Sage对象转换为LaTeX格式并包裹到HTML标签中,CSS中的class”math”将把MathJaX应用到这上面。
sage: from sage.misc.html import MathJaxsage: mj = MathJax()sage: var('z')zsage: mj(z^12)<html><script type="math/tex; mode=display">\newcommand{\Bold}[1]{\mathbf{#1}}z^{12}</script></html>sage: mj(QQ)<html><script type="math/tex; mode=display">\newcommand{\Bold}[1]{\mathbf{#1}}\Bold{Q}</script></html>sage: mj(ZZ['x'])<html><script type="math/tex; mode=display">\newcommand{\Bold}[1]{\mathbf{#1}}\Bold{Z}[x]</script></html>sage: mj(integrate(z^4, z))<html><script type="math/tex; mode=display">\newcommand{\Bold}[1]{\mathbf{#1}}\frac{1}{5} \, z^{5}</script></html>
