2013-03-11 22 views
15

Chcę używać Maxima do oceny dokumentów. Jest to łatwe do konwersji wyjście Maxima w TeX:Generowanie LaTeXa z wejścia Maxima

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

Jednak to nie działa na poprzednio linii wejściowych:

(%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) 

Po wielu badań (w tym here który jest blisko, ale nie cygaro) I” ve pojawiły się puste. Wszelkie spostrzeżenia?

+1

Nawiasem mówiąc, stosując '$$ ... $$' do oddzielania matematyki w LaTeX nie jest wskazane. Istnieją pewne rozbieżności w rozstawieniu z innymi środowiskami matematycznymi i ogólnie zaleca się użycie '\ [... \]' lub jednego z rozszerzonych środowisk AMSmath, takich jak 'align' etc (podobnie dla' $ ... $ 'kontra' \ (... \) "ale z różnych powodów). –

+0

Dzięki. Planuję rozebrać znaki dolara i zrobić trochę przetwarzania końcowego. –

Odpowiedz

17

Spróbuj tego.

tex (''%i2); 

lub

apply (tex, [%i2]); 
+1

Byłoby miło, gdyby niektóre wyjaśnienia zostały dodane. Dla nas, którzy sami nie umieli myśleć o tych rozwiązaniach (jestem jednym z nich), byłoby to bardzo pouczające. –

+1

@AlbertvanderHorst Cóż, problem polega na tym, że 'tex' sprawdza jego argumenty, czy jest to etykieta wejścia lub wyjścia, a jeśli tak, to traktuje je specjalnie. Aby pokonać kontrolę, musisz upewnić się, że 'tex' widzi wartość'% i2' lub cokolwiek jest argumentem. Dwa sposoby osiągnięcia tego polegają na użyciu cudzysłowu (tj. Dwóch pojedynczych cudzysłowów) w celu spowodowania interpolacji wartości na dane wejściowe przed dokonaniem oceny lub "zastosowania" w celu zastosowania funkcji do wartości etykiety. "apply" jest bardziej ogólne, ponieważ cytat działa tylko na wejściu konsoli, ale cytat jest wygodniejszy. –