(wx)Maxima:表达式幂的文本输入
Posted
技术标签:
【中文标题】(wx)Maxima:表达式幂的文本输入【英文标题】:(wx)Maxima: texput for powers of expressions 【发布时间】:2021-02-05 00:49:53 【问题描述】:我使用texput
将log(x)
的tex1
输出设置为\ln(x)
与
texput('log, lambda([e],[a]:args(e), printf(false, "\\ln(~a)", tex1(a))));
我想知道是否可以将输出设置为(log(x))^n
之类的东西?我特别想使用\ln^n(x)
约定。
【问题讨论】:
试试这个::lisp (push '%log *tex-mexpt-trig-like-fns*)
谢谢你,罗伯特。这完成了一半的工作 - 正确的电源样式,但对于原始 tex 输出:log(x)^2
返回 \log^2 \left(x \right)
而不是 \ln^2 \left( x \right)
。我尝试将\log
重新定义为\ln
(即使用prefix
并且不应用任何括号),但这也不起作用。在最坏的情况下,我将只添加一个本地 KaTeX 宏来在本地将 \log
重新定义为 \ln
。
好的,谢谢您的信息。它不像描述的那样工作是一个错误,我会尝试解决这个问题。作为一种变通方法,除了您已经拥有的内容之外,请尝试::lisp (setf (get '%log 'texsym) '("\\ln "))
(这样做的一个令人高兴的副作用是您可以只说texput(log, "\\ln ")
,而不是使用更长的咒语lambda([e], ...)
。)
为此提交错误报告会有所帮助吗?很高兴这样做,如果它可以节省您的任何时间。
关于错误报告,是的,通常这很有帮助。但是在这种情况下,我已经在处理它了,所以我将只覆盖它而不提供错误报告。
【参考方案1】:
log
的 TeX 输出的奇怪之处是我正在处理的一个错误。但我认为,这是一个可以得到你想要的行为的解决方法。
在这里,我同时调用了texput(log, "\\ln ")
和texput(log, "\\ln ", prefix)
,以在不同的上下文中设置log
的TeX 输出,同时:lisp (push log *tex-mexpt-trig-like-fns*)
以与触发函数类似的方式处理log
。
(%i1) stringdisp: true $
(%i2) map (tex1, [log(x), log(x+1), log(x)^n]);
(%o2) ["\log x", "\log \left(x+1\right)", "\left(\log x\right)^n"]
(%i3) texput (log, "\\ln ");
(%o3) "\ln "
(%i4) texput (log, "\\ln ", prefix);
(%o4) "\ln "
(%i5) map (tex1, [log(x), log(x+1), log(x)^n]);
(%o5) ["\ln x", "\ln \left(x+1\right)", "\ln x^n"]
嗯,这还不够。哦,对了,我忘了三角函数。
(%i6) :lisp (push '%log *tex-mexpt-trig-like-fns*)
(%LOG %SIN %COS %TAN %SINH %COSH %TANH %ASIN %ACOS %ATAN %ASINH %ACOSH %ATANH)
(%i6) map (tex1, [log(x), log(x+1), log(x)^n]);
(%o6) ["\ln x", "\ln \left(x+1\right)", "\ln ^nx"]
看起来对吗?
【讨论】:
我刚刚注意到sec
、csc
或cot
都没有出现在类似三角函数的指数列表中。我只是为它们运行了相同的命令,但想知道这是否会构成“错误”或者是否故意省略它们?
是的,这是一个错误;我猜只是疏忽。
为了记录,将 sec、csc 和 cot 放在类似 trig 运算符的列表中是在提交 7bcc17 中,它存在于当前版本(Maxima 5.45)中。以上是关于(wx)Maxima:表达式幂的文本输入的主要内容,如果未能解决你的问题,请参考以下文章