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:
- kako koristiti ćirilicu i moderne fontove u LaTeX dokumentima;
- kako koristiti LaTeX na internetu;
- kako kreirati kvalitetne matematičke crteže.
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).
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:
- U TeX jeziku je veoma teško programirati, jer je TeX jezik osmišljen pre četrdeset godina i od tada se nije značajno menjao. Mnogi elementi na koje je svaki današnji programer navikao (tipovi, nizovi, subrutine, objekti...) nepostojeći su u TeX sistemu.
- TeX/LaTeX se ne zasniva na Unicode standardu što otežava korišćenje karaktera koji ne pripadaju ASCII kodnoj stranici.
Š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, nova verzija LaTeX sistema, LaTeX 3, donosi značajna poboljšanja koja korisnicima koliko-toliko olakšava programiranje TeX dokumenata.
LaTeX 3 donosi i poboljšanje situacije o kojoj govori drugi problem s gornje liste, ali ne rešava taj problem u potpunosti. 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, rešenje već 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
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).
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).
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 Mozilla 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.
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.
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:
- PGF-TikZ je TeX paket koji omogućava TeX korisnicima da crtaju u samom TeX dokumentu. TikZ se može proširiti s desetinama drugih paketa koji olakšavaju kreiranje nekih specijalnih vrsta crteža kao što su komutativni dijagrami, grafovi, Karnoove mape, Venovi dijagrami, elektrotehničke ili optičke šeme, itd… Još jedna od prednosti TikZ crteža je ta što se svi natpisi na crtežu ispisuju uz pomoć TeX-a, zbog čega ne odudaraju od ostatka teksta (po stilu ili veličini fonta).
- GeoGebra je dobro poznati interaktivni softver s kojim se mogu crtati dvodimenzionalne i trodimenzionalne geometrijske slike. Dvodimenzionalni GeoGebra crteži mogu se sačuvati u
.svg
,.pdf
ili.eps
formatu, ali i kao niz komandi namenjenih za TikZ. - GCLC je program za geometrijsku vizualizaciju i produkciju matematičkih crteža autora Predraga Janičića. Crteži u GCLC-u se opisuju nizom komandi i moguće ih je sačuvati u
.svg
,.pdf
ili.ps
formatu ili kao niz komandi za TikZ. - Asymptote je programski jezik namenjen kreiranju matematičkih crteža. Može se koristiti samostalno ili unutar TeX dokumenta poput TikZ-a.
- GnuPlot je program za plotiranje različitih tipova funkcija i statističkih podataka. Crteže može čuvati u
.svg
,.pdf
ili.ps
formatima. - Inkscape je program namenjen za crtanje vektorskih crteža (ne samo matematičkih). Posebno je koristan za „dorađivanje“ vektorskih crteža koji su nacrtani nekim od prethodno navedenih programa. Inkscape može čitati i pisati
.svg
,.pdf
ili.ps
formate. U članku How I draw figures for my mathematical lecture notes using Inkscape pojašnjene su neke od pogodnosti korišćenja Inkscape-a za crtanje matematičkih crteža.
- Donald Ervin Knuth (1938– ). ↩
- Knut je naziv TeX izveo iz grčke reči τέχνη koja je koren reči tehnika. Zbog toga TeX bi trebalo izgovarati teh. ↩
- Leslie B. Lamport (1941– ). ↩
- 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. ↩
- Ova neobična rečenica je zapravo pangram - rečenica u kojoj se svako slovo azbuke koristi barem jednom. ↩
- Na osnovu primera preuzetog s Vikepedije. ↩
- Ovo bi uskoro trebalo da se promeni, jer španska kompanija Igalia već nekoliko godina vredno radi na implementiranju MathML podrške u Chromium-u. ↩
- 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. ↩
- Pandoc se može jednostavno podesiti da umesto MathML-a koristi MathJax ili KaTeX. ↩
Literatura
- Donald E. Knuth, Mathematical typography
- Donald E. Knuth, The future of TEX and METAFONT
- Eddie Smith, From boiling lead and black art: An essay on the history of mathematical typography