NIKOLA UBAVIĆ

LaTeX za 21. vek

Razvoj elektronskih tehnologija značajno je uticao na sve aspekte čovekovog života, pa tako i na matematiku. Iako je pisanje i objavljivanje matematičkih tekstova danas značajno lakše nego ranije, ipak i dalje postoje značajni problemi u tome kako se matematika piše u digitalnom svetu. U ovom tekstu će biti ukazano na nekoliko problema i biće izneta neka rešenja. Tačnije, u ovom tekstu će biti opisano:

TeX

Krajem sedamdesetih godina prošlog veka, američki informatičar Donald Knut1 stvorio je sistem TeX2 namenjen pripremi tekstova za štampu (pogotovo matematičkih tekstova). Knut je napravio TeX sistem da bi prevazišao nizak tipografski kvalitet tadašnjih publikacija (slika 1).

Prikaz jednog matematičkog teksta koji nije pripremljen uz pomoć TeX sistema.
Slika 1. Deo stranice udžbenika koji nije pripremljen uz pomoć TeX sistema. Matematički izrazi su teško čitljivi.

Osim što je TeX sistem generisao lepe dokumente, TeX je bio pogodan za rad jer se sadržaj i izgled dokumenta opisivao nizom komandi. Na ovaj način, priprema teksta u TeX sistemu svodila se na programiranje.

Sredinom osamdesetih godina američki informatičar Lesli Lemport3 kreirao je LaTeX – skup makroa za TeX koji korisnicima TeX sistema olakšava programiranje istog. S vremenom LaTeX je postao de facto standard za pripremu radova s matematičkim sadržajem.

Ipak, TeX/LaTeX sistem ima dva velika nedostatka:

Što se tiče prvog navedenog problema, on u suštini neće biti rešen. Naime, Donald Knut smatra da TeX jezik ne bi trebalo da se razvija s vremenom, već smatra da je bolje da TeX jezik ostane zauvek u stanju u kom se sada nalazi.4 Dakle, TeX nikad neće dobiti karakteristike koje poseduju moderni programski jezici, a koje bi značajno olakšale rad programerima. Ipak, naredna verzija LaTeX sistema, LaTeX 3, obećava značajna poboljšanja koja će korisnicima koliko-toliko olakšati (ulepšati) programiranje TeX dokumenata.

LaTeX 3 takođe obećava i poboljšanje situacije o kojoj govori drugi problem s gornje liste. Trenutno, pisanje dokumenata koji nisu na latinici nije nimalo jednostavno. Na primer, često se za pisanje srpske ćirilice upisuje kôd \usepackage[OT2]{fontenc}, a zatim se tekst piše na latinici uz korišćenje raznih digrafa. Tako da, ako želimo da napišemo rečenicu

Брза вижљаста лија хоће да ђипи преко њушке флегматичног џукца5

pisali bismo kod

Brza viz1ljasta lija hoc1e da djipi preko njushke flegmatichnog d2ukca

Ovakav kod je nečitljiv. Da stvar bude još gora, u PDF dokumentu koji se dobija kompajliranjem koda, biće sačuvan latinični tekst prikazan ćiriličnim fontom (ovo otežava pretraživaje PDF dokumenta ili kopiranje njegovog sadržaja). Takođe, pri ovakvom pristupu teško je koristiti neko drugo pismo (npr. latinicu ili grčki alfabet za pisanje ličnih imena) jer se svi karakteri automatski prikazuju kao ćirilični. Postoji još nekoliko načina da se koriste nelatinična pisma u LaTeX-u, ali svako od tih rešenja ima razne probleme iz prostog razloga zato što TeX sistem ne koristi Unicode kodiranje.

Ipak, dok ne stigne LaTeX 3, rešenje postoji: XeTeX je alternativa LaTeX-u koja je kreirana sa ciljem da (La)TeX korisnicima omogući jednostavno korišćenje Unicode kodiranja kao i modernih fontova. Pisanje XeTeX dokumenta identično je pisanju LaTeX dokumenta (komande su iste), osim što u XeTeX dokumentu pišete pismom koje želite da bude u PDF dokumentu (dakle nema preslovljavanja kao kod LaTeX-a). Na primer, jedan XeTeX dokument može izgledati ovako:6

\documentclass[11pt]{article}
\usepackage{fontspec}
\setmainfont{Garamond Premier Pro}
\begin{document}
All human beings are born free and equal in dignity and rights.

Hver maður er borinn frjáls og jafn öðrum að virðingu og réttindum.

Все люди рождаются свободными и равными в своем достоинстве и правах.

Ὅλοι οἱ ἄνθρωποι γεννιοῦνται ἐλεύθεροι καὶ ἴσοι στὴν ἀξιοπρέπεια καὶ τὰ δικαιώματα.

Cвa људскa бићa рaђajу сe слoбoднa и jeднaкa у дoстojaнству и прaвимa.
\end{document}  
U tex dokumentima namenjenim za XeTeX kompajler mogu se koristiti gotovo sva pisma kodirana Unicode standardom, dokle god su instalirani fontovi koji podržavaju pisma koja se koriste. Odabir glavnog fonta dokumenta se jednostavno vrši uz pomoć setmainfont komande koja je definisana u fontspec paketu.

Kompajliran PDF ovakvog dokumenta izgleda baš onako kako bismo očekivali: sav tekst se prikazuje onakav kakvog smo ga uneli. Kao što vidimo, u XeTeX dokumentima ne postoje teškoće prilikom korišćenja više pisama.

XeTeX dolazi uz poznate TeX distribucije, tako da se može odmah koristiti na skoro svim računarima koji imaju instaliran LaTeX kompajler. Dovoljno je samo odabrati XeTeX kao podrazumevani kompajler u podešavanju vašeg TeX okruženja (primer kako to izgleda u Overleaf-u prikazan je na slici 2).

Podešavanje komajlera na Overleaf-u.
Slika 2. Biranje TeX kompajlera u popularnom onlajn editoru Overleaf jednostavno se izvodi u podešavanjima.

Matematika na internetu

Iako se (La)TeX, i pored svojih nedostataka, ispostavio kao najbolje rešenje za pripremu matematičkih tekstova za štampu, danas (La)TeX nije adekvatan za digitalnu komunikaciju među matematičarima. Danas se pisani sadržaj konzumira najviše preko elektronskih uređaja poput računara, tableta, pametnih telefona i e-čitača, pa su stoga programi poput TeX-a, manje značajni nego ranije.

Kompajliranjem TeX koda dobija se PDF (DVI, PS) dokument koji ima fiksiran prelom, što je korisno za štampu, ali ne i za čitanje s ekrana. Za razliku od PDF formata, HTML format na kom se zasniva čitav web, ima sposobnost prilagođavanja preloma dimenzijama ekrana, što znatno olakšava čitanje tekstova (slika 3).

Tri pametna telefona na kojima se nalazi isti matematički tekst sa različitim prelomom.
Slika 3. Čitanje PDF dokumenata na malim ekranima često nije prijatno. Na levom telefonu PDF dokument je postavljen tako da širina teksta bude jednaka širini ekrana uređaja. U ovom slučaju veličina teksta je često premala da bi se mogao čitati. Na srednjem telefonu dokument je uvećan, ali se više ne može videti cela linija teksta odjednom i zato je potrebno neprestano pomerati dokument. Na desnom telefonu širina teksta se automatski prilagodila širini ekrana, i sada je moguće s lakoćom čitati.

U HTML standardu, naveden je opis MathML jezika s kojim se mogu opisivati matematički izrazi kao što je to slučaj s TeX-om. Nažalost, trenutno samo Мozilla Firefox i Safari pretraživači podržavaju MathML jezik. Najpopularniji pretraživač, Google Chrome, kojeg koristi preko 70% korisnika interneta, i dalje ne podržava MathML7. Zbog toga su se tokom godina pojavile javascript biblioteke koje omogućavaju renderovanje matematičkih izraza u svim pretraživačima. Najznačajnije takve biblioteke su MathJax i KaTeX. Obe ove biblioteke se jednostavno integrišu u web sajtove i omogućavaju korišćenje dobro poznate TeX sintakse za pisanje matematičkih izraza unutar HTML dokumenta.

Na ovom sajtu se koristi KaTeX biblioteka koja omogućava da svi korisnici vide matematičke izraze poput sledećeg \[x_{1,2}=\frac{-\beta\pm\sqrt{\beta^2-4\alpha\gamma}}{2\alpha}.\] Kao što se sami možete uveriti, tipografski kvaliteti gornjeg izraza ostaju nepromenjeni ako se stranica uveća/smanji ili ako se tekst pročita na manjem ekranu.

Zašto je onda potreban MathML ako postoje navedeni alati? Najbitniji razlog je taj što se sa MathML tehnologijom matematički izrazi renderuju neuporedivo brže nego sa MathJax ili KaTeX skriptom.8 Takođe, MathML omogućuje naprednu tipografiju i bolji prelom jednačina, jednostavnije povezivanje s ostalim Web standardima, bolju podršku za assistive tehnologije itd... Detaljnije o prednostima MathML jezika u odnosu na ostale tehnologije možete pročitati na stranici projekta MathML in Chromium.

I pored svih prednosti MathML jezika u odnosu na ostale tehnologije postoji jedna velika „slabost“ MathML-a. Naime, MathML je osmišljen kao XML jezik, i kao takav je mnogo manje pogodan za ljude nego što je to TeX jezik. To možemo videti poređenjem naredna dva koda koja opisuju istu kvadratnu jednačinu. TeX kod je značajno manji, a samim tim i lakši za pisanje i održavanje.

<math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="true">
    <mrow class="MJX-TeXAtom-ORD">
      <msub>
        <mi>x</mi>
        <mrow class="MJX-TeXAtom-ORD">
          <mn>1</mn>
          <mo>,</mo>
          <mn>2</mn>
        </mrow>
      </msub>
      <mo>=</mo>
      <mfrac>
        <mrow>
          <mo>−</mo>
          <mi>β</mi>
          <mo>±</mo>
          <msqrt>
            <msup>
              <mi>β</mi>
              <mn>2</mn>
            </msup>
            <mo>−</mo>
            <mn>4</mn>
            <mi>α</mi>
            <mi>γ</mi>
          </msqrt>
        </mrow>
        <mrow>
          <mn>2</mn>
          <mi>α</mi>
        </mrow>
      </mfrac>
    </mrow>
  </mstyle>
</math>
MathML kod
x_{1,2}=\frac{-\beta\pm\sqrt{\beta^2-4\alpha\gamma}}{2\alpha}
TeX kod

Srećom, postoje alati koji konvertuju TeX u MathML. Jedan takav alat je i Pandoc, koji može čitave LaTeX dokumente konvertovati u HTML+MathML dokumente9, ali i obrnuto. I ne samo to, Pandoc može konvertovati iz/u još desetine različitih formata među kojima su i Markdown, Microsoft Word docx, OpenOffice/LibreOffice ODT, EPUB

Matematički crteži

Mnogi matematički koncepti se mnogo lakše mogu shvatiti ako se vizualiziju na pravi način. Zbog toga je često korisno da tekst prati odgovarajući crtež (na primer, to mogu biti geometrijska figura, grafik funkcije, Venov dijagram, komutativni dijagram, graf…).

Često autori matematičkih tekstova nacrtaju željeni crtež u nekom programu, sačuvaju ga kao .jpg ili .png sliku, a zatim tu sliku uvezu u TeX fajl pomoću komande \includegraphics. Ovaj postupak je jednostavan i brz, ali ga ne treba koristiti pri ilustrovanju značajnih publikacija (teze, knjige, radovi), jer daje rezultate lošeg kvaliteta. Loš kvalitet se najviše ogleda u tome što su .jpg i .png slike rasterske prirode i kao takve ne mogu menjati dimenzije bez gubljenja kvaliteta (slika 4). Da bi se izbegao gubitak kvaliteta matematičkih crteža, potrebno je koristiti vektorsku grafiku.

Detalj rasterskog crteža. Detalj vektorskog crteža.
Slika 4. Detalji dve slike: Prva slika je sačuvana u rasterskom formatu i kod nje je došlo do gubitka kvaliteta pri uvećavanju. Druga slika je sačuvana u vektorskom formatu, i kod nje nije došlo do gubitka kvaliteta pri menjanju dimenzija.

Vektorski crteži se mogu crtati u mnogim programima (Inkscape, Adobe Illustartor), a često i matematički softver ima mogućnost čuvanja crteža u vektorskim formatima. Vektorski crteži sa .pdf ili .ps ekstenzijom mogu se uključiti u TeX dokument uz pomoć komande \includegraphics.

U slučaju da se matematički tekst plasira na web, tada je pogodno koristiti SVG koji je podržan u svim modernim pretraživačima. Ovaj vektorski format omogućava da se crteži vide kristalno jasno na ekranima svih rezolucija kao i na papiru.

U narednoj listi navedeni su neki besplatni programi koji se mogu koristiti za crtanje vektorskih matematičkih crteža:


  1. Donald Ervin Knuth (1938– ). 
  2. Knut je naziv TeX izveo iz grčke reči τέχνη koja je koren reči tehnika. Zbog toga TeX bi trebalo izgovarati teh
  3. Leslie B. Lamport (1941– ). 
  4. Knut je u [2] rekao: I have put these systems into the public domain so that people everywhere can use the ideas freely if they wish. I have also spent thousands of hours trying to ensure that the systems produce essentially identical results on all computers. I strongly believe that an unchanging system has great value, even though it is axiomatic that any complex system can be improved. Therefore I believe that it is unwise to make further “improvements” to the systems called TeX and METAFONT. Let us regard these systems as fixed points, which should give the same results 100 years from now that they produce today. 
  5. Ova neobična rečenica je zapravo pangram - rečenica u kojoj se svako slovo azbuke koristi barem jednom. 
  6. Na osnovu primera preuzetog s Vikepedije
  7. Ovo bi uskoro trebalo da se promeni, jer španska kompanija Igalia već nekoliko godina vredno radi na implementiranju MathML podrške u Chromium-u. 
  8. MathML je implementiran u samom pretraživaču, dok se MathJax i KaTeX pokreću kao javascript skripte unutar pretraživača, što nije efikasno. Takođe, MathJax i KaTeX moraju preuzimati neophodne fontove i stilove sa servera, što nepotrebno troši protok i vreme. Pretraživači koji imaju MathML podršku ne moraju da vrše dodatna preuzimanja da bi prikazali matematičke izraze. 
  9. Pandoc se može jednostavno podesiti da umesto MathML-a koristi MathJax ili KaTeX

Literatura

  1. Donald E. Knuth, Mathematical typography
  2. Donald E. Knuth, The future of TEX and METAFONT
  3. Eddie Smith, From boiling lead and black art: An essay on the history of mathematical typography