30.12.2022

LaTeX ve GitHub

Bu yıl iki önemli teknoloji birleşti ve matematik sayfalarının daha güzel görünmesini ve daha kolay yapılmasını sağladı. Matematik formülleri kitap kalitesinde yazmanın en kolay yolu olan LaTeX ile kendi sayfalarımızı yayınlamanın en etkin yolu olan GitHub nasıl bir araya geldi? Sorunun cevabı üç meşhur yazılım sisteminin tarihçesinde...

Şu GitHub sayfası bugün vardığımız yeri özetliyor:
maeyler.github.io/Sunumlar/math/sample

Bu iki teknolojiyi web sayfaları (HTML) birleştiriyor

TeX 1978 ve LaTeX 1984
Bilgisayar bilimlerindeki bütün bilgileri bir araya getirip 5 ciltlik bir ansiklopedi yazmak isteyen Donald Knuth, 3. cildi hazırlarken bir sürprizle karşılaştı: Geleneksel baskı teknikleri yerini bilgisayarlı dizgi makinelerine bırakıyordu. Lakin yeni ürünlerin kalitesi kabul edilir gibi değildi. Durumu düzeltmek için bir yılını feda etmeye karar verdi ve üniversiteden bir yıl izin alarak işe koyuldu.

Bir sene sonunda ürün ortaya çıktı ama titiz bir yazar için yeterli değildi. Knuth'un kendi onayını alması için 10 yıl daha geçti. Tek kişilik çabanın ürünü olan TeX hakikaten fizik ve mühendisliğin bütün alanlarında standart yazım dili haline geldi. 
https://en.wikipedia.org/wiki/TeX

LaTeX, bu sisteme akademik yayınları kolaylaştırmaya yönelik pek çok şablon eklemiş. Bu özellikler hazır geldiği için TeX yazılımının yaygınlaşmasına önemli bir katkı sağlıyor.

Ansiklopediye ne oldu dersiniz? 4. cilt iki kitap olarak tamamlandı. 85 yaşındaki yazar, 5. ciltten sonra geri dönüp ilk üç cildi yeniden yazmayı planlıyor! Sonra da hepsini tek ciltte özetlemek istiyor. Hayat hakikaten kısa, bilimin bir dalı bile sığmıyor...

HTML 1993 ve MD 2004
TeX yazılımının henüz bilinmediği 1980 yılında, tanınmamış bir fizikçi, Tim Berners-Lee dokümanlar arasında hızlı geçiş sağlayan basit bir sistem önerdi. Teklif "çok basit, işimize yaramaz" diyerek çöpe atıldı. Basitliğin büyük bir güç olduğunun anlaşılması 10 yıldan fazla sürdü. Tek kişilik çabanın ürünü olan HTML, hakikaten bütün web sayfalarının standart dili haline geldi. Bunu bilgisayar mühendisleri tasarlasaydı çok daha karmaşık kapalı bir sistem olurdu.
https://en.wikipedia.org/wiki/HTML

Lakin, HTML ile sayfa hazırlamak (bütün basitliğine rağmen) zor geliyordu. Adındaki M harfinin "markup" olduğunu gören iki yazılımcı, buna nazire olarak MarkDown kavramını geliştirdi. Buradaki katkı HTML ile kıyaslanamaz ama işleri basitleştiren her gayret kayda değer.

Git 2005 ve GitHub 2008
Bu arada, başka bir basitleştirme ustası, Linus Torvalds dev bir yazılım olan Linux işletim sistemini açık kaynak olarak dünyaya kabul ettirmişti. Linux 10 yıl içinde iyice büyüdü ve çok sayıda yazılımcının katkısı ile güçlendi. Farklı kişilerin yaptığı işleri kontrol edebilmek için geliştirilen Git, karmaşık bir sürüm yönetim sistemi. Karmaşıklığına rağmen, çok basit komutlarla kullanılıyor. Tek kişilik çabanın ürünü olarak ortaya çıkan Git, bugün pek çok yazılım sisteminin standart aracı haline geldi.
https://en.wikipedia.org/wiki/git

Lakin tek başına sürüm kontrolü yetmiyor. Yazılımı buluta kaydetmek ve takımların çalışmasını uzaktan yönetebilmek de lazım. GitHub işte bu ihtiyaca cevap veriyor. Eski bir öğrencim "GitHub yazılımcılar için CV görevi görüyor" demişti, ne kadar doğru olduğunu içine girince anladım.

Kendi hayatıma etkileri
1979'da doktorayı tamamlarken çok kişi elektronik yöntemlere geçmişti. Benim tezim ise (o bölümde) daktiloda yazılan son işlerden biri olmalı. TeX henüz. duyulmamıştı. 1988'de doçent olarak Bilkent'e gittiğimde nerdeyse bütün makalelerin LaTeX ile yazıldığını gördüm. O sırada yeni çıkan Mac yazılımını (What You See Is What You Get) tercih ettim, çünkü TeX bana çok zor göründü. 2008'de talebemin yardımı ile bir makale yazdım ama o da yayınlanmadı. Yani, TeX akademik hayatımda hiç etkili olmadı.

HTML ise 2004'de öğrenip uyguladığım bir dil. O zaman takdir ettim ama hayatıma 2018'de gerçekten girdi. O sırada üç yıldır GitHub kullanıyor ve öğretiyordum. MarkDown ile tanışmam da aynı döneme rastlıyor. Son beş yıldır bu iki teknolojiyi yakından takip ediyorum.

Hepsi bir araya gelince, Matemacik sayfalarını elden geçirmek ve gerçek bir kitap kalitesini sağlamak mümkün olacak, hemen başlıyorum. Şöyle bir değişim olacak:

Düz metin ve LaTeX -- çok fark var!


Bir ay sonra
Matemacik sayfalarını TeX ile yazarken en önemli sorun "inline math" denilen metin içindeki formüller oldu. Standart yöntem olan "$...$" yaklaşımı, kullandığım MathJax içinde aktif değildi. Halbuki GitHub ve VS Code standarda uygun çalışıyordu. Bunun yöntemini 2016 tarihli bir makalede buldum -- demek 2017'de başlayan bu blog daha o zaman TeX ile yazılabilirmiş. Çevremde bunu bilen kimse olmadığı için 5 yıl gecikmeyle katıldım...

Ocak 2023 sonunda çözümü yayınladım ve son 6 yazıyı düzelttim. Eski sürümle kıyaslamak için web adresindeki tarihi "p" yapmak yeterli. Bir örnek:
https://matemacik.blogspot.com/2020/06/carpsan-toplar.html TeX
https://matemacik.blogspot.com/p/carpsan-toplar.html  Düz metin

TeX öncesi ve sonrası aynı denklemler