首页 > 解决方案 > wxMaxima:如何使用 texput 告诉 tex1 如何处理字符串?

问题描述

tex1()似乎返回所有字符串如下:

tex1(hello);
    {\it hello}
tex1("hello");
    \mbox{ hello }

必须使用什么变量来更改此处理方式texput?例如,如果我只想按字面意思打印字符串?我正在使用其他 Maxima 命令(例如printfconcat来生成字符串,然后将其传递给tex1,并且有时默认处理会导致问题。

我试过texput(""", ...)texput("''", ...);第一个未被接受,第二个被接受,但没有改变输出。对于未引用的字符串,我真的一无所知。

标签: maximawxmaxima

解决方案


让我们小心区分符号和字符串。当你输入时tex1(hello)thenhello是一个符号,当你输入时tex1("hello")then"hello"是一个字符串。符号本质上是查找表中项目的名称,它可以为每个项目存储附加信息(符号属性)。另一方面,字符串只是(从 Maxima 的角度来看)只是一个字符序列。

无论如何,不​​幸的是,无法通过 更改所有符号或所有字符串的输出texput。但是使用一行 Lisp 函数,就可以完成它。试试这个:对于符号,

:lisp (defun tex-stripdollar (sym) (maybe-invert-string-case (symbol-name (stripdollar sym))))

对于字符串,

:lisp (defun tex-string (str) str)

这些将改变一些现有的输出,所以你会想尝试一下,看看它是否适合你。


推荐阅读