Сгенерировать LaTeX из ввода Maxima

Я хочу использовать Maxima для оценки документов. Вывод Maxima легко преобразовать в TeX:

(%i1) tex(5*x^2+sin(x)+c)$
$$\sin x+5\,x^2+c$$

Однако это не работает для ранее введенных строк:

(%i2) 5*x^2+sin(x)+c;
                                           2
(%o2)                          sin(x) + 5 x  + c
(%i3) tex(%i2);

\begin{verbatim}
(%i2)sin(x)+5*x^2+c;
\end{verbatim}

(%o3)                                (%i2)

После долгих исследований (в том числе здесь, что близко, но не сигара) Я пришел пустой. Любые идеи?


person Ryan Kennedy    schedule 11.03.2013    source источник
comment
Между прочим, использование $$…$$ для разграничения математики в LaTeX не рекомендуется. Существуют некоторые несоответствия интервалов с другими математическими средами, и обычно рекомендуется использовать либо \[…\], либо одну из расширенных сред AMSmath, таких как align и т. д. (аналогично для $…$ и \(…\), но по другим причинам).   -  person Konrad Rudolph    schedule 11.03.2013
comment
Спасибо. Я планирую убрать знаки доллара и немного постобработать.   -  person Ryan Kennedy    schedule 11.03.2013


Ответы (1)


Попробуй это.

tex (''%i2);

or

apply (tex, [%i2]);
person Robert Dodier    schedule 11.03.2013
comment
Было бы неплохо, если бы были добавлены некоторые пояснения. Для нас, кто не мог сам придумать эти решения (я один из них), это было бы очень поучительно. - person Albert van der Horst; 26.12.2013
comment
@AlbertvanderHorst Ну, проблема в том, что tex проверяет свой аргумент, чтобы увидеть, является ли он меткой ввода или вывода, и если да, то обрабатывает их особым образом. Чтобы победить проверку, вы должны убедиться, что tex видит значение %i2 или любой другой аргумент. Два способа добиться этого — использовать кавычки (т. е. две одинарные кавычки), чтобы интерполировать значение во входные данные перед оценкой, или apply, чтобы применить функцию к значению метки. apply является более общим, поскольку кавычка работает только с консольным вводом, а кавычка более удобна. - person Robert Dodier; 27.12.2013