Реферат: Особенности создания математических формул в Web

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ

Учреждение образования«Гродненский Государственный университет

имени Янки Купалы»

Математический факультет

Кафедра теории функции, функционального анализа иприкладной математики

Особенности создания математическихформул в Web

Курсовая работа студента 2 курса Парахневича Юрия Николаевича

Научный руководитель:

доцент Вувуникян Ю.М.

                                                                            

Допущен к защите

29 апреля 2002 г.

Зав.кафедрой ТФФА и ПМ

Ровба Е.А.

Гродно, 2002

Содержание:

1.<span Times New Roman"">   

Введение.

2.<span Times New Roman"">   

Язык математической разметкиMathML.

3.<span Times New Roman"">   

Создание математическихформул в Webс помощью MathBuilder

4.<span Times New Roman"">   

Заключение.

5.<span Times New Roman"">   

Приложение 1: Исходный кодпрограммы MathBuilderv1.01

6.<span Times New Roman"">   

Приложение 2: Скриншоты.

Введение.

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

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

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

   В настоящее время возникла новая средасвязи, представленная ЭВМ с сетевой структурой. Это открывает новые возможностидля передачи и представления математической информации.

2. Язык математическойразметки MahML.

Первоначально WWW предназначалась для ученых. Но в ходеиспользования WWW выяснилось,   чтоинформация, передаваемая по ее каналам, представляет интерес не только дляспециалистов. Но возможност ивключения математических выражений в HTMLоказались очень ограниченными. Статьи записывались в закодированной форме,основу которой составляли наборы символов ASCII.

   Несмотря на широкое распространение Web,недостаток поддержки научной связи ограничивает сферу ее применения.

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

   В последнее время первостепенную важностьприобретают различные способы автоматической обработки данных. Поэтому решение проблемы кодирования математическихзаписей для Web важнее, чем разрешение проблемы реализации, но и ее нельзяигнорировать

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

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

    дополнение квышесказанному, MathML должен согласовываться и с существующей HTML средой.

   Одним из способов согласования являетсяразвитие XML — упрощенного варианта SGML, разработанного для Web. XML позволяетвводить и использовать новые отметки. В то же время XML синтаксис тщательноопределяет структуру документа, что облегчает автоматическую обработку исопровождение больших массивов данных.

   XML подходит для разметки сложных испециализированных данных. В силу вышесказанного MathML можно определить какXML прикладную программу.XMLпредоставляет способ определения структуры и синтаксиса. Механизмы обработки ипредставления информации MathML требуют детальной разработки. Для обработкиданных MathML необходимо расширить возможности окон просмотра.

Общие принципы MathML:

Существуетглубокая связь между математическими идеями и их записью.

   Математическаязапись, выполненная с соблюдением правил, исключает двоякое толкование.

   В некоторых случаях символическая иматематическая структура записи эквивалентны. В подобных ситуациях  MathML предлагает использовать отметки типа

 , и.

   Рассмотрим пример: < (x + 2)^2>.Используя отметки MathML, его можно записать так :

   

   

    (

   

    x

    +

    2

   

    )

   

    2

   

В дополнение к отметкам представления MathML содержит ещепримерно 50 различных отметок. Используя эти отметки, предыдущий пример можнозакодировать так:

   

   

     x

    <PLUS/>

     2 

   

   

    <POWER/>

     2

   

Рассмотрим пример :

x^ 2 + 4x+ 4 =0

     <MROW>

   

   

    x

    2

   

    +

   

    4

   ⁢    

    x

   

    +

    4

   

    =

    0

   

Здесьстоит обратить внимание на два аспекта: во-первых, в примере присутствуют отметкитипа MI,MN,MO и «вложенные» отметки типа MSUP и MROW, а во-вторых,отметки типа MROW используются для обозначения условия, в данном случаепредставленного  операндом "=".

   Отметки, содержащие данные, указывают на ихтип. Например, отметка MI указывает на идентификатор или переменную, а отметкаMN — на номер. Другие отметки  обозначаютсхему размещения. Каждая схема размещения содержит определенное числоподвыражений в сторогом порядке. Например,MSUP схема должна содержать вточности два подвыражения.

x = (-b + — sqrt( b ^ 2 — 4ac)) /2a:

   

    x

    =

   

   

   

    -

    b

   

    &PlusMinus

   

   

   

    b

    2

   

    -

   

    4

    ⁢

    a 

    ⁢

    c

   

   

   

   

   

    2

    ⁢

    a

   

   

   

Вэтом примере следует обратить внимание на то, что знак «плюс/минус» — специальный поименованный объект. MathML предоставляет большой список именматематических объектов.

Элементыпредставления соответствуют конструкциям традиционной математической записи ипозволяют описывать синтаксическую структуру математического выражения.Например, структура This улучшает качество математической записи и в техслучаях, когда не известена, например, разрешающая способность монитора. Элементыпредставления можно разделить на два класса: лексемы и схемы размещения.Существует также набор пустых элементов, используемых вместе с конкретнойсхемой размещения. Все лексемы (в синтаксическом смысле), включенные вматематическое выражение, должны быть помечены MathML отметками лексем. ТипыMathML лексем: идентификаторы (переменные, имена функций и т.д.), числа,операторы, заграждающие метки (например, круглые скобки) и строковые литералы.Для представления текста нематема

тическогохарактера используются элементы лексем. Схемы размещения — конструкторывыражений традиционных математических записей.

Лексемы:

          идентификаторы

         номер

         оператор

         заграждающая метка

      текст

  <MSPACE/>  пробел

         литерал строки

 

    Общая схема размещения :

    изменение стиля

    включение сообщения о синтаксической ошибке

 при сохранении размерасодержание становится невидимым.

     горизонтальная группировка любого числаподвыражений            <MFRAC>    формирование дроби из двух подвыражений

     формирование знака квадратного корня(радикала безиндекса)

    формирование радикала с определенныминдексом

    Таблицы и матрицы :

       таблица или матрица

          строка в таблице или матрице

          одно вхождение в таблицу или матрицу.

   Механизмы исполнения операторов и заграждающихметок  идентичны и более сложны посравнению с другими маркерами.

   Многиематематические символы типа интегрального символа, знака "+", круглыхскобок и т.д. имеют заданные по умолчанию атрибуты, которые могут включаться ви схемы.

   Многие операторы в каждой конкретной формемогут использоваться по-разному.

  Знак "+", например, в зависимостиот ситуации может быть как префиксом, так и инфиксом. Если оператор является первым подвыражением в иего длина превышает единицу, то используется префиксная форма; если же операторявляется последним подвыражением в , то правилами предусматриваетсяиспользование постфиксной формы. Инфиксная форма для операторов, включенных всхему типа , не используется. Если возникает ситуация выбора однойиз нескольких форм и не дано никаких дополнительных указаний, то право ееостается за пользователем. Существуют четыре атрибута, регулирующиесоотношениями между размерами  операторов, заграждающих меток и других элементов: stretchy, symmetric, maxsize иminsize. Например, если для символа maxsize=«3», это означает, чтоего размеры  могут превысить стандартныене более,  чем в три раза.

3.Создание математическихформул в Webс помощью MathBuilder

   Программа MathBuilder(рис.1) представляет собойприложение к системе создания математических формул MathType5. При публикацииматематических формул в webбез использования языкаматематической разметки MathML, с помощью представленияформулы в формате *.bmp, (*.gif) возникает проблема,связанная с неверным расположением формулы,

(рис.2)эту проблему можно решить с помощью некоторого HTMLкода, а именно

<TD>Текст1</TD>

Имя_Файла.bmp>

<TD>Текст2</TD>

</HTML>

 Но учитывая объёмы формул, используемые вматематической литературе, встаёт необходимость автоматизации этого процесса.Автоматизировать этот процесс может MathBuilder. Сама программа имеетпростой интерфейс (рис.2), меню «Файл» и «Редактировать». Меню «Файл» содержитв себе «Открыть» (Открытие файла в формате *.txt), «Сохранить» (Сохранениефайла в формате *.txt), «Экспортировать» (Экспорт файла в формат *.html),

«Выход»(Выход из программы). Меню «Редактировать» содержит в себе следующие функции: «Просмотр» (Открывается окно  браузера, в котором без сохранения можнопросмотреть результат работы),

 «Вставить рисунок» (позволяет вставить ссылкув файл на нужный рисунок), «Гиперссылка» (вставляет ссылку на интернетдокумент, помещая в файл ссылку на документ).

   Сам набор документа ничем не отличается отнабора текстового документа в редакторе «Блокнот». При нажатия «вставитьрисунок» программа предлагает выбрать файл рисунка (в данном случаематематическую формулу) и в поле набора текста появляется запись <imgsrc=Имя файла>

Этоозначает что в HTMLфайл будет включена ссылка на картинку. Надоотметить что при сохранении математической формулы, требуется сохранить её вкаталог, в котором находится сама программа MathBuilder. Эта процедурапредназначена для корректного отображения картинки браузером,

Ведьесли, к примеру, сохранить её в каталоге «мои документы» и указать программе наэтот каталог то в ссылке на картинку пропишется путь в этот каталог. А насервере, на котором будет находится той или иной документ, не будет этогокаталога, следовательно картинка отображаться не будет. Программа MathBuilderпредусматривает этот момент и поэтому она записывает ссылку на картинку так,как будто она находится в текущем каталоге. Если воспользовавшись встроеннымброузером картинка отображаться не будет, то это означает что нужнаяматематическая формула не находится в каталоге с программой.

   При разработке программы возникла однапроблема: Если пользователь, создав математическую формулу с системе MathTypeсохранит её в формате *.bmp(хотя MathTypeне предлагает сохранение в таком формате) то как ни странно файл сохранится взаданном формате, даже ярлык у этого файла будет таким, какой характерен дляфайлов с таким форматом, однако броузер InternetExplorerотображать этот рисунок не будет, т.к. в самом деле MathTypeсохранит файл с заданнымрасширением (bmp) но в формате gif. Следовательно, следуетсохранять файл в формате *.gif, тогда проблем такого типане будет.

Пояснениек исходному коду программы:

procedure TForm1.N2Click(Sender: TObject);

 begin

  WithOpenDialog1 do

  IfExecute Then

   Begin

   memo1.lines.loadfromfile(Filename);

   ExtractFilename(Filename);

   SaveDialog1.FileName := Filename;

   Filename := ' ';

   End;

 end;

этоткод обеспечивает открытие файла.

procedure TForm1.N3Click(Sender: TObject);

begin

    Memo1.Lines.SaveToFile(SaveDialog1.FileName);   // Сохранениефайла

end;

procedure TForm1.N4Click(Sender: TObject);

begin

with SaveDialog1 do                                         

  Ifexecute Then

    Memo1.Lines.SaveToFile(SaveDialog1.FileName); // Меню«Сохранить как.»

End;

//сейчас идёт описание самой главной части программы

procedureTForm1.N5Click(Sender: TObject);

varlist: TStringList;

    tmpString: string;

    i,CurrentSymbol,SeekSymbol, lastTag:integer;

    notFound: boolean;

begin

 With SaveDialog2 do

 If execute then

  Begin

  list:=TStringList.Create;

   for i:=0 to memo1.Lines.Count-1 dolist.Add(memo1.lines[i]);

   list.Insert(0,'');

   list.Add('');

// в этой части (смотрите выше) происходит вставкатэгов

//<html> перед набранным текстоми </html>после текста.

   for i:=1 to memo1.Lines.Count do

    begin

     lastTag:=1; tmpString:='';

     for CurrentSymbol:=1 to Length(List[i]) — 9 do

      if Copy(List[i], CurrentSymbol, 9) ='' then

            begin

             tmpString :=tmpString+''+

            Copy(List[i],lastTag,CurrentSymbol-lastTag)+

             '<tdalign=bottom>'+

            Copy(List[i],CurrentSymbol,SeekSymbol-CurrentSymbol+1) +'';

             lastTag:=SeekSymbol+1;notFound:=false;

            end;

           inc(SeekSymbol);

          end;

        end;

     if tmpString<>'' then

      begin

      tmpString:=tmpString+''+Copy(List[i],lastTag,Length(List[i])-lastTag+1)+'';

      List[i]:=''+tmpString+'';

      end;

    end;

   List.SaveToFile(Filename);

   list.Free;

  End;

end;

//В этой части происходит вставка таблицы (смотритестр. 9).

//Чтобы обеспечить корректное отображение формулыбраузером.

    В общем,код программы основан на нескольких принципах: на поиске тэга, в которомнаходится ссылка на математическую формулу, вставка таблицы, и экспортированиитекста в формат HTML. При написании программы самой сложной частьюоказалась вставка таблицы. В начале программа могла находить нужные тэги тольков том случае, если он находился отдельно в какой либо строчке. Далее, послеустранения вышеописанной ошибки, второй проблемой стала невозможность вставки вдокумент сразу несколько картинок, что непосредственно важно дляматематического документа. Самой последней проблемой была невозможность работыпрограммы на других машинах. Эта проблема была вызвана некорректным обращениемкомпонента программы со средой Windows. Решение оказалосьбанальным – я использовал браузер, отображающий результаты работы безсохранения (а в нём была проблема), который назначен Windowsпо умолчанию. И вот всепроблемы были решены.

Заключение:

    Изучение языка математической разметки «MathML»содержит в себе некоторые минусы:

1.<span Times New Roman"">    

Не все браузеры поддерживает«MathML».

2.<span Times New Roman"">    

Доскональное изучение «MathML»громоздко и сложно для обычного пользователя.

     На момент написания «MathBuilder»из браузеров, которые поддерживают язык математической разметки был только Mozilla0.9.9 и InternetExplorer5.5 остальные неподдерживают без плагинов (англ. plug-inдополнительная программадля выполнения каких либо специфических функций). Однако, метод которымпользуется MahBuilderподдерживается всеми браузерами.

Вышеописаннаяпрограмма, на мой взгляд,  вносит некийвклад в развитие математических представлений в Web, потому что на всехматематических сайтах, математические формулы представлены как на рисунке №3, то есть с новой строчки, что менее корректно выглядит, в отличии от рисунка№4, когда формула отображается в той же строке, что и текст. Следовательноцелесообразнее использовать метод, используемый в MathBuilder.

Приложение №1

Исходный код программы MathBuilder.

unitMyEditu;

interface

uses

 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,Dialogs,

 StdCtrls, ExtCtrls, Menus, ExtDlgs, shellapi;

type

  TForm1= class(TForm)

   Memo1: TMemo;

   OpenDialog1: TOpenDialog;

   SaveDialog1: TSaveDialog;

   MainMenu1: TMainMenu;

    N1:TMenuItem;

    N2:TMenuItem;

    N3:TMenuItem;

    N4:TMenuItem;

    N5: TMenuItem;

    N7:TMenuItem;

   SaveDialog2: TSaveDialog;

    N6: TMenuItem;

    N8:TMenuItem;

    N10:TMenuItem;

    N11:TMenuItem;

   OpenDialog3: TOpenDialog;

   OpenDialog2: TOpenDialog;

    N9:TMenuItem;

    N12:TMenuItem;

   procedure N2Click(Sender: TObject);

   procedure N3Click(Sender: TObject);

   procedure N4Click(Sender: TObject);

   procedure N5Click(Sender: TObject);

   procedure N6Click(Sender: TObject);

   procedure N8Click(Sender: TObject);

   procedure N10Click(Sender: TObject);

   procedure N11Click(Sender: TObject);

    procedure N12Click(Sender: TObject);

  private

    {Private declarations }

  public

    {Public declarations }

  end;

var

  Form1:TForm1;

implementation

uses Unit4;

//es Unit2;

{$R *.DFM}

procedure TForm1.N2Click(Sender: TObject);

begin

With OpenDialog1 do

  IfExecute Then

   Begin

   memo1.lines.loadfromfile(Filename);

   ExtractFilename(Filename);

   SaveDialog1.FileName := Filename;

   Filename := '';

   End;

end;

procedure TForm1.N3Click(Sender: TObject);

begin

    Memo1.Lines.SaveToFile(SaveDialog1.FileName);

end;

procedure TForm1.N4Click(Sender: TObject);

begin

with SaveDialog1 do

  Ifexecute Then

    Memo1.Lines.SaveToFile(SaveDialog1.FileName);

end;

procedure TForm1.N5Click(Sender: TObject);

var list: TStringList;

   tmpString: string;

   i,CurrentSymbol,SeekSymbol, lastTag: integer;

    notFound: boolean;

begin

 WithSaveDialog2 do

 If execute then

  Begin

 list:=TStringList.Create;

   fori:=0 to memo1.Lines.Count-1 do list.Add(memo1.lines[i]);

  list.Insert(0,'');

   list.Add('');

   fori:=1 to memo1.Lines.Count do

    begin

    lastTag:=1; tmpString:='';

     forCurrentSymbol:=1 to Length(List[i]) — 9 do

      ifCopy(List[i], CurrentSymbol, 9) = '' then

           begin

            tmpString := tmpString+''+

            Copy(List[i],lastTag,CurrentSymbol-lastTag)+

            ''+

            Copy(List[i],CurrentSymbol,SeekSymbol-CurrentSymbol+1) +'';

            lastTag:=SeekSymbol+1; notFound:=false;

           end;

          inc(SeekSymbol);

         end;

        end;

     iftmpString<>'' then

     begin

      tmpString:=tmpString+''+Copy(List[i],lastTag,Length(List[i])-lastTag+1)+'';

      List[i]:=''+tmpString+'';

     end;

    end;

  List.SaveToFile(Filename);

  list.Free;

  End;

end;

procedure TForm1.N6Click(Sender: TObject);

// prosmotr

    varlist: TStringList;

   tmpString: string;

   i,CurrentSymbol,SeekSymbol, lastTag: integer;

   notFound: boolean;

  Begin

  list:=TStringList.Create;

   fori:=0 to memo1.Lines.Count-1 do list.Add(memo1.lines[i]);

  list.Insert(0,'');

  list.Add('');

   fori:=1 to memo1.Lines.Count do

    begin

    lastTag:=1; tmpString:='';

     forCurrentSymbol:=1 to Length(List[i]) — 9 do

      ifCopy(List[i], CurrentSymbol, 9) = '' then

           begin

            tmpString := tmpString+''+

            Copy(List[i],lastTag,CurrentSymbol-lastTag)+

            ''+

            Copy(List[i],CurrentSymbol,SeekSymbol-CurrentSymbol+1) +'';

            lastTag:=SeekSymbol+1; notFound:=false;

            end;

          inc(SeekSymbol);

         end;

       end;

     iftmpString<>'' then

     begin

      tmpString:=tmpString+''+Copy(List[i],lastTag,Length(List[i])-lastTag+1)+'';

      List[i]:=''+tmpString+'';

      end;

    end;

  List.SaveToFile('tmp.html');

  list.Free;

  ShellExecute(handle, 'open', 'tmp.html', '', '', SW_SHOW);

  //winexec('tmp.html', SW_SHOW)

   //Form2.showModal;

  End;

 //end ofprosmotr                        }

procedure TForm1.N8Click(Sender: TObject);

begin

close;

end;

procedure TForm1.N10Click(Sender: TObject);

var tmpMemo: string;

begin

   WithOpenDialog2 do

 ifexecute then

  Begin

    begin

    tmpMemo:=tmpMemo + '';

    Memo1.SelText :=tmpMemo;

    end;

  End;

end;

procedure TForm1.N11Click(Sender: TObject);

var Href: String;

begin

With OpenDialog3 do

 ifExecute then

 Begin

  Href:=Href + ''

   + 'Ссылка' + '';

    Memo1.SelText :=Href;

  End;

end;

procedure TForm1.N12Click(Sender: TObject);

begin

form4.ShowModal;

end;

end.

Приложение№2.

Скриншоты.

<img src="/cache/referats/7134/image002.jpg" v:shapes="_x0000_i1025">

Рис.1

<img src="/cache/referats/7134/image004.jpg" v:shapes="_x0000_i1026">

Рис.2

<img src="/cache/referats/7134/image006.jpg" v:shapes="_x0000_i1027">

Рис.3

<img src="/cache/referats/7134/image008.jpg" v:shapes="_x0000_i1028">

Рис.4

еще рефераты
Еще работы по программированию, базе данных