> For the complete documentation index, see [llms.txt](https://ayakaleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ayakaleaf-pro.ayaka.space/latex/tr/derinlemesine-makaleler/01-a-new-series-of-articles-tex-tokens-and-related-concepts-but-why-and-how.md).

# Yeni bir makale serisi: TeX belirteçleri ve ilgili kavramlar—ama neden (ve nasıl)?

Bu giriş niteliğindeki makale, bu dizinin neden yazıldığını, neyi başarmayı umduğumu açıklamayı ve bir TeX motorunun iç işleyişini gözlemleyerek TeX belirteçlerini keşfetmek için kullanılan teknikler hakkında arka plan bilgisi sağlamayı amaçlıyor. Bu makale sayfası ayrıca dizideki tüm makalelere bağlantıları içerecek şekilde tasarlanmıştır ve her yeni makale yayımlandıkça bu bağlantıları sağlayacak şekilde güncellenecektir.

### Makalelere bağlantılar

Her makale, bu dizideki diğer makalelere bir dizi bağlantı içerecektir.

* [“TeX belirteci” nedir?](/latex/tr/derinlemesine-makaleler/53-what-is-a-tex-token.md)
* [“TeX belirteç listesi” nedir?](/latex/tr/derinlemesine-makaleler/54-what-is-a-tex-token-list.md)

## Bu makale dizisinin arka planı

Bu diziyi yazma motivasyonu, TeX hakkında okuduğum ve TeX’in birçok faaliyetini “belirteçler” kavramı ile birlikte TeX’in “belirteçleme süreci”, “belirteç listeleri” ve “makro genişlemesi” ile “genişletilebilir komutlar” gibi ilgili kavramlar aracılığıyla açıklayan materyalleri okumamla ortaya çıktı. TeX ile ilgili açıklamaları “TeX belirteçleri” terimleriyle ifade edilmiş halde ne zaman görsem, aynı soru aklıma gelmeye devam etti: Tam olarak ne, *şudur* bir TeX belirteci? Bunu öğrenmem gerekiyordu.

Bu makale dizisinin kapsamı ve içeriği, [“TeX belirteci” nedir?](/latex/tr/derinlemesine-makaleler/53-what-is-a-tex-token.md)doğası gereği, programcıların söyleyeceği gibi epeyce “metale yakın”dır ve “TeX belirteçleri”nin yazılacak oldukça ezoterik bir konu olarak sınıflandırılabileceği konusunda kuşku yoktur: peki neden uğraşasınız? Sonuçta bir görüş benimsersiniz—ya da belki bir inanç sıçraması yaparsınız—başkalarının da aynı konu üzerinde kafa yormuş olabileceğini ve bazı boşlukları dolduracak bir iki makaleye yer olduğunu düşünürsünüz. Amacım, okuduğunuz diğer materyalleri tamamlayabilecek ve umarım TeX hakkında bilgi edinirken, makroları ve programlamayı keşfederken ortaya çıkan bazı temel kavramları daha iyi anlamanıza yardımcı olabilecek yararlı arka plan açıklamaları sunmaktır.

Açıkçası, blog makalelerinin sınırları içinde yalnızca yüzeysel bir bakış atabiliriz—tüm önemli konuları açıklamaya çalışmak ya da en karanlık sulara dalmak basitçe pratik değildir. Zorunlu olarak, epeyce ayrıntıyı atlayacağım ve aşırı basitleştirme ile benzetmeleri kopma noktasına kadar zorlamak arasında ince bir çizgide yürüyeceğim.

“Okumak isteyeceğiniz makaleleri yazın” yararlı bir rehberdir ve bu diziyi yazarken bunu uygulamaya büyük özen gösterdim.

## Soru sorulduktan sonra, şimdi ne olacak?

Anlık zorluk açıktı: TeX belirteçleri hakkında nasıl bilgi edinirsiniz, çünkü bu tür ayrıntılar (belirteçler, belirteçleme vb.) TeX motorlarının yazılım kodunun derinliklerine gömülüdür—tabii ki bu ayrıntılarla gerçekten ilgilenmiyorsanız, onlar hakkında endişelenmeniz beklenmez.

Bu soruların yanıtlarını keşfetmenin bir yolu, TeX’in özgün kaynak kodunu içinde okumaya çalışmaktır [`tex.web`](https://www.ctan.org/tex-archive/systems/knuth/dist/tex)—çalıştırarak [WEAVE](http://tug.org/texinfohtml/web2c.html#weave-invocation) TeX belgelerini çıkarmak için—ya da kitabın bir kopyasını satın alarak [Computers & Typesetting, Cilt B: TeX: The Program](https://www.amazon.co.uk/Computers-Typesetting-TEX-Program-v/dp/0201134373). Basılı kitabın bir kopyasını satın aldım! TeX’in kaynak kodunun kitap biçiminde yayımlanmış olması kesinlikle son derece yararlıdır ve elbette kitap boyunca birçok faydalı açıklama vardır. Ancak Knuth’un TeX’i Pascal ile yazılmıştır ve doğal olarak Pascal kaynak kodu Knuth’un okuryazar programlama yöntemine göre belgelenmiştir—kodu küçük, lokmalık parçalar halinde sunar. Knuth’un belgelendirme yaklaşımının TeX kadar karmaşık bir yazılım parçası için gerçekten ne kadar yardımcı olduğunu takdir etmek kolaydır, ancak kitabı okumak oldukça fazla çapraz başvuru ve sayfa atlama gerektirir.

Yararlı olsa da, kitap tek başına (benim için) TeX’in “belirteçler” oluştururken ne olduğuna dair daha iyi bir anlayış kazanmak için yeterli değildi—özellikle ilgilendiğim konu buydu. Gerçekten öğrenmenin tek yolu var: TeX programını derlemek, küçük bir TeX dosyası üzerinde çalıştırmak ve TeX girdiyi tarayıp okurken kodun gerçekten çalışmasını kelimenin tam anlamıyla izlemek. TeX’i kaynak koddan derlemenin ayrıntıları biraz ezoteriktir—Pascal’ı C’ye dönüştürmek—ancak bir sonraki bölümde kısa bir açıklama ve daha ayrıntılı bir anlatıma giden kişisel bir blog yazısına bağlantı vardır.

XeTeX ve LuaTeX’ten farklı olarak—bunlar metni UTF-8 biçiminde işleyebilir ve Unicode metin kodlamasını destekleyebilir—Knuth’un TeX’i 8 bitlik bir motordur; yani giriş karakterlerinin 0 ile 255 aralığında olduğunu varsayar. Bu önemli bir ayrım olsa da, bu *maddi olarak* TeX belirteçleri konusundaki tartışmamızı etkilemez; çünkü tüm TeX motorları için ortak olan konuları ve ilkeleri ele alıyoruz: onlar yazılımın tam kalbinde yer alırlar.

## TeX belirteçlerini nasıl inceleyebilirsiniz?

Girdi metninden TeX belirteçlerine giden yolu çözmek benim için epey bir yolculuk oldu—itiraf etmeliyim ki, yolda farklı derecelerde kafa karışıklığı yarı kalıcı yoldaşlarım oldu: TeX böylesine karmaşık bir yazılım parçası.

Yaklaşık 2009’dan beri birkaç yıldır, LuaTeX’in en yeni sürümünü kaynak kodundan düzenli olarak derliyorum—LuaTeX’in kaynak kodunun dağıtılma biçiminin kesinlikle olağanüstü olması sayesinde oldukça basit bir süreç. Bu deneyime dayanarak, Knuth’un özgün TeX’ini kaynak kodundan nasıl derleyeceğimi daha iyi anlamak istedim— *çok* farklı bir öneriydi çünkü TeX, Knuth’un okuryazar programlama yöntemini kullanılarak yazılmıştır. Windows üzerinde, ancak açık kaynak derleyiciler ve araç takımları kullanılarak yapılan bu kişisel TeX derlemesi, TeX Live dağıtımının dışında üstlenildi ve bağımsız bir projeydi. Ayrıca, `tex.web` TeX’in giriş karakterlerini işlerken gerçekte ne yaptığını görmek için hata ayıklayıcıda derlenip ardından çalıştırılabilecek bir C programına dönüştürmek için gereken araç zincirinin oluşturulmasını da gerektirdi.

Knuth’un özgün TeX’i, pdfTeX, XeTeX veya LuaTeX yerine kullanıldı; çünkü TeX: The Program kitabındaki basılı kaynak koduna en yakın TeX sürümüne ihtiyacım vardı. Bu kitap ilk kez 1986’da yayımlandı ve o zamandan beri TeX bazı güncellemelerden geçmiş olsa da, TeX’in en son sürümü (3.14159265, Ocak 2014’te yayımlandı) elbette kitabın içindeki kaynak koduna yeterince yakındır.

Knuth’un okuryazar programlama yöntemini yansıtarak, TeX’in kaynak kodu WEB adı verilen bir metin biçiminde dağıtılır: TeX belgeleri ile Pascal kaynak kodunun bir karışımı. Temel fikir, WEB dosyalarını işleyerek ya TeX belgelerini ya da Pascal kaynak kodunu çıkarmak için TANGLE ve WEAVE adlı iki yardımcı programı kullanmanızdır:

* [dosya olarak üretir. Pascal’daki kaynak kodunu çıkarmak için](http://tug.org/texinfohtml/web2c.html#tangle-invocation) Pascal kaynak kodunu bir WEB dosyasından çıkarır
* [WEAVE](http://tug.org/texinfohtml/web2c.html#weave-invocation) TeX belgelerini WEB dosyasından çıkarır

Ancak, Pascal kaynak kodunu çıkarmadan önce Knuth’un `tex.web` dosyasını, Web2C adı verilen bir süreç kullanarak TeX’in Pascal kodunu C koduna dönüştürmeyi sağlayan bir dizi değişikliği uygulamak için ön işlemden geçirmeniz gerekir. Bu ön işleme adımı *değişiklik dosyaları uygulamak*.

Knuth’un özgün kod dosyası (tex.web) hiçbir şekilde doğrudan değiştirilmemelidir; bunun yerine, sözde değişiklik dosyaları (uzantısı `.ch`) olan ve ana `.web` dosya—örneğin `tex.web`. Değişiklik dosyaları, Knuth’un özgün kaynak koduyla—TIE adlı ek bir yardımcı program kullanılarak—birleştirilir ve örneğin şöyle bir dosya oluşturulur, `mytex.web` bunu TANGLE ile işleyerek Pascal kodunu `mytex.pas`dosyasına çıkarırsınız. Uygun bir Pascal kaynak dosyanız olduğunda, Web2C sürecinin son adımlarını uygulayarak onu çalıştırılabilir bir TeX programına derleyebileceğiniz bir C kaynak kodu dosyasına dönüştürebilirsiniz. Oldukça dolambaçlı Web2C dönüştürme süreci hakkında okumak isterseniz, bu yazarın [kişisel blog sitesinde](http://www.readytext.co.uk/?p=2529).

daha fazla ayrıntı vardır. Sonuç olarak, ücretsiz ve mükemmel [Eclipse IDE for C/C++](http://www.eclipse.org/home/index.php) kullanarak TeX’in kaynak kodunda (C ile) adım adım ilerleyip girişiniz taranırken neler olduğunu izleyebileceğiniz bir TeX programı elde edersiniz. Kesinlikle en eğlenceli zaman geçirme biçimi değildir, çünkü C kodu makine tarafından üretilmiştir ve bazı yerlerde izlenmesi son derece zordur (TeX’in kaynak kodu GOTOlardan ve global değişkenlerden son derece cömertçe yararlanır). TeX: The Program kitabı, C kaynak kodunda gezinmeye yardımcı olmak için hâlâ vazgeçilmezdir; kitap TeX’in kaynak kodunu güzel dizilmiş Pascal kodu olarak içerse bile.

Söylenenleri tamamlamak için, Eclipse IDE üzerinden çalıştırılan TeX’i ve yürütmenin şu işlev üzerinde duraklatıldığı bir örnek ekran görüntüsü burada `getnext()`—TeX’in belirteç üretme süreçlerinin merkezinde yer alır.

![Eclipse IDE aracılığıyla çalıştırılan TeX’i gösteren ekran görüntüsü](/files/a759b054a44bf83897727e50b0ca295ee4d6a997)

Açık kaynak Eclipse IDE for C/C++ kullanarak TeX’in C kaynak kodunda adım adım ilerleme.

## Sonuçlar ve Bir Teşekkür

İlk makaleyi yazmak ve dizideki gelecekteki blog gönderileri için fikirleri bir araya getirmek kesinlikle epey zaman aldı. Bu dizi fikrine verdikleri destek ve ek arka plan araştırması için gereken zamanı ayırmama izin verdikleri için Overleaf’teki John Hammersley ve Mary Anne Baynes’e son derece minnettarım. Bu makale dizisinin, ortak ilgi alanlarına giren konuları başarıyla belirleyip ele almasını ve onları okuyanlar için değerli olduğunu kanıtlamasını umuyorum.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://ayakaleaf-pro.ayaka.space/latex/tr/derinlemesine-makaleler/01-a-new-series-of-articles-tex-tokens-and-related-concepts-but-why-and-how.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
