Для этого нужно:
- скачать файл python.sty. Положить его в каталог с документом.
- В документе в преамбуле включить
\usepackage{python} - Внутри документа фрагменты кода на Python помещать в окружение
\begin{python}—\end{python}. Всё, что эти фрагменты кода будут печатать, станет частью конечного документа. - Запускать LaTeX нужно с опцией
-shell-escape(разрешая тем самым запуск внешнего кода из-под LaTeX)
Дополнение 2008-09-22: Вот более интересные примеры использования Python внутри LaTeX, файл LaTeX и полученный из него PDF. В этих примерах: символические вычисления с помощью
sympy, сохранение переменных между вызовами Python, построение графиков с помощью matplotlib.P.S. Заодно узнал, что есть такая штука, как Sage, пакет для математических расчётов, объединяющий в себе многие разработки с открытым исходным кодом. Очень похоже на Matematica, но в отличие от последней с нормальным, питоническим синтаксисом:) Так вот, Sage тоже можно вызывать прямо из LaTeX (и подставлять в него результаты, картинки и прочее). Это делается пакетом sagetex. Да, кстати, начать пользоваться Sage можно не устанавливая его, а воспользовавшись web-версией. Das ist fantastisch. Google Docs отдыхают.
Ссылки по теме:
Embedding Python in LaTeX
Примеры использования Python внутри LaTeX: симолические вычисления, построение графиков, сохранение результатов
Sage, достойная альтернатива Математике
Пример использования Scheme внутри LaTeX
Этот пост по-английски: Python inside LaTeX (and Sage too)


19 коммент.:
Круть какая несусветная (это я про питон в латехе).... Это ж можно картинки генерить прямо в латексовском файле... Ещё не придумал нафига оно мне, но крууууть )))
Дв, очень интересная вешь. Полезно, спасибою
Сергей, огромное спасибо за пост. Я думал, что должно быть нечто, позволяющее делать расчёты прямо внутри теховского документа, но такого не находил. Твой пост открыл для меня новые горизонты :-)
Ушёл качать книги по питону и автоматизировать свои отчёты.
О, спасибо. Как приятно видеть отзывы! :)
Вообще, сейчас ещё набирает обороты LuaTeX. Как я понимаю, это разновидность pdfTeX со встроенным в него Lua. И он уже входит TeXLive 2008 (и работает в ConTeXt).
Возможно, в будущем это будет и более удобный писать пакеты, и способ скриптовать свои собственные документы.
Впрочем, мне при прочих равных пайтон кажется более удобным. И он уже работает. Впрочем, сложные примеры я ещё не пробовал им делать.
Впрочем, мне при прочих равных пайтон кажется более удобным. И он уже работает. Впрочем, сложные примеры я ещё не пробовал им делать.
Более того на нём уже много чего написано стандартного, один scipy чего стоит, я уже не говорю про мой любимый PyNGL ))
Ушёл качать книги по питону и автоматизировать свои отчёты.
Давно пора отправить наконец твой матлаб в топку ))
2 Magik комментирует...
Давно пора отправить наконец твой матлаб в топку ))
Ну ты горячий финский парень, конечно :-) Матлаб, конечно, не Ъ, но работает и на нём удобно. А вот что действительно скоро отправится в домну, так это несколько моих пятиколёсных перловых велосипедов с паровой тягой.
В тему.
1. Хорошо бы выкатить пост про книжки по Питону для начинающих, вроде обзора. Гугл, оно, конечно, сила, но поделиться опытом тоже стоит (сижу вкуриваю "Think python", вроде неплохо идёт).
2. И ещё парочку примеров хорошо бы, которые генерируют такие классные отчёты.
3. Если можно, что-нибудь про sage. Оно какое-то большое, компилируется долго и не совсем понятно, зачем оно надо, если есть octave и maxima. Можно просветить отчаянных танкистов? :-)
И ещё раз спасибо за пост.
Могу посоветовать хорошую книжку именно по научному программированию: Python Scripting for Computational
Science
Если есть желание ознакомиться, могу выслать издание 2008 года. )
2virens:
По поводу Sage, он включает в себя и Maxima, и Sympy. И много других разработок с открытым исходным кодом. Т.е. проект изначально синтетический, ставящий целью предоставить единый интерфейс ко всему, что уже есть в виде разрозненных пакетов. В т.ч. есть интерфейсы и к несвободным Maple/Matlab/Matematica.
Я о нём узнал совсем недавно, опять же в контексте вызова из LaTeX. Мне понравился интерфейсом (веб) и привычным по пайтону синтаксису. Думаю, многие вещи можно делать отдельно и в Maxima (или Sympy). В контексте вызова из LaTeX Sympy (и Sage) интересны тем, что умеют печатать любую символьную формулу и выражение в формате LaTeX.
Пайтону я учился по его стандартному тьюториалу. Деталей уж е потом нахватался.
2virens & magik:
Вообще, есть мысль сделать какие-то «образовательные» посты, о том, как выполняются те или иные рутинные операции в Python. Например, решение системы ОДУ + визуализация результатов. Это можно дополнить примером исследования системы в Sage/Sympy/Maxima. Или вычисление интегралов. Или операции с матрицами (чтение из файла, собственно операции, запись в файл). Или решение СЛУ. Или чтение и запись данных разных стандартных форматов. В общем, мне кажется, было бы хорошо создать серию таких заметок по тому, как вычислительные задачи могут решаться с помощью свободного ПО.
У меня есть сомнения по поводу насколько это впишется в формат «блога о GNU/Linux». Также непонятно, насколько систематично удастся изложить материал. Пока что ещё лежит и много старых нераспаханных тем :)
2jetxee
Я пытался начать серию именно таких постов тут http://koldunov.net/?tag=python но дальше открытия файлов и форматирования дело особо пока не продвинулось, поскольку оно мне и не нужно в данный момент, а я стараюсь писать о том что делаю сейчас )
Ещё раз могу посоветовать Python Scripting for Computational
Science как основу для структуры такого рода предприятия, поскольку она сконцентрирована именно на потребностях учёных а не программистов.
Было бы хорошо объединить усилия :)
А книжку 2008-го года я бы посмотрел ;)
Вот более интересные примеры использования Python внутри LaTeX, файл LaTeX и полученный из него PDF. В этих примерах: символические вычисления с помощью sympy, сохранение переменных между вызовами Python, построение графиков с помощью matplotlib. Дополнил ими пост.
2 Magik пишет...
Могу посоветовать хорошую книжку именно по научному программированию: Python Scripting for Computational
Science
О, спасибо! Это оно! Сейчас засуну эту книжку в свой большой кальян и буду медленно вкуривать :-)
Кстати, Think Python прочитал вчера на одном дыхании - как всё-таки классно и просто западные орлы умеют книжки писать.
Если есть желание ознакомиться, могу выслать издание 2008 года. )
Спасибо, уже нагуглил и скачал с рапидшары.
2 jetxee пишет...
По поводу Sage, он включает в себя и Maxima, и Sympy. И много других разработок с открытым исходным кодом.
Я с Sympy не знаком, а по жизни пока хватает Матлаба и Октавы. Но буду иметь в виду.
В контексте вызова из LaTeX Sympy (и Sage) интересны тем, что умеют печатать любую символьную формулу и выражение в формате LaTeX.
А вот это намного интереснее. Принял на заметку.
Пайтону я учился по его стандартному тьюториалу.
Меня оно как-то не впечатлило, больше понравилось Think Python, написано (на мой вкус) куда доходчивее.
Вообще, есть мысль сделать какие-то «образовательные» посты, о том, как выполняются те или иные рутинные операции в Python.
По понятным причинам я к вам присоединиться смогу не быстро :-) Но обязательно сделаю это, когда Питон буду знать лучше.
Например, решение системы ОДУ + визуализация результатов.
Лично меня больше вдохновляет автоматическая генерация отчётов. Может, через месяцок выдам что-нибудь такое.
В общем, мне кажется, было бы хорошо создать серию таких заметок по тому, как вычислительные задачи могут решаться с помощью свободного ПО.
Могу ближе к концу года что-нибудь выдать по Октаве. Есть много написанных постов по ЛаТеХу. В силу местной специфики многое повязано на Матлаб...
У меня есть сомнения по поводу насколько это впишется в формат «блога о GNU/Linux».
Легко впишется. Свободный софт под Линукс - ну так что ж, собственно...
Пока что ещё лежит и много старых нераспаханных тем :)
У меня сейчас защита Ph.D., так что писать что-то новое я физически не могу. Выкладываю то, что написал раньше. До конца года ситуация вряд ли изменится.
2 Magik пишет...
Я пытался начать серию именно таких постов тут
Очень, кстати, впечатляет. Особенно для начинающих - кстати, "новичковые" посты можно отрабатывать на мне, я с благодарностью их приму :-)
2 jetxee пишет...
Было бы хорошо объединить усилия :)
Будем стараться. Вы ж крутые питонисты, вам и карты в руки. :-)
А книжку 2008-го года я бы посмотрел ;)
Я просто прибавил к названию книги слово PDF и пнул гугл. Восьмая ссылка на форум, оттуда - на рапиду.
2 jetxee пишет...
Вот более интересные примеры использования Python
Это, кстати, более ценный пример, чем первый, т.к. сразу видно, что делается.
В общем, jetxee спасибо за пост, а Magik - за поддержку. Одним питонистом стало больше.
Одним питонистом стало больше.
Ё! )
>По понятным причинам я к вам присоединиться смогу не быстро :-) Но обязательно сделаю это, когда Питон буду знать лучше.
Ну это нормально. Дело большое и долгое. Защищайся (ни пуха ни пера!), потом присоединишься.
>Лично меня больше вдохновляет автоматическая генерация отчётов.
Вот это мне не совсем понятно. Под отчётами каждый что-то своё понимает. Кто бухгалтерские, кто по гранту, кто некое подобие статьи с промежуточными результатами. Так что я бы задачу конкретизировал как:
* чтение данных в разных форматах, их отбор, преобразование и подготовка к печатному виду
* выполнение каких-то расчётов в процессе компиляции документов и включение результатов в документ; сюда же попадает включение в документ результатов выполнения каких-то внешних программ
* визуализация данных «на лету» (то же, что и обычная визуализация, только вызов в контексте документа)
Кроме этих трёх пунктов ничего больше придумать не могу.
>Могу ближе к концу года что-нибудь выдать по Октаве. Есть много написанных постов по ЛаТеХу. В силу местной специфики многое повязано на Матлаб...
Вот, вот это и есть ключевой момент, зачем всё это дело надо затевать. Многие использую коммерческие пакеты (в т.ч. на матлаб). Поскольку умеют ими пользоваться. Потому что они всё таки работают. Потому что им учат. Поскольку им учат, ими продолжают пользоваться. Так формируется замкнутый круг. И куча научного и инженерного кода завязанного на дорогостоящую проприетарную платформу.
ИМХО многие задачи, особенно возникающие в академической и инженерной среде, можно решать средствами свободного ПО. И нужно, потому что это снимает противоестественные барьеры воспроизводства результатов третьими лицами и спустя длительное время.
А для этого нужно, чтобы было много хороших учебных материалов по свободному ПО в этой области. Тогда, начиная со студенчества, люди будут решать свои задачи с помощью свободного ПО, будут уметь им пользоваться, и будут продолжать им пользоваться, если позволяют его возможности.
Т.е., я думаю, разорвать порочный круг использования коммерческих пакетов в научной деятельности можно, знакомя людей с пакетами свободными и обучая использованию таких пакетов.
Ну и приводя примеры решения конкретных, типовых задач.
2 jetxee
Защищайся (ни пуха ни пера!), потом присоединишься.
А я между боями почитываю Think Python и достигаю первого просветления :-)
выполнение каких-то расчётов в процессе компиляции документов и включение результатов в документ
Наверное, я неточно сформулировал - именно это я и имел в виду. По работе требуется включать куски посчитанных данных в документ. Сейчас это делается страшными перловыми велосипедами, но Питон в этом плане в 100 раз изящней и проще.
...Так формируется замкнутый круг. И куча научного и инженерного кода завязанного на дорогостоящую проприетарную платформу.
Сергей, я эти слова местным аксакалам твержу уже который год. И всё без толку, ибо народ пожилой, "нам переучиваться подно". А молодёжи почти нет (из 50 сотрудников кафедры тех, кто моложе 35, всего четверо, включая меня).
Одно хорошо: мне разрешают работать так, как я хочу, и заниматься тем, что мне нравится. Это редкий случай в местных краях. Пока мои контрреволюционные закидоны терпят, т.к. я выдаю результаты. :-)
ИМХО многие задачи, особенно возникающие в академической и инженерной среде, можно решать средствами свободного ПО.
Я бы был более категоричен - почти ВСЕ. Матлаб у меня единственная проприетарная программа на машине.
И нужно, потому что это снимает противоестественные барьеры воспроизводства результатов третьими лицами
В общем, Октава почти совместима с Матлабом... но... почти.
Т.е., я думаю, разорвать порочный круг использования коммерческих пакетов в научной деятельности можно, знакомя людей с пакетами свободными и обучая использованию таких пакетов.
Сергей, наши местные реалии немного иные чем те, что ты видишь вокруг себя. У нас люди очень старые, либо немотивированные, либо разгильдяи, либо просто проходимцы. Исключений мало. Учиться не хотят.
Когда у нас началась заваруха по поводу легализации ПО, один "борец за опенсорц" сделал кафедральную (!) рассылку с такими словами: "мазохистский вариант временно поставить на эти компьютеры Linux"
В общем, я стараюсь студентов, у которых мозги ещё не заржавели, знакомить с LaTeX. Некоторые пробуют Убунту, один пересел на Сусе. В общем, результаты скромные, но дело идёт.
О! Великолепная штука. Но, что-то у меня не выходит. Пишет latex, что не может найти pytex.py.out. Быть может это из-за того, что под виндой?
Вау, как здорово! Я теперь твой читатель! :)
Да, здорово, но попользовавшись сам этим приёмчиком, пришёл к выводу, что связка make (или scons, или rubber) + пачка вспомогательных скриптов + latex работает лучше, чем внедрение скриптов в документ. Прежде всего потому, что документ обычно нужно пропускать через latex два и более раз, а выполнять вычисления в python нужно только раз.
Отправить комментарий