Реферат по предмету "Информатика, программирование"


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

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


Введение
Было быбольшой ошибкой говорить об Интернете только как о банке информации, доступнойвсему миру. Ценность Интернета была бы намного ниже, если бы не быловозможности общаться с его помощью с другими людьми, легко преодолевая любыерасстояния и границы. На сегодняшний день общение с помощью Интернета являетсясамым дешёвым и удобным. Существует несколько способов обмениватьсяинформацией. Рассмотрим самые распространённые из них./>
1. Электроннаяпочта
Электроннаяпочтаили имей (англ. e-mail либо email, сокр. от electronicmail) – наименование службы ипредоставляемой ею услуги по пересылке и получению электронных сообщений пораспределенной (в том числе глобальной) компьютерной сети./>/>Особенности
Основнаяособенность электронной почты заключается в том, что информация отправляетсяполучателю не напрямую, а через промежуточное звено – электронный почтовыйящик, который представляет собой место на сервере, где сообщение хранится, покаего не запросит получатель. В большинстве случаев для доступа к почтовому ящикутребуется наличие пароля. Доступ к почтовому серверу может предоставляться какчерез почтовые программы, так и через веб-интерфейс.
/>В завершение разговора обэлектронной почте стоит сказать, что это – основное средство общения через Интернет.Основное, но не единственное. Далее пойдёт речь о других достаточнораспространённых способах общения./>
2. Чаты
Чаты (англ. chat – дружеский разговор;беседа; болтовня) – ещё одно место для «тусовок» в Интернете. Это тоже местодля общения, только цель этого места – не обмен мнениями на какую-то тему, а простовремяпрепровождение.
Принципработы чата следующий:
· Послерегистрации вы выбираете себе «комнату» для общения. Комната – это условныйраздел, которых определяется интересами посетителей: музыка, спорт, секс, ит.п.; или возрастом: молодёжный, «взрослый».
· Передвами открывается окно, в котором с определённой периодичностью будут появлятьсякороткие сообщения от людей, находящихся в этой «комнате». Перед каждымсообщением будет стоять имя (ник) того, кто его оставил.
· Выможете оставить своё сообщение в этой комнате, вписав его в соответствующееполе ввода. Оно появится в том же окне, где и все буквально через несколькосекунд.
· Выможете посылать личные сообщения участникам чата. В этом случае никто, кромеадресата, его не увидит.
· Сообщенияхранятся в чате не больше часа. Они не предназначены для повторного чтения иадресуются только тем, кто в данный момент находится в этой комнате.
Как и вфоруме, в чате обычно имеется модератор, который может выключить из сеансатого, кто ругается или оскорбляет других посетителей.
Вот несколькопосещаемых чатов: chat.ctc-tv.ru, chat.chat.ru, chat.mail.ru./>
3.Интернет-пэйджер (ICQ)
Особое местов ряде возможностей общения через Интернет занимают программы, позволяющиеобмениваться мгновенными сообщениями. Такие программы называютинтернет-пэйджерами. Преимущество использования этих программ состоит в том,что адресат получает сообщение через секунду после его отправки. Причём дляэтого не надо никуда специально заходить и проверять состояние входящейкорреспонденции. На экране компьютера замигает значок программы, раздастсяхарактерный звук. Одним словом, вы узнаете об этом сразу. Более того, наладивконтакт с адресатами, вы всегда будете видеть, находятся ли они в данный моментв сети или нет.
Самойраспространённой среди них является ICQ. Есть мнение, что название этапрограмма получила от созвучия этих букв фразе I seek you (я ищу тебя). Есть идругие программы, причём по функциональности они в чём-то могут превосходитьвышеназванную. Но ни одна из них не может пока превзойти её в количествепользователей. На сегодняшний день сервер, регистрирующий пользователей этойпрограммы, выдаёт девятизначные порядковые номера. Не все из них, правда,реально используются, но всё равно число внушительное.
Пользоватьсяпрограммой ICQ можно абсолютно бесплатно, если не считать платой показ в еёокнах рекламных баннеров. Для этого необходимо зайти на сайт производителя искачать дистрибутив программы. После установки программы на компьютер, вамбудет предложено либо активировать на ней уже существующего пользователя (есливы имеете свой уникальный номер и знаете к нему пароль), либо завести новогопользователя. В последнем случае вам будет присвоен новый уникальный номер (ICQUIN), который вы сможете раздавать всем, желающим с вами общаться. Вас также попросятввести некоторую информацию о себе. Вы можете рассказать о себе ровно столько,сколько захотите. Эта информацию будет доступна всем, кто проявил к ваминтерес.
4. Форумы
Данный материалбудет рассмотрен ниже.

1. Форумы и их движки
 
Веб-форум – класс веб-приложенийдля организации общения посетителей веб-сайта. Термин соответствует смыслуисходного понятия «форум».
Форумпредлагает набор разделов для обсуждения. Работа форума заключается в созданиипользователями тем в разделах и последующим обсуждением внутри этих тем.Отдельно взятая тема, по сути, представляет собой тематическую гостевую книгу.
Распространённоеделение веб-форума: Разделы → темы → сообщения.
Обычносообщения несут информацию «автор – тема – содержание – дата / время». Сообщениеи все ответы на него образует ветку («тред»).
Обсуждениедолжно соответствовать теме. Отклонение от начальной темы обсуждения частозапрещено правилами поведения форума. За соблюдением правил следят модераторыи администраторы – участники, наделённые возможностью редактировать,перемещать и удалять чужие сообщения в определённом разделе или теме, а такжеконтролировать к ним доступ отдельных участников.
Нафорумах может применяться чрезвычайно гибкое разграничение доступа к сообщениям.Так, на одних форумах чтение и создание новых сообщений доступны любымслучайным посетителям, на других необходима предварительная регистрация(наиболее распространённый вариант) – те и другие форумы называют открытыми.Применяется и смешанный вариант – когда отдельные темы могут быть доступны назапись всем посетителям, а другие – только зарегистрированным участникам. Кромеоткрытых, существуют закрытые форумы, доступ к которым определяется персональнодля каждого участника администраторами форума. На практике также нередковстречается вариант, когда некоторые разделы форума общедоступны, а остальнаячасть доступна только узкому кругу участников.
Прирегистрации участники форума могут создавать профили – страницы сосведениями о данном участнике. В своём профиле участник форума может сообщитьинформацию о себе, настроить свой аватар или подпись – в зависимости отпредпочтений. Подпись может быть статичным текстом, либо содержать графическиекартинки (юзербары).
Большинствофорумов имеет систему личных сообщений, позволяющую зарегистрированнымпользователям общаться индивидуально, аналогично электронной почте (однако нераскрывая свой адрес электронной почты).
Многиефорумы при создании новой темы имеют возможность присоединения к нейголосований или опросов. При этом другие участники форума могут проголосоватьили ответить на заданный в заголовке темы вопрос, не создавая нового сообщенияв теме форума.
Каждыйконкретный форум имеет свою тематику – достаточно широкую, чтобы в ее пределахможно было вести многоплановое обсуждение. Часто также несколько форумов сводятвоедино в одном месте, которое также называют форумом (в широком смысле).
Пометоду формирования набора тем форумы бывают с динамическим списком тем и спостоянным списком тем. В форумах с динамическим списком тем простые участникимогут создавать новую тему в рамках тематики форума.
Обычнофорум имеет возможность поиска по своей базе сообщений.
Форумотличается от чата разделением обсуждаемых тем и возможностью общения не вреальном времени. Это располагает к более серьёзным обсуждениям, посколькупредоставляет отвечающим больше времени на обдумывание ответа. Форумы частоиспользуются для разного рода консультаций, в работе служб техническойподдержки.
Внастоящее время веб-форумы почти полностью вытеснили новостные группы на базеNNTP и являются одним из наиболее популярных способов обсуждения вопросов воВсемирной паутине. На данный момент форумы сосуществуют наравне с блогами. Этидве формы общения в Интернете практически не уступают друг другу по популярности./>Движкифорумов
Движокфорума – конкретное веб-приложение, реализующее перечисленные выше признаки.Десять самых популярных движков для крупнейших форумов в Сети (более 500 000сообщений), данные на 23 октября 2006:
 
Программное обеспечение форума
Число инсталляций
Доля 1 vBulletin (vBulletin) 1091 58,5% 2 Invision Power Board 238 12,8% 3 phpBB 210 11,3% 4 UBB (UBB) 41 2,2% 5 ezboard (ezboard) 37 2,0% 6 Simple Machines Forum (SMF) 33 1,8% 7 ASP Playground 15 0,8% 8 MesDiscussions.net 15 0,8% 9 Burning Board 11 0,6% 10
Другие проекты (Fusetalk (Fusetalk), proboards, XMB, ASP.net, Ikonboard, zeroforum, Web Wiz Forums, Lithium, Jive, wwwthreads, Ideal BB, discuz, Aceboard, IGNBoards, Snitz, YaBB, CrazyWeb, WebCrossing, React, Novogate, PunBB, FluxBB, bbPress, Opentopic, WowBB, ExBB) 73 3,9% 11 Собственные разработки 101 5,4% Всего 1865 100%
Обзорфорумных движков
Есливы решили создать форум, то перед вами, наверняка, встала проблема выборадвижка. Форумных движков много, хороших – меньше, но все еще достаточноеколичество, чтобы можно было запутаться при выборе.
Для обзора были использованы следующие движки: phpBB, phpBB3, punBB, Simple Machines Forum, Vanilla,bbPress и miniBB.
Приведемнебольшое описание каждому из движков, основываясь на двух критериях: удобстводля пользователей и удобство для администратора.
phpBB
Начнемс самого распространенного движка. phpBB не зря заслужил свою популярность – онв меру прост и удобен, а его стандартная тема subSilver является практическиэталоном тем для форумов. Панель администрирования неплоха, но неудобно еёустройство – предпочтительнее видеть один не разделенный на фреймы экран с единойполосой прокрутки. Так же неудобно отсутствие поддержки плагинов – любыеизменения, по сути, являются модами и хаками, что неизбежно скажется приапдейте движка. Наверняка, со временем на смену большинству инсталляций phpBB2придет более современный phpBB3.
phpBB 3
Первоевпечатление можно описать фразой «так вот ты какое, будущее…». Инсталляторудобен и понятен, хотя, можно было бы уменьшить количество шагов. Панельадминистрирования функциональна, но требует времени, чтобы с ней разобраться. Сразучто-либо сделать не получается – нужно сначала подумать, где находится нужнаяфункция и как с ней работать. По умолчанию установлена тема prosilver. Судя поназванию, это нечто гораздо более крутое и лучшее, чем предыдущая стандартнаятема – subSilver. Выглядит, конечно, впечатляюще… В общем, движокфункциональностью не обделен и очень популярен, но интерфейсу явно не хватаетинтуитивности и удобства.
Simple Machines Forum
SMF– последний «тяжеловес» в данном обзоре. Причем, свое звание он оправдываетполностью. Удивителен размер темы по умолчанию – 2 мб. Половину места вустановленном форуме занимают именно темы (в стандатной поставке идут три темы,в сумме ~2,5 МБ). Скорее всего, у движка большие проблемы с разделением логикии представлением данных. Зато панель администрирования порадовала – функциональнои просто. SMF – неплохая альтернатива распространенному phpBB – он гораздофункциональнее, чем phpBB2 и в то же время удобнее и понятнее, чем phpBB3.
punBB
Оченьлегкий и приятный форум. Стандартная тема сверстана на дивах и не используеткартинок. Для тех, кто знает CSS или знает очень плохо не составляет большоготруда «персонализировать» тему. Большим минусом является отсутствие системыперсональных сообщений – хотя существует мод, который это исправляет. Но неодними модами изменяется форум – движок поддерживает плагины, которые вы можетевключать и отключать когда захотите. Панель администрирования проста и удобна.punBB подойдет тем, кто ищет простой и легкий движок не обремененный излишнейфункциональностью.
punBB (русская сборка)
Русскаясборка punBB хоть и не является отдельным движком, но заслуживает отдельногообзора. В этой сборке сохранены все преимущества punBB, добавлены персональныесообщения, работа с кодировкой UTF-8 и много других вкусностей. Используйте,если хотите получить функциональный и легкий форум с русскоязычной поддержкой.
Vanilla
Этотфорумный движок отличается от других своей модульностью. В начальном виде этолегкий форум, но с помощью аддонов можно добавить любую функциональность. Посути, Vanilla – это платформа-конструктор для создания сообщества с нужнымифункциями. Но там, где другие движки заработали без лишних вопросов, Vanilla потребовала к себеособого внимания… Панель администрирования вполне нормальная, тема по умолчаниютоже. Данный движок подойдет, если вы хотите создать нечто большее, чем форум –с помощью аддонов вы сможете создать свое сообщество.
bbPress
Ещеодин не совсем форумный движок. Поддерживаются темы и плагины. Еще есть теги ивозможность помечать топики как «favorite». Кстати, свой слоган («Simply, Fast, Elegant»)движок отлично выполняет. В общем, вещь весьма интересная и неплохо подойдетдля организации «тусовки при блоге».
miniBB
Минимумфункций форматирования текста. Абсолютно невыразительный процесс установки. И панельадминистрирования, от которой хочется плакать. Возможно, кому-то такойминимализм придется по душе. Его можно описать как «движок для сообществамаксимум в 10 человек». Хотя, разумеется, не все так страшно – просто такдвижок выглядит рядом с другими из этого обзора./>Phorum
/>/>Phorum – не самый новыйпродукт, однако его популярность неоспорима, поскольку его движок используетсяна самых посещаемых сайтах Интернета. Причина его успеха, по большей части,кроется в простоте, которая заключается в низких требованиях движка к ресурсамсервера, а так же к уровню навыков программирования вебмастера. Движок форумаразработан на PHP, использует базу данных MySQL или PostgreSQL. Вам остаетсялишь установить его на сервер, где присутствуют необходимые компоненты. По функциональнымвозможностям форум напоминает phpBB, например, существует возможностьразвернуть несколько форумов и сгруппировать их в разделы. Однако, в отличие отphpBB, форум не обладает несколькими распространенными функциями, напримерподдержкой аватаров и приватных сообщений.
/>Система администрирования достаточно развита ипозволяет гибко настраивать движок и дизайн форума: существует возможностьпоставить ограничение на доступ участников к различным форумам, разрешить /запретить прикрепленные файлы, назначить модераторов и.т.д. Внешний вид можнонастроить, поменяв цвета и размер таблиц. Код хорошо организован, его блокираспределены по различным модулям. Так модификация файлов header.php иfooter.php приводит к изменению содержания верхней и нижней части страницы.Поэтому вы можете легко модифицировать форум под ваши нужды при условиихорошего знания php. Phorum – прекрасное решение, если вы не хотите путаться вдополнительных сервисах phpBB. Можно, конечно, придраться к отсутствиюнекоторых нужных функций, однако большое количество существующих модулей иплагинов помогут решить эту проблему. Возможно, в пятой версии эти пробелыбудут устранены. С сайта разработчика необходимо скачать русский интерфейс.
Выводы:
phpBB – подойдет, если вы хотите «форум-стандарт» и вам непотребуется дополнительных функций. Для любых сообществ, независимо от размераи тематики.
phpBB3 – подойдет, если вы можете потратить немного времени наизучение его возможностей. Для небольших сообществ без перспективы роста использованиекажется не слишком оправданным.
SMF – если вы хотите иметь хорошую функциональность (каптча, системакармы и многое другое). Подойдет для любых сообществ.
punBB – если вам нужен легкий, функциональный и удобный форум. Длялюбых сообществ.
Vanilla – подойдет для создания уникальной платформы для различных сообществ.
bbPress – лучше всего будет смотреться в кооперации с Wordpress,предоставляя удобную площадку для читателей блога.
miniBB – для небольших сообществ, либо сообществ, где не важнафункциональность форума.
Характеристикадвижка форума phpBB
phpBB– это мощное, полностью масштабируемое и легко изменяемое программноеобеспечение с открытым исходным кодом для создания конференций. У phpBBдружественный интерфейс, простой и понятный администраторский раздел ивсеохватывающий FAQ. Основанный на мощном языке PHP и имеющий поддержкусерверов баз данных MySQL, MS-SQL, PostgreSQL или Access/ODBC phpBB являетсяидеальным бесплатным решением для создания конференции на вашем сайте.Основныевозможности:
· Поддержкапопулярных серверов баз данных
· Неограниченноеколичество форумов и сообщений в них
· Интерфейсс поддержкой нескольких языков
· Закрытыеи общедоступные форумы
· Мощноесредство поиска
· Системаличных сообщений
· Полнаяизменяемость внешнего вида
phpBB второйверсии был полностью переписан со времен первоначального выпуска. Версия 2фокусируется на модульном дизайне профессионального уровня, высокой степенибезопасности, многоязычном интерфейсе, поддержке множества серверов баз данныхи возможностях полной настройки внешнего вида – и всё при низком потреблении системныхресурсов.
phpBBосновывается на PHP, наиболее быстроразвивающемся языке исполнения скриптов настороне сервера, что имеет следствием наиболее богатый по функциям форум из всехсуществующих.
Кроме того,phpBB разрабатывается на основе открытых исходных кодов, а значит не требуетоплаты, взносов или подписки, не имеет ограничений к модификации. Прибавьте кэтому огромное дружески настроенное сообщество phpBB и вы получите отличноерешение для организации общения на вашем сайте!
Инсталляция
· Простоймеханизм инсталляции, позволяющий создать работоспособный форум в течениесчитанных минут.
· Возможностьполного обновления с версий 1.x.
Поддержкабаз данных
/> phpBBиспользует механизм абстракции от конкретных баз данных, что позволяетреализовать поддержку нескольких их видов:
· MySQL3.2x
· PostgreSQL7.x
· MicrosoftSQL Server 7/2000
· MicrosoftAccess (через ODBC)
· атакже поддержка других баз данных в будущем
Безопасность
· Приразработке форума безопасность считалась главным приоритетом.
· Мощнаяи всестороння система авторизации.
· Надежныеметоды шифрования для безопасного хранения паролей в базе данных.
· Поддержкасессий cookie и URI.
Отсутствиеограничений для форумов и категорий
· Возможностьсоздания неограниченного количества форумов с произвольным числом категорий.
· Закрытыефорумы и форумы для определенных групп пользователей.
· Мощныесредства осуществления поиска.
Публикациясообщений
· Форматированиесообщений при помощи различных начертаний и размеров шрифтов, а такжеотображение цитат, кода, рисунков и автоматическая подсветка URL.
· Поддержкастандартных и расширенных тегов BBCode и некоторых тегов HTML.
· Уведомленияоб ответе в темах по e-mail.
· Мощноесредство подписки на уведомления в теме.
· Оригинальныесмайлики для выражения эмоций.
Гибкостьпользовательских групп и прав доступа к форуму
· Мощнаясистема управления доступом форумов, пользователей и групп.
· Управлениедоступом к форуму заданных групп пользователей.
· Управлениевсеми аспектами публикации сообщений.
· Возможностьограничения доступа к просмотру, публикации, ответам и множеству других опций.
Возможностипользователей
· Неограниченноеколичество участников.
· Созданиеличного профиля.
· Подсчетколичества сообщений и устанавливаемые администратором ранги пользователей.
· Подобнаяe-mail система обмена личными сообщениями
· Поддержкалокальных, удаленных и загружаемых аватар
Возможностимодераторов
· Редактированиетем.
· Массовоеудаление / перемещение / закрытие / открытие тем.
· Разделениетем.
· Возможностьавтоматической чистки старых или неотвеченных сообщений для каждого форума.
Легкий виспользовании центр администрирования
· Общаяконфигурация конференции.
· Настройкафорумов и категорий.
· Легкостьрезервного копирования и восстановления базы данных.
· Запретимен пользователей.
· Авторизацияпользователей.
· Автоцензорслов.
· Полноеуправление участниками.
· Настройкасмайликов.
· Опциональнаяпроверка наличия новых сообщений.
· Расширенноеуправление запрещением доступа к форуму – бан по e-mail, имени пользователя, поодному или группе IP адресов, имени домена.
· РегистрацияIP-адресов пользователей и сообщений.
· Массоваярассылка почты администратором пользователям и группам
Стили инастройка внешнего вида
· Возможностьвыбора среди массы доступных стилей.
· Отделенныеот кода шаблоны для легкости внедрения или интеграции дизайна.
· Полноеуправление шрифтами и цветами через CSS.
· Совместимостьстиля по умолчанию со стандартами XHTML 1.0 и HTML 4.01 консорциума W3C.
Поддержка
Всё этоподдерживается большим, постоянно растущим и дружелюбным сообществом со всегомира, готовым оказать помощь по любым проблемам, предложениям или просто пообщаться!
2.Использование формул в сети Интернет
 
Естественнонаучныетекстовые ресурсы
Важнойособенностью многих образовательных и научных ресурсов являются специфическиечерты естественнонаучных текстов. Естественнонаучные тексты составляют огромнуючасть всего спектра электронных образовательных ресурсов, включая математику,физику, экономические науки, биологию и т.д.
Во многихестественнонаучных текстах одной из основных компонент являются математическиеформулы. Поэтому грамотная работа с формулами имеет ключевое значение дляэффективной информационной поддержки многих направлений обучения.
Отметим, чтоматематические формулы в виртуальном образовательном процессе могутиспользоваться более широко, чем просто в электронных текстах. Например, этомогут быть форумы, чаты и другие формы обмена информацией в электронном виде,специализированные электронные практикумы по естественным наукам и т.д. – здесьтакже существуют проблемы, связанные с электронной обработкой математическихформул. Развитие языков разметки и концепция разделения содержания ипредставления позволяют подойти к проблеме представления естественнонаучнойинформации комплексно и на основе стандартов./>Анализ существующих подходов
Классическойсредой работы с естественнонаучными текстами является система TeX,разработанная Д. Кнутом. Большой популярности TeX'а и его потомков(AMSTex, LaTeX и др.) способствовал ряд факторов. Во-первых, формализм ТеХ'аоснован на идее разделения содержания и представления. Как правило, такогологического структурирования вполне достаточно, чтобы ТеХ сгенерировалполиграфический вариант текста высокого качества. Доводка внешнегопредставления текста имеющимися в TeX'е средствами полиграфической настройкиможет проводиться на втором этапе работы. Это наиболее перспективный подход,когда внешнее представление документа генерируется автоматически из логическойразметки текста, сделанной человеком.
TeX являетсяпервой системой, в которой угадано основное направление развития представленийтекстовой информации в распределенных информационных системах. Используемые вTeX'e, и особенно в его клонах, принципы разметки текста и отделения содержанияот представления, лежат в основе современных подходов к обработкеструктурированной текстовой информации. Конечно, в ТеХ'е все эти возможностииспользуются нерегулярно, и в незначительных масштабах. Кроме того, формализмТеХ'а не соответствует современным формализмам разметки текстов, основанных наязыке XML.
В последнеевремя для разработки математических текстов стал активно использоватьсяредактор MS Word, включающий специальные возможности для создания формул (MSEquation Editor, MathType). Подход, реализованный в этом редакторе, болеедоступен массовому пользователю, чем LaTeX, не требует установки дополнительногопрограммного обеспечения. Минусы также очевидны. Во-первых, полиграфическоекачество математических формул в Word'е значительно ниже, чем то, котороегенерирует система ТеХ. Во-вторых, DOC-формат является принципиально закрытымформатом, мало пригодным для работы в открытых системах. Из этого, в частности,следует непригодность DOC-формата для публикации информации в Интернете –приходится конвертировать текст либо в HTML (причем хорошо известнаколоссальная перегруженность структуры HTML-файла, который генерируетсяВордом), либо в другой закрытый, но более приспособленный для обмена форматPDF. Есть и другие довольно существенные недостатки. Вообще, с точки зрениясовременного понимания того, как работать со структурированной текстовойинформацией, идеология, заложенная в редакторе Word, является значительно болееустаревшей, чем в появившейся намного раньше системе TeX.
Отметим идругую проблему. Наличие нескольких стандартов представления математических иестественнонаучных текстов вносит очень серьезную путаницу. Например, ужесегодня многие сталкиваются с той проблемой, что организаторы разных научныхконференций требуют тексты в разных форматах – кто-то в LaTeXе, кто-то вWord'е. Информационная среда заполняется информацией, сформатированной всовершенно разных, несовместимых стандартах. Результат – потеря целостностиинформационной среды, постоянные проблемы с чтением, использованием иобработкой текстов в разных форматах.
/>Кнастоящему времени созданы все необходимые технологические условия для решенияэтих проблем. Созданы нужные открытые стандарты как для работы с текстамипроизвольного характера, так и для представления таких специфических объектов,как математические формулы. В частности, можно говорить и о решениивышеперечисленных проблем через создание «канонического» формата представленияматематических и естественнонаучных текстов на основе имеющихся сегодняоткрытых стандартов. Канонический формат представления научных иобразовательных текстов, это такой формат, который
1. базируетсяна принципе разделения представления и содержания документа.
2. основанна разметке текстов логического уровня.
3. используетдля представления документов открытые широко признанные стандарты.
4. удобендля автоматической обработки, распространения и хранения информации.
5. предоставляетвозможность конверсии текстов, представленных в каноническом формате, в другиераспространенные форматы представления естественнонаучной информации и обратно.
6. допускаеттрансляцию в различные (поли) графические представления, как электронные, так ибумажные.
7. допускаетбогатую «интеллектуальную» обработку документа достаточно легкими онлайновымипрограммными средствами.
Базой длясоздания такого формата служит расширяемый язык разметки XML. Оченьсущественным шагом в этой области является появление диалекта XML – языкаMathML, ориентированного на описание математических формул. MathML интересен помногим причинам. Во-первых, формат MathML основан на языке разметки XML, чтопозволяет использовать большое количество наработанных компонент и библиотек.Во-вторых, формат MathML реализует два вида представления: презентационное исодержательное. В-третьих, формат MathML является открытым стандартом, поддерживаемымконсорциумом W3, что очень важно для построения сложных систем, ориентированныхна использование широкими массами пользователей. В своей «презентационной»части MathML идеологически весьма близок TeX-формату.
С учетомвышеперечисленных плюсов, оптимальным решением является принятие формата MathMLв качестве канонического формата обработки и представления математическихформул. Вообще, когда говорят об обработке математических формул, топодразумевают всю цепочку: ввод формул пользователем, хранение формул,обработка формул, отображение формул.
Когда речьидет о вводе формул пользователем, то можно рассматривать две основныеситуации: создание, редактирование и представление математических текстов, иввод формул в различных прикладных приложениях и Web-сервисах, в частности,электронных форумах и учебных программных комплексах. Решение задач обработкиестественнонаучной информации является самостоятельной и весьма объемнойпроблемой.
TeX
TEΧ (обычным текстом – TeX) –система компьютерной вёрстки, разработанная американским профессороминформатики Дональдом Кнутом в целях создания компьютерной типографии. В неёвходят средства для секционирования документов, для работы с перекрёстнымиссылками и для набора сложных математических формул.
Названиепроизносится как «тех» (от греч. τέχνη – «искусство», «мастерство»).В написании буква E опущена ниже T и X.
Документынабираются на собственном языке разметки в виде обычных ASCII-файлов,содержащих информацию о форматировании текста или выводе изображений. Эти файлы(обычно имеющие расширение «.tex») транслируются специальнойпрограммой в файлы «.dvi»(device independent – «независимые от устройства»),которые могут быть отображены на экране или напечатаны. DVI-файлы можноспециальными программами преобразовать в PostScript, PDF, или другойэлектронный формат.
ЯдроTeX’а представляет собой язык низкоуровневой разметки, содержащий командыотступа и смены шрифта. Огромные возможности в TeX’е предоставляют готовыенаборы макросов и расширений. Наиболее распространённые расширения стандартногоТеХ’а (наборы шаблонов, стилей и т.д.): LaTeX (произносится«лате́х») и AMS-TeX. При использовании пакета расширения LaTeXможно превратить разросшуюся статью в книгу изменением одного слова в исходнике,вставлять оглавление одной командой, не задумываться о нумерации разделов,теорем, рисунков. Есть много пакетов для оформления химических формул(например, пакет XymTeX), диаграмм (xypic), создания презентаций и визитныхкарточек и тому подобного.
Распространённыекомплекты вёрстки на основе ТеХ’а: для Windows – TeX Live или MikTeX, для UNIX-подобныхсистем – TeX Live или teTeX.
Длясоздания шрифтов совместно с TeX’ом используется специально разработаннаясистема METAFONT, в которой шрифты описываются программами наспециализированном языке Meta. Могут также использоваться векторные шрифты вформате PostScript Type 1, TrueType и OpenType.
TEΧ применяется в исходныхтекстах Википедии для набора математических формул.История
Первыйтом книги «Искусство программирования» Д. Кнута был опубликован в 1969году и печатался методом монотипии, технологии XIX века, которая давала навыходе издание в «хорошем классическом стиле», что нравилось Кнуту. Когда в1976 году публиковалось второе издание второго тома, всю книгу пришлосьнабирать вновь, поскольку монотипия почти повсеместно была замещенафотографической техникой, и оригинальные шрифты больше не использовались.Однако, когда 30 марта 1977 года Кнут получил новые оттиски, он увидел что онивыглядят ужасно. Примерно в это же время Кнут впервые увидел результат работывысококачественной цифровой типографической системы, и заинтересовалсявозможностями цифровой типографии. Не оправдавшие ожиданий оттиски дали емудополнительный толчок к тому чтобы решить проблему раз и навсегда, разработавсвою типографическую систему. 13 мая 1977 года он написал заметку самому себе,описывающую базовые возможности TeX.
Онпланировал завершить систему в свой творческих отпуск 1978 года, но получилосьтак что язык был зафиксирован лишь в 1989 году, более 10-ти лет спустя. Летом1978 года, когда Кнут писал первую версию TeX, Guy Steele был вСтэнфорде; осенью того же года он вернулся в МТИ и переписал систему ввода /вывода TeX под операционную систему ITS. Первая версия TeX была написана наязыке программирования SAIL и работала на PDP-10 под операционной системойWAITS. Для следующих версий Кнут изобрёл концепцию «грамотногопрограммирования» (англ. literateprogramming), способ получениясовместимого исходного кода и документации к нему (в виде текста на TeX,конечно) из одного и того же оригинального файла. Этот язык был назван WEB ипроизводил программы на Паскале.
Новая,переписанная с нуля версия TeX была издана в 1982 году и названа TeX82. Помимодругих изменений, первоначальный алгоритм переносов был заменён новым,написанным Frank Liang. TeX82 также использовал арифметику сфиксированной запятой вместо арифметики с плавающей запятой, с тем чтобыобеспечить воспроизводимость результата на различном оборудовании. Помимоэтого, под нажимом Guy Steele, в TeX82 появился настоящий,тьюринг-полный язык программирования.
В1989 году Дональд Кнут выпустил новую версию TeX и METAFONT.
MathML
MathML (от англ. Mathematical Markup Language, язык математическойразметки) – это приложение XML, используемое для представления математическихсимволов и формул в документах WWW. MathML рекомендован математической группойW3C.
СпецификацияMathML версии 1.01 вышла в июле 1999, в феврале 2001 появилась версия 2.0. Воктябре 2003 была опубликована вторая редакция MathML версии 2.0, котораяявляется на настоящий момент последней спецификацией, выпущенной математическойгруппой W3C.
MathMLрассматривает не только представление, но и смысл элементовформулы. Также разрабатывается система разметки математической семантики,призванная дополнить MathML. Она называется OpenMath.
MathML имеет 2 версии – Presentation MathML и Content MathML.Пример:
В TeX описание
 
x = \frac {-b \pm \sqrt {b^2 – 4ac}} {2a}
используетсядля представления формулы
/>
Нижеприведено описание этой формулы с помощью MathML:

x
=



-
b

±



b
2

-

4

a

c





2

a



XML-структураMathML обеспечивает широкую область использования и позволяет быстро отображатьформулы в приложениях, таких как браузеры, а также легко интерпретировать ихзначения в математических программных продуктах./>Поддержкапрограммного обеспечения
Существуетмножество утилит для преобразования математических выражений в MathML, включаяконвертеры между TeX и MathML.
Основнымибраузерами, непосредственно поддерживающими MathML, являются последние версииMozilla и его разновидности. Начиная с бета-сборки 9656 (от 16 ноября 2007),этот язык поддерживает также Opera. Многие другие браузеры поддерживают этотформат при установке соответствующих плагинов. Например, в Internet Explorerдля поддержики MathML используется плагин MathPlayer.
Крометого, MathML поддерживается основными офисными программами, такими какMicrosoft Word и OpenOffice.org, а также математическими программнымипродуктами, например, Mathematica, Maple.
Рядрешений
Рассмотрим2 варианта решения проблемы отображения формул на конкретных примерах.
Википедия(http://ru.wikipedia.org)
Дляматематических формул MediaWiki использует разметку TeX'а. Но, в зависимости отпользовательских настроек и сложности выражения, они могут отображаться либокак PNG-рисунки, либо в обычной HTML-разметке.Общие положения
· Исходныйкод математической формулы записывается внутри тега ….
· Шаблоны,переменные и параметры MediaWiki не функционируют внутри этого тега.
· Пробелыигнорируются (ТеХ их сделает сам).
· Пустыестроки не разрешаются.
· Буквыдолжны быть набраны только латинским шрифтом. В случае написания даже однойбуквы кириллицей программа сообщает об ошибке.
· Каждаябуква считается переменной и воспроизводится курсивом, а цифры – прямымшрифтом (исключение – название функций и операций). Чтобы не допуститькурсивного начертания для прочего текста, используйте команды \mboxили \mathrm.Например, запись \mbox{abc}_\mathrm{def}отображается как abcdef.
· Символызаписываются с помощью «команд»[2], которые начинаются с «обратногослэш» (\) и состоят либо из командного слова из латинских букв, либо из символа(не буквы). В первом случае после командного слова должен быть обязательнопробел или другая команда.
· Командымогут иметь аргументы: {обязательные} и [необязательные].
· Переводыстрок внутри тега …не отображаются, поэтому, чтобы сделать код более читабельным, можно вставлятьпереводы строк после каждого выражения или строки матрицы.
· Еслив настройках пользователя не выбрана опция «Всегда генерировать PNG», топростые формулы будут отображаться как в HTML-разметке. Чтобы заставить ихвсегда отображаться как PNG-рисунки, следует в начале или в конце формулывставить один из знаков принудительного пробела (~ \, \!). Cравните:
a (1 + e^2 / 2)  a (1 + e2 / 2)
~a (1 + e^2 / 2)                                                         />
df(x) = f'(x) dx df(x) = f'(x) dx
df(x) = f'(x) dx\,
/>
· Чтобысоздать выражения вида />, используйте команду\stackrel{выражение1} {выражение2}, где выражение1 – то, что будет отображатьсянад строкой, выражение2 – то, что останется в строке. Код приведённой формулы:
A\stackrel{f} {\longrightarrow}B.
· Десятичнуюзапятую в десятичных дробях рекомендуется заключать в фигурные cкобки, чтобыизбежать ненужного тонкого пробела после запятой. Сравните:~\pi=3,1415\dots
/> ~\pi=3 {,} 1415\dots
/> Исходные командыСлужебные значки
· \сигнальный символ (команд);
· {началогруппы;
· }конец группы;
· _нижний индекс;
· ^верхний индекс;
· ~неразрывный пробел.Шрифты
Буква
Команда
Буква
Команда
Буква
Команда
/> \Alpha \alpha
/> \Iota \iota
/> \Sigma \sigma
/> \Beta \beta
/> \Kappa \kappa
/> \varsigma
/> \Gamma \gamma
/> \Lambda \lambda
/> \Tau \tau
/> \Delta \delta
/> \Mu \mu
/> \Upsilon \upsilon
/> \Epsilon \epsilon
/> \Nu \nu
/> \Phi \phi
/> \varepsilon
/> \Xi \xi
/> \varphi
/> \Zeta \zeta
/> \Pi \pi
/> \Chi \chi
/> \Eta \eta
/> \varpi
/> \Psi \psi
/> \Theta \theta
/> \Rho \rho
/> \Omega \omega
/> \vartheta
/> \varrho
Спомощью соответствующих команд можно изменять вид шрифта (гарнитуру) и его размеры:
Вид шрифта
Команда
Изображение Жирный шрифт (греческий) \boldsymbol
/> Жирный шрифт (векторы) \mathbf
/> Ажурный шрифт \mathbb
/> Рубленый шрифт \mathsf
/> Готический шрифт \mathfrak
/> Рукописный шрифт \mathcal
/> Прямой шрифт \mathrm abcd Прописные наклонным шрифтом \mathit
/> Бинарные операции
Команда
Изображение + –
/> \amalg \setminus
/> \pm \mp
/> \ast \star *
/> \centerdot \cdot \bullet
/> \circ \bigcirc
/> \odot \circleddash \circledast \circledcirc
/> \oplus \otimes \ominus \oslash
/> \boxplus \boxtimes \boxminus \boxdot
/>
Команда
Изображение \sqcap \sqcup
/> \cap \cup \uplus
/> \Cap \Cup
/> \doublecap \doublecup
/> \dagger \ddagger
/> \times \div \divideontimes
/> \ltimes \rtimes
/> \leftthreetimes \rightthreetimes
/> \vartriangle \triangledown
/> \triangle \mathcal 5
/>
Команда
Изображение \bigtriangleup \bigtriangledown
/> \triangleright \triangleleft
/> \diamond
/> \bowtie
/> \vee, \lor \wedge, \land
/> \veebar \barwedge
/> \doublebarwedge
/> \curlywedge \curlyvee
/> \wr
/> \intercal
/> \dotplus
/> Символы математическихфункций
Принаписании стандартных функций обратите внимание:Правильно: \sin x + \ln y +\operatorname{sgn}\, z
/> Неправильно: sin x + ln y + sgn z
/>
Тригонометрические \sin
/> \cos
/> \tan
/> \cot
/> \sec
/> \csc
/> \arcsin
/> \arccos
/> \arctan
/> \arccot
/> \arcsec
/> \arccsc
/>
Гиперболические \sinh
/> \cosh
/> \tanh
/> \coth
/>
Прочие \arg
/> \deg
/> \det
/> \dim
/> \exp
/> \lg
/> \ln
/> \log
/> \max
/> \min
/> \mod
/> \bmod
/> \pmod
/> \gcd
/> \hom
/> \inf
/> \ker
/> \lim
/> \liminf
/> \limsup
/> \Pr
/> \sup
/>
Электронная библиотекаПопечительского советамеханико-математического факультета  МГУ (http://lib.mexmat.ru)
На форумепоявился новый тег \math. Если окружить парой таких тегов формулу в TeX'е, то всообщение автоматически будет помещена картинка с написанной формулой. Примернотак: пишете
Код: [math]$n \in \mathbb{N}$[/math]
ив сообщении появляется вот такая картинка: />.
Апри наведении на нее указателя мышки можно увидеть исходный код картинки, тоесть то, что заключено между тегами math.
Теперьразмеры картинок регулируемы. Этот параметр можно изменять в собственномпрофиле. Для Гостей этот параметр неизменяем.
QuickStart для тех, кто пользуется MathType.
Последовательностьдействия для использования MathType такая:
1)набрать формулу в MathType
2)(требуется выполнять только первый раз – затем настройки сохранятся и этотпункт можно пропускать)
a) Вменю MathTypePreferences выбрать Translators. В открывшемся окне в меню«Translator» выбрать один из TeX-трансляторов (например «TeX – AMS-LateX»)
б) убрать галочку с «IncludeMathType data in translation»
3)Скопировать формулу
4)Вставить в окно ввода в форуме
5)Выделить вставленный текст и нажать кнопку Math. Ура – формула готова.
Вотпример, генерированный MathType:
/>
 
Упрощеннаяформа записи формул в сообщениях.
1.Последовательность $…$ теперь автоматически окружается тегом math, еслисодержимое не разбито переносом строки.
2.Последовательность $$…$$ теперь тоже автоматически окружается тегом math.
3.Пункты 1 и 2 не выполняются, если указанные последовательности находятся внутритегов math или code
4.Для отмены автозамены (в случае, когда Вы хотите употребить знак доллара в егообычном смысле) заключите Ваше сообщение в тег …(скобки замените на квадратные)
Как писать формулы.
Тег math преобразует содержимое в картинку, которая получилась бы,если бы мы составили LaTeX-документ с такой преамбулой:
Код:
\documentclass{article}
\usepackage{amsmath}
\usepackage {amsfonts, amssymb}
\usepackage{amsthm}
\usepackage[cp1251] {inputenc}
\usepackage [matrix, arrow, curve] {xy}
\usepackage [english, russian] {babel}
\usepackage[final] {graphicx}
\usepackage{mathrsfs}
\pagestyle{empty}
\begin{document}
1. Какие бывают формулы.
Формулы бывают обычные и выключные (расположенные на отдельнойстроке по центру страницы). Обычная формула окружается как скобками символом $,а выключная – парой символов $$. Пример обычной формулы:
/>
А вот выключная формула:
/>

Эти формулы были созданы при помощи следующих кодов:
Код:
[math] По определению, $\tg x = \frac {\sin x} {\cos x}$. Это все знают. [/math]
[math] Некоторые полагают, что $$\sin^2 x = \sin {x^2},$$ но это неверно! [/math]
2. Греческиебуквы
Код:
[math]$\Gamma$[/math] [math]$\Delta$[/math] [math]$\Theta$[/math]
[math]$\Lambda$[/math] [math]$\Xi$[/math] [math]$\Pi$[/math]
[math]$\Sigma$[/math] [math]$\Upsilon$[/math] [math]$\Phi$[/math]
[math]$\Psi$[/math] [math]$\Omega$[/math]
/>/>/>/>/>/>/>/>/>/>
4. Верхние и нижниеиндексы
Верхнийиндекс задается при помощи крышки ^. Символ, непосредственно следующий закрышкой, будет служить верхним индексом для того, что стоит перед крышкой:
/>
Код: [math]$4^2 = 2 ^ 4 $, exp(x) – это то же самое, что и $e ^x$[/math]
Аналогичнонижний индекс задается знаком _:
/>
Код: [math] Рассмотрим числовую последовательность $a_n = \frac 1 n$[/math]

Верхний инижний индексы можно сочетать, причем порядок следования индексов не важен:
/>
Код: [math] $C_n^0 = C ^n _n = 1 $[/math]
Если вкачестве верхнего или нижнего индекса вы хотите использовать не один символ, ацелое выражение, то это выражение необходимо окружить фигурными скобками:
/> [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. вслучае ошибки при данном процессе выводится соответствующее предупреждение («[unparseableor 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));

Первый хук:

$text = preg_replace(«#\[tex\] (.*?)\[/tex\]#si», «[tex:$uid]\\1 [/tex:$uid]»,$text);
?>
Второй хук:

$latexrender_path = «latexrender»;
$latexrender_path_http = «latexrender»;
include_once ($latexrender_path. "/class.latexrender.php»);
preg_match_all(«#\[tex:$uid\] (.*?)\[/tex:$uid\]#si»,$text,$tex_matches);
$latex = new LatexRender ($latexrender_path. "/pictures»,$latexrender_path_http. "/pictures», $latexrender_path. "/tmp»);
for ($i=0; $i
$pos = strpos ($text, $tex_matches[0] [$i]);
$latex_formula = html_entity_decode ($tex_matches[1] [$i]);
$url = $latex->getFormulaURL ($latex_formula);
$alt_latex_formula = htmlentities ($latex_formula, ENT_QUOTES);
$alt_latex_formula = str_replace («\r», «
»,$alt_latex_formula);
$alt_latex_formula = str_replace («\n», « »,$alt_latex_formula);
if ($url!= false) {
$text = substr_replace ($text, «», $pos, strlen ($tex_matches[0][$i]));
} else {
$text = substr_replace ($text, «[unparseable or potentiallydangerous latex formula]»,$pos, strlen ($tex_matches[0] [$i]));
}
}
?>
Скрипт,используемый для обработки формул в массиве, включающий в себя класс:

class LatexRender {
var $_picture_path =».»;
var $_picture_path_httpd =».»;
var $_tmp_dir =».»;
var $_latex_path = «/usr/bin/latex»;
var $_dvips_path = «/usr/bin/dvips»;
var $_convert_path = «/usr/bin/convert»;
var $_identify_path=»/usr/bin/identify»;
var $_formula_density = 120;
var $_xsize_limit = 500;
var $_ysize_limit = 500;
var $_string_length_limit = 500;
var $_font_size = 10;
var $_latexclass = «article»;
var $_tmp_filename;
var $_image_format = «gif»; // или«png»
var $_latex_tags_blacklist = array (
«include», «def», «command», «loop», «repeat», «open», «toks», «output»,«input», «catcode», «name», «^^», «\\every», «\\errhelp», «\\errorstopmode», «\\scrollmode»,«\\nonstopmode», «\\batchmode», «\\read», «\\write», «csname», «\\newhelp», «\\uppercase»,«\\lowercase», «\\relax», «\\aftergroup», «\\afterassignment», «\\expandafter»,«\\noexpand», «\\special»
);
var $_errorcode = 0;
var $_errorextra = «»;
function LatexRender ($picture_path,$picture_path_httpd,$tmp_dir){
$this->_picture_path = $picture_path;
$this->_picture_path_httpd = $picture_path_httpd;
$this->_tmp_dir = $tmp_dir;
$this->_tmp_filename = md5 (rand());
}
function setPicturePath($name) {
$this->_picture_path = $name;
}
function getPicturePath() {
return $this->_picture_path;
}
function setPicturePathHTTPD($name) {
$this->_picture_path_httpd = $name;
}
function getPicturePathHTTPD() {
return $this->_picture_path_httpd;
}
function getFormulaURL ($latex_formula) {
$latex_formula = preg_replace («/>/i», «>»,$latex_formula);
$latex_formula = preg_replace («/
$formula_hash = md5 ($latex_formula);
$filename = $formula_hash.».».$this->_image_format;
$full_path_filename = $this->getPicturePath(). "/».$filename;
if (is_file ($full_path_filename)) {
return $this->getPicturePathHTTPD(). "/».$filename;
} else {
if (strlen ($latex_formula) > $this->_string_length_limit) {
this->_errorcode = 1;
return false;
}
for ($i=0;$i_latex_tags_blacklist);$i++) {
if (stristr ($latex_formula,$this->_latex_tags_blacklist[$i])){
$this->_errorcode = 2;
return false;
}
}
if ($this->renderLatex ($latex_formula)) {
return $this->getPicturePathHTTPD(). "/».$filename;
} else {
return false;
}
}
}
function wrap_formula ($latex_formula) {
$string = «\documentclass [».$this->_font_size. «pt] {».$this->_latexclass.»}\n»;
$string.= «\usepackage[latin1] {inputenc}\n»;
$string.= «\usepackage{amsmath}\n»;
$string.= «\usepackage{amsfonts}\n»;
$string.= «\usepackage{amssymb}\n»;
$string.= «\pagestyle{empty}\n»;
$string.= «\begin{document}\n»;
$string.= «$».$latex_formula. «$\n»;
$string.= «\end{document}\n»;
return $string;
}
function getDimensions($filename) {
$output=exec ($this->_identify_path. "».$filename);
$result=explode(«»,$output);
$dim=explode («x»,$result[2]);
$dim [«x»] = $dim[0];
$dim [«y»] = $dim[1];
return $dim;
}
function renderLatex ($latex_formula) {
$latex_document = $this->wrap_formula ($latex_formula);
$current_dir = getcwd();
chdir ($this->_tmp_dir);
$fp = fopen ($this->_tmp_filename.».tex», «a+»);
fputs ($fp,$latex_document);
fclose($fp);
$command = $this->_latex_path.» – interaction=nonstopmode».$this->_tmp_filename.».tex»;
$status_code = exec($command);
if (!$status_code) {$this->cleanTemporaryDirectory(); chdir ($current_dir);$this->_errorcode = 4; return false;}
$command = $this->_dvips_path.» – E».$this->_tmp_filename.».dvi».»– o».$this->_tmp_filename.».ps»;
$status_code = exec($command);
$command = $this->_convert_path.» – density».$this->_formula_density.  .»– trim – transparent \ «#FFFFFF\»».$this->_tmp_filename.».ps».
$this->_tmp_filename.».».$this->_image_format;
$status_code = exec($command);
$dim = $this->getDimensions ($this->_tmp_filename.».».$this->_image_format);
if (($dim [«x»] > $this->_xsize_limit) or ($dim [«y»] >$this->_ysize_limit)) {
$this->cleanTemporaryDirectory();
chdir ($current_dir);
$this->_errorcode = 5;
$this->_errorextra =»: «. $dim [«x»]. «x». number_format ($dim[«y»],0, «», «»);
return false;
}
$latex_hash = md5 ($latex_formula);
$filename = $this->getPicturePath(). "/».$latex_hash.».».$this->_image_format;
$status_code = copy ($this->_tmp_filename.».».$this->_image_format,»../../».$filename);
$this->cleanTemporaryDirectory();
if (!$status_code) {chdir ($current_dir); $this->_errorcode =6; return false;}
chdir ($current_dir);
return true;
}
function cleanTemporaryDirectory() {
$current_dir = getcwd();
chdir(»../../»);
unlink ($this->_tmp_dir. "/».$this->_tmp_filename.».tex»);
unlink ($this->_tmp_dir. "/».$this->_tmp_filename.».aux»);
unlink ($this->_tmp_dir. "/».$this->_tmp_filename.».log»);
unlink ($this->_tmp_dir. "/».$this->_tmp_filename.».dvi»);
unlink ($this->_tmp_dir. "/».$this->_tmp_filename.».ps»);
unlink ($this->_tmp_dir. "/».$this->_tmp_filename.».».$this->_image_format);
chdir($current_dir);
}
}
?>


Заключение
 
В даннойработе были достигнуты следующие результаты:
· Собран и изучен материал, связанный с использованием формул вИнтернете;
· Изучен форумный движок phpBB3;
· Созданы PHP скрипты для взаимодействия с форумом.

Списоклитературы
 
1.  Афонин С.М. Программированиена языке PHP / Афонин С.М. – М.: НТ Пресс, 2007. – 256 с.: ил.
2.  Колисниченко Д.Н. СамоучительPHP 5. – СПб: Наука итехника, 2004. 576 с.: ил.
3.  Мазуркевич А. PHP: настольная книгапрограммиста / Александр Мазуркевич, Дмитрий Еловой. – Мн.: Новое знание, 2003.– 480 с.: ил.
4.  Томсон Лаура. РазработкаWeb-приложений на РНР и MySQL: Пер. с англ. / Лаура Томсон, Люк Веллинг. –2-е изд., испр. – СПб: ООО «ДиаСофтЮП», 2003. – 672 с.
5.  Ульман Л. Основы программированияна РНР: Пер. с англ. – М.: ДМК Пресс, 2001. – 288 с.: ил. (Самоучитель).
6.  Харрис Э. PHP/MySQL для начинающих / Пер. сангл. – М.: КУДИЦ-ОБРАЗ, 2005. – 384 с.
7.  ru.wikipedia.org
8.  lib.mexmat.ru
9.  avi.ru
10. http://teacode.com


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.