> For the complete documentation index, see [llms.txt](https://overleaf-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://overleaf-pro.ayaka.space/latex/tr/daha-fazla-konu/20-how-tex-macros-actually-work-part-2.md).

# TeX makroları gerçekte nasıl çalışır: Bölüm 2

[Bölüm 1](/latex/tr/daha-fazla-konu/19-how-tex-macros-actually-work-part-1.md) [Bölüm 2](/latex/tr/daha-fazla-konu/20-how-tex-macros-actually-work-part-2.md) [Bölüm 3](/latex/tr/daha-fazla-konu/21-how-tex-macros-actually-work-part-3.md) [Bölüm 4](/latex/tr/daha-fazla-konu/22-how-tex-macros-actually-work-part-4.md) [Bölüm 5](/latex/tr/daha-fazla-konu/23-how-tex-macros-actually-work-part-5.md) [Bölüm 6](/latex/tr/daha-fazla-konu/24-how-tex-macros-actually-work-part-6.md)

## Giriş: Resimlerle bir hikâye

1\. Kısımda belirtildiği gibi, TeX'in dosyanızdaki her karakteri `.tex` okuması gerekir ve bu okuma sürecine daha doğru biçimde *tarama*denir. Geleneksel olarak, TeX'in girdi işleme (tarama) süreci, TeX'in girdiyi gözlemlemek için “gözleri” varmış gibi benzetilir; bu nedenle aşağıdaki grafiklerde bu köklü benzetmeyi benimseyeceğiz.

### Grafik 1: Gözler hazır

TeX'in bir `.tex` dosyadan bazı girdiler aldığını ve karakter dizimizi işlemeye hazırlandığını varsayıyoruz `Hello World \jobname` bir metin paragrafının içinde yer almaktadır. Her karakteri sırayla denetleyecek ve kategori kodunu inceleyecektir.

![TeX'in bir metin satırını taramaya hazır gözleri](/files/ebb8ae30e75e16d5f7f97bc9cd66cd16a4f4125b)

### Grafik 2: Kategori kodlarının işlenmesi

Sonraki grafikte TeX'in birkaç farklı kategori koduna nasıl tepki verdiğini ana hatlarıyla (ayrıntıları aşağıda) görüyoruz. Toplamda 16 kategori kodu olduğunu unutmayın; ancak basitlik için yalnızca üçünün kullanımını gösteriyoruz: 11, 10 ve 0. Diğer karakter kodları, tablo oluşturma, matematik dizgi ve makro parametrelerini tanıma gibi TeX'in dizgi süreçleri sırasında önem kazanır.

![TeX'in çeşitli farklı kategori kodlarına tepki vermesi](/files/da41d9feb7244d370dbe3121a788dd0018474acc)

#### Grafik 2 için notlar

Burada, TeX'i bir metin paragrafının parçası olan karakterleri okurken (tararken) ele alıyoruz. TeX her karakteri inceler, kategori kodunu kontrol eder ve kategori koduna ve TeX'in “kipine” (o anda ne yaptığına dayalı bir durum) göre uygun işlemi yapar.

* **(yeşil gözler)** TeX, bu karakterlerin her birinin kategori kodunun 11 (“harf”) olduğunu görecek ve bunları oluşturmakta olduğu paragrafın bir parçası olarak dizgiye iletecektir. Ancak TeX, yalnızca karakter kodunu iletmez (kullanmaz); bunun yerine, birleşik bir tam sayı değeri hesaplamak için (karakter kodu, kategori kodu) çiftini kullanır; buna *karakter belirteci* (aşağıya bakın). Bu karakter belirteci oluşturulduktan sonra TeX'in iç dizgi süreçlerine/algoritmalarına girer.
* **(mavi gözler)** TeX, kategori kodu 10 (“ayırıcılar”) olan bir boşluk karakteri (ASCII 32) görür—dikkat edin, daha önce tartışıldığı gibi, bir boşluğun (ASCII 32) ya da herhangi bir karakterin kategori kodunun, TeX tarafından okunmadan önce başka bir değere değiştirilmiş olması oldukça mümkündür.

TeX'in kategori kodu 10 (“ayırıcılar”) olan karakterleri gerçekte nasıl işlediği, TeX'in onları ne zaman/nerede gördüğüne—TeX'in geçerli “kipine”—bağlı olarak değişir. Örneğin, TeX'in bunları basitçe atladığı zamanlar vardır. Burada TeX, paragraf metnini işlerken kategori kodu 10 olan (ki bu bir boşluk, ASCII 32'dir) bir karakter algıladığını bilecek; bu nedenle sonunda bunu sözde sözcükler arası yapıştırıcıya (interword glue) dönüştürecektir: esneyebilen ya da büzülebilen bir tür esnek boşluk.

* **(kırmızı gözler)** Burada TeX, çok önemli bir kategori koduna sahip bir karakter gözlemledi: 0 (kaçış karakteri).

Bir kaçış karakteri—*herhangi bir* kategori kodu 0 olan karakter—TeX'e özel bir okuma kipine geçmesini ve sonraki karakterleri dikkatle taramasını (okumasını) söyler; çünkü bunlar bir *komut*, dizgi yapılacak metin değildir. TeX literatüründe “komut” teriminin ayrıca şu adla anıldığını da göreceksiniz: *kontrol dizisinin başlangıcını*. Bir kaçış karakterini gördükten sonra TeX, onu hemen takip eden karakterin kategori kodunu denetler *hemen ardından*; bunun nedeni TeX'in iki tür komutu tanımasıdır:

* çok harfli komutlar olarak adlandırılan *kontrol sözcükleri*: kaçış karakterini hemen izleyen karakterin kategori kodu 11'dir. Kategori kodu 11 olan sonraki tüm karakterler bir komutun adının parçası olarak kabul edilir. TeX, bir komut adının parçası oluşturan karakterleri aramayı, herhangi bir karakter algıladığında durdurur ki bu karakter *sonlanmıyor;* kategori kodu 11'e sahip değildir—örneğin kategori kodu 10 olan bir boşluk karakteri.
* tek harfli komutlar olarak adlandırılan *kontrol sembolleri*: kaçış karakterini hemen izleyen karakter *sonlanmıyor;* kategori kodu 11'e sahip değildir.

Bir kaçış karakterini, TeX'i olağan tarama davranışının dışına “kaçmaya” tetikleyen ve sonraki birkaç karakter için farklı bir yaklaşım benimseten bir öğe olarak düşünebilirsiniz—bu, kırmızı kesik çizgili kutunun TeX'in **Bir komut aramak için taramaya başla**.

### Grafik 3: Kategori kodu 11 (“harfler”) işlenmesi

Bu serinin 1. Kısmında, TeX'in girdisinden okuduğu her karakterin iki tam sayı ile tanımlandığını belirtmiştik:

* karakter kodu: bir karakterin sayısal temsilini tanımlayan bir tam sayı;
* kategori kodu: TeX'in girdisinde görünebilecek her karaktere atadığı 0 ile 15 arasındaki bir değer.

TeX, işlemesinin bir sonraki aşamasında bu iki bilgiyi kullanır: karakter belirteçleri oluşturmak.

Grafik 3, kategori kodu 11 (harf) olan bu girdi karakterlerine TeX'in ne yaptığını göstermek için Grafik 2'yi genişletir: TeX oluşturur *karakter belirteçleri*—TeX'in o karakterin kategori kodu ile karakter kodunun birleşimini kullanarak hesapladığı tam sayı değerleri.

**Not**: Bu örnekte yalnızca kategori kodu 11 olan karakterleri tartışıyoruz; ancak TeX'in, kategori kodu 0 hariç, diğer kategori kodlarına sahip girdi karakterleri için de belirteç değerleri oluşturduğunu bilmelisiniz; kategori kodu 0 asla bir belirtece dönüştürülmez: kaçış karakteri yalnızca özel işlemeyi tetikleyen bir “anahtar” gibi davranır.

![TeX'in kategori kodu 11 olan karakterleri işlemesi](/files/1a5755e5446dca06a25005f5ee9b9c976d13e055)

Aşağıdaki Grafik 5, TeX'in kategori kodu 0 olan bir karakteri (kaçış karakteri) gördüğünde ne yaptığını gösterecektir.

#### Grafik 3 için notlar: Kategori kodu 11 (“harf”) işlenmesi

Burada, **green** etkinliğine odaklanacağız: TeX kategori kodu 11 (“harf”) olan karakterleri gördüğünde ne olur. TeX bir karakteri okuduktan ve onun kategori kodunu belirledikten sonra (burada 11'dir), TeX'in sonraki yaptığı şey *birleştirmek* bu sayı çiftini karakter belirteci adı verilen tek bir tam sayıda toplamaktır: bu belirteçler (tam sayılar) TeX'in iç dizgi algoritmalarının/işlemlerinin bir sonraki aşamasına iletilir. Belirtildiği gibi, TeX diğer kategori kodlarına (yani 11 olmayan) sahip karakterler için de karakter belirteçleri oluşturacaktır; burada yalnızca örnek olarak kategori kodu 11'i kullanıyoruz.

Her karakter belirteci (bir tam sayı), bir girdi karakterini o karaktere atanmış kategori koduyla kalıcı olarak bağlar **TeX tarafından tarandığı (okunup alındığı) anda**: bu gerçek, TeX/LaTeX makrolarının davranışını anlamada son derece önemlidir. Elbette, sonraki işlemler sırasında TeX bazen bir karakter belirtecini, bu belirtecin hangi (karakter kodu, kategori kodu) çiftiyle oluşturulduğunu belirlemek için ayırmak zorunda kalır. Ancak bir karakter TeX'in girdi (tarama) süreciyle bir kez okunduğunda, TeX tarafından hesaplanan karakter belirteci değeri o karakterin *kalıcı olarak* ona atanmış kategori koduyla eşleşmesine *okunduğu anda*.

**Karakter belirteçlerinin hesaplanması**

TeX motorları, bir karakter belirtecini hesaplamak için basit bir formül kullanır, $$T$$, kategori kodu olan bir karakterden $$C$$ ve karakter kodundan $$A$$:

$$T = \text{constant} \times C + A$$

pdfTeX gibi 8-bit motorlar şu formülü kullanır:

$$T = 256\times C + A$$

XeTeX veya LuaTeX gibi Unicode uyumlu motorların farklı bir formül kullanması gerekir; çünkü Unicode altında karakter kodları, eski 8-bit ASCII kodlama dünyasındaki 255 maksimumundan çok daha büyük olabilir. Örneğin XeTeX şu formülü kullanır:

$$T= 2^{21}\times C + A \hskip5mm \text{(where } A \text{ is a Unicode character code value)}$$

Yine de, kategori kodu 0 olan karakterlerin karakter belirteçlerine dönüştürülmediğini belirtmekte fayda var: kategori kodu 0, TeX'in girdi süzme sürecinde çok özel bir yere sahiptir ve yalnızca TeX'i sonraki birkaç karakteri özel bir tarama kipine sokmak için bir “anahtar” olarak kullanılır. Grafik 5 bunu ele alır.

### Grafik 4: Kategori kodu 10 (“ayırıcı”) işlenmesi

TeX'in kategori kodu 10 (“ayırıcı”) olan karakterleri ele alış biçimi, girdide kategori kodu 10 olan bir karakteri algıladığında TeX'in o anda ne üzerinde çalıştığına bağlıdır. Bizim örneğimizde TeX, olağan paragraf işleme yapmaktadır ve kategori kodu 10 olan boşluk karakteri, sözcükler arası yapıştırıcıya dönüştürülecektir.

![TeX'in kategori kodu 10 olan karakterleri işlemesi](/files/2b576152bfc534d7ac175c80464e92afb542a045)

TeX'in boşluklarla ilgilenme biçimi oldukça özgün görünebilir; ancak iyi bir genel bakış şu eserin 1. ve 2. bölümlerinde bulunabilir: [TeX by Topic](http://www.eijkhout.net/texbytopic/texbytopic.html) Victor Eijkhout tarafından yazılan—siz [ücretsiz bir PDF kopyasını indirebilirsiniz](https://bitbucket.org/VictorEijkhout/tex-by-topic) kendi web sitesi üzerinden.

Örneğin, TeX kategori kodu 10 olan bir karakter gördüğünde, bazen TeX şunları yapar:

* hepsini atla (yok say)—örneğin, TeX dikey kipteyken;
* birden çok ayırıcıyı tek bir ayırıcıya dönüştür—paragraf işlerken fazla boşlukları atlayarak;
* bunları soğur—örneğin, bir komut adından sonra gelen tek bir boşluğu soğurarak;

Şunu da not edin, TeX'in aynı zamanda *oluşturduğu zamanlar da vardır* boşluklar—satır sonu karakterlerini bir boşluğa dönüştürerek. Boşluk karakterlerinin (kategori kodu 10 olan herhangi bir karakter) davranışı/işlenişi TeX'in “özgünlüklerinden” biridir: TeX'in bu yönüne aşina (rahat) olmak zaman ve alıştırma gerektirir.

### Grafik 5a: Kategori kodu 0 (bir “kaçış karakteri”) işlenmesi

Bu grafikte, TeX `\` karakterine kadar olan tüm karakterleri işlemiştir; bu karakterin kategori kodu 0'dır: “kaçış karakteri”—TeX'in bir kaçış karakterini nasıl işlediğini ve bir komutun adını nasıl belirlediğini göstermek için bir dizi ek grafik kullanacağız.

![TeX'in kategori kodu 0 olan karakterleri işlemesi](/files/4e3e14f49edafcc6077a22450d42e081c1cb9d85)

### Grafik 5b: Bir komut adı aranıyor

Bu grafikte, kırmızı kesik çizgili kutu bölümüne (**Bir komut aramak için taramaya başla**) bakıyoruz; TeX'in bir kaçış karakterini gördükten sonra ne yaptığını görmek için.

![TeX'in bir komut adı araması](/files/af00cf19826de83534e87f961cf28d3a62d07017)

**Grafik 5b için notlar**

* Tanındıktan sonra, kaçış karakteri işini yapmış olur: bir anahtar gibi davranmıştır ve daha sonraki hiçbir işlemde yer almaz—özellikle, **yapmaz** bir karakter belirtecine dönüştürülmez.
* Kolaylık olması için, daha önce belirtilen bazı ayrıntıları tekrar edeceğiz. Bir kaçış karakterini gördükten sonra TeX, onu izleyen karakterin kategori kodunu denetler *hemen ardından*; bunun nedeni TeX'in iki tür komutu tanımasıdır:
* * çok harfli komutlar olarak adlandırılan *kontrol sözcükleri*: kaçış karakterini hemen izleyen karakterin kategori kodu 11'dir. Kategori kodu 11 olan sonraki tüm karakterler bir komutun adını oluşturuyor kabul edilir (*denetim sözcüğü*). TeX, bir komut adının parçasını oluşturan karakterleri aramayı, herhangi bir karakter algıladığında durdurur ki bu karakter *sonlanmıyor;* kategori kodu 11'e sahip değildir—örneğin kategori kodu 10 olan bir boşluk karakteri.
  * tek harfli komutlar olarak adlandırılan *kontrol sembolleri*: kaçış karakterini hemen izleyen karakter *sonlanmıyor;* kategori kodu 11'e sahip değildir.
* Bizim örneğimizde, `\` bir `j` (kategori kodu 11) ve bu, TeX'e kategori kodu 11 olan karakterlerden oluşan (muhtemelen) çok harfli bir dizi olan bir komutu aramasını söyler.
* TeX, kategori kodu 11 olan daha fazla karakteri kontrol etmeye devam eder. Kategori kodu 10 olan bir boşluk gibi başka herhangi bir kategori koduna sahip bir karakter algıladığı anda, komut adının sonuna ulaştığını bilir. Noktayı vurgulamak için: burada komutun sonunu “sonlandıran” kategori kodu 10 olan bir boşluk karakteriydi, ancak bu **olmayabilirdi** kategori kodu 11'e sahip değildir.

## Bölüm 3

3\. Kısımda, bu hikâyenin bu bölümünü—TeX'in bir komutu nasıl tanımladığını—tamamlamak için Grafik 5b'den devam edecek ve ardından TeX'in bundan sonra ne yaptığına geçeceğiz. Ayrıca TeX'in işlem sürecinin bazı iç yönlerine daha derinlemesine bakacağız—bunların bir kısmı, ayrıntılardan gerçekten hoşlanmıyorsanız, ilk okumada atlanabilir.

[Bölüm 1](/latex/tr/daha-fazla-konu/19-how-tex-macros-actually-work-part-1.md) [Bölüm 2](/latex/tr/daha-fazla-konu/20-how-tex-macros-actually-work-part-2.md) [Bölüm 3](/latex/tr/daha-fazla-konu/21-how-tex-macros-actually-work-part-3.md) [Bölüm 4](/latex/tr/daha-fazla-konu/22-how-tex-macros-actually-work-part-4.md) [Bölüm 5](/latex/tr/daha-fazla-konu/23-how-tex-macros-actually-work-part-5.md) [Bölüm 6](/latex/tr/daha-fazla-konu/24-how-tex-macros-actually-work-part-6.md)


---

# 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://overleaf-pro.ayaka.space/latex/tr/daha-fazla-konu/20-how-tex-macros-actually-work-part-2.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.
