> 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/53-what-is-a-tex-token.md).

# "TeX belirteci" nedir?

## TeX belirteçleri ve ilgili kavramlar üzerine bir dizi için motivasyon

TeX belirteçleri ve ilgili kavramlar üzerine bir makale dizisi üretmek için kullanılan motivasyon ve yöntem bu makalede ele alınmaktadır [Yeni Bir Makale Serisi: TeX Belirteçleri ve İlgili Kavramlar—Ama Neden (ve Nasıl)?](https://www.overleaf.com/blog/521-a-new-series-of-articles-tex-tokens-and-related-concepts-but-why-and-how) Söz konusu makalede belirtildiği gibi, bu dizi boyunca tartışmalarımızı ve açıklamalarımızı Knuth’un özgün TeX programının özel bir derlemesiyle elde edilen içgörülere dayandırıyoruz—bunu, temel TeX kavramlarına ilişkin basit tanımlar ve kolay izlenebilir açıklamalar sunmayı amaçlayan bir makale dizisi üretmek için kullanıyoruz.

## Giriş: Amacımız nedir?

Bu makalede, giriş dosyasındaki karakterlerden TeX belirteçlerinin gerçek oluşturulmasına kadar uzanan işleme yolunu izleyerek bir TeX belirtecinin tam olarak ne olduğunu öğreniyoruz. Uygulamada süreç oldukça karmaşıktır; bu yüzden onu özüne indirgedik, teknik doğruluğu korurken kolay izlenebilir ve anlaşılabilir hale getirmeye çalıştık.

Önce bazı önemli iç TeX kavramlarını tanıtarak başlayalım: *ilkellerinden*, *komut kodları* ve *komut değiştiricileri*. Buradan, TeX'in komutu tam olarak nasıl işlediğini görmek için çok basit bir makro örneği kullanıyoruz `\def` ve TeX'in o komutu temsil etmek için oluşturduğu sonuç belirteci.

TeX'in karakterleri temsil etmek için nasıl belirteçler oluşturduğuna ve bir karakterin `\catcode` bir karakter belirtecine gerçekten kalıcı olarak nasıl bağlandığına kısaca bakarak bitiriyoruz—TeX hakkında kitaplarda sıkça bahsedilen bir şeydir ama burada bunun tam olarak nasıl gerçekleştirildiğini görüyoruz.

Aşağıdaki grafik, özetleyeceğimiz yolculuğu gösteriyor—girdi metninden TeX belirteçlerine:

![TeX girdisinden TeX belirtecine giden yol.](/files/4f0b4dc70fab6cd06b38cd0799ef9001c76529d3)

## Ama önce: ilkeller ve komut kodları

Her TeX motoru (Knuth tarzı TeX, pdfTeX, XeTeX, LuaTeX) bir dizi yerleşik komutu anlar: sözde *ilkellerinden*—TeX’in programlanabilirliğinin temel yapı taşları olan temel komutlar. Bunlara “ilkel” denir çünkü, kullanıcı tanımlı makroların aksine, başka komutlardan oluşturulmazlar ve daha basit yönergeler haline daha da indirgenemezler. Knuth’un TeX’i için yaklaşık 320 ilkel vardır—ancak pdfTeX, XeTeX ve LuaTeX gibi diğer TeX motorlarının Knuth’un özgün programına yeni komutlar eklediğini ve Knuth’un TeX yazılımında bulunmayan ilkeller içereceğini belirtmek gerekir.

tüm komutlara—ister kullanıcı tanımlı makrolar ister yerleşik ilkeller olsun. Bu komut kodları TeX kullanıcısının erişimine açık değildir; bunlar yalnızca TeX işlemlemesinin iç işleyişinin bir parçasıdır, ancak TeX belirteçlerini ileride tartışırken bunları bilmek yararlıdır. *komut kodu* komut kodu

İlgili işlevselliğe sahip komut grupları aynı komut kodunu paylaşır. Örneğin, `\def`, `\gdef`, `\edef` ve `\xdef` ilkellerinin tümü makro tanımlamak için kullanılır ve (Knuth’un TeX’inde) 97 komut kodunu paylaşırlar. Açıkça, bu 4 makro tanımlama komutunun her biri makroları biraz farklı bir şekilde oluşturur; dolayısıyla işlem sırasında TeX’in bunları ayırt etmenin bir yoluna ihtiyacı vardır.

Tek başına bir komut kodu (örneğin 97) hangi makro oluşturma komutunun söz konusu olduğunu söyleyemez; dolayısıyla bekleyeceğiniz gibi, her TeX komutuna onun *komut değiştiricisi* (aşağıdaki örneklere bakın).

### Komut değiştiricileri: iki tür

Komut değiştiricileri “Tür 1” ve “Tür 2” olarak adlandıracağımız iki kategoriye ayrılır—TeX bu terminolojiyi kullanmaz, burada bunu kullanmak sadece pratiktir:

* **Tür 1**: TeX'in gerekirse aynı komut kodunu paylaşan komutları ayırt etmek için kullanabileceği basit tamsayı değerleri.
* **Tür 2**: TeX belleğinde sayısal bir konum olan ve TeX'e o komutla ilgili bilgileri bulmak için nereye gitmesi gerektiğini söyleyen bir tamsayı değeri. Örneğin bu, komut değiştiricisinin makro tanımının bellekte nerede saklandığını TeX'e söylediği kullanıcı tanımlı komutlar (makrolar) için geçerlidir.

#### Tür 1 komut değiştiricileri (bir örnek)

Belirtildiği gibi, Knuth’un TeX’inde makroları tanımlayan dört ilkel komut: `\def`, `\gdef`, `\edef`, `\xdef` hepsi 97 komut kodunu paylaşır: aşağıdaki tabloda listelenen komut değiştiricileriyle ayırt edilirler:

| Komut   | <p>Komut<br>kodu</p> | <p>Komut<br>değiştiricisi</p> |
| ------- | -------------------- | ----------------------------- |
| `\def`  | 97                   | 0                             |
| `\gdef` | 97                   | 1                             |
| `\edef` | 97                   | 2                             |
| `\xdef` | 97                   | 3                             |

İkinci bir örnek olarak, Knuth komutları uygulamaya karar verdi `\\openout`, `\write`, `\\closeout`, `\special`, `\\immediate` ve `\setlanguage` TeX'e yeni ilkeller ekleyebileceğinizi göstermek için tamamen TeX'e “uzantılar” olarak. Bu durumda, bu komutlar gerçekten “benzer işlevsellik” paylaşmaz; Knuth onları yalnızca TeX'i nasıl genişleteceğinizi açıklamak amacıyla bir araya toplamaya karar verdiği için öyledir. Bu 6 komut “uzantı” olarak sınıflandırılır ve 59 komut kodu değeriyle birlikte gruplanır, ancak her birinin diğerlerinden ayırt edilmesini sağlayan uygun bir komut değiştiricisi vardır:

| Komut          | <p>Komut<br>kodu</p> | <p>Komut<br>değiştiricisi</p> |
| -------------- | -------------------- | ----------------------------- |
| `\\openout`    | 59                   | 0                             |
| `\write`       | 59                   | 1                             |
| `\\closeout`   | 59                   | 2                             |
| `\special`     | 59                   | 3                             |
| `\\immediate`  | 59                   | 4                             |
| `\setlanguage` | 59                   | 5                             |

#### Tür 2 komut değiştiricileri (kısa bir açıklama)

Her ne kadar tüm komut değiştiricileri tamsayı olsa da, Tür 2 değiştiricilerin biraz daha açıklamaya ihtiyacı vardır. Bu komut değiştiricilerine TeX’te “işaretçiler” denir çünkü TeX’in o komut için ek bilgileri bulabileceği bir bellek konumunu işaret ederler. Bu biraz belirsiz gelebilir, ancak TeX'in bu işaretçileri bilgi aramak için nasıl kullandığı oldukça çeşitlidir ve daha ayrıntılı bir açıklama bu makalenin temel amacından uzaklaştırır. Bir örnek yardımcı olabilir: makrolar. Bir makro komutu tanımlandığında TeX'in yedek metni belleğin bir yerinde saklaması gerekir. Aşağıda göreceğimiz gibi, kullanıcı tanımlı makroların komut kodları 111 ile 114 arasındadır ve komut değiştiricisi, yedek metnin (makro tanımının) bellekte nerede saklandığını TeX'e bildiren bir işaretçidir.

### Komut kodları: genişletilebilir ve genişletilemez

TeX’in kaynak kodunda komut kodları 0 ile 120 arasında değişir—bu aralıktaki bazı kodların yalnızca uzman iç kullanım için olduğunu ve kullanıcıya açık komutlara atanmadığını unutmayın. pdfTeX, XeTeX ve LuaTeX gibi diğer TeX motorlarının Knuth’un özgün kümesine yeni komutlar eklediğini ve daha fazla ilkel ve karşılık gelen komut kodları içereceğini belirtmek gerekir; ancak burada özetlenen ilkeler, Knuth’un kaynak kodundan türetilen tüm TeX tabanlı motorların temelidir.

Komut kodları kümesi iki ana gruba ayrılır:

* *genişletilemez komutlar*: komut kodları 100'e eşit veya daha küçüktür;
* *genişletilebilir komutlar*: komut kodları 100'den büyüktür ve en fazla 120'dir. 101 ile 120 aralığı kullanıcı tanımlı makroları ve ayrıca gibi komutları içerir `\\csname`, `\\expandafter` ve `\\the`.

Genişletilemeyen komutlar genellikle bir değerin iç parametreye atanmasını yapar veya doğrudan dizgilenebilecek malzeme üretir. Genişletilebilir komutlar genellikle TeX'in mevcut işlem etkinliğine bir belirteç akışı “enjekte eder” ya da belirteç işlem sırasını değiştirir.

Yukarıda belirtildiği gibi, tüm makrolara (kullanıcı tanımlı komutlara) 111 ile 114 arasında komut kodları verilir: farklı değerler, makronun `\\long`, `\\outer`, uzun, her ikisi ya da hiçbiri olarak tanımlanıp tanımlanmadığını yansıtır. İşte bir örnek:

| Makro türü                  | Örnek                          | Açıklama                 |
| --------------------------- | ------------------------------ | ------------------------ |
| Uzun olmayan, outer olmayan | `\def\ohyeah{....}`            | `\ohyeah` komut kodu=111 |
| Uzun, outer olmayan         | `\long\def\ohyeah{....}`       | `\ohyeah` komut kodu=112 |
| Uzun olmayan, outer         | `\outer\def\ohyeah{....}`      | `\ohyeah` komut kodu=113 |
| Uzun outer                  | `\long\outer\def\ohyeah{....}` | `\ohyeah` komut kodu=114 |

Komut değiştiricilerini anımsatmak gerekirse, bir makro tanımlandığında TeX makronun tanımını bellekte bir yerde saklar: bu konum (bir işaretçi) makro komutu için komut değiştiricisi olur ve makro, nasıl tanımlandığına bağlı olarak 111 ile 114 arasında bir komutla saklanır. Kullanıcı tanımlı bir makroya verilen gerçek adın pek önemi yoktur: girdinin işlenmesinden sonra hepsine 111–114 arasında değişen bir komut kodu atanır ve nihayetinde TeX'in girdinizden okuduğu tüm komutlar, ister ilkeller ister kullanıcı tanımlı makrolar olsun, sonunda adı verilen bir sayısal gösterime dönüştürülür bir *belirtecini*.

## Girdiden TeX belirteçlerine giden yol

Bu bölümde, TeX'in komutu tam olarak nasıl işlediğini görmek için çok basit bir makro örneği kullanacağız `\def` bir belirteç oluşturmak için temsil eden `\def` komut. TeX'in ayrıntılı işleme etkinliği son derece karmaşık olabilir, bu yüzden makro parametreleri veya ayraçlar kullanmıyoruz; çünkü bu karmaşıklık ekler ve yolculuğumuzdan dikkati dağıtır.

TeX giriş dosyanızda aşağıdaki satırın bulunduğunu varsayalım:

```latex
\def\ohyeah{Overleaf is cool!}
```

TeX bu giriş satırını işlemeye başladığında her karakterin `\catcode` catcode'unu `\` (ilk karakteri `\def`). `\` 0 değere sahip olduğunu `\catcode` bu da bir *kontrol dizisinin başlangıcını*. Elbette, herhangi bir karakteri `\catcode` 0 olacak şekilde yeniden tanımlayabilirsiniz, ancak düz TeX veya LaTeX'in geleneksel tanımlarının kullanıldığını varsayacağız.

Tam olarak söylemek gerekirse, terimin *kontrol dizisinin başlangıcını* iki alt kategorisi vardır: *denetim sözcüğü* ve *denetim simgesi*:

* *denetim sözcüğü*: catcode'u `\catcode` harf (11) olan karakterlerden oluşan bir dizi;
* *denetim simgesi*: catcode'u `\catcode` şudur *yapmaz* harf (11) olan tek bir karakter.

Bu noktada, kaçış `\` karakteri işini tamamlamış ve artık görevini bitirmiştir. Bir kaçış karakteri algılandığında, TeX'in tepkisi girdideki sonraki tüm karakterleri bir kontrol sözcüğü ya da kontrol sembolü tespit etmek amacıyla okumaya başlamaktır.

İlk `\`, TeX hemen `d`: catcode'u `\catcode` 11 olan bir karakterdir; bu da TeX'e bir *denetim sözcüğü*kontrol sözcüğünün *sonlanmıyor;* şunu bildirmiştir: `\catcode` harf (11) olan bir karakterle başladığını `\`) sonrasındaki tüm karakterler `\catcode` 11 (harf) olarak sahip oldukları sürece bir kontrol sözcüğünün adını oluşturduğu düşünülür: yani bir komutun adını—belki bir makro veya bir ilkel, ancak TeX henüz bunun hangi tür komut olduğunu bilmez. Bu noktada bu yalnızca bir karakter dizisidir.

Dolayısıyla, örneğimizde TeX sevinçle tarama yapar, her karakteri kontrol eder, ta ki başlangıçtaki `\` için bir belirteç değeri oluşturur `\ohyeah` kaçış `\catcode` karakterinin de `\` yeniden metin akışına geri koyar`def`) `\catcode` 11 (`d`, `e` ve `f`). TeX'in şimdi yapması gereken şey `def` ne anlama geldiğini bulmaktır: bununla ne yapar? Tahmin etmiş olabileceğiniz gibi, TeX'in `def` ne yapacağını çözebilmesi için

## İşin içine bir karma katmak

Bir kontrol sözcüğü (`def`) tespit edildikten sonra TeX'in yaptığı ilk şey, karakter dizisini (`def` örneğimizdeki

olarak bir tamsayıya “dönüştürmek”tir; bunun için karma işlevi adı verilen bir şey kullanır. Ayrıntılar konusunda fazla endişelenmemize gerek yok; bir özet yeterlidir. Özünde TeX, yeni tespit ettiği kontrol sözcüğündeki her karaktere bakar ve her karakterin ASCII kodu değerini (veya XeTeX/LuaTeX için Unicode değerini) kullanarak karma değeri adı verilen bir sayı hesaplar: bu yalnızca basit bir tamsayıdır. *dize havuzu*. TeX'in bunu yapması gerekir çünkü bir komutun insan tarafından okunabilir adını çıktı olarak vermesi gerekebilir—örneğin TeX bir hata bildirmesi ve hataya neden olan komutun adını sağlaması gerektiğinde. Mesela, makromuz `\def\ohyeah{Overleaf is cool!}` yeni bir komut tanımlıyor `\ohyeah` ve TeX (daha sonra) yalnızca bir karma değeri hesaplamak zorunda olmayacak `ohyeah` (*olmayan* başlangıçtaki `\` karakter)

TeX'in dize işleme süreçleri hakkında daha fazla ayrıntı istiyorsanız, bu konuda [kişisel blog sitemde](http://www.readytext.co.uk/?p=3590).

Nihai sonuç, komutu temsil eden karakter dizisinin `def` 1218 sayısal değerine dönüştürülmesidir (bu, TeX tarafından hesaplanan gerçek değerdir). Bu noktada tek tek karakterler `d`, `e` ve `f` artık ana hikâyenin bir parçası değildir—girişten okunmuş ve görevlerini tamamlamışlardır: bundan sonra her şey tamsayılar ve *tokenlar*—bir belirtecin aslında ne olduğunu yakında göreceğiz! İçsel olarak TeX bu karma değeri sayılarına *geçerli kontrol dizisi* olarak adlandırır, ancak kaynak kodda bu terim `curcs`olarak kısaltılmış bir değişken adıyla ifade edilir. TeX'in kaynak kodu çok kısa, çoğu zaman oldukça şifreli değişken adlarıyla doludur.

Ama TeX ne *gerçekte yapar* bu yeni hesaplanmış 1218 tamsayı değeriyle? TeX, orijinal dizenin `def`, şimdi 1218 tamsayısı ile temsil edilen, aslında bir makro tanımlama talimatına gönderme yaptığını nasıl öğrenir? Cevap, TeX'in geçerli olarak bildiği her komutun mevcut anlamını ve değerini sakladığı bir tür iç “dosya dolabı”na sahip olmasıdır—bu komut ister kullanıcı tanımlı bir makro ister yerleşik bir ilkel olsun. TeX'in `def` dizgeyi `curcs`değere dönüştürmek zahmetine girmesinin nedeni, bunu *anlamı* için bir belirteç değeri oluşturur `def`aramasında kullanmaktır. TeX elbette girişte tespit ettiği tüm kontrol sözcükleri için bu karma hesaplamasını tekrar edecektir—elbette farklı kontrol sözcükleri karma işlevinden farklı tamsayı değerler üretir: işin bütün fikri de budur.

TeX'in iç “dosya dolabı” *eşdeğerler tablosu* olarak adlandırılır ve bir sonraki bölümün konusudur.

### Eşdeğerler tablosuna başvurmak

Kısaca toparlayacak olursak, şimdiye kadar neler öğrendiğimize bakalım:

* `\` bir kontrol dizisinin başlangıcını gösterir (ya bir *denetim simgesi* veya bir *denetim sözcüğü*).
* Eğer `\` 0 değere sahip olduğunu `\catcode` kaçış karakterinden sonraki ilk karakter *denetim sözcüğü*.
* için *kontrol sözcükleri* harf (11) değerine sahipse, bu `\catcode` 11 *yapmaz* değerine sahip olan ilk karakteri bulur bulmaz taramayı durduracaktır. `\catcode` harf (11) değeri
* sonrasındaki giriş karakterleri dizisi `\`) `\catcode` kontrol sözcüğü *denetim sözcüğü* olarak değerlendirilir; bu, kullanıcının TeX'e “bir şey yap” demek için yazdığı bir komuttur.
* Bir şey yapma sürecini başlatmak için TeX, kontrol sözcüğündeki karakter dizisini tamsayıya dönüştürür. Bunu, tamsayı üreten sözde bir karma işlevi kullanarak yapar.
* tamsayıya (hesaplanan karma değerine) *geçerli kontrol dizisi*geçerli kontrol dizisi `curcs`.
* olarak adlandırılır, ancak TeX ona daha kısa olan `def` adını verir. `curcs`: yani, `curcs=1218`.

TeX şimdi yeni tespit edilen *geçerli kontrol dizisi* gerçekte ne anlama geldiğini—TeX bununla ne yapar—öğrenmek zorundadır.

#### Gruplama üzerine bir not: bilgiyi kaydetme ve geri yükleme gereksinimi

Burada, TeX'in bilgiyi kaydedip geri yükleyebilme yeteneğine sahip olduğunu—yani bir tür yerleşik “hafızası” bulunduğunu—kendimize hatırlatmak için küçük bir sapma yapacağız.

En basit makroyu bile yazmış olan herkes TeX'in gruplama mekanizmasının farkında olmalıdır—örneğin, bir grup içinde makrolar oluşturmak için `\def` kullanarak `\\global` önekini `\def`grup içinde tanımlanan,

```latex
{\def\foo{Hello}}
```

ve `\\foo` kullanmayı denerseniz

```latex
{\def\foo{Hello}}% \foo grup içinde tanımlandı (not: \global kullanılmadı)
\foo %<--- artık tanımlı değil, şimdi tanımsız
```

o zaman şu meşhur hatayı alırız: `Tanımsız kontrol dizisi`. `\\foo` yalnızca tanımlandığı grubun (ve alt gruplarının) içinde anlam taşır. Dahası, bir makroyu bir grup içinde yeniden tanımladığınızda yeni değer grup sona erdiğinde kaybolabilir ve grup dışında var olan önceki anlam geri yüklenir.

```latex
\def\foo{Goodbye}
\foo\par% Goodbye çıktısı verir
{\def\foo{Hello}% Bir grup içinde yeniden tanımlandı:
{2. seviye grup içinde: \foo\par}}% 2. seviye grup içinde kullanıldı: \foo Hello çıktısı verir
Grup dışında eski değer geri yüklenir: \foo\par% Goodbye çıktısı verir
```

Bu basit örneklerin amacı, TeX'te komutların “anlamını” kaydedip/geri yükleyen bir tür “depolama mekanizması” ya da “hafıza” bulunduğuna işaret etmektir—ve elbette öyle de vardır. Bunu bir önceki bölümde ima etmiştik: o “depolama mekanizması” ya da “dosya dolabı” *eşdeğerler tablosu*eşdeğerler tablosu adı verilen büyük bir iç tablodur. TeX, şu anda bildiği tüm komutların—yerleşik ilkellerin ve kullanıcı tanımlı makroların—mevcut anlamını veya değerlerini burada saklar.

### Eşdeğerler tablosu: benzetme yoluyla

Eşdeğerler tablosunu açıklamak için benzetmeyle ilerleyeceğiz. Binlerce küçük çekmecesi olan bir dosya dolabı düşünmeye devam edeceğiz; her biri benzersiz bir tamsayıyla etiketlenmiştir. İşlemenin bu aşamasında TeX aslında şunu söyler:

“Tamam, az önce hesaplayıp `curcs`adlı bir değişkende sakladığım 1218 tamsayı değerim var. Şimdi bunun ne anlama geldiğini öğrenmem gerekiyor: bunun için gidip dosya dolabımdaki 1218 numaralı çekmeceye bakacağım ve içinde ne yazdığını göreceğim.”

TeX doğru çekmeceyi bulmak için 1218'i kullanır ve orada, TeX'in kaynak kodunda kullanılan adlara sahip üç bilgi parçası içeren küçük bir not bulur:

* **`eq_level:`** bu girişin tanımlandığı gruplama düzeyi (1. düzey = global olarak tanımlı). Gruplamanın etkilerini yukarıda gördük: gruplama düzeyi bilgisinin saklandığı yer eşdeğerler tablosudur;
* **`eq_type:`** bu girişin komut kodu;
* **`equiv:`** bu girişin geçerli “değeri”—yukarıda belirtilen komut değiştiricisi gibi basit bir tamsayı olabileceği gibi, bellekte bir alana işaret eden bir işaretçi de olabilir; örneğin bir makro tanımını temsil eden belirteçler kümesi için bellek konumu.

Dolayısıyla, 1218 karma değerimiz ( `curcs`değişkenine kaydedilmiş) *anahtar* olarak kullanılmıştır; böylece başlangıçta `\def`.

harf dizisi olarak yazdığımız komutun mevcut anlam ve değerini içeren bir çekmeceye erişir. `eq_type` bir komut için `curcmd` adlı bir değişken kullanılarak saklanır ve `equiv'in değeri` adlı bir değişkende saklanır. `curchr`.

### def için eşdeğerler tablosu ne söylüyor?

Belirtildiği gibi, herhangi bir komut için hesaplanan karma değeri `curcs`adlı bir değişkende saklanır; dolayısıyla `def` elimizde `curcs=1218`. Eşdeğerler tablosunda 1218 konumuna bakıldığında TeX şu bilgileri bulacaktır:

* `curcmd`=97. Bu, `\def`;
* `curchr`=0. Bu, `\def`.

`\def` bir ilkel (yerleşik) TeX komutudur ve bir yerde yeniden tanımlanmadıysa, üçüncü ve son bilgi parçası `eq_level=1` olmalıdır; bu da `\def` anlamının `eq_level` global olarak tanımlandığını ve daha alt bir gruplama düzeyiyle sınırlı olmadığını gösterir. İçsel olarak,

Aşağıdaki grafik, üzerinde ilerlediğimiz açıklamayı özetlemektedir:

![TeX girdisinden TeX belirtecine giden yol.](/files/4f0b4dc70fab6cd06b38cd0799ef9001c76529d3)

## Komutlar için TeX belirteçleri

Yukarıdaki açıklamalardan geçip geldikten sonra, kontrol dizileri için TeX belirteçlerinin gerçek hesaplanması gerçekten çok basit çıkıyor. TeX, hash işlevinden gelen `curcs` (1218) değerini kullanarak *belirtecini*adını verdiği basit bir tamsayı oluşturur.  `curcs` şudur:

```c
curtok = 4095 + curcs
```

TeX geçerli belirtecin (en son hesaplanan) değerini `curtok`.

adlı bir değişkende saklar. `\def` şu şekildedir `4095 + 1218 = 5313`Sonuç olarak, TeX komut dizisini temsil eden

## Karakterler için TeX belirteçleri

TeX bir karakteri temsil eden bir belirteç oluşturması gerektiğinde aşağıdaki, aynı derecede basit, hesabı kullanır:

```c
curtok = 256*catcode + (karakterin ASCII değeri)
```

LuaTeX gibi Unicode-duyarlı motorlar için biraz farklı hesaplamalar kullanıldığını unutmayın.

Örneğin, `\catcode` 10 ve ASCII değeri 32 olan bir boşluk karakterini temsil eden TeX belirteci:

```c
256*10 + 32 = 2592
```

### Karakterler içeren belirteç listeleri

Örneğin, aşağıdaki gibi basit bir belirteç listesi oluşturduğunuzda

```latex
\toks100={Hello}
```

TeX aşağıdaki belirteç listesini oluşturacak ve daha sonra kullanılmak üzere belleğe kaydedecektir:

* H→ 256 × 11 + 72 = 2888
* e→ 256 × 11 + 101 = 2917
* l→ 256 × 11 +108 = 2924
* l→ 256 × 11 +108 = 2924
* o→256 × 11 + 111 = 2927

TeX'in belleğinin derinliklerinde token register 100, “Hello”nun depolandığı konuma erişim sağlayacaktır; 5 belirteç değeri olarak kaydedilmiştir: 2888, 2917, 2924, 2924, 2927. Bu belirteçlerin her bir karakterin ASCII kodunu ve onun `\catcode`catcode'unun `\catcode` değerini birleştirdiğine dikkat edin; bu noktada bunlar belirteçlere dönüştürülür. Karakterler karakter belirteçlerine dönüştürüldükten sonra, `\the\toks100`.

Belirtildiği gibi, bir karakter belirteci `256*catcode + (ASCII değeri)` formülünden hesaplanırken, bir kontrol dizisi belirteci `4095 + curcs` burada `curcs` formülünden hesaplanır. Karakter belirteçlerinin her zaman 4095'ten küçük olduğunu belirtmek gerekir. Dolayısıyla TeX, belirli bir belirtecin bir kontrol dizisini (bir komutu) mı yoksa bir karakteri mi temsil ettiğini kolayca belirleyebilir ve ardından hangi kontrol dizisi ya da karakter olduğuna `\catcode` ve o belirtecin içine kodlanmış olan kontrol dizisi ya da karakter/catcode çiftini belirleyebilir.


---

# 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/53-what-is-a-tex-token.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.
