问题描述
This question 询问设置 tex1
的输出为数值分数(即 x
where ratnump(x) = true
);但是,这似乎并未涵盖作为分数打印的所有对象,例如1/x
或 diff(ln(x),x))
。
在 this answer 之后,我尝试使用 :lisp $x
来查询 lisp 表单,我得到 ((MEXPT SIMP) $X -1)
的 1/x
和 ((%DERIVATIVE SIMP) (($LN SIMP) $X) $X 1)
的 diff(ln(x),x)
;但是,我不知道如何将此信息与 texput
结合使用来指定所需的格式。
虽然我认为它不一定与问题相关,但我想调用不同的 LaTeX 函数,而不是 \frac
(例如 \tfrac
)。
解决方法
说来话长,但事实证明要显示的运算符是 MQUOTIENT。试试这个:
texput (?mquotient,lambda([e],printf (false,"\\tfrac{~a}{~a}",tex1(num(e)),tex1(denom(e)))));
然后我得到:
(%i12) tex1(1/x);
(%o12) \tfrac{1}{x}
(%i13) tex1(y/x);
(%o13) \tfrac{y}{x}
(%i14) tex1((1+a/b)/(1-c/d));
(%o14) \tfrac{\tfrac{a}{b}+1}{1-\tfrac{c}{d}}
附注。 Maxima 无法识别 ln
(除非您创建了一个名为 ln
的函数)。以 e 为底的对数是 log
。也无法识别 log10
(同样,除非您创建了这样的函数)。