Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maxima 将乘法的标准tex输出更改为最大值_Maxima - Fatal编程技术网

Maxima 将乘法的标准tex输出更改为最大值

Maxima 将乘法的标准tex输出更改为最大值,maxima,Maxima,我们试图改变maxima在转换为tex时转换乘法的方式 默认情况下,maxima给出一个空格:\, 我们将其更改为我们自己的latex宏,看起来像一个空格,但这样我们保留了sementical的含义,这使得将latex转换回maxima更容易 :lisp (setf (get 'mtimes 'texsym) '("\\invisibletimes ")); 然而,我们有一个问题,那就是当我们进行简化时。我们使用它来生成解释解决方案的步骤。例如: tex1(block([simp: false

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

默认情况下,maxima给出一个空格:
\,

我们将其更改为我们自己的latex宏,看起来像一个空格,但这样我们保留了sementical的含义,这使得将latex转换回maxima更容易

:lisp (setf (get 'mtimes 'texsym) '("\\invisibletimes "));
然而,我们有一个问题,那就是当我们进行简化时。我们使用它来生成解释解决方案的步骤。例如:

tex1(block([simp: false], 2*3));
当然,在乘法时,我们可以使用显式乘法(\cdot)

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


可能吗?

是的,如果有一个由TEX属性命名的函数,则调用该函数来处理表达式。由TEX命名的函数有3个参数,即一个表达式,其运算符与TEX属性所附加的运算符相同,stuff位于左侧,stuff位于右侧,TEX函数返回一个字符串列表,这些字符串是应输出的TEX位

您可以说
:lisp(trace-tex-mtimes)
来了解它是如何工作的。您可以通过说出
:lisp(symbol plist'MTIMES)
来查看附加到MTIMES或其他运算符的函数,或者对于另一个mfoo运算符,通常可以看到
:lisp(symbol plist'mfoo)

因此,如果您用其他函数替换TEX-MTIMES(通过
:lisp(setf(get'MTIMES'TEX)
)我的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))))