概览
以下三点解释了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')
z
sage: 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 MathJax
sage: mj = MathJax()
sage: var('z')
z
sage: 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>