Максимальный набор текста sin (x) ^ 2 - PullRequest
2 голосов
/ 05 августа 2020

Как я могу сказать Maxima набирать sin(x)^2 как $$\sin(x)^2$$ (или $$\sin\left(x\right)^2$$), а не $$\sin^2 x$$?

(принятый ответ на этот вопрос предполагает использование

:lisp (setf (get '%sin 'tex) nil) 

, чтобы удалить специальный обработчик TeX для функции sin. Сделав это, мы получаем $$\sin^2\left(x\right)$$, но положение верхнего индекса не изменилось.)

Ответы [ 2 ]

3 голосов
/ 05 августа 2020

Некоторое копание в src/mactex.lisp дает следующее, которое, похоже, работает. Сначала удалите свойства TEX и TEX-RBP (сила привязки справа - имеет отношение к приоритету). Затем удалите функцию, которая использует триггоподобные функции в особых случаях для TEX-MEXPT (обрабатывает экспоненты).

(%i1) :lisp (mapcar #'(lambda (x) (setf (get x 'tex) nil) (setf (get x 'tex-rbp) nil)) *tex-mexpt-trig-like-fns*)

(%i1) :lisp (defun maybe-tex-mexpt-trig-like (&rest a) (declare (ignore a)))

Давайте посмотрим, что Maxima считает списком тригоподобных функций.

Хорошо, давайте go рассмотрим их и посмотрим, какой вывод TeX мы получим.

(%i1) for f in [sin, cos, tan, sinh, cosh, tanh, asin, acos, atan, asinh, acosh, atanh]
        do tex(f(x)^2);
$$\sin \left(x\right)^2$$
$$\cos \left(x\right)^2$$
$$\tan \left(x\right)^2$$
$$\sinh \left(x\right)^2$$
$$\cosh \left(x\right)^2$$
$$\tanh \left(x\right)^2$$
$$\arcsin \left(x\right)^2$$
$$\arccos \left(x\right)^2$$
$$\arctan \left(x\right)^2$$
$${\rm asinh}\; \left(x\right)^2$$
$${\rm acosh}\; \left(x\right)^2$$
$${\rm atanh}\; \left(x\right)^2$$
(%o1)                                done

Я предполагаю, что результат \; для asinh et c. немного бородавка. Мы можем исправить и это, если вам это нужно.

Выходной код tex представляет собой совокупность эвристик, которые работают большую часть времени. Как видите, не всегда очевидно, как получить другой результат.

0 голосов
/ 07 августа 2020

Вот небольшое дополнение к ответу Роберта Додье. Я использую Maxima в сочетании с системой STACK для компьютерной оценки ( домашняя страница , Github ). Поскольку STACK изменяет поведение системы TeX от Maxima, в этом контексте требуется другой подход. Одна из возможностей - удалить это предложение из файла stacktex.lisp (к которому прикреплен комментарий, предполагающий, что вы можете его удалить). После этого по-прежнему полезно удалить правую аннотацию силы привязки, как в ответе Роберта Додье, иначе вы получите (\sin(x))^2 вместо \sin(x)^2.

...