Программисту .NET: как быстро показать LaTeX
В этой статье описаны несколько способов отображения LaTeX документов в программах на .NET. Информация пригодится в первую очередь программистам, работающим в сфере образования. Все, о чем идет речь, проверено на собственном опыте разработки на кафедре высшей математики одного из ведущих московских технических ВУЗ-ов.
Задача
В вашем программном комплексе автоматически создается много научных документов на LaTeX (как наиболее подходящем для этих целей текстовом формате), каждый документ необходимо как можно быстрее показать пользователю в качестве черновика. «Автоматически» означает, что пользователь не набирает документы LaTeX вручную, он даже может не знать о том, что это такое. Подразумевается, что когда будет создан окончательный вариант документа, он будет либо экспортирован в LaTeX-е, либо преобразован в PDF средствами установленного дистрибутива TeX и распечатан. Показывать черновые варианты следует по возможности без использования сторонних программ и быстрее, при этом их корректность гарантируется. Размер документов не превышает нескольких листов A4, количество формул умеренное.
Казалось бы, если все равно в конце документ придется печатать, что невозможно без установки TeX, то к чему подчеркивать независимость от TeX-а? Дело в специфике программного комплекса, разрабатываемого автором.
Решения
- В лоб — компилировать LaTeX в нечто PDF-подобное, используя дистрибутив TeX, и показывать во внешнем просмотрщике
- Похитрее — показывать LaTeX сразу, в браузере (т.е. в компоненте WebBrowser), используя Integre techexplorer — ActiveX плагин к Internet Explorer
- Еще хитрее — конвертировать LaTeX в MathML и показывать в поддерживающем этот стандарт браузере (т.е. соответствующем компоненте .NET)
Какой же способ выбрать?
Можно представить сравнение способов в виде таблицы.
Способ | Преимущества | Недостатки |
«В лоб» |
|
|
Через Integre techexplorer |
|
|
Через MathML |
|
|
Ниже вставлены примеры отображения LaTeX в PDF-е, в techexplorer-е и в MathML/Firefox.
|
|
|
По качеству отображения, очевидно, лидирует PDF, у MathML/Firefox и techexplorer свои ошибки.
Таблица сравнения скоростей отображения:
Способ | Время, с (LaTeX, 8,5 кб, 130 строкб 101 формула) | Время, с (LaTeX, 1 кб, 30 строк, 11 формул) |
«В лоб» | 14 | 11 |
techexplorer | 3 | 3 |
MathML | 12 | 3 |
В первом случае документ преобразовывался в PDF, а затем отображался в Adobe Reader. Во втором — показывался напрямую в Internet Explorer. В третьем — конвертировался в XHTML+MathML и показывался в Firefox. Конфигурация компьютера: Windows 7 x86, Core 2 Duo T7500, 4GB DDR2. Видно, как замедляется показ MathML в Firefox на относительно больших документах.
Субъективно — первый способ самый надежный, но медленный, второй — быстрый и некачественный, третий — использует новые технологии, которые до конца не отлажены.
Как видно, у каждого способа есть свои достоинства и недостатки. До недавнего времени автором использовался techexplorer, но он уже 4 года не развивается, и потенциально принесет проблемы в будущем. К сожалению, сырость latex2mathml не позволяет быстро добиться результатов, и не является универсальным решением для всех.
В этой статье был представлен лишь обзор путей решения проблемы быстрого отображения LaTeX в программах на .NET. Если вас заинтересуют детали, буду рад их пояснить.