gpt4 book ai didi

maxima - 更改最大值乘法的标准 tex 输出

转载 作者:行者123 更新时间:2023-12-04 15:52:12 25 4
gpt4 key购买 nike

我们尝试改变 maxima 在转换为 tex 时转换乘法的方式。

默认最大值给出一个空格:\,

我们将其更改为我们自己的 latex 宏,看起来像一个空格,但通过这种方式我们保留了语义,这使得将 latex 转换回最大值变得更容易。

:lisp (setf (get 'mtimes 'texsym) '("\\invisibletimes "));

但是,我们有一个问题,那就是当我们进行简化时。我们用它来生成解决方案解释中的步骤。例如:

tex1(block([simp: false], 2*3));

当然,当数字相乘时,我们可能需要显式乘法 (\cdot)。

所以我们希望如果乘法的两个参数都是数字,那么在转换为 tex 时我们会有一个 \cdot

这可能吗?

最佳答案

是的,如果有一个由 TEX 属性命名的函数,那么调用该函数来处理一个表达式。由 TEX 命名的函数有 3 个参数,即具有附加 TEX 属性的相同运算符的表达式,左边的东西和右边的东西,TEX 函数返回一个字符串列表,这些字符串是 TeX 的位应该输出。

你可以说 :lisp (trace tex-mtimes) 看看它是如何工作的。您可以通过说 :lisp (symbol-plist 'mtimes) 或一般的 :lisp (symbol-plist 'mfoo) 来查看附加到 MTIMES 或其他运算符的函数MFOO算子。

因此,如果您将 TEX-MTIMES (by :lisp (setf (get 'mtimes 'tex) 'my-tex-mtimes)) 替换为其他函数,那么您可以将输出控制为更大程度上。以下是适合您的目的的功能概述:

(defun my-tex-mtimes (e l r)
(if $simp
(tex-nary e l r) ;; punt to default handler
(tex-mtimes-special-case e l r)))

您可以根据需要将 TEX-MTIMES-SPECIAL-CASE 复杂化。我假设您可以为此进行 Lisp 编程。最简单的尝试,也许是进一步努力的出发点,就是暂时用 \cdot 替换 TEXSYM。像这样的东西:

(defun tex-mtimes-special-case (e l r)
(let ((prev-texsym (get 'mtimes 'texsym)))
(prog2 (setf (get 'mtimes 'texsym) (list "\\cdot "))
(tex-nary e l r)
(setf (get 'mtimes 'texsym) prev-texsym))))

关于maxima - 更改最大值乘法的标准 tex 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53415368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com