рефераты рефераты
Главная страница > Курсовая работа: Отображение математических формул в формате LaTeX на форуме PHPBB3  
Курсовая работа: Отображение математических формул в формате LaTeX на форуме PHPBB3
Главная страница
Банковское дело
Безопасность жизнедеятельности
Биология
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
География экономическая география
Геодезия
Геология
Госслужба
Гражданский процесс
Гражданское право
Иностранные языки лингвистика
Искусство
Историческая личность
История
История государства и права
История отечественного государства и права
История политичиских учений
История техники
История экономических учений
Биографии
Биология и химия
Издательское дело и полиграфия
Исторические личности
Краткое содержание произведений
Новейшая история политология
Остальные рефераты
Промышленность производство
психология педагогика
Коммуникации связь цифровые приборы и радиоэлектроника
Краеведение и этнография
Кулинария и продукты питания
Культура и искусство
Литература
Маркетинг реклама и торговля
Математика
Медицина
Реклама
Физика
Финансы
Химия
Экономическая теория
Юриспруденция
Юридическая наука
Компьютерные науки
Финансовые науки
Управленческие науки
Информатика программирование
Экономика
Архитектура
Банковское дело
Биржевое дело
Бухгалтерский учет и аудит
Валютные отношения
География
Кредитование
Инвестиции
Информатика
Кибернетика
Косметология
Наука и техника
Маркетинг
Культура и искусство
Менеджмент
Металлургия
Налогообложение
Предпринимательство
Радиоэлектроника
Страхование
Строительство
Схемотехника
Таможенная система
Сочинения по литературе и русскому языку
Теория организация
Теплотехника
Туризм
Управление
Форма поиска
Авторизация




 
Статистика
рефераты
Последние новости

Курсовая работа: Отображение математических формул в формате LaTeX на форуме PHPBB3

4. Верхние и нижние индексы

Верхний индекс задается при помощи крышки ^. Символ, непосредственно следующий за крышкой, будет служить верхним индексом для того, что стоит перед крышкой:

$4^2 = 2 ^ 4$, exp(x) - это то же самое, что и $e ^x$

Код:

[math]$4^2 = 2 ^ 4 $, exp(x) – это то же самое, что и $e ^x$[/math]

Аналогично нижний индекс задается знаком _:

Рассмотрим числовую последовательность $a_n = \frac 1 n$

Код:

[math] Рассмотрим числовую последовательность $a_n = \frac 1 n$[/math]

Верхний и нижний индексы можно сочетать, причем порядок следования индексов не важен:

$C _n^0 = C ^n _n = 1$

Код:

[math] $C_n^0 = C ^n _n = 1 $[/math]

Если в качестве верхнего или нижнего индекса вы хотите использовать не один символ, а целое выражение, то это выражение необходимо окружить фигурными скобками:

$C_n^k = C_{n-1}^k + C_{n-1}^{k-1}$

[math]$C_n^k = C_{n-1}^k + C_{n-1}^{k-1}$[/math]

3. Постановка задачи

Передо мной была поставлена задача: создать решение проблемы отображения математических и других формул для форума физико-математического факультета Орловского государственного университета, используя установленный форумный движок phpBB3, издательскую систему TeX, пакет расширений LaTeX и пакет для обработки графических файлов ImageMagick.

Рассмотрим вкратце то, что из перечисленного не было рассмотрено ранее.

LaTeX

LaTeX (произносится как «лэйтех» или «латех» аналогично TeXу; ударение допустимо на любой из слогов) – наиболее популярный набор макрорасширений (или макропакет) к TeX, который облегчает набор сложных документов. Важно заметить, что ни один из макропакетов для TeX'а не может расширить TeX'овских возможностей (всё, что можно сделать в LaTeX’е, можно сделать и в Plain TeX'е), но благодаря различным упрощениям использование макропакетов зачастую позволяет избежать весьма изощрённого программирования.

Пакет позволяет автоматизировать многие задачи набора текста и подготовки статей, включая набор текста на нескольких языках, нумерацию разделов и формул, перекрёстные ссылки, размещение иллюстраций и таблиц на странице, ведение библиографии и др. Кроме базового набора существует множество пакетов расширения LaTeX. Первая версия была выпущена Лесли Лампортом (Leslie Lamport) в 1984, текущая версия – LaTeX2ε, после создания в 1994 году испытывала некоторый период нестабильности, окончившийся к концу 90-х годов, а в настоящее время стабилизировалась (хотя раз в год выходит новая версия).

Общий внешний вид документа в LaTeX определяется стилевым файлом. Существует несколько стандартных стилевых файлов для статей, книг, писем и т.д., кроме того, многие издательства и журналы предоставляют свои собственные стилевые файлы, что позволяет быстро оформить публикацию, соответствующую стандартам издания.

Во многих развитых компьютерных аналитических системах, например, Maple, Mathematica, Maxima возможен экспорт документов в формат *.tex. Для представления формул в Википедии также используется TeX-нотация.

Распространяемый под лицензией GNU GPL, LaTeX относится к свободному программному обеспечению.

LaTeX-редакторы

Для облегчения набора и сборки документов LaTeX существует несколько интегрированных сред, например:

·  Emacs + auctex + reftex + preview-latex

·  Kile

·  LEd

·  LyX (http://www.lyx.org/)

·  TeXmacs (http://www.texmacs.org/)

·  Winefish (http://winefish.berlios.de/)

·  Texmaker (англ.)

·  TeXnicCenter (англ.)

·  WinEdt – единственный коммерческий из перечисленных.

ImageMagick

ImageMagick – свободный и многоплатформенный пакет программ для неинтерактивной (пакетной) обработки графических файлов. Поддерживает множество графических форматов, выпущен под лицензией GPL. Может использоваться с языками Perl, C, C++, Python, Ruby, PHP, Pascal, Java, в скриптах командной оболочки или самостоятельно. В его состав входят такие программы как convert, dvips, identify.

4. Реализация поставленной задачи

Сначала опишем сам процесс, направленный на получение отображения необходимой формулы: участник форума во время написания сообщения может использовать тег [TeX] (обязателен закрывающий тег [/TeX]), внутри которого необходимо написать требуемую формулу, используя язык разметки TeX.

Далее первый хук перехватывает весь текст сообщения и изменяет теги [TeX] и [/TeX] на теги вида [TeX:$uid] и [/TeX:$uid] для возможной дальнейшей более тесной интеграции с форумом.

Второй хук выполняет непосредственные преобразования всех формул, заключенных в теги [TeX] и [/TeX] в картинки необходимого формата (gif или png) с последующим вставлением картинок в отправляемый текст сообщения. При наведении курсора на картинку всплывает исходный текст формулы.

Преобразование формул в картинки происходит следующим образом:

1.  весь текст между тегами формул заносится в массив для удобной обработки;

2.  далее идет обработка каждой формулы: проверка на корректность;

3.  во временной директории создается файл с расширением tex, который содержит стандартное оформление документа с отдельной формулой, и случайным именем;

4.  создается dvi файл, используя latex;

5.  этот dvi файл конвертируется в Postscript (ps), используя dvips (tetex);

6.  конвертирование, обрезка и добавление прозрачности, используя convert из пакета ImageMagick, в результате получается требуемая картинка;

7.  далее имя конечной картинки рассчитывается через применение функции необратимого шифрования md5 (), которая является стандартной в языке PHP, параметром этой функции является текст формулы; полученное имя является уникальным для данной формулы;

8.  очистка временной директории от использовавшихся файлов;

9.  в текст сообщения передается ссылка на получившуюся картинку;

10.  в случае ошибки при данном процессе выводится соответствующее предупреждение («[unparseable or potentially dangerous latex formula]»).

Практическая часть.

Часть php-скрипта («posting.php») форума, в которую были внесены необходимые изменения(хуки) для перехвата текста сообщения:

if ($submit || $preview || $refresh) // Отправка, предварительный просмотр написанного сообщения

{

$post_data ['topic_cur_post_id'] = request_var ('topic_cur_post_id', 0);

$post_data ['post_subject'] = utf8_normalize_nfc (request_var ('subject', «, true));

$text = utf8_normalize_nfc (request_var ('message', «, true)); // Перехват сообщения

include_once ('latexrender/phpbb_hook_1.php'); // Первый хук

include_once ('latexrender/phpbb_hook_2.php'); // Второй хук

$message_parser->message = $text; // Дальнейшая обработка сообщения средствами форума

$post_data['username'] = utf8_normalize_nfc (request_var ('username', $post_data['username'], true));

Первый хук:

<? php

$text = preg_replace(«#\[tex\] (.*?)\[/tex\]#si», «[tex:$uid]\\1 [/tex:$uid]», $text);

?>

Второй хук:

<? php

$latexrender_path = «latexrender»;

$latexrender_path_http = «latexrender»;

include_once ($latexrender_path. "/class.latexrender.php»);

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

рефераты
Новости