Hakkımda . Gizlilik . İletişim . RSS


MathML'ye Giriş

28 Kasım 2019

MathML'ye Giriş

Hakkında fazla bir belge hazırlanmamış olması, bu işaretleme dili hakkında yazmayı zorunlu kılıyor. Umuyorum, bu açığı bir nebze de olsa kapatabilirim.

MathML Nedir?

MathML Matematiksel Biçimlendirme Dili (Mathematical Markup Language) demek olup, matematiksel ve bilimsel içerik için düşük seviyeli bir dildir. Önceleri web sayfalarında matematiksel ifadelerin görüntüleri kullanılırdı. Bu durumda arama motorları, ilgili içeriği tarayamamaktaydı. MathML bu sorunları aşmak için geliştirildi. MathML'de her bir ifade; bir sayı, bir operatör, bir simge etiketlerle ifade edildiği için, matematiksel ifadelerin arama motorları tarafından tanınması ve taranması daha kolay hale geldi. Buna göre MathML ile yazılan matematiksel içerikler web tarayıcıları tarafından düzgün şekilde görüntülenir ve kullanıcılar, matematiksel ifadeleri rahatlıkla görüntüleyebilirler. Eğer sitenizin AMP sayfası varsa, orada MathJax vb. scriptleri çalıştırmayacağınız için, yazılarınızı MathML ile yazmak isabetli olur. Bunun için çevrimiçi bir yazım editörü kullanmak isterseniz buraya tıklayınız. Açılan sayfada ilgili matematiksel ifadeyi yazdıktan sonra, hemen üst tarafta export yazan yerden MathML/LaTeX kısmına tıklayıp MathML'yi seçerseniz, ifadenin MathML kodunu görürsünüz.

MathML'nin iki tür dizgi yapısı var ama burada onlardan bahsetmeyeceğim. Onun yerine MathML’nin kullanılışını örnek üzerinden anlamaya çalışalım önce. Aşağıda basit bir ifade yazıyor:

<math xmlns="http://www.w3.org/1998/Math/MathML">
    <mi>a</mi>
    <msup>
        <mi>x</mi>
        <mn>2</mn>
    </msup>
    <mo>+</mo>
    <mi>b</mi>
    <mi>x</mi>
    <mo>+</mo>
    <mi>c</mi>
</math>

Bu yazdığımız kodun çıktısı şöyledir: $a^2+bx+c$

Değişkenleri

<mi>...</mi>

etiketinin arasına, işlemleri; yani toplama ve çarpmayı ve bunların tersleri olan bölme ve çıkarmayı

<mo>...</mo>

etiketlerinin arasına ve son olarak üslü ifadeyi

<msup>...</msup>

etiketi arasına,

<mi>x</mi><mn>2</mn>

şeklinde yazarız. Burada x taban ve 2 üs olmakta.

MathML'deki kök elemanın

<math>

öğesi olduğunu belirtmeye sanırım gerek yok. Bu etiket daima kullanılmalıdır ve tüm MathML içeriğini içermelidir. Yine xmlns tanımını eklememiz gerekip gerekmediği, MathML'yi nasıl kullanacağımıza bağlıdır. Ayrıca bu tanımlamayı <body>...</body> arasına yazmak zorunda olduğumuzu belirteyim. Buna göre tam ve düzgün bir örnek paylaşayım:


<!DOCTYPE html> 
<html> 
<head> 
    <title>HTML5 ve MathML Kullanımı</title> 
</head>
<body>     
        <h2>MathML Örneği</h2> 

        <h3>HTML5 MathML <math> etiketi</h3> 

        <math> 
            <mrow> 
                <mrow> 
                    <msup> 
                        <mi>x</mi> 
                        <mn>2</mn> 
                    </msup> 
                    <mo>+</mo> 
                    <msup> 
                        <mi>y</mi> 
                        <mn>2</mn> 
                    </msup> 
                </mrow> 
                <mo>=</mo> 
                <msup> 
                    <mi>z</mi> 
                    <mn>2</mn> 
                </msup> 
            </mrow> 
        </math> 
</body>
</html> 

Bu kodun çıktısı: $x^2+y^2=z^2$

<math> etiketi, aşağıda listelenen bazı nitelikleri kabul eder:

  • class | id | style: Bu özellik alt öğelerin stillerini tutmak için kullanılır.
  • dir: Bu nitelik yön değerini tutar. Soldan sağa ltr, sağdan sola rtl olmak üzere iki tür yön değeri tutar.
  • href: Bu özellik, belirtilen bir URL'ye giden herhangi bir köprüyü tutmak için kullanılır.
  • mathbackground: Bu özellik matematik ifadelerinin arka plan renginin değerini tutar.
  • mathcolor: Bu özellik matematik ifadelerinin rengini tutar.
  • display: Bu özellik, HTML öğesinin oluşturulmasının değerini tutar. Bu öğenin geçerli metin yayılma alanının dışında/içinde görüntüleneceği anlamına gelen iki değer bloğu olabilir; block ve inline.
  • mode: Ekran özelliğini ifade eder, inline veya display değerini alabilir.
  • overflow: İfadenin yatay olarak satıra sığması durumunu belirler. Varsayılan olarak linebreak kullanılır. Alabileceği diğer değerler; scroll, elide, truncate ve scale'dir.

MathML ile ilk karşılaşmanız bu. MathML yerine belki $\LaTeX$ kullanmak isabetli olur. MathML uzun matematiksel ifadeler kullanma noktasında oldukça hantal ve sıkıcı olabilir. Buna rağmen MathML kullanacaksanız, XML etiketlerini otomatik olarak tamamlayan bir metin düzenleyicisi kullanmak kesinlikle hayatınızı kolaylaştıracaktır.


Yararlanılan Kaynaklar:

  1. MathML3/W3C
  2. Mathcha
  3. GeeksforGeeks
  4. MathML Tutorial