Время от времени возникает задача нарисовать картинку с некой математической формулой . Есть больше одного решения этой проблемы. Сегодня мне хотелось бы рассказать о решении, которое мне лично кажется наиболее простым и при этом достаточно универсальным. Оно заключается в использовании штуки под названием AsciiMath.
AsciiMath является языком для описания формул, а еще JavaScript-библиотекой для рендеринга формул в браузере. Также поддержка синтаксиса AsciiMath реализована в PlantUML . Реализация эта весьма продуманная. В частности, к ней можно обращаться через CLI, что наверняка пригодится при разработке собственных программ или скриптов.
Давайте же попробуем AsciiMath в действии. Качаем plantuml.1.2019.4.jar
отсюда , а также файл plantuml-jlatexmath.zip
по ссылке внизу этой страницы . К моменту, когда вы будете читать эти строки, номера версий и имена файлов могут измениться, но думаю, вы разберетесь.
Далее говорим:
mkdir asciimath-files
cd asciimath-files
cp ~ / Downloads / plantuml.1.2019.4.jar . /
cp ~ / Downloads / plantuml-jlatexmath.zip . /
unzip plantuml-jlatexmath.zip
rm plantuml-jlatexmath.zip
Суммарный размер jar-файлов составил 12 Мб.
Также создаем скрипт ~/bin/asciimath и даем ему +x
:
set -e
java -jar ~ / bin / asciimath-files / plantuml.1.2019.4.jar $1
У меня каталог ~/bin прописан в $PATH
. Если у вас это не так, не забудьте его прописать.
Теперь создадим файл test.puml, например, такой:
sum_(i=1)^n i^3=((n(n+1))/2)^2
@endmath
Говорим asciimath test.puml
и открываем test.png. Должно получиться:
Интересно, что вы можете использовать и синтаксис LaTeX , но субъективно он не так удобен:
sum_{i=1}^n i^3=bigg ({dfrac{n(n+1)}{2}} bigg)^2
@endlatex
Синтаксис AsciiMath, конечно же, не ограничен скобочками, дробями и возведением в степень. С полным описанием синтаксиса вы можете ознакомиться на сайте asciimath.org .