Модуль Pylatex в Python
Латекс:
Латекс, называемый «Lay-tech», представляет собой систему документирования для высококачественной документации. Он в основном используется для подготовки технических или научных документов, но может использоваться практически для всех форм публикации. Латекс не является текстовым процессором, как MS Word или LibreOffice Writer. Вместо этого Latex призывает авторов не беспокоиться о внешнем виде своих документов, а сосредоточиться на получении правильного контента. Например, рассмотрите следующий документ:
Чтобы создать это в большинстве текстовых процессоров, автору нужно было бы решить, какой макет использовать, поэтому выбрал бы (предположим) 18pt Helvetica для названия, 12pt Times Roman для имени и так далее. В результате автор тратит время на разработку документа. Latex основан на идее, которая позволяет авторам приступить к написанию документа и оставить его разработку дизайнерам документов. Таким образом, в Latex вы могли бы ввести вышеуказанный документ как:
Макет латексного документа:
Существует две основные части латексного документа:
Преамбула:
Тело:
Некоторые особенности латекса:
Пример документа LaTeX:
Пример 1: В этом примере мы формируем простой латекс, чтобы из латекса мы использовали простой формат ввода, который мы использовали в латексе.
\usepackage [tmargin=1cm, lmargin=10cm]
Настройка LaTeX-шаблонов для Jupyter notebook
Если проблема не решается в одну строчку (нужно серьёзно менять шаблон и не хочется копаться в неприятном результате конвертирования в LaTeX) / у меня много блокнотов / я хочу более общее решение, то продолжаем.
TL;DR: для того, чтобы получить pdf с кириллицей, добавьте к себе два файла (ссылка ведёт на комментарий с кратчайшим описанием).
Нужно объяснить конвертеру, что для конвертации блокнота в LaTeX он должен использовать не стандартный шаблон, а наш, с расширенным заголовком, самым правильным шрифтом и корпоративной темой оформления.
Файлы настроек
Сначала про конфигурацию и местонахождение файлов. Это быстро решается написанием собственного файла настроек. Файл настроек для nbconvert — это файл с кодом на Python. Как указать файл настроек при вызове конвертера:
Файл настроек выглядит примерно так:
Шаблоны
Во-первых — аккуратно унаследоваться от шаблона, определяющего конкретный стиль отрисовки клеток с кодом (как в примере):
В-третьих — подключить вожделенные пакеты с поддержкой кириллицы (и ещё десяток-другой любимых):
Если мы хотим использовать полученный шаблон не в конкретном проекте, но во всех блокнотах, можно положить его, например, в
/.jupyter/templates/ и изменить соответствующую строчку в файле настроек (спасибо spitty за замечание о том, что относительные пути просто так работать не будут):
После небольших исправлений в шаблоне для отрисовки клеток с кодом (мне не нравились надписи In[*]) у меня получились вот такие отчёты (скриншот из PDF-файла):
🛠 Сложноструктурные аналитические отчеты с Python и LaTeX
Leor Finkelberg
Экосистема LaTeX. Быстрый старт
Контейнер ожидает получить аргументы командной строки указывающие на выбранный компилятор (в данном случае PDFLaTeX) и собственно tex-файл (размеченный документ, на основании которого позже будет создан pdf-файл).
Итак, для запуска примеров из настоящего руководства потребуется установить дистрибутив TeX (например, MikTеX ) и LaTeX-редактор (например, TeXstudio ).
Введение в язык разметки LaTeX
Теперь рассмотрим общий синтаксис языка LaTeX и познакомимся с базовой структурой tex-документа.
В итоге наипростейший шаблон документа будет выглядеть так:
С подключенным стилевым файлом tex-документ будет выглядеть так:
Аргумент команды \usepackage может включать не только имя стилевого файла, но и путь до него относительно корня проекта (без указания расширения файла).
Разобравшись с базовыми структурными элементами tex-файла, можно сосредоточиться на содержательной части и перейти к наполнению документа.
Наберем в документарном окружении следующие строки:
Теперь можно вызвать компилятор PDFLaTeX через командную оболочку и передать ему имя tex-файла. Результат компиляции приведен на рисунке ниже.
analyt_report_template.tex » data-src=»https://media.proglib.io/posts/2021/06/16/f8ca7c083aff54762048620c9d8d7cd2.jpg» > Результат компиляции файла analyt_report_template.tex
Как должно быть понятно из приведенного выше рисунка, equation используется для однострочных формул, multline – для многострочных, а gather – для группового размещения формул. Звездочка после имени окружения означает, что LaTeX не станет присваивать номера формулам, попавшим в это окружение.
Прочие детали работы с издательской системой LaTeX можно выяснить из следующих работ:
Введение в Python-библиотеку Streamlit
Запускается приложение командой streamlit run :
После запуска сценария в браузере ( http://localhost:8502 ) откроется вкладка с приложением. Завершить работу приложения можно, закрыв вкладку браузера и набрав Ctrl+C в командной оболочке.
В Streamlit реализован сравнительно небольшой набор «выразительных средств», но все элементы продуманы и покрывают значительную часть требований к «гибкому динамическому прототипу».
Ниже приводится пример использования библиотеки Streamlit для построения двух интерактивных графиков (на базе библиотеки Plotly) гауссовских процессов с автокорреляционной функцией экспоненциального типа.
В этом примере к библиотеке Streamlit имеет отношение только:
Прочие элементы сценария streamlit_simple_example.py играют лишь вспомогательную роль.
Пример-шаблон аналитического отчета
Предлагается в качестве примера, сочетающего приемы работы с библиотекой Streamlit (браузерный интерфейс приложения) и LaTeX-разметку (опорный tex-файл), рассмотреть подготовку отчета на тему «Оценка усталостной долговечности силовых элементов транспортных машин под воздействием стационарных гауссовских процессов с автокорреляционной функцией экспоненциально-косинусного семейства».
Часто возникает необходимость выгрузить подготовленный с помощью Streamlit файл результатов (например, табличных объект Pandas ), но сам Streamlit не предлагает никаких решений. Тем не менее это ограничение можно обойти с помощью следующей функции:
При наборе текстового шаблона для Python ( latex_template_for_python.txt ) – по сути файл представляет собой каркас документа с заглушками под строковую интерполяцию – важно помнить о синтаксических особенностях LaTeX. Дело в том, что в контексте строковой интерполяции фигурные скобки означают «место подстановки», а в контексте LaTeX – обязательный аргумент команды. То есть, чтобы Python корректно «прочитал» строку следует фигурные скобки, относящиеся к синтаксису LaTeX, удвоить.
В результате получится текстовый файл вида:
Ниже на рисунках приводится общий вид приложения.

Скачав подготовленный tex-файл в директорию проекта, останется только запустить компилятор ( дважды! ).
После сборки документа в рабочей директории проекта будет создан pdf-файл.
Чтобы развернуть приложение на свободной облачной платформе Streamlit, достаточно кликнуть на Deploy this app в правой верхней части панели запущенного приложения, как изображено на рисунке. Однако предварительно необходимо зарегистрироваться на Streamlit и отправить заявку на допуск к ресурсам (обычно обработка заявки занимает несколько дней).

После успешного развертывания на платформе приложение будет доступно конечному пользователю по ссылке, как в данном случае.
Заключение
Из руководства вы узнали:
Связные материалы с платформы Proglib:
Как написать LaTeX в IPython Notebook?
может ли кто-нибудь поделиться способом, как написать код LaTeX в ноутбуке IPython?
9 ответов
или вы можете отобразить вывод LaTeX / Math из Python, как видно в конце notebook tour:
LaTeX Ссылки:
и вот Ссылка для LaTeX команды/символы.
Подводя итог: различные способы указать LaTeX в Jupyter / IPython:
примеры для ячеек Markdown:
блок, завернуть в: \begin и \end
блок, завернуть в: \begin и \end
примеры для ячеек код:
Латекс Клетки: %%latex волшебная команда превращается в всю ячейку на Латексная Ячейка
математический объект передать в сырого латекса строка:
латексная класс. Примечание: Вы должны включить разделители себя. Это позволяет использовать другие режимы LaTeX, такие как eqnarray :
документы на Необработанные Клетки:
(извините, здесь нет примера, только документы)
Дополнительные Документы:
для ячеек Markdown, как указано из Jupyter Notebook docs:
Если вам не нужен разрыв строки после математики, используйте знак доллара$, например,
вы можете выбрать ячейку для уценки, а затем написать код latex, который интерпретируется mathjax, как сказал один из ответчиков выше.
кроме того, раздел Latex учебника IPython notebook хорошо объясняет это.
дополнительная информация найдена в этом ссылке
Я не могу отрицать, что я не предвзят, но я предпочитаю использовать prettyPy над написанием полных выражений LaTeX.
Как вы видите, я все еще не могу использовать usepackage. Но, возможно, в будущем он будет улучшен.
ответ minrk (включено для полноты) хорошо, но есть еще один способ, который мне нравится еще больше.
вы также можете отобразить всю ячейку как LaTeX введя %%latex как первая строка в текстовой ячейке. Это полезно, если вы
minrk’ы ответ:
или вы можете отображать вывод LaTeX / Math из Python, как видно в направлении конец ноутбук тур:
Если ваша главная цель-делать математику, SymPy предоставляет отличный подход для функциональных выражений latex, которые отлично выглядят.
PyLaTeX¶
PyLaTeX is a Python library for creating and compiling LaTeX files. The goal of this library is to be an easy, but extensible interface between Python and LaTeX.
PyLaTeX has two quite different usages: generating full pdfs and generating LaTeX snippets. Generating full pdfs is mostly useful when all the text that pdf should contain is generated by python, for instance exporting the data from a database. Snippets are useful when some text still needs to be written by hand, but some stuff can be automatically generated, for instance writing a report with a couple of matplotlib plots.
Installation¶
PyLaTeX works on Python 2.7 and 3.3+ and it is simply installed using pip:
Some of the features require other libraries as well. This is mostly the case when converting a datatype of that library to LaTeX. For instance, generating LaTeX matrices requires Numpy. The dependencies for these extra features can simply be installed like this:
The features that require aditional libraries are:
Support¶
This library is being developed in and for Python 3. Because of a conversion script the current version also works in Python 2.7. For future versions, no such promise will be made. Python 3 features that are useful but incompatible with Python 2 will be used. If you find a bug for Python 2 and it is fixable without ugly hacks feel free to send a pull request.
This library is developed for Linux. I have no intention to write fixes or test for platform specific bugs with every update, especially since I have no other operating systems to test it on. Pull requests that fix those issues are always welcome though. Issues have been fixed for Windows and it seems that compiling to pdf is currently working.
Contributing¶
Read the How to contribute page for tips and rules when you want to contribute. To just see the source code, you should go to the Github repository.




