Вывод maxima tex, чтобы показать скобки для sin и cos

Я использую вывод maxima и хотел бы изменить способ вывода sin(x). В настоящее время это делает:

tex(sin(x));
$$\sin x$$

Но я хотел бы иметь скобки вокруг x, но не всегда; например, если я использую это:

sin(x/2) already has \left( and \right)
tex(sin(x/2));
\begin{equation} \sin \left({{x}\over{2}}\right) \end{equation}

это возможно, может быть с функцией texput?

2 ответа

Решение

Хорошо, если вы не против того, чтобы добавить немного кода на Лиспе:

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

Это убирает предопределенную функцию-обработчик (которая обрабатывает sin и cos как префиксные операторы). Тогда вы получите:

(%i1) tex (sin(x) + cos(y));
$$\cos \left(y\right)+\sin \left(x\right)$$

Если ваш контекст не позволяет использовать : lispальтернативой может быть определение такой функции, как:

      psin(x):=sin(x);
psintex:lambda([e],printf(false,"\\sin\\left(~a\\right)", tex1(e)));
texput('psin, psintex);

Я не уверен, что этот вид псевдонимов проблематичен по программным причинам; однако, с точки зрения гибкости вывода текста, я нахожу его очень полезным, так как можно получить доступ к предпочтительной форме, просто переключаясь между sin(x)а также psin(x).

Другие вопросы по тегам