воскресенье, 9 июня 2013 г.

MAXIMA и LaTeX

Введение

Задался, я вопросу, а нельзя ли, как-нибудь сделать скрипт, чтобы вычисления из maxima  мне в документ вставлялись, идти старым путем не особо захотелось (писать скрипт на языке Maxima, которые выводит мне и мой текст и решение из Maxima), поэтому стал вопрос о поиске новых. Новый путь нашел, а оттуда стартанул, по указанию в Испанию!
***

Отрицательный результат, тоже результат

Стартанул ненадолго и недалеко, так как запустить этот ихнюю работу, у меня не получилось :(.
В итоге пошел ново-старым путем, то есть написал скрипт, только не на языке Maxima, а на Python'е. Скрипт ищет новый тег в tex-файле, потом выписывает, оттуда, то что его интересует, в mac-файл, скармливает последний Maxima, получает dat - файл с результатом, из него и из исходного файла, создает, новый tex-файл с результатом и проделаными вычислениями!
Вот собственно, сам скриптик и тестовый пример. Ну а для того, чтобы формулы больше соответствовали требованиям оформления (по крайней мере работ по механике). Написал еще постобработчик. По крайне мере формулы, неплохо обрабатывает.
Недостатки, имена переменных писать нужно особенным образом (я имею ввиду в разделе maxima в tex-документе), понять этот особенный образ думаю не так сложно, если хоть чутка, знаешь Maxima. Причина, почему именно так нужно проста, иначе Maxima вообще не выведет имени переменной :).

Применение скрипта mltex

Теперь о том, как все это работает.
Примечание: все файлы, должны находиться в одной папке! Должны, но не обязаны, если вы опытный пользователь, то додумаетесь, как их по разным папкам раскидать, если оное конечно вам нужно.
После того, как скинули все файлы в одну папку в консоли перейдем в нее, и начнем сборку файла.
Запустим скрипт, для передачи данных для расчета в Maxima:
python3 mltex.py test.tex
Запустим постобработчик:
./parser.sh test_result.tex
После чего скармливаем остатки LaTeX'у (лучше его дважды этим покормить, горький опыт работы с LaTeX'ом):
latex test_result.tex
Получим ps-файл:
dvips test_result.dvi
Теперь можем наслаждаться полученным результатом:

Недоработка

Обнаружил, такую проблему, что вычисления с помощью файлика не идут через весь файл. Пришлось добавить таковую функцию, заодно написал сложный примерчик.
Схема запуска та же самая. На этапе тестирования была только проблема с тем, что maxima  на формулы материлась, поэтому, если скрипт не сработал, значит maxima сматюгалась, тогда кстати из папки не удаляется файл result.dat и можно посмотреть в чем ошибка. Поэтому вводим формулы правильно и будет счастье. Сразу скажу, сам по неопытности (maxima, я третий день всего лишь изучаю) ошибался с вводом формул туеву хучу раз.

Комментариев нет:

Отправить комментарий