1.1 Matematyka i jej notacja

1.2 Początki i cele

1.2.1 Historia MathML

1.2.2 Ograniczenia HTML

1.2.3 Wymagania dotyczące znaczników matematycznych

1.2.4 Cele projektu MathML

1.3 Rola MathML w sieci

1.3.1 Istniejące języki znaczników matematycznych

1.3.2 Mechanizm rozszerzenia HTML

1.3.3 Mechanizm rozszerzenia przeglądarki

1.4 Przegląd MathML

1.4.1 Taksonomia elementów MathML

1.4.2 Wyświetl znaczniki

1.4.3 Oznaczenia treści

1.4.4 Łączenie prezentacji i treści

1.5 MathML w dokumentach

1.6 Przykłady MathML

1.6.1 Zobacz przykłady znaczników

1.6.2 Przykłady oznaczania treści

1.6.3 Przykłady mieszanych znaczników

1.7 Składnia i gramatyka MathML

1.7.2 Przykład składni XML

2.1 Mozilla i Firefox

2.2 Microsoft Internet Explorer

MathML( Matematyczne znaczniki Language) to oparty na XML język znaczników do zastosowań matematycznych. Został opracowany przez Konsorcjum WWW (W3C) i przyjęty jako Rekomendacja. obecna wersja to Mathematical Markup Language (MathML) w wersji 2.0 (wydanie drugie), zatwierdzona 21 października 2003 r.

MathML implementuje dwa „punkty widzenia” znaczników matematycznych. Jednym z jego typów jest Presentation Markup, który opisuje wizualną formę reprezentacji formuły matematycznej. Drugi to Content Markup, który wyraża treść semantyczną.

MathML uwzględnia nie tylko prezentację, ale także znaczenie elementów formuły. Opracowywany jest również system znaczników semantyki matematycznej w celu uzupełnienia MathML. Nazywa się OpenMath.

1.2.1 Historia MathML

Zadanie prezentowania informacji matematycznych do przetwarzania komputerowego i elektronicznych środków komunikacji powstało na długo przed pojawieniem się Internetu. Kiedyś powszechną praktyką dla naukowców było pisanie prac w jakiejś formie opartej na znakach ASCII, a następnie przesyłanie ich do siebie za pośrednictwem e-mail. Kilka języków znaczników matematycznych, w szczególności T E X, było w powszechnym użyciu w 1992 roku, zanim Internet zyskał tak znaczącą pozycję.

Od samego początku Sieć sprawdziła się jako bardzo skuteczna metoda udostępniać informacje dużej liczbie osób. Jednak pomimo tego, że sieć WWW została pierwotnie wymyślona i wdrożona przez naukowców dla naukowców, możliwości włączania wyrażeń matematycznych do HTML były bardzo ograniczone. Obecnie większość informacji matematycznych w sieci jest prezentowana w formie tekstu z obrazy graficzne wyrażenia naukowe (w formacie GIF lub JPEG) lub jako całe dokumenty PDF.

Konsorcjum World Wide Web (W3C) zrozumiało, że głównym problemem jest brak podstaw do komunikacji naukowej. Już w 1994 roku Dave Raggett zaproponował włączenie HTML Math do prototypu HTML 3.0. Na konferencji w Darmstadt w kwietniu 1995 r. odbył się okrągły stół poświęcony notacji matematycznej. W listopadzie tego samego roku przedstawiciele Wolfram Research złożyli zespołowi W3C propozycję wdrożenia obsługi matematyki w HTML. Spotkanie Inicjatywy Biblioteki Cyfrowej w maju 1996 r. w Champaign-Urbana odegrało ważną rolę w zgromadzeniu wielu interesariuszy. Spotkanie to zaowocowało powstaniem redakcyjnej rady recenzenckiej HTML Math. Następnie to Grupa robocza rosła, aw marcu 1997 została formalnie przekształcona jako pierwsza Grupa Robocza W3C Math. Druga Grupa Robocza W3C Math została utworzona w lipcu 1998 roku.

Projekt MathML odzwierciedla zainteresowania i opinie różnych grup specjalistów. Wiele w rozwoju MathML zasługuje na szczególną uwagę. Dotyczy to na przykład kwestii dostępności, gdzie wystąpiły szczególnie namacalne trudności. T. V. Raman wykonał wiele pracy w tym kierunku. Neil Soiffer i Bruce Smith z Wolfram Research podzielili się swoimi doświadczeniami w rozwiązywaniu problemów reprezentacji matematycznych zdobytymi podczas pracy nad projektem Mathematica 3.0. Ich pomysły miały istotny wpływ na strukturę elementów widoku. Paul Topping z Design Science również przyczynił się do formatowania i edycji matematyki. MathML bardzo skorzystał na partnerstwie z wieloma członkami grup roboczych związanych z innymi pracami nad kodowaniem informacji matematycznych w SGML iw społecznościach zajmujących się algebrą komputerową. Należą do nich Stephen Buswell z StiloTechnologies, NicoPoppelier z ElsevierScienceStéphaneDalmas z INRIA (SophiaAntipolis), StanDevitt z WaterlooMaple, AngelDiaz i RobertS. Sutor z IBM i StephenM. Watt z Uniwersytetu Zachodniego Ontario. Ponadto na MathML wpłynął projekt OpenMath, prace grupy roboczej ISO 12083 oraz prace Stilo Technologies nad fragmentem DTD dla matematyki „semantycznej”. Amerykańskie Towarzystwo Matematyczne odegrało kluczową rolę w rozwoju MathML. Między innymi przedstawiciele tej organizacji zostali przewodniczącymi obu Grup Roboczych W3C Math. Od maja 1996 do marca 1997 zespół prowadził Ron Whitney. Patrick Ion współprzewodniczył grupie od marca 1997 do czerwca 1998 z Robertem Minerem z The Geometry Center, a od lipca 1998 z Angel Diaz z IBM.

Cele rozwoju MathML wymagają elastycznego i rozszerzalnego systemu notacji matematycznej, który umożliwia interakcję z zewnętrznymi programami i wysokiej jakości wyświetlanie w różnych środowiskach informacyjnych. Ale każdy język znaczników, który spełnia wszystkie te wymagania, jest dość skomplikowany.

Jednocześnie dla wielu grup użytkowników, takich jak studenci, ważne jest posiadanie łatwego sposobu umieszczania wyrażeń matematycznych na stronach internetowych. Podobnie dla innych grup, np. dla użytkowników systemu T E X, najlepsze rozwiązanie istniałby system, który umożliwiałby bezpośrednie włączanie znaczników do stron internetowych przy użyciu języka takiego jak T E X. Ogólnie różne grupy użytkowników wymagają różnych form danych wejściowych i wyjściowych, które najlepiej odpowiadają ich potrzebom. Dlatego w idealnym przypadku system do umieszczania dokumentów matematycznych w sieci powinien zapewniać zarówno wyspecjalizowane usługi wprowadzania i wyprowadzania, jak i ogólne usługi wymiany i wyświetlania informacji w różnych środowiskach informacyjnych.

W praktyce przegląd tego, co standard matematyczny powinien zapewnić w sieci dla potrzeb specjalistycznych i ogólnych, prowadzi do idei architektury warstwowej. Pierwszy poziom obejmuje standardowe, wydajne narzędzia do wymiany, przetwarzania i wyświetlania danych matematycznych. Drugi poziom obejmuje specjalistyczne narzędzia przeznaczone dla określonych grup użytkowników, za pomocą których można łatwo kodować informacje matematyczne w celu dystrybucji do ograniczonego kręgu użytkowników.

MathML jest przeznaczony do oznaczania informacji matematycznych na niższym, bardziej ogólnym poziomie architektury dwuwarstwowej. Wiąże się to z zaznaczeniem złożonej struktury notacyjnej i semantycznej w ścisłej, regularnej formie, którą można łatwo przetworzyć za pomocą narzędzi do wyświetlania, wyszukiwania i indeksowania oraz innych aplikacji matematycznych.

W konsekwencji znaczniki MathML nie są przeznaczone do bezpośredniego używania przez autorów. MathML jest czytelny dla człowieka, co bardzo pomaga w debugowaniu, ale we wszystkich, z wyjątkiem najprostszych przypadków, jest zbyt złożony do ręcznego kodowania. Zamiast tego autorzy będą musieli użyć specjalnych edytorów formuł, konwerterów i innych wyspecjalizowanych oprogramowanie do tworzenia dokumentów MathML. Alternatywnie, niektóre programy renderujące i systemy obsługi dokumentów matematycznych mogą konwertować inne formaty wejściowe na MathML w locie.

Pod pewnymi względami MathML jest podobny do innych formatów komunikacji niskiego poziomu, takich jak język PostScript opracowany przez firmę Adobe. Możesz tworzyć pliki PostScript różne sposoby, w zależności od potrzeb: eksperci tworzą i edytują je ręcznie, autorzy tworzą je za pomocą edytory tekstu, projektanci - ilustratorzy i tak dalej. Jeśli masz plik PostScript, możesz dystrybuować go do bardzo dużej grupy odbiorców, ponieważ urządzenia wyświetlające PostScript, takie jak drukarki i przeglądarki ekranu, są powszechnie dostępne.

Jednym z powodów rozwoju MathML jako języka znaczników ogólnego poziomu komunikacyjnego jest stymulowanie rozwoju matematyki oprogramowanie Sieci najwyższego poziomu. MathML to sposób koordynowania wysiłków twórców modułów oprogramowania w celu tworzenia i wyświetlania materiału matematycznego. Uproszczenie rozwoju części funkcjonalnych duży system, MathML może stymulować rozwój programów, które będą bardzo przydatne dla potencjalnych użytkowników.

Autorzy mogą tworzyć dokumenty MathML przy użyciu narzędzi najlepiej dostosowanych do ich potrzeb. Studenci mogą preferować edytory wizualne formuły, z możliwością zapisywania bloków znaczników MathML w pliku XHTML. Badacze mogą korzystać z pakietów algebr komputerowych, które automatycznie kodują informacje matematyczne, aby koledzy mogli je pobrać ze strony internetowej i przetworzyć. Wydawcy czasopism akademickich mogą korzystać z programu, który konwertuje znaczniki T E X na HTML i MathML. Niezależnie od sposobu tworzenia strony internetowej zawierającej MathML, dostępne stają się wszystkie zalety wspólnej warstwy komunikacyjnej. Różne programy współpracujące z MathML mogą być używane na tym samym dokumencie, aby wyprowadzić go na mowę i wydrukować, a także wejść do systemu algebry komputerowej i zarządzać nim jako częścią dużego archiwum dokumentów internetowych. Aby uzyskać wysokiej jakości wydruk dokumentów matematycznych w formacie MathML, odwrócona konwersja do systemy standardowe układy graficzne, w tym specjalnie do tego celu stworzony T E X. Wreszcie można oczekiwać, że MathML zostanie ostatecznie zintegrowany z innymi obszarami, w których występują formuły matematyczne, takimi jak arkusze kalkulacyjne, pakiety agregacji i narzędzia inżynierskie.

Grupa Robocza W3C Math współpracuje z różnymi firmami programistycznymi, aby zapewnić, że różne narzędzia MathML będą wkrótce dostępne, w tym narzędzia do generowania i wyświetlania dokumentów. Aktualna lista programów współpracujących z MathML znajduje się na stronie Math World Wide Web Consortium.

Pierwotna koncepcja HTML Math polegała po prostu na rozszerzeniu zestawu znaczników HTML i zapewnieniu w ten sposób bezpośredniej interpretacji w przeglądarce. Jednak już wcześniej gwałtowny rozwój sieci wskazywał, że potrzebny jest mechanizm globalnego rozszerzenia, a informacje matematyczne są tylko jednym z rodzajów danych strukturalnych, które można zintegrować z siecią za pomocą takiego mechanizmu.

Biorąc pod uwagę, że MathML ma być zintegrowany z siecią jako rozszerzenie, bardzo ważne jest, aby MathML i programy, które go używają, mogły dobrze współpracować z istniejącym środowiskiem sieciowym. W szczególności MathML musi być zaprojektowany z myślą o trzech rodzajach interakcji. Po pierwsze, w przypadku tworzenia treści matematycznych ważne jest, aby istniejące języki znaczników matematycznych można było przekonwertować na MathML i aby możliwość tworzenia dokumentów MathML została dodana do istniejących edytorów. Po drugie, powinno być możliwe osadzenie znacznika MathML w znaczniku HTML jako dodatek do niego, w którym to przypadku w przyszłości będzie on dostępny dla przeglądarek, Wyszukiwarki i wszystkie typy aplikacji internetowych, które teraz współpracują z HTML. I wreszcie, musi być możliwe wyświetlanie MathML osadzonego w HTML, nowoczesne przeglądarki nawet jeśli wynik jest daleki od ideału. Wraz z przejściem z HTML do XHTML wszystkie powyższe wymagania staną się jeszcze bardziej konieczne.

Sieć WWW jest całkowicie międzynarodowa. Matematyka to język używany na całym świecie. Notacja matematyczna w nauce i technice jest ściśle związana z językami narodowymi. Celem W3C jest bycie konstruktywną siłą w przekazywaniu światu komunikacji. Dlatego programiści MathML stanęli przed problemem internacjonalizacji. Ta wersja MathML nie jest niekompatybilna z językami pisanymi od lewej do prawej. Notacja od lewej do prawej jest standardem w MathML 2 i jasne jest, że potrzeba pisania formuł matematycznych w tekstach w niektórych językach narodowych jeszcze się nie pojawiła. Tak zwana „technologia dwukierunkowa” jest dopiero opracowywana i najlepsze wsparcie formuły w tym kontekście to zadanie dla przyszłego rozwoju.

1.7.1 Składnia i gramatyka MathML

MathML jest oparty na (Extensible Markup Language), co oznacza, że ​​jego składnia jest zgodna z zasadami składni XML, a gramatyka jest zdefiniowana przez DTD (Definicja typu dokumentu). Innymi słowy, szczegóły dotyczące używania znaczników, atrybutów, jednostek i wszystkiego innego są zdefiniowane w specyfikacji języka XML, podczas gdy szczegóły dotyczące elementów i atrybutów MathML, zagnieżdżania elementów itd. są zdefiniowane w DTD MathML.

W3C, próbując zwiększyć łatwość i elastyczność używania XML w sieci oraz wspierać tworzenie modułowych aplikacji XML, odkryło, że podstawowa forma DTD nie jest wystarczająco elastyczna. Dlatego utworzono grupę roboczą W3C w celu opracowania schematów XML, które są dokumentami specyfikacji i powinny zastąpić DTD. MathML 2.0 został zaprojektowany, aby umożliwić matematykom pełne wykorzystanie nowych technologii internetowych. Jest więc schemat dla MathML.

MathML definiuje również zasady składni i gramatyki oprócz Główne zasady, który dziedziczy jako aplikacja XML. Reguły te pozwalają MathML reprezentować znacznie więcej informacji niż jest to możliwe w przypadku czystego XML, bez wprowadzania duża liczba nowe elementy i używaj znacznie bardziej złożonych DTD lub schematów. Oczywiście wadą wprowadzenia specyficznych reguł MathML jest to, że wygenerowane dokumenty nie mogą być przetwarzane przez procesory i walidatory XML.

Istnieją dwa główne typy dodatkowych reguł gramatycznych i składni MathML. Pierwszy typ polega na ustawieniu dodatkowych kryteriów dla wartości atrybutów. Na przykład w czystym XML nie można wymagać, aby wartość atrybutu była dodatnią liczbą całkowitą. Drugi typ reguły definiuje bardziej szczegółowe ograniczenia dotyczące elementów podrzędnych (takich jak ich kolejność) niż te podane w DTD, a nawet schematach. Na przykład XML nie może określić, że pierwszy element podrzędny powinien być traktowany inaczej niż reszta.

1.7.2 Przykład składni XML

Ponieważ MathML jest oparty na XML, specyfikacja MathML używa terminologii XML. Dane XML składają się ze znaków Unicode (które obejmują normalne znaki ASCII), odwołań do encji (nieformalnie nazywanych encjami), takich jak<, которые обычно представляют расширенные символы, и элементы, такие как x.

Elementy często zawierają inne dane XML, nazywane ich „treścią” lub „treścią”, pomiędzy znacznikami „open” i „end”, tak jak w HTML. Istnieją również „puste elementy”, takie jak Gdzie otwierający tag kończy się />, aby wskazać, że element nie ma treści ani tagu końcowego. Znacznik otwierający musi zawierać nazwane opcje, zwane atrybutami, takie jak fontstyle="normal" w powyższym przykładzie.

Ponieważ w XML rozróżnia się wielkie i małe litery, w nazwach elementów i atrybutów MathML rozróżniana jest wielkość liter. Dla czytelności, specyfikacja MathML definiuje większość z nich małymi literami.

W formalnej dyskusji na temat znaczników XML rozróżnia się element taki jak mrow i znaczniki, które go definiują. oraz. Co jest między tagami oraz, nazywana jest zawartością lub treścią elementu mrow. „Pusty element”, taki jak żaden, nie ma treści i jest zdefiniowany przez pojedynczy znacznik widoku . Ta specyfikacja nie będzie podkreślać tego rozróżnienia między tagami a elementami. Na przykład czasami będziemy odwoływać się do elementów oraz , co oznacza element, do którego należą te tagi. Odbywa się to w celu odróżnienia odwołań do elementów od odwołań do atrybutów. Jednak terminy „element” i „tag” będą używane w ścisła zgodność z terminologią XML.

1.7.3 Elementy potomne a argumenty

Wiele elementów MathML wymaga określonej liczby elementów podrzędnych lub nadaje dodatkowe znaczenie elementom podrzędnym w określonej pozycji. Jak wspomniano powyżej, ten typ ograniczenia jest specyficzny dla MathML i nie można go określić za pomocą składni i gramatyki XML. Gdy element potomny danego elementu MathML spełnia te wymagania dodatkowe warunki, porozmawiamy o tym jako argument a nie o element potomny aby podkreślić specyfikę jego zastosowania. Należy zauważyć, że termin „argument” jest używany w tym sensie technicznym, chyba że zaznaczono inaczej.

Niektóre elementy mają różne wymagania dotyczące liczby lub typu argumentów. Te dodatkowe wymagania są opisane dla każdego konkretnego elementu.

1.7.4 Wartości atrybutów MathML

Zgodnie ze specyfikacją języka XML atrybuty elementów muszą być określone w jednej z następujących form:

nazwa-atrybutu="wartość"

nazwa-atrybutu="wartość"

gdzie spacje wokół znaku „=” są opcjonalne.

Nazwy atrybutów pojawiają się w tekście specyfikacji czcionką o stałej szerokości, podobnie jak przykłady.

Wartości atrybutów, które w MathML mogą być ciągami dowolnych znaków, muszą być ujęte w cudzysłów podwójny ("") lub pojedynczy (""). Wartość atrybutu może zawierać rodzaj cudzysłowu, który nie jest używany do ujęcia całej wartości.

MathML używa bardziej złożonej składni dla wartości atrybutów niż ogólna składnia XML określona przez DTD MathML. Te dodatkowe reguły dotyczą aplikacji MathML i jest to błąd MathML, który je narusza, ale nie mogą być śledzone przez procesory XML. Składnia wartości elementów MathML jest zdefiniowana w tabeli atrybutów, po której następuje opis każdego elementu przy użyciu notacji opisanej poniżej. Gdy aplikacja MathML przetwarza wartości atrybutów, wszystkie spacje, z wyjątkiem tych, które oddzielają poszczególne słowa lub liczby, są ignorowane. Dane znakowe mogą być zawarte w wartościach atrybutów bezpośrednio lub za pomocą encji referencyjnych.

W szczególności znaki „, ”, & i< могут быть включены в значения атрибутов MathML (когда это разрешено синтаксисом) с использованием сущностей ",",& и <, соответственно.

MathML DTD, deklaruje typy większości wartości atrybutów jako ciąg CDATA. Pozwala to zwiększyć kompatybilność z istniejącym oprogramowaniem opartym na SGML i XML oraz rozszerzyć listę predefiniowanych wartości. To samo rozumowanie dotyczy schematów XML.

1.7.4.1 Notacje składni używane w specyfikacji MathML

Aby opisać składnię specyficzną dla MathML dla prawidłowych wartości atrybutów, w tym dokumencie zastosowano następujące konwencje i notacje.

Notacja Co robi
numer dziesiętna liczba całkowita lub liczba wymierna (ciąg cyfr z jednym punktem dziesiętnym), prawdopodobnie zaczynająca się od znaku "-"
niepodpisany numer dziesiętna liczba całkowita lub liczba rzeczywista, bez znaku
liczba całkowita dziesiętna liczba całkowita, prawdopodobnie zaczynająca się od znaku „-”
Dodatnia liczba całkowita dziesiętna liczba całkowita, bez znaku, nie 0
strunowy dowolny ciąg (zawsze pełna wartość atrybutu)
postać pojedynczy znak inny niż biały lub odwołująca się jednostka MathML; ewentualnie oddzielone spacjami
#rrggbb kolor w formacie RGB; Trzy pary cyfr szesnastkowych w przykładzie #5599dd definiują proporcje koloru czerwonego, zielonego i niebieskiego w skali od x00 do xFF, co daje jasny cyjan.
jednostka h pozioma jednostka długości (dozwolone jednostki są wymienione poniżej)
v-jednostka jednostka długości w pionie (dozwolone jednostki są wymienione poniżej)
css-fontfamily
CSS-nazwa-koloru wyjaśnione poniżej, w podsekcji dotyczącej CSS
inne słowa kursywą wyjaśnione w tekście, osobno dla każdego atrybutu
formularz + co najmniej jedna instancja „formularza”
Formularz* zero lub więcej wystąpień „formy”
f1 f2...fn jedno wystąpienie każdego formularza, kolejno, opcjonalnie oddzielone białymi znakami
f1 | f2 |... | fn dowolna z powyższych form
opcjonalna instancja "formularza"
(Formularz) tak samo jak tylko forma
nieoznaczone słowa słowa zawarte dosłownie w wartościach atrybutów (jeśli nie są częścią frazy objaśniającej)
znaki w cudzysłowie znaki dosłownie zawarte w wartości atrybutu (na przykład „+” lub „+”)

Priorytet operacji od najwyższego do najniższego:

formularz + lub formularz *

f1 f2... fn (sekwencja kształtów)

f1 | f2 |... | fn (jeden z formularzy)

Typ strunowy może zawierać dowolne znaki zdefiniowane w wartościach atrybutów CDATA XML. W MathML nie ma reguł składni strunowy może być częścią wartości atrybutu, a nie całą wartością.

Sąsiadujące słowa kluczowe i liczby w wartościach atrybutów muszą być oddzielone znakami odstępu, z wyjątkiem identyfikatorów jednostek następujących po liczbach (jak określono w składni znaków h-unit i v-unit). Białe znaki nie są wymagane, ale są dozwolone między dowolnymi tokenami wymienionymi powyżej, z wyjątkiem (dla zgodności CSS) bezpośrednio przed identyfikatorami jednostek, między znakami „-” i cyframi, między # a rrggbb lub rgb.

Wartości atrybutów liczbowych, które określają wymiary i muszą być zależne od aktualnej czcionki, mogą być podawane w jednostkach związanych z czcionką lub w określonych jednostkach bezwzględnych (opisane poniżej). Wymiary poziome podaje się zwykle w em, a wymiary pionowe w ex. Bezpośrednio po numerze znajdują się identyfikatory em lub ex. Na przykład poziome wcięcia od operatora „+” są zwykle podawane w emach, chociaż mogą być używane inne jednostki. Jednostki związane z czcionkami są preferowane w stosunku do jednostek bezwzględnych, ponieważ umożliwiają zwiększenie lub zmniejszenie rozmiaru renderowanego elementu w oparciu o bieżący rozmiar czcionki.

W przypadku większości atrybutów liczbowych możliwe wartości są ograniczone do pewnego podzbioru, inne wartości nie są błędami (chyba że zaznaczono inaczej), ale są zaokrąglane w górę lub w dół przez program mapujący do najbliższej prawidłowej wartości. Zestaw poprawnych wartości może zależeć od renderera i nie jest zdefiniowany przez MathML.

Jeśli wartość liczbowa, zgodnie ze składnią atrybutu, może zawierać znak minus ("-"), taki jak liczba lub liczba całkowita, to nie jest błędem jej użycie, gdy wartości ujemne nie są znaczące. Zamiast tego wartość musi zostać przetworzona przez aplikację zgodnie z opisem w poprzednim akapicie. Jawne określenie znaku plus („+”) jako części wartości numerycznej jest zabronione, z wyjątkiem sytuacji, gdy w składni jest to wyraźnie określone (jako „+” lub „+”), a jego obecność może zmienić znaczenie wartości atrybutu (jako opisane w każdym z tych atrybutów).

Symbole h-unit, v-unit, css-fontfamily i css-color-name zostały omówione w kolejnych podrozdziałach.

1.7.4.2 Atrybuty z jednostkami

Niektóre atrybuty akceptują wymiary poziome i pionowe jako liczby, po których następuje „identyfikator jednostki” (często określany jako „jednostka”). Symbole składni h-unit i v-unit odnoszą się odpowiednio do wymiarów poziomych i pionowych. Możliwe jednostki miary i rozmiary, do których mają zastosowanie, są wymienione w poniższej tabeli; są takie same dla wymiarów poziomych i pionowych, ale symbole składni są różne (jako przypomnienie kierunku, z którego korzystają).

Z tego pochodzą identyfikatory jednostek i ich znaczenie semantyczne. Jednak składnia liczby, po której następuje identyfikator w MathML, nie jest identyczna jak w CSS, ponieważ liczby w CSS nie mogą kończyć się kropką dziesiętną i mogą zaczynać się znakiem „+”.

Prawidłowe jednostki poziome i pionowe w MathML:

Jednostki typograficzne em i ex są omówione dalej w sekcji „Uwagi dodatkowe”.

% to „jednostka względna”; gdy wartość atrybutu jest podana jako n% (dla dowolnej wartości liczbowej n), wartość jest definiowana jako wartość domyślna pomnożona przez n podzielona przez 100. Wartość domyślna (lub sposób, w jaki można ją uzyskać, jeśli nie jest stała) jest opisane w tabeli atrybutów dla każdego elementu, a jego znaczenie jest opisane w dalszej dokumentacji atrybutów. (Element mpadded ma własną składnię dla % i nie pozwala na użycie go jako identyfikatora jednostki)

Aby zapewnić spójność z CSS, jednostki długości w MathML mogą być opcjonalne. W takim przypadku znak jednostki w składni atrybutu jest ujęty w nawiasy kwadratowe, takie jak liczba . Znaczenie wartości atrybutu bez jednostek jest opisane w dokumentacji dla każdego atrybutu; zwykle podana liczba jest mnożona przez wartość domyślną. (W tym przypadku liczba nnn bez jednostki jest równoważna liczbie nnn pomnożonej przez 100 i ze znakiem %. Na przykład ( równoważny ()

W drodze wyjątku (również ze względu na zgodność z CSS) wartości numeryczne zerowe nie wymagają identyfikatora jednostki, nawet jeśli wymaga tego składnia. W tym przypadku obecność lub brak identyfikatora jednostki nie ma znaczenia, ponieważ dowolna liczba pomnożona przez 0 jest równa 0.

W przypadku większości atrybutów w tej specyfikacji jednostki używane w zestawie typograficznym są wybierane jako standardowe jednostki miary; gdy nie określono określonej wartości ilości, standardowe jednostki miary są zwykle określane w tabeli lub w opisie atrybutu. Najczęściej używane jednostki to em lub ex. Można jednak użyć dowolnej jednostki, chyba że w opisie konkretnego atrybutu określono inaczej.

Zwróć uwagę, że niektóre atrybuty, takie jak framepacing in , może zawierać więcej niż jedną wartość liczbową, po której następuje inna jednostka miary.

Zwyczajowo stosuje się jednostki ex głównie dla wymiarów pionowych, a em dla wymiarów poziomych, chociaż nie jest to wymagane. Te jednostki miary zależą od czcionki użytej do wyświetlenia elementu, którego atrybuty są stosowane, oraz od jego rozmiaru. Więc muszą być zinterpretowane po atrybuty takie jak fontfamily i fontsize, jeśli występują w tym samym elemencie, ponieważ zmiana bieżącej czcionki lub jej rozmiaru może zmienić rozmiar jednostek.

Definicja długości każdej jednostki miary (ale nie składnia MathML dla wartości długości) jest taka sama jak w CSS, z wyjątkiem tego, że czcionka ustawia specjalne wartości dla em i ex, które różnią się od wartości zdefiniowanych w CSS (odpowiednio rozmiar czcionki i "x" - wysokość).

1.7.4.3 Atrybuty zgodne z CSS

Niektóre z wymienionych poniżej atrybutów MathML odpowiadają właściwościom wyświetlania tekstu zdefiniowanym w CSS1. Dzieje się tak, aby renderery mogły wysyłać zapytania do środowiska CSS o odpowiednie właściwości podczas definiowania domyślnych wartości atrybutów.

Możliwość definiowania właściwości stylu za pomocą atrybutów MathML i CSS ma również wady. Przynajmniej jest to mylące, a w najgorszym przypadku powoduje niezamierzoną zmianę znaczenia równań podczas zmiany CSS dla całego dokumentu. Dlatego te atrybuty są przestarzałe. Z kolei MathML 2.0 wprowadza cztery nowe atrybuty stylu matematycznego. Atrybuty te wykorzystują wartości logiczne, aby lepiej przekazać abstrakcyjne kategorie symboli używanych w matematyce i zapewnić wyraźne rozdzielenie między MathML i CSS.

Poniższa tabela mapuje przestarzałe atrybuty stylu MathML 1.01 na ich odpowiedniki CSS:

Kolejność przetwarzania atrybutów i arkuszy stylów.

Arkusze stylów CSS lub podobne mogą określać zmiany we właściwościach wyświetlania elementów MathML. Ponieważ właściwości wyświetlania mogą być zmieniane zarówno przez atrybuty elementu, jak i przez mechanizm renderujący, konieczne jest określenie kolejności, w jakiej zmiany zachodzą z różnych źródeł. Przykładem autonegocjacji jest sytuacja z rozmiarem czcionki. W przypadku zmian „bezwzględnych”, takich jak ustawienie nowej wartości właściwości niezależnej od starej wartości (w przeciwieństwie do zmian „względnych”, takich jak zwiększanie lub mnożenie przez liczbę), obowiązują tylko najnowsze zmiany bezwzględne, więc źródło zmiany o najwyższym priorytecie musi być obsługiwane jako ostatnie.

W przypadku CSS kolejność obsługi zmian wpływających na właściwości wyświetlania elementu MathML z różnych źródeł powinna być następująca: (najpierw zmieniany; najniższy priorytet)

Automatyczne zmiany właściwości lub atrybutów w oparciu o typ elementu rodzica i pozycję elementu w rodzicu (jak wspomniano powyżej o zmianach rozmiaru czcionki zgodnie z poziomem skryptu; takie zmiany są zwykle stosowane przez sam element rodzica przed renderowaniem właściwości wyświetlania do obecny element

Z arkuszy stylów czytelnika: style, które nie zadeklarowany „ważny”

Jawnie ustaw atrybuty bieżącego elementu MathML

Z arkuszy stylów czytelnika: style, które są zadeklarowane jako „ważne” (ostatnia modyfikacja; najwyższy priorytet).

Zauważ, że kolejność zmian dokonywanych przez arkusze stylów CSS jest zdefiniowana w samym CSS (jest to kolejność zdefiniowana przez CSS2). Poniższe wyjaśnienie dotyczy tylko przypadku, w którym nastąpiły zmiany w tej kolejności ze względu na dokładną specyfikację atrybutów MathML.

Wyjaśnienie: Atrybuty wyświetlania w MathML są podobne do atrybutów wyświetlania HTML (takich jak align), które zgodnie z kolejnością zdefiniowaną w CSS muszą być przetwarzane z tym samym priorytetem. Co więcej, ten wybór pierwszeństwa pozwala czytelnikom decydować, definiując style CSS jako „ważne”, które z ich ustawień powinny zastąpić jawne ustawienia MathML. Ponieważ wyrażenia MathML składające się z treści lub elementów prezentacji mają na celu przede wszystkim przekazanie znaczenia, a „reprezentacja graficzna” (jeśli istnieje) powinna w tym pomóc (ale nie jest ważna sama w sobie), prawdopodobnie czytelnicy będą chcieli dostosować się do ich preferencji stylistycznych miały pierwszeństwo. Głównym wyjątkiem jest sytuacja, gdy atrybuty wyświetlania zmieniają znaczenie wyrażenia.

1.7.4.4 Domyślne wartości atrybutów

Domyślne wartości atrybutów MathML są zwykle podawane wraz ze szczegółowym opisem odpowiedniego elementu. Wartości domyślne w tabelach atrybutów pisane normalną czcionką są dokładne (chyba że są to oczywiste wyjaśnienia), fragmenty pisane kursywą opisują, jak można obliczyć wartości domyślne.

Domyślne wartości zadeklarowane jako dziedziczone są pobierane ze środowiska renderowania, jak opisano dla mstyle, lub w niektórych przypadkach opisanych osobno, z wartości innych atrybutów otaczających elementów lub z określonej części tych wartości. Zawsze używana jest wartość, którą można podać dokładnie, jeśli jest znana; nigdy nie zależy od zawartości czy atrybutów danego elementu, a jedynie od jego otoczenia. (Jego znaczenie, gdy jest używane, może jednak zależeć od tych atrybutów lub treści)

Domyślne wartości opisane jako automatyczne muszą być obliczone przez renderer w taki sposób, aby uzyskać obraz wysokiej jakości. Sposób, w jaki można to osiągnąć, zwykle nie jest określony w specyfikacji MathML. Zawsze używana jest wartość, którą można podać dokładnie, jeśli jest znana; ale zwykle zależy to od zawartości elementu i prawdopodobnie od środowiska wyświetlania.

Inne opisy pisanych kursywą wartości domyślnych występujących w tabelach atrybutów są wyjaśnione osobno dla każdego atrybutu.

Pojedyncze lub podwójne cudzysłowy, które muszą być zawarte w wartościach atrybutu znajdującego się w otwierającym znaczniku XML, nie są pokazywane w składni wartości w tabeli atrybutów, ale są pokazane w tekście przykładów.

Zauważ, że ogólnie rzecz biorąc, nie ma wartości, które można by dokładnie przypisać do atrybutów MathML i naśladować efekt ich braku dla atrybutów, które są dziedziczone lub automatyczne. Określenie „dziedziczone” lub „automatyczne” na pewno nie zadziała i nie jest w ogóle dozwolone. Co więcej, nawet w przypadku atrybutów widoku (dla których podano tutaj określone wartości domyślne), element mstyle musi być użyty do zmiany elementów, które zawiera. W związku z tym MathML DTD definiuje większość wartości domyślnych atrybutów prezentacji jako #IMPLIED, co uniemożliwia procesorom XML dodawanie jakichkolwiek specjalnych wartości domyślnych do tych atrybutów. Schemat MathML działa w ten sam sposób.

1.7.4.5 Wartości atrybutów w MathML DTD

W XML DTD dozwolone wartości atrybutów mogą być zdefiniowane jako ogólne ciągi lub mogą być ograniczane na różne sposoby (poprzez wyliczenie możliwych wartości lub określenie konkretnego typu danych). Wybór typu atrybutu XML wpływa na zakres, w jakim można przeprowadzić walidację za pomocą DTD.

MathML DTD definiuje formalne typy atrybutów XML dla wszystkich atrybutów MathML, w tym w niektórych przypadkach wyliczenia poprawnych wartości. Ogólnie rzecz biorąc, MathML DTD jest stosunkowo luźne, często definiując wartości atrybutów jako ciągi; robi się to, aby być kompatybilnym z parserami SGML, które pozwalają wielu atrybutom pojedynczego elementu MathML na posiadanie tej samej wartości (takiej jak prawda i fałsz) oraz aby umożliwić rozszerzenie listy predefiniowanych wartości.

Jednocześnie, mimo że wartość atrybutu można zdefiniować jako ciąg znaków w DTD, tylko niektóre wartości są poprawne w MathML, jak opisano powyżej oraz w pozostałej części niniejszej specyfikacji. Na przykład wiele atrybutów wymaga wartości liczbowych. Poniższa sekcja opisuje prawidłowe wartości atrybutów dla każdego elementu. Jednak brak sztywności w DTD nie oznacza, że ​​te wymagania nie są częścią MathML lub że nie mogą być egzekwowane przez konkretny renderer MathML.

Co więcej, MathML DTD jest dostarczane jako udogodnienie; chociaż zamierzona jest pełna zgodność z tekstem specyfikacji, w przypadku konfliktu obowiązuje tekst.

1.7.5 Atrybuty wspólne dla wszystkich elementów MathML

Aby ułatwić korzystanie z mechanizmów stylizacji, takich jak XSLT i CSS2, wszystkie elementy MathML mają atrybuty class, style i id oprócz atrybutów opisanych dla każdego elementu. Mechanizmy renderujące MathML, które nie obsługują CSS, mogą ignorować te atrybuty. MathML definiuje wartości tych atrybutów jako ogólne ciągi, mimo że aparaty stylów mają dla nich ściślejszą składnię. Dlatego każda ich wartość jest prawidłowa w MathML.

Aby zapewnić kompatybilność z mechanizmami linkowania, wszystkie elementy MathML posiadają atrybut xlink:href.

Wszystkie elementy MathML mają również atrybut xref do użycia w równoległych znacznikach. id jest również używany w tym kontekście.

Każdy element MathML, jako dziedzictwo MathML 1.0, akceptuje również przestarzały inny atrybut, który miał przekazywać niestandardowe atrybuty bez naruszania MathML DTD. Mechanizmy renderujące MathML są wymagane do przetwarzania tego atrybutu tylko wtedy, gdy odpowiadają na wszystkie niestandardowe atrybuty MathML. Jednak użycie innego atrybutu jest zdecydowanie odradzane, ponieważ w MathML istnieją inne sposoby przekazywania określonych informacji.

1.7.6 Zwijające się spacje na wejściu

MathML ignoruje białe znaki, które występują poza tokenami. Znaki inne niż białe nie są tutaj dozwolone. Białe znaki występujące w treści tokenów są usuwane na końcach, to znaczy usuwane są wszystkie białe znaki na początku i końcu treści. Białe znaki w treści elementów MathML są zwinięte stożkowo, to znaczy każda sekwencja 1 lub więcej takich znaków jest zastępowana przez 1 (czasami nazywany znakiem null).

W MathML, podobnie jak w XML, białe znaki odnoszą się do prostej spacji, tabulacji, nowej linii lub nowej linii, czyli znaków z kodami Unicode U+0020, U+0009, U+000A, U+000D.

Na przykład,

( równoważny (, oraz

równoważny Twierdzenie 1:.

Autorzy, którzy chcą umieścić znaki odstępu na początku lub na końcu treści tokenu lub sekwencję więcej niż jednego znaku odstępu, aby nie były ignorowane, muszą użyć innych niemożliwych do wyświetlenia znaków odstępu. Na przykład porównaj

Twierdzenie 1:

Gdy wyświetlany jest pierwszy przykład, nie ma spacji przed słowem „Twierdzenie”, jednej między „Twierdzenie” i „1: ”, ani po „1: ”. W drugim przykładzie pojedyncza spacja zostanie wyświetlona przed słowem „Twierdzenie”, dwie spacje przed „1: ”, a żadna po „1:”.

Należy zauważyć, że atrybut xml: space nie ma zastosowania w tej sytuacji, ponieważ procesory XML przekazują białe znaki w tokenach do procesora MathML; usuwanie odbywa się zgodnie z regułami przetwarzania MathML.

W przypadku znaków odstępu występujących poza zawartością tokenów mi, mn, mo, ms, mtext, ci, cn i adnotacji należy użyć elementu mspace, w przeciwieństwie do elementu mtext zawierającego tylko znaki odstępu

2. Możliwości nowoczesnych przeglądarek podczas pracy z MathML

Jako przypadek testowy demonstrujący możliwości przeglądarek stworzono prostą stronę XHTML zawierającą przykłady obu znaczników. Opisujemy dla niego główne wymagania. Po pierwsze, musi to być poprawny dokument XHTML, tj.:

być ważnym dokumentem xml;

element główny musi być elementem html w przestrzeni nazw XHTML, tak jak poniżej:

„http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd">

Fragmenty MathML muszą należeć do przestrzeni nazw MathML, na przykład:

...

Przypadek testowy, który jest używany poniżej: test. xhtml.

2.1 Mozilla i Firefox

Użyta wersja: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv: 1.7 5) Gecko/20041107 Firefox/1.0.

Mozilla i Firefox zbudowane na tym samym rdzeniu mają wbudowane możliwości renderowania znaczników MathML. To prawda, jak dotąd ograniczają się one tylko do obsługi znaczników widoku. Tak więc w naszym przypadku testowym fragment znacznika widoku był wyświetlany poprawnie, czego nie można powiedzieć o znaczniku treści.

Rozwiązaniem tego problemu może być użycie specjalnych stylów XSLT „Arkusze stylów XSLT dla MathML”. Takie podejście jest możliwe, ponieważ obsługa transformacji XSLT jest wbudowana w przeglądarkę. W tym celu należy pobrać zestaw stylów XSLT iw pierwszym wierszu naszej strony wskazać link do pliku nagłówkowego mathml. xsl:

Ze względów bezpieczeństwa Mozilla zezwala na style XSLT znajdujące się w innej domenie widoku źródłowego MathML z podświetlaniem zaznaczenia. To prawda, że ​​podczas używania znaczników treści i stylów XSLT nie zobaczymy kodu źródłowego, ale wynik przekształcenia.

Inne funkcje obejmują integrację z wyszukiwarkami. Po wybraniu fragmentu formuły menu kontekstowe umożliwia wysłanie zapytania do wyszukiwarki.

Ale jak dotąd jest to rezerwa na przyszłość, ponieważ takie poszukiwania nie przyniosły jeszcze rezultatów.

2.2 Microsoft Internet Explorer

Użyta wersja: 6.0.2800.1106 (SP1; Q867801; Q823353; Q833989)

Przeglądarka Microsoftu nie ma wbudowanej obsługi MathML. Aby poprawnie wyświetlać formuły matematyczne, możesz skorzystać z darmowej wtyczki MathPlayer.


Oprócz rzeczywistego wyświetlania znaczników matematycznych umożliwia szybkie kopiowanie notacji MathML. Możesz również powiększyć wzór dla większej przejrzystości, jeśli chcesz:

Wśród niedociągnięć należy zwrócić uwagę na brak możliwości wybrania lub skopiowania fragmentu wyrażenia matematycznego. Nie ma też możliwości (jak w Mozilli) poprawnego skopiowania formuły z otaczającym ją tekstem.

2.3 Operacja

Używana wersja: 7.54u1 (Build 3918; Platforma Win32; System Windows 2000; Java nie jest zainstalowana).

Ta przeglądarka na tym etapie rozwoju nie ma możliwości poprawnego wyświetlania znaczników MathML.

Lista wykorzystanej literatury

1. Dorofeev A.V., Fedotov A.M. Publikacje elektroniczne w środowisku internetowym i wielość kodowań języka rosyjskiego // Technologie obliczeniowe, 1997, v.2, N 3, s. 31-44.

2. Oleinik O.V., Tolkacheva E.M., Fedotov A.M. Wydania elektroniczne i prezentacja tekstów matematycznych na WWW // Technologie obliczeniowe, 1997, v.2, N 3, s.60-67.

3. Shokin Yu.I. Fedotov AM, Znamensky S.W. Publikacje elektroniczne i problemy wielości kodowań języka rosyjskiego // Technologie informacyjne i systemy komputerowe, 1997, N 2, s. 90-101.

4. Znamensky S.W. Standaryzacja rosyjskiego TeXa: utopia czy nieuchronność // Technologie obliczeniowe, 1997, v.2, N 3, s.51 - 59.

5. Galaktionov V.V. Extensible Mark-up Language (XML): branżowy standard definiujący architekturę oprogramowania internetowego nowej generacji. Komunikacja ZINR, Р10-2000-44, Dubna, 2000.

6. Mityunin V.A. Przegląd narzędzi do publikowania i przeglądania dokumentów matematycznych w Internecie - http://mathmag. spbu.ru/artykuł/4/

7. Matematyka w sieci: raport o stanie — http://www.dessci.com/webmath/status/

8. Dołączanie notacji matematycznej do stron internetowych — http://mathforum.org/typeseting/

9. MathML 1.01 - http://www.w3.org/TR/REC-MathML/

10. MathML 2.0 - http://www.w3.org/TR/MathML2/

Chociaż Internet powstał w dużej mierze dzięki wysiłkom fizyków i matematyków, ścieżka matematycznego wzoru na jego stronach była bardzo długa i trudna. Dopiero w ostatnich latach możemy powiedzieć, że wzory matematyczne mocno zadomowiły się w sieci.

Faktem jest, że w języku HTML, za pomocą którego tworzone są strony internetowe, nie ma możliwości wyświetlania formuł. Twórcy stron internetowych musieli jakoś wyjść: korzystać z tabel, indeksów i innych obejść. Podana jest lista takich technik, którą można podsumować w następujący sposób – ścieżka jest trudna, a wynik mizerny.

Częściowym wyjściem było wprowadzenie formuł w postaci liczb. Istnieje wiele narzędzi do ich tworzenia. Możesz użyć edytora wizualnego (takiego jak Edytor równań z Microsoft Office) lub przekonwertować formułę wpisaną w LaTeX za pomocą konwertera online. I wreszcie Dokumenty Google, w których edytor formuł implementuje obie te funkcje. Ale webmaster musiał wybrać wymiary i ustawić obraz. O interaktywności serwisu można było więc tylko pomarzyć. W tym celu potrzebny był język, który umożliwiłby odwiedzającemu witrynę samodzielne wpisywanie formuł.

Na przełomie lat 2000. istniały dwa takie języki: LaTeX – do wizualnej reprezentacji formuł i MathML – do opisu ich struktury. Do tego czasu LaTeX był używany przez wiele lat do przygotowywania tekstów matematycznych, nic więc dziwnego, że był używany do matematyki sieciowej. Jedną z pierwszych tego typu prób był program LaTeXML. Napisany w Perlu, przetwarza dokument LaTeX i wyprowadza wynik do pliku XML. Jego postprocesor następnie konwertuje wynikowy XML na inne formaty tekstowe, takie jak HTML i XHTML (a teraz także MathML) lub obrazy. Możesz zobaczyć wyniki pracy LaTeXML.

Porównanie pisania formuły wMathML iLateks

Nie rozwiązało to jednak problemów z interaktywnością. Aby to zrobić, program obsługi musiał zostać uruchomiony bezpośrednio w przeglądarce. jsMath Davida Cervone'a jako pierwszy przeszedł na stronę klienta. Konwertował formuły wpisywane przez użytkownika w LaTeX-ie na obrazy renderowane za pomocą HTML i CSS. Umożliwiło to stworzenie prawdziwie interaktywnych matematycznych stron internetowych.

Zrobiono pierwszy krok, ale nadal było wiele problemów. Trzeba było zadbać o to, aby program działał we wszystkich przeglądarkach (poczynając od weteranów, jak Internet Explorer 6) i eksportować formuły do ​​różnych formatów, przede wszystkim do MathML. Do rozwiązania tych problemów wezwano projekt MathJax, uruchomiony w 2009 roku pod przewodnictwem Amerykańskiego Towarzystwa Matematycznego i wspierany przez portal Stack Exchange. Powstała biblioteka MathJax działa we wszystkich przeglądarkach i może zapisywać formuły w HTML+CSS, SVG i MathML. Użytkownik nie musi instalować wtyczek ani czcionek - teraz po prostu działa.

Wprowadzanie formuły wMatematyka Jax…

i jego wyświetlacz

Jeśli jsMath ożywił matematykę w Internecie, to MathJax „wypuścił dżina z butelki”, pozwalając na realizację wielu świetnych pomysłów w krótkim czasie. Chcesz zdobyć edukację matematyczną w Internecie? Spójrz tutaj i tutaj. Chcesz porozmawiać ze współpracownikami? Proszę. Tworzyć publikacje z kodem i formułami „na żywo”? Tu i tu. Interesuje Cię system algebry komputerowej na Androida? Dlaczego nie . Czat z pomocą matematyczną? Łatwo . Założysz bloga, aby porozmawiać o swojej pracy? Proszę . MathJax korzysta również z Wikipedii, bezpłatnego archiwum publikacji elektronicznych arXiv oraz Ogólnorosyjskiego Portalu Matematycznego. W ten sposób MathJax stał się de facto standardem wyświetlania formuł na stronach internetowych.

Czy to oznacza, że ​​wszystkie problemy należą do przeszłości? Oczywiście nie. Więc,

.

Potrzebować Znacznik MathML Wynika to z faktu, że format HTML, mimo wielu wspaniałych właściwości, ma dość ograniczone możliwości przekazywania zapisu matematycznego. Najczęściej formuły na stronach HTML są przedstawiane jako grafika (rastrowa lub wektorowa), ale ta metoda ma oczywiste wady. Na przykład formuła rysunkowa jest prawie niemożliwa do edycji, a jej jakość wydruku zwykle pozostawia wiele do życzenia. Rozwój pomysłów doprowadził do powstania całej rodziny języków znaczników matematycznych, w tym MathML.Twórcy zdawali sobie sprawę z głębi problemu i postawili sobie za cel stworzenie specyfikacji spełniającej następujące ograniczone, ale wciąż dość istotne wymagania:

ü łatwość nauki i ręcznego wpisywania podstawowej notacji matematycznej

ü maksymalna kompatybilność z innymi formatami matematycznymi, którą muszą zapewnić odpowiednie koperty

ü możliwość wyświetlania formuł na różnych urządzeniach końcowych

ü wsparcie dla rozszerzalności, czyli wprowadzanie nowych symboli, schematów.

Ogólna zasada stosowania MathML polega na tym, że konstrukcje matematyczne są osadzane w normalnym dokumencie HTML i odtwarzane, gdy dokument jest pobierany z Internetu.

Język MathML oferuje elastyczny i rozszerzalny system do pisania materiału matematycznego, który pozwala na interakcję z zewnętrznymi programami i wykonywanie wysokiej jakości wyświetlania w różnych środowiskach informacyjnych. Ogólną zasadą używania MathML jest osadzanie konstrukcji matematycznych w dokumencie XHTML/HTML.Tworzenie stron internetowych z wykorzystaniem MathML jest możliwe na trzy sposoby: HTML + MathML prezentacyjny, XHTML + MathML prezentacyjny, XML + MathML

Aby przekonwertować wyrażenia matematyczne na MathML, jest ich wiele narzędzia. Główne przeglądarki obsługujące bezpośrednio MathML są najnowsze wersje Mozilla i jego odmiany. Wiele innych przeglądarek obsługuje ten format, ustawiając odpowiednie wtyczki . Ponadto MathML jest obsługiwany przez główne programy biurowe, takie jak Microsoft Word i OpenOffice.org , a także oprogramowanie matematyczne, takie jak Matematyka, klon. MathML - informacje Bardzo potężny i wszechstronny język znaczników formuł. To prawda, wyd.aktywuj formuły (iprzeczytaj) jest dość trudne. Język MathML oparty jest na technologii XML, a jego własne znaczniki służą do definiowania fragmentów formuł.

Przykład prostego opisu formuły

x

+

3

Przykład 2

Wstawianie formuł do dokumentów html za pomocą znaczników TeX

TeXto popularny język znaczników używany przez wiele osób, zwłaszcza w świecie matematyki, edytor tekstu, system formatowania dokumentów.

Pakiet pozwala zautomatyzować wiele zadań związanych z wpisywaniem i przygotowywaniem artykułów, m.in. pisanie w kilku językach, numerowanie sekcji i formuł, odsyłacze, umieszczanie ilustracji i tabel na stronie, prowadzenie bibliografii itp.

Formuły w LaTeX-ie wpisuje się za pomocą specjalnych poleceń. Na przykład wzór nanormalna dystrybucja w LaTeXie wyglądałoby to tak: \frac(1)(\sigma\sqrt(2\pi))\exp\left(-\frac((x-\mu) ^2)(2\sigma^2)\ right )

i będzie się to wyświetlać w następujący sposób:

Kod źródłowy wzoru matematycznego jest zapisany wewnątrz tagu ... Spacje są ignorowane (TeX sam je utworzy). Puste linie nie są dozwolone.

Zalety TEX-a:

  • istnieją implementacje oprogramowania TEX dla prawie wszystkich typów komputerów
  • niskie wymagania dotyczące zasobów sprzętowych (do pracy wystarczy komputer kompatybilny z IBM PC z procesorem 286/386)
  • przenośność tekstów źródłowych (wyniki formatowania, czyli ostateczny wygląd dokumentu, będą identyczne na wszystkich platformach)
  • druk daje tekst o jakości typograficznej,
  • duża ilość darmowych wdrożeń
  • możliwość przygotowania wzorów matematycznych i innych o dowolnej złożoności, które będą świetnie wyglądać po wydrukowaniu, przy minimalnym nakładzie pracy
  • rozszerzalność (na podstawie istniejących podstawowych poleceń można tworzyć własne, bardziej złożone)

Jedną z głównych cech zastosowanych w TeX-ie podczas jego projektowania była możliwość łatwego tworzenia wzorów matematycznych.

Zestaw złożonych formuł jest znacznie łatwiejszy i szybszy niż edytory „wizualne” (M $ Equation, MathCAD). Jest to szczególnie widoczne tam, gdzie wymagane jest wyrównanie wzorów względem siebie, uporządkowanie numeracji, a także użycie niestandardowej notacji matematycznej.

Formuły są obsługiwane tylko w notacji TeX. Przykład:

notation='TeX'>E=mc^2

który będzie wyglądał tak:

Wstawianie formuł do dokumentów html jako obrazków

Najprostszym sposobem jest wstawianie formuł jako bitmap za pomocą tagu zdjęcie . Obraz formuły można uzyskać zarówno ręcznie (z wizualnego edytora formuł), jak i automatycznie. Formuły są reprezentowane jako obiekty wtyczek osadzone w dokumencie. Mogą zawierać wielopoziomowe ułamki proste, litery greckie, macierze.

Zalety:

są wyświetlane w taki sam sposób jak w oryginale we wszystkich przeglądarkach wyświetlających obrazy

stosunkowo łatwe do skopiowania do dokumentów Office

Wady:

największy rozmiar strony z formułami wszystkich rozważanych opcji

nie ma możliwości zmiany rozmiaru formuły - często jest albo za mała lub za duża w stosunku do tekstu albo za mała lub za duża w stosunku do tekstu

źle wygląda po wydrukowaniu - nie zgadzają się rozdzielczości

nie można zmienić formuły bez kodu źródłowego i specjalnego programu

dość trudno wyśrodkować formułę w tekście

niemożliwe jest przeniesienie wzoru za pomocą słów - w razie potrzeby podziel na kilka wierszy

Bibliografia.

1. Galaktionov V.V. Extensible Mark-up Language (XML): branżowy standard definiujący architekturę oprogramowania internetowego nowej generacji. Komunikacja ZINR, Р10-2000-44, Dubna, 2000.

2. D. Knut. „Wszystko o TeX-ie”.

3. http://math.accent.kiev.ua

4. http://www.raleigh.ru/MathML/MathML2/chapter2.html

5. www.elbib.ru/index.phtml?page=elbib/rus/journal/2005/

6. http://www.ibb.ru/articles/tex/node3.phtml

Wraz z upowszechnieniem się globalnych sieci komputerowych (w szczególności Internetu) konieczne stało się umieszczanie w nich m.in. tekstów matematycznych.

Język MathML jest podzbiorem języka XML (e X rozciągliwy M arkup L anguage - Extensible Markup Language), który jest często używany do tworzenia innych języków. Takie użycie XML jest dziś całkiem naturalne i sprawdziło się dobrze w innych przypadkach, w których użycie HTML do przekazywania nowych typów danych napotkało ograniczenia formatu. Do tej pory W3C opublikowało drugą edycję wersji 2.0 specyfikacji języka MathML, która wskazuje na wykonalność i trwałość projektu.

Języki znaczników oparte na XML:

  • Wireless Markup Language (WML): format danych dla urządzeń WAP (bezprzewodowych) (telefonów komórkowych);
  • Zsynchronizowany język integracji multimediów (SMIL):
  • Określa tymczasowy układ, wygląd itp. do prezentacji multimedialnych;
  • Określa kolejność odtwarzania plików multimedialnych;
  • Do oglądania wymagany jest odtwarzacz zgodny z SMIL (AMBULANT, MS IE6);
  • Przewodnik i przykłady: http://www.multimedia4everyone.com/
  • Scalable Vector Graphics (SVG): do opisywania dwuwymiarowej grafiki wektorowej;
  • Matematyczny język znaczników (MathML): opisać notację matematyczną (wzory);
  • Język znaczników chemicznych (CML): do przedstawiania wzorów chemicznych;
  • inny.

Wśród celów wyznaczonych przez Grupę Roboczą Matematyki W3C podczas tworzenia MathML były:

  • Zapewnianie kodowania materiałów matematycznych do komunikacji na wszystkich poziomach typu edukacyjnego i naukowego;
  • zapewnienie kodowania zarówno symboliki matematycznej, jak i jej znaczeń;
  • wsparcie przy tworzeniu szablonów i innych matematycznych technik edycji;
  • zapewnienie konwersji do innych formatów matematycznych zarówno o charakterze czysto prezentacyjnym jak i semantycznym, a także z tych formatów do tworzonego języka znaczników matematycznych. Formaty wyjściowe powinny zawierać środki do wyświetlania informacji graficznych, syntezę mowy, reprezentację tekstu w postaci odpowiedniej do wprowadzania do systemów algebry komputerowej, kompatybilność z innymi językami opisu tekstów matematycznych, np. TAR, możliwość wyświetlania „czystego” tekstu ( tj. bez symboli i wyrażeń matematycznych), możliwość drukowania tekstów w różnych formach, w tym wydruku w Braille'u. Jednocześnie konwersje między różnymi formatami mogą prowadzić do utraty informacji;
  • umiejętność przesyłania informacji z uwzględnieniem cech konkretnych programów wizualizacyjnych;
  • wsparcie dla wydajnych procesów przeglądania długich wyrażeń matematycznych;
  • zapewnienie rozszerzalności (w sposób, który nie jest z góry znany).

Ogólna zasada używania MathML polega na tym, że konstrukcje matematyczne są osadzane w zwykłym dokumencie HTML i (jeśli przeglądarka lub specjalny program obsługuje tę specyfikację) są odpowiednio odtwarzane, gdy dokument jest pobierany z sieci.

Pierwszą rzeczą, z którą musisz się zmierzyć w MathML i tym, co odróżnia ten język znaczników od jego odpowiedników, jest użycie dwóch sposobów kodowania wyrażeń. Jedna z nich opiera się na bezpośrednim przeniesieniu składni formuły ( prezentacja), drugi przeciwnie, odzwierciedla semantykę wyrażenia ( zawartość). Znaczniki prezentacji opisują symbolikę matematyczną za pomocą wyrażeń zbudowanych przy użyciu niektórych schematów wnioskowania, określając sposoby umieszczania wyrażeń podrzędnych, takich jak ułamki, indeksy górne i indeksy dolne. Znacznik semantyczny opisuje obiekty i funkcje matematyczne, gdzie dla każdego węzła budowane jest drzewo wyrażeń według określonego schematu, a gałęzie tego drzewa odpowiadają podwyrażeniom.

Obecnie strony internetowe utworzone za pomocą MathML można przeglądać w następujących przeglądarkach (znak „+” oznacza, że ​​działają również nowsze wersje):

  • Okna:

o IE 5.0 z wtyczką Techexplorer

  • Prochowiec:

o IE 5.0+ z wtyczką Techexplorer

Mozilla 0.9.9+

  • Linux/Unix:

o Netscape 6.1 z wtyczką Techexplorer

Mozilla 0.9.9+

o Amaya, wszystkie wersje (tylko MathML prezentacji)

Wszystkie elementy MathML są podzielone na trzy grupy: elementy reprezentacja, elementy zawartość oraz interfejs elementy.

Elementy widoku opisują wizualnie zorientowaną dwuwymiarową strukturę zapisu matematycznego. Na przykład element mrow zwykle używany do oznaczenia poziomego rzędu części wyrażenia i elementu msup, który oznacza indeks górny. Zazwyczaj każdy element widoku odpowiada jednemu typowi schematu notacji, takiemu jak wiersz, indeks górny, indeks dolny i tak dalej. Każda formuła składa się z części, które mogą składać się z najprostszych elementów, takich jak cyfry, litery lub inne symbole.

Najważniejszymi elementami reprezentacji są mi , mn i mo , używane odpowiednio do reprezentowania identyfikatorów, liczb i operatorów. Zazwyczaj elementy te są wyświetlane w różnych stylach: liczby są pisane czcionką rzymską, identyfikatory są kursywą, a wokół operatorów pozostaje dodatkowa spacja.

W kategoriach znaczników większość elementów MathML jest zdefiniowanych otwarcie oraz zamknięcie tagi, które ograniczają zawartość elementu. Niektóre elementy, takie jak znaki obsługi ( ) są definiowane przez pojedynczy znacznik.

Rozważmy bardziej szczegółowo niektóre elementy niezbędne do rozmieszczenia formuł matematycznych na przykładzie znaczników prezentacyjnych.

Tokeny (elementy tokenów) reprezentują poszczególne postacie, imiona, liczby, oznaczenia itp. Zasadniczo tokeny mogą zawierać tylko znaki jako zawartość.

MathML ignoruje białe znaki, które występują poza tokenami. Znaki inne niż białe nie są tutaj dozwolone. Białe znaki występujące w treści tokenów są usuwane na końcach, to znaczy usuwane są wszystkie białe znaki na początku i końcu treści. Białe znaki w treści elementów MathML są kanonicznie zwinięte, to znaczy każda sekwencja 1 lub więcej takich znaków jest zastępowana przez 1 (czasami nazywane znakiem null).

Główne elementy

Indeksy

Niektóre operacje matematyczne, których można używać ze znacznikiem .

+ +
< >
<
<= >=
++ ++
.NIE. nie
oraz oraz
niewidoczny znak mnożenia
+ +

Spójrzmy na kilka przykładów formuł w MathML.

1) grzech 2 α + cos 2 α \u003d 1

grzech

α

+

sałata

α

=

Grecka litera α jest uzyskiwana za pomocą kodu α (przypomnij sobie, że używany jest Unicode).

Wynik

Przypominamy również, że aby pracować z MathML w Internet Explorerze, musisz zainstalować MathPlayer.

Każdy plik zawierający znaczniki MathML musi mieć wiersze przed nagłówkiem dokumentu

Ponadto każdy kod MathML otwiera się z tagiem

i zamykane metką.

a2

b2

grzech

x+tak

2x

x2

tak2

Rozważ elementy układu tabel i macierzy.

1

1

1

1

1

1

0

0

0

1

1

0

0

0

1

1

0

0

0

1

1

1

1

1

1

Przykład 2

ax+btak

=c

a1x+

b1tak=

c1

W razie potrzeby należy sprawdzić różne symbole matematyczne w tabeli kodowania Unicode.

Przykład.

S

-1

Σ

i=0

Dość znaczną liczbę przykładów z całkami można znaleźć na, więc nie będziemy się nad nimi tutaj rozwodzić, zalecamy czytelnikowi zapoznanie się z przykładami na wskazanym zasobie.

Jak wspomniano powyżej, MathML umożliwia reprezentacje prezentacyjne i semantyczne. Tutaj skupiliśmy się na prezentacyjnym jako najbardziej strawnym i częściej używanym. Aby jednak dać choć trochę wyobrażenia o drugiej opcji, rozważ mały przykład ilustracyjny i zapisz go w dwóch przedstawieniach.

Przykład. x 2 - 6x + 9 = 0

Oczywiście wpisywanie formuł w MathML jest dość długim zadaniem i wymaga pewnego wysiłku. Jednak ci, którzy wystarczająco długo pracowali w LaTeX-ie, nie zauważą dużej różnicy. Częściej jednak użytkownik woli korzystać z różnych narzędzi. Wymieńmy kilka.

Po pierwsze, pakiety matematyczne, powiedzmy Mathematica lub Maple, pozwalają zapisywać wpisane w nich formuły w formacie MathML.

Ten zasób wykorzystuje skrypt Java ASCIIMathML.js (wersja 2.0; wrzesień 2007; http://www1.chapman.edu/~jipsen/mathml/asciimath.html , napisany przez Petera Jipsena) działający na komputerze użytkownika, który jest ładowany podczas pobranie strony demonstracyjnej http://www1.chapman.edu/~jipsen/mathml/asciimathdemo.html . Dlatego w szczególności z tego zasobu można korzystać lokalnie: wystarczy zapisać wspomnianą stronę demonstracyjną html i można konwertować proste formuły bez łączenia się z Internetem.

Podsumowując, zauważamy, że MathML jako narzędzie znaczników jest również dobrze przystosowane do generowania różnych zadań matematycznych (patrz przykłady powyżej). Jednocześnie do programowania można wykorzystać np. JavaScript, wtedy użytkownik będzie mógł według własnego uznania wygenerować dowolną liczbę opcji zadań. Możesz również przewidzieć generowanie odpowiedzi na wszystkie zadania, co jest bardzo proste.

Spodziewamy się, że znajomość przez czytelnika środków układu tekstów matematycznych nie kończy się na tym, a wtedy będzie mógł samodzielnie wybrać interesujące go narzędzie, a może nawet zastosować w praktyce opisane technologie.

Literatura i zasoby internetowe

Wszystko to dotyczy poszczególnych formuł poza kontekstem dokumentu. Przyjrzyjmy się bliżej przykładowi odpowiadającemu przykładowi „Hello, World!” używanemu w nauce języków programowania. Przedstawiamy kompletny kod dokumentu XHTML 1.0 zawierający kwadratową sumę dwóch omówionych powyżej zmiennych:

Hello Square MathML

To jest idealny kwadrat:

Jest to standardowa struktura dokumentu XHTML. Zaczyna się od otwierającego tagu Zawiera deklarację przestrzeni nazw XML i deklarację języka. Element head zawiera nagłówek jak zwykle. Otwierający tag Początek zawiera również deklarację przestrzeni nazw w postaci skrótowej litery prefiksu m, która ma być użyta dla standardowej przestrzeni nazw MathML. Potem przychodzi zwykły akapit. I wreszcie element math, który również ma deklarację przestrzeni nazw. Wewnątrz elementu math znajduje się znacznik MathML.

Przykłady MathML

Zobacz przykłady znaczników

Notacja: x 2 + 4x + 4 = 0.

Narzut:

Zwróć uwagę na użycie zagnieżdżonych elementów mrow do oznaczania terminów. Na przykład lewa strona równania to operand dla „=”. Podświetlanie terminów znacznie poprawia strukturę wyświetlania wizualnego, odtwarzania głosu i zawijania linii. Symbol MathML InvisibleTimes służy do poinformowania modułu renderującego, że nie jest dozwolone łamanie wiersza między 4 a x. W rzeczywistości takie użycie tego elementu, wprowadzonego w MathML 1.0, nie jest zalecane. Wszystkie dane w postaci zwykłego tekstu są określone przez kody Unicode. Jednak chociaż w standardzie Unicode 3.2 oczekiwany jest znak zastępczy i rozważane są propozycje ulepszenia Unicode, żaden taki znak nie jest używany w bieżącej wersji Unicode 3.0. Możemy użyć oczekiwanego odniesienia liczbowego ࠎ, ale dla jasności nadal będziemy używać elementu InvisibleTimes w przykładach.

Narzut:

±

Elementy mfrac i msqrt służą do tworzenia odpowiednio ułamków i pierwiastków kwadratowych.

Zauważ, że znak plus/minus jest podawany przez encję specjalną , mimo że w tym przypadku występuje znak Unicode, taki jak B1;. MathML zapewnia obszerną listę nazw elementów, które definiują symbole matematyczne. Oprócz symboli matematycznych do wyświetlania i drukowania dokumentu, MathML zapewnia symbole do odtwarzania dokumentu za pomocą mowy. W przypadku odtwarzania za pomocą mowy ważne jest, aby automatycznie określić, w jaki sposób fragment powinien być odczytany.

Jak " z pomnóż przez wartość x plus tak"lub" z pomnożyć przez x plus tak". Znaki (U+2062) i (U+2061) umożliwiają autorom bezpośrednie kodowanie takich różnic dla programów mowy. Na przykład w pierwszym przypadku znak (U+2062) należy wstawić po wierszu zawierający z. MathML zawiera również encje, takie jak (U+2146) reprezentujące różnicę. Po wydrukowaniu jest wyświetlany w odstępach innych niż zwykły znak „d” i może być wymawiany jako „d” lub „w odniesieniu do”. Chociaż znaczniki treści lub jakikolwiek inny mechanizm służy do wyeliminowania niejednoznaczności, autorzy powinni zawsze używać znaków opisanych powyżej jako jednostek, aby dokumenty były bardziej dostępne.

Narzut:

x

tak

z

w

Element mtable wskazuje na początek tabeli w MathML. Element mtr definiuje wiersz tabeli, a element mtd zawiera dane dla elementu wiersza (komórki). Większość elementów posiada atrybuty, które określają właściwości wyświetlania na ekranie i na wydruku. Na przykład element mfenced ma atrybuty, które określają, które znaki powinny być użyte na początku i na końcu wyrażenia grupującego. Atrybuty elementów operatorskich są ustawione na wartość domyślną określoną przez odwołanie za pomocą elementu .