问题描述
tex1()
似乎返回所有字符串如下:
tex1(hello);
{\it hello}
tex1("hello");
\mBox{ hello }
必须使用什么变量才能通过 texput
更改这种处理方式?例如如果我只想按字面意思打印字符串?我正在使用其他 Maxima 命令(例如 printf
和 concat
来生成然后传递给 tex1
的字符串,并且有时默认处理会导致问题。
我尝试了 texput(""",...)
和 texput("''",...)
;第一个没有被接受,第二个被接受,但没有改变输出。我真的不知道非引号字符串。
解决方法
让我们小心区分符号和字符串。当您输入 tex1(hello)
时,hello
是一个符号,而当您输入 tex1("hello")
时,"hello"
是一个字符串。符号本质上是查找表中项目的名称,它可以为每个项目存储附加信息(符号属性)。另一方面,字符串只是(从 Maxima 的角度来看)只是一个字符序列。
无论如何,遗憾的是无法通过 texput
更改所有符号或所有字符串的输出。但是用一个单行的 Lisp 函数,就可以完成它。试试这个:对于符号,
:lisp (defun tex-stripdollar (sym) (maybe-invert-string-case (symbol-name (stripdollar sym))))
对于字符串,
:lisp (defun tex-string (str) str)
这些将改变一些现有的输出,所以你需要尝试一下,看看它是否适合你。