published on 12.02.2022

LaTeX Nedir?

LaTeX bir çeşit döküman hazırlama sistemidir, ancak çoğumuzun alıştığı arayüzlerin aksine bu döküman içerisinde kod yazar gibi bazı komutlar kullanırız. Daha sonra derleyici (compiler) bu dökümanı bizim tanımladığınız kurallara göre PDF’e dönüştürür.

1978 yılında, Donald Knuth TeX dizgi sistemini geliştiriyor. Daha sonra, 80’li yılların başında Leslie Lamport TeX üzerine bazı makrolar tanımlayarak kullanması daha kolay bir uzantı oluşturuyor. Bu sistem LaTeX olarak biliniyor ve popülerlik kazanıyor.

Hemen bir örnek verelim:

\documentclass{article}
\title{Cartesian closed categories and the price of eggs}
\author{Jane Doe}
\date{September 1994}
\begin{document}
   \maketitle
   Hello world!
1. 
\end{document}

Title, author, date gibi metadata fieldları tanımladık ve anlaşılacağı üzere, asıl döküman begin{document}, end{document} satırları arasında yer alıyor. En üstte bir class tanımlamışız falan. Şimdilik çok önemli değil bunlar.

Bu arada leyteks ya da ~lateks diye okunmuyor. Ley-Tek, doğrusu. Lütfen. Çok basit.

Word vs LaTeX

MS Word, OpenOffice ya da benzeri programlar WYSIWYG, WhatYouSeeIsWhatYouGet, olarak adlandırılır. LaTeX’de ise döküman formatını belirlemek için kod yazarız ve sonrasında bir derleyici çalışır.

LaTeX code
LaTeX code
LaTeX compiled document
LaTeX compiled document

“Karışık duruyor, ne gerek var böyle bir şeye?”, diyebilirsiniz. Kesinlikle basit değil ve hangi durumlarda kullanmak ya da öğrenmek mantıklı tartışılır. Fazla uzatmadan bana göre kimler için mantıklı sıralıyorum:

  • Çalışmanız yeterince uzunsa,
  • Akademik bir tez ya da teknik bir kitap yazıyorsanız,
  • İçinde bolca şekil, tablo varsa,
  • Bol bol matematiksel dizgi kullanıyorsanız,
  • Çapraz referanslara yer vereceksiniz,
  • Atıflar ve kaynakçaya ihtiyacınız varsa,
  • Bir kere öğreneyim sonraki çalışmalarımda da işime yarar diyorsanız

öğrenmeye değer. Aksi halde, değerli zamanınızı boşa harcamayın ve Word’ü biraz daha iyi kullanmayı öğrenin, derim.

Aslında hemen hemen her şeyi Word ile de yapabilirsiniz. Tabii ki işleri biraz yavaşlatıyor ve programatik değil. LaTeX’in verdiği kaliteyi ve elemanları üzerindeki kontrolü de sağlamıyor olabilir. Büyük ihtimalle çoğu insan için bunlar detay.

Özetle, LaTeX uzun vadede işinizi kolaştırır ve birçok avantaj sağlar ancak yatırım maliyeti yüksek, öğrenmek için biraz zaman ayırmanız gerekiyor.

Word Kullanıcılarına

En azından kendi çevremde gördüğüm kadarıyla, insanlar Word kullanmayı da pek bilmiyorlar. Yeri gelmişken birkaç ipucu vermek istiyorum.

  • Matematiksel formüller yazabilirsiniz. Alt+= ya da Türkçe klavyede Alt+Shift+0.
  • Page Break Ctrl+Enter
  • Tablolarınızı Excelde oluşturup copy paste yapabilirsiniz.
  • Dökümanı section’lara ayırıp Layout > Break > Section Break, sayfa numaralandırmalarını section içerisinde özelleştirebilirsiniz. Mesela başta roma rakamları sonrasında bildiğimiz 1, 2, … ya da bu section’da “numaralandırma olmasın” diyebilirsiniz.
  • Her paragrafı ayrı ayrı formatlamak yerine, Styles bölümünden farklı stylelar tanımlayıp onları kullanabilirsiniz. Değiştirmek isterseniz, daha sonra sadece o style’ı değiştirirsiniz.
  • Source Manager‘ı kullanarak kaynakça tanımlayabilirsiniz. Daha sonra istediğiniz formatta, -APA, IEEE-, bibliography oluşturabilirsiniz.
  • ¶ butonunu kullanmaktan çekinmeyin. Ctrl+Shift+8 ile açıp kapatabilirsiniz. Nerede boşluk var, nerede satır bitiyor, nerede page break var gibi basılmayacak gizli karakterleri görmenizi sağlar. Başta biraz çirkin geliyor ama düzenlemeyi kolaylaştırıyor.

LaTeX’in Avantajları

Yukarıda da bahsettiğim gibi, LaTeX’in ciddi bir öğrenme eğrisi var ama avantajları da var. O avantajlardan bazılarını ele alalım.

İçerik - Format Ayrımı

LaTeX’in bana göre bir avantajı da içerik ile döküman formatının birbirinden ayrılmasıdır. İlk bakış da önemli değil gibi gelse de belki de en önemli konu bu. Yok resim aşağı kaydı, yok tablo ile yazı içiçe geçti gibi dertler büyük oranda ortadan kalkar. Eğer, temel seviyede web biliyorsanız, buradaki ayrımı HTML + CSS gibi de düşünebilirsiniz. Biz sadece içeriğe odaklanırız, zaten olması gereken de budur. Yazı tipi, boyutu, satır aralığı gibi konuları ayrıca ele alırız. Sonra değiştirmek istersek programatik bir şekilde yine değiştirebiliriz.

LaTeX Paketleri

LaTeX uzun yıllardır var olan olgun bir platform olduğu için her konuyla ilgili birden çok paket bulabiliriz. Uzun tablolar, kaliteli grafik elemanları, matematiksel dizgiler, organik kimya sembolleri vb. gibi işler için özelleşmiş paketler ücretsiz olarak CTAN üzerinden erişilebilir. Bu paketler, dökümanımıza import edebileceğimiz kütüphanelerdir. Daha sonra o kütüphanelerde tanımlı özellikleri kullanabiliriz. Herhangi bir programlama dilinde olduğu gibi.

Plain-Text

.doc ya da .docx dosyaları binary dosyalardır ve Word ya da onu açmak için özelleşmiş bir yazılım olmadan açamayız. Plain-text dökümanlar ise gerçekten sadece text dosyasıdır, içinde farklı fontlar, kalın, italik yazı gibi herhangi bir rich-text elemanı bulundurmaz. Bu dosyaları herhangi bir text editor ile açabiliriz. Mesela Notepad ya da VS Code.

Bir text editor ile docx açmaya çalışırsanız saçma sapan yazılarla karşılarız. Herhâlde herkes en azından bir kere karşılaşmıştır böyle bir görüntüyle.

Rich Text Garbage
Rich Text Garbage

Plain-text dökümanlarının herhangi bir ortamda açılıp düzenlebilir olması çoğu insan için önemli bir ölçüt değildir. Çünkü artık herkesin telefonu bile Word dosyası açıp düzenleyebiliyordur. Üstelik artık Google Docs ya da Office 365 gibi internetin olduğu her yerden erişebileceğimiz hizmetler varken burada plain-text ile rich-text’in farkını anlatmam ne kadar mantıklı? Aslında, eğer git kullanıyorsanız mantıklı.

Çünkü git ile plain-text dosyalarını satır satır versiyonlayabilir, önceki versiyon ile farklarına bakabilir, geçmişe geri dönebiliriz. .docx gibi binary dosyalarda bunu yapamayız.

Matematiksel Dizgi

$$f(a) = \frac{1}{2\pi i} \oint\frac{f(z)}{z-a}dz$$

Yukarıdaki gibi matematiksel formüller içeren formülleri LaTeX kullanarak yazabiliriz.

Kalite

LaTeX çıktısının, özellikle konu matematiksel içeriklere geldiğinde, Word çıktısından daha kaliteli olduğu bilinmektedir. Ayrıca, LaTeX derleyicilerinin kullandığı kerning (iki harf arası boşluk), hyphenation (satır sonundaki sözcüğü tire ile ayırma), metin hizalama algoritmaları daha başarılı sonuçlar vermektedir. Bunları ben de yeni öğrendim ve detaylar için The Beauty of LaTeX adlı yazıya bakabilirsiniz.

Dönüştürülebilirlik

Dönüştürülebilirlik… Çok enteresan bir şekilde uzun duruyor aslında sözün kökü 3 harf. Türkçe’yi seviyorum. Her neyse… Ne demek dönüştürülebilirlik?

En başta da söylediğim gibi LaTeX dosyası aslında bir kod dosyası ve bir derleyiciye ihtiyacı var. Bu derleyici genellikle PDF’e dönüştürmek için kullanılır ama isterseniz Word dosyasına isterseniz .pptx gibi sunum dosyasına da dönüştürebilirsiniz.

Evet, LaTeX ile sunum hazırlayabiliyoruz. Yeterince profesyonel görünen ve saatlerimizi harcamadan hızlıca oluşturabileceğimiz bir düzen oluşturabiliriz. Konu sunuma gelince beamer adlı paket öne çıkıyor. Eminim farklı paketlerde vardır ama benim aktif kullandığım bir şey değil, en azından şimdilik.

Kaynakça

LaTeX kullanırken, kaynakçayı ve atıfları genellikle BibTex dosya formatında yönetiriz. Bu dosya formatı, bir çeşit dictionary‘dir aslında. Herbir kayda ait bir anahtar sözcük (key) vardır.

@article{Bakır2022,
   abstract = {...},
   author = {Mert Bakır, Kilimcinin Köroğlu, Sarı Çizmeli Methmet Ağa},
   journal = {Bakır'ın Notları},
   title = {Bakır LaTeX Anlatıyor},
   volume = {01},
   year = {2022},
}

Bu anahtar kullanılarak döküman içerisinde atıfta bulunabiliriz, \cite{Bakır2022}, ya da tüm kaynakçayı yazdırabiliriz, \bibliography. Burada devreye varsayılan olarak BibTeX yazılımı devreye girer. LaTeX paketi olarak yükleyebileceğimiz, daha modern BibTeX alternatifleri de mevcut.

Bu dosya genellikle .bib uzantısında olur ve Zotero ya da Mendeley gibi, referans yönetimi için özelleşmiş ayrı bir program tarafından oluşturulur.

Burada işlerin programatik olmasının bazı avantajları da şöyle sıralanabilir.

  • Örneğin, bir atıfı yanlış girdiniz ya da .bib dosyasında olmayan bir anahtar kullandınız. Doğal olarak PDF’e dönüştürürken o atıf işlenemeyecek. Bunu gözle tespit etmenize, acaba bir yerde eksik var mı diye kontrol etmenize gerek yok. Konsolda bir error ya da warning olarak karşımıza çıkacaktır.

  • Tüm referansları bir dosyada tutmak istemiyoruz. Büyük bir çalışma yapıyoruz ve bunları bir şekilde farklı dosyalarda gruplamışız. Programatik bir şekilde birden fazla .bib dosyasını dökümana dahil edebiliriz.

  • IEEE, APA gibi farklı referans sistemlerinin kurallarına göre çıktıyı değiştirebiliriz.

You are reading the 1st of 3 episodes in Writing-Thesis.
Published on 12.02.2022 by Mert Bakır with commit 03f9638.
writing-thesis
#latex
Next episode:
Pandoc: Markdown'dan LaTeX'e
published on 19.02.2022

Önceki yazıda LaTeX kullanmanın avantajlarından ve zorluklarından bahsetmiştim, MS Word gibi WYSIWYG programlar ile karşılaştırıp tavsiyelerimi yazmıştım. Bu yazıda Pandoc yazılımı üzerine konuşacağız. Pandoc’un da yardımıyla LaTeX’in avantajlarını alıp zorluklarını biraz geri de …

published on 17.04.2022
edited on 15.07.2022

Önceki bölümde, markdown formatını LaTeX formatına dönüştürmek için kullanılan Pandoc yazılımından bahsetmiştik. Şimdi konuyu bir adım daha ileri taşıyıp ve bookdown’a geçiyoruz. Bookdown; Rmarkdown kullanarak teknik dökümanlar, kitaplar yazabilmemizi sağlayan, Yihui Xie tarafından yazılmış …

published on 10.07.2022

Previously, I’ve published a blog post about deploying static content on heroku with basic authentication. The main purpose was to get basic auth for a freely hosted static website. In that post, we hosted the source code on GitLab and configured a CI/CD pipeline to render the static content …

published on 28.05.2022

Each git commit has a field called Author which consists ‘user.name’ and ‘user.email’. We usually set these variables once, after installing git, with git config --global so that each repo gets the variables from the global definition. We can also set them locally for a …

published on 25.05.2022

In this post, I’ll first walk through hosting static content with basic authentication. Then, we’ll look into deploying to Heroku using GitLab Pipelines, more specifically deploying a certain sub-directory within the project instead of pushing the whole project. Also, I’ll share …

published on 10.04.2022

I’ve been using WSL-2 on Windows for over a year. It’s very useful because some Python packages are just a headache to install on Windows. Also, docker. It’s just better on Linux. Yet, WSL-2 can also be problematic. I remember trying a dual-boot setup when things just went way too …

published on 03.03.2022

In this post, I’ll share how to install geopandas and some other gis related packages on Windows. If you are on Mac or Linux you can probably just pip install those without any issue. I usually had to do a google search every time I wanted to install these packages on Windows environment. Of …