修改 Sage 中代码的 LaTeX 转录

Modify LaTeX transcription of code in Sage

我想修改 Sage 中的函数 latex():有没有办法选择如何在 TeX 中翻译符号列表?在我的特殊情况下,我希望使用 'matrix' 而不是 array 对矩阵进行编码,更好的是,在乳胶中使用个性化宏,允许在 displaystyle 中拥有矩阵的条目。

对此有两个答案。一种类型的定制很容易并记录在案,例如如果你这样做

latex.matrix_delimiters?

文档为您提供

sage: a = matrix(1, 1, [17])
sage: latex.matrix_delimiters("[", "]")
sage: latex(a)
\left[\begin{array}{r}
17
\end{array}\right]

有一个类似的latex.matrix_column_alignment()地方可以设置这个。

然而,尽管 latex.add_macro() 允许添加各种类型的额外宏,但它对矩阵没有帮助,因为它们已经具有 _latex_() 方法。参见 src/sage/matrix/matrix0.pyx。但是您可以(原则上)将最后一行更改为您想要的任何内容。

return "\left" + matrix_delimiters[0] + "\begin{array}{%s}\n"%format + s + "\n\end{array}\right" + matrix_delimiters[1]

或者甚至可以根据您的喜好以自定义方式修改其余代码。或者,您也可以想出一种方法让每个人都可以自定义并在 Trac 上提交它 - 也许 latex.matrix_type() 可以在 \matrix\pmatrix、[= 之间进行选择20=],还有朋友。

不过,我不完全理解你在上一条评论中提出的建议,以提出一个概念化的好方法。