概览

以下三点解释了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()的基础使用例子。

  1. sage: var('z')
  2. z
  3. sage: latex(z^12)
  4. z^{12}
  5. sage: latex(integrate(z^4, z))
  6. \frac{1}{5} \, z^{5}
  7. sage: latex('a string')
  8. \text{\texttt{a{ }string}}
  9. sage: latex(QQ)
  10. \Bold{Q}
  11. sage: latex(matrix(QQ, 2, 3,[[2,4,6],[-1,-1,-1]]))
  12. \left(\begin{array}{rrr}
  13. 2 & 4 & 6 \\
  14. -1 & -1 & -1
  15. \end{array}\right)

在notebook中MathJaX将自动完成转换,但我们可以调用MathJaX类来手动完成。eval方法将Sage对象转换为LaTeX格式并包裹到HTML标签中,CSS中的class”math”将把MathJaX应用到这上面。

  1. sage: from sage.misc.html import MathJax
  2. sage: mj = MathJax()
  3. sage: var('z')
  4. z
  5. sage: mj(z^12)
  6. <html><script type="math/tex; mode=display">\newcommand{\Bold}[1]{\mathbf{#1}}z^{12}</script></html>
  7. sage: mj(QQ)
  8. <html><script type="math/tex; mode=display">\newcommand{\Bold}[1]{\mathbf{#1}}\Bold{Q}</script></html>
  9. sage: mj(ZZ['x'])
  10. <html><script type="math/tex; mode=display">\newcommand{\Bold}[1]{\mathbf{#1}}\Bold{Z}[x]</script></html>
  11. sage: mj(integrate(z^4, z))
  12. <html><script type="math/tex; mode=display">\newcommand{\Bold}[1]{\mathbf{#1}}\frac{1}{5} \, z^{5}</script></html>