> 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/21-how-does-expandafter-work-tex-uses-temporary-token-lists.md).

# \expandafter nasıl çalışır: TeX geçici belirteç listeleri kullanır

[Bölüm 1](/latex/tr/derinlemesine-makaleler/19-how-does-expandafter-work-an-introduction-to-tex-tokens.md) [Bölüm 2](/latex/tr/derinlemesine-makaleler/22-how-does-expandafter-work-the-meaning-of-expansion.md) [Bölüm 3](/latex/tr/derinlemesine-makaleler/21-how-does-expandafter-work-tex-uses-temporary-token-lists.md) [Bölüm 4](/latex/tr/derinlemesine-makaleler/20-how-does-expandafter-work-from-basic-principles-to-exploring-tex-s-source-code.md) [Bölüm 5](/latex/tr/derinlemesine-makaleler/17-how-does-expandafter-work-a-detailed-macro-case-study.md) [Bölüm 6](/latex/tr/derinlemesine-makaleler/18-how-does-expandafter-work-a-detailed-study-of-consecutive-expandafter-commands.md)

## Genişleme ve dahili belirteç listeleri

Şimdiye kadar belirteçleri, belirteç listelerini ve TeX’in genişleme kavramının arkasındaki temel ilkeleri inceledik. Bu bölümde TeX ilkelini kullanacağız `\\jobname` genişleme işlemenin önemli bir yönünü tanıtmak için: TeX’in *geçici belirteç listeleri*—ki bunlar bir *temel* şu yönünün `\\expandafter` çalıştığının, bu makale dizisinin ilerleyen kısımlarında göreceğimiz gibi.

`\\jobname` genişletilebilir bir TeX ilkelidir; genişlemesi, ana girdi dosyasının adını temsil eden bir dizi karakter belirteci üretir `.tex` dosyasının bir parçası olarak aşağıdaki metne sahip olduğumuzu varsayalım: `.tex` adlı bir dosya `mycode.tex`:

```
    Dosyamın adı \jobname .tex %\jobname'den sonraki boşluğa dikkat edin
```

Bu, dizgiye döküldüğünde

```
    Dosyamın adı mycode.tex
```

şunu kullandığımızda `\\jobname` komutunda, ortaya çıkan dizilmiş karakterler fiziksel `.tex` dosyanızdan okunmaz; peki nereden gelirler: TeX bu belirteçleri nerede saklar/okur? Kullanıcıya görünmez şekilde (yani TeX’in kendi içinde derinlerde) ... için genişleme süreci `\\jobname` dosyanızın adını temsil eden karakter belirteçleri dizisinden oluşturulmuş geçici bir belirteç listesi oluşturur. Bir kez `\\jobname` bu belirteç listesini oluşturduğunda, TeX geçici olarak mevcut girdi kaynağından (burada bizim `.tex` dosyamız) uzaklaşıp o geçici belirteç listesinden belirteçler (karakter belirteçleri) okumaya başlar. TeX’in başka bir giriş belirtecine ihtiyacı olduğunda, sonraki belirteci bu dahili listeden okur ve listenin sonuna ulaşana kadar bunu sürdürür; bu noktada TeX, önceki girdi kaynağından belirteç okumaya devam eder; burada bu, bizim `.tex` girdi dosyamızdan okunan metin olur.

Aşağıdaki diyagramda gösterildiği gibi, TeX okumaya yeniden `.tex` girdi dosyasına, işledikten sonra durduğu tam konumdan devam eder `\\jobname`—boşluk karakterini okuduktan sonra ama “.” karakterini okumadan önce. Nokta (.) aslında TeX’in girdi arabelleğinden okunmayı beklemektedir; bu, okunan bir metin satırını tutmak için tasarlanmış TeX belleğinin küçük bir alanıdır `.tex` dosyasından—TeX, sizin `.tex` dosyanızı bir seferde bir satır okuyup işler; tüm dosyayı belleğe almaz.

Aşağıdaki grafiği incelerken, süreç akışını izlemek için alttan başlayıp yukarı doğru ilerleyin.

![TeX \jobname'i nasıl genişletir](/files/63baf43f0fe2b0d5d7597bd02bbf3f10cf33b48a)

Genişleme hakkındaki tartışmamıza geri dönersek, ... genişlemesinin `\\jobname` şuna yol açtığını görebiliriz: `\\jobname` komutunun (belirtecin)  *kaldırılmıştır* girdiden *değiştirilmiştir* ve genişlemeden doğan belirteçlerle birlikte: adını tutmak için oluşturulan geçici belirteç listesi `.tex` dosyasında.

Genişletilebilir komutlar (örneğin `\\jobname`) etkilerini elde etmek için “gizlice” belirteç listeleri oluşturan ve kullanan tek TeX ilkel değildir. Örneğin, komutlar `\\uppercase` ve `\lowercase` ikisi de argümanlarının harf durumunu değiştirmek için dahili belirteç listeleri oluşturur. Harf durumu değiştirme işi tamamlandığında, TeX bu komutların ürettiği belirteç listelerinden karakter belirteçleri okumaya geçer. Belirteç listeleri, fiziksel bir disk dosyasına veri yazmak dışında, TeX’in tek “belirteç veri depolama” mekanizmasıdır.

### Belirteçlerin kaynakları: TeX usta bir jonglördür

TeX tipik bir belgeyi işlerken yönetmek zorundadır *çok* belirteç kaynaklarını: çok sayıda fiziksel disk dosyasından gelen girişleri ve işleme sırasında oluşturulan sayısız dahili belirteç listesini. Bu bölümde TeX’in bu giriş kaynaklarını nasıl “idare ettiğini” çok kısaca inceleyeceğiz.

Dosyamızın adını dizgiye döken basit bir makro istediğimizi varsayalım `.tex` dosya:

```
    \def\myfile{Dosyamın adı \jobname .tex}
```

Daha sonra, bir noktada bizim `.tex` dosyamızda makroyu çağırırız `\myfile`: geçici olarak, TeX metninizdeki metin aracılığıyla belirteç oluşturup/okumaktan`.tex`) dosyasından belirteç okumaya geçer `\myfile` hafızasında saklanan tanımdan (belirteç listesi) belirteç okumaya geçer. TeX `\myfile` makroyu (belirteçlerini işlerken) yürüttüğünde, ... temsil eden bir belirteci algılar `\\jobname` komutunu; bunun genişlemesi, TeX’in belirteç okuması gereken bir başka geçici belirteç listesi oluşturur. Bu basit senaryoda bile TeX’in üç giriş kaynağını yönetmesi gerekir:

1. şu `.tex` içeren metin dosyası `\myfile` makro;
2. tanımını saklayan belirteç listesi `\myfile` makro;
3. tarafından oluşturulan bir belirteç listesi `\\jobname` komutu `\myfile` makro içinde.

TeX bir belgeyi işlerken sürekli olarak girdi kaynakları arasında geçiş yapar: fiziksel dosyalar ve belirteç listeleri; peki TeX bunu nasıl takip eder? Cevap şudur ki, dahili olarak TeX motorları sözde bir [girdi yığını](https://en.wikipedia.org/wiki/Stack_\(abstract_data_type\)) tutar; bu, TeX’in girdi kaynakları arasında geçiş yaparken ne yaptığını (nereden okuduğunu) hatırlamasını sağlayan bir tür “hafıza” gibi davranır.

Ayrıntılara fazla girmeden, TeX motorlarındaki dahili kodlar `curinput` (geçerli girdi) adlı küresel bir değişken kullanır; bu değişken, diğer şeylerin yanı sıra, TeX’e şu anda fiziksel bir dosyadan mı yoksa bir belirteç listesinden mi okuduğunu söyler. `curinput` ayrıca TeX’i bir sonraki belirteci alması gereken konuma (geçerli belirteç listesinde veya metin arabelleğinde) yönlendirir. TeX bir belirteç listesinden okuyorsa `curinput` işlenen belirteç listesinin türünü de kaydeder—örneğin, bir makro olarak saklanan belirteçler listesi mi yoksa bu belirteçlerin başka bir kaynaktan mı geldiği.

Gerektiğinde, `curinput` değişkeni yeni bir girdi kaynağını gösterecek şekilde değiştirilecektir ve TeX’in mevcut “girdi durumu” (kaynak ve konum) girdi yığınına kaydedilecektir; böylece TeX daha sonra tam olarak o konuma (bir `.tex` dosyadaki konum ya da bir belirteç listesindeki bir sonraki belirteç) geri dönebilir. Bu yeni girdi kaynağı tükendiğinde (örneğin, belirteç listesinde daha fazla belirteç kalmadığında ya da bir dosyanın sonuna ulaşıldığında) yığından çıkarılır ve `curinput` TeX’in önceki kaynaktan belirteç almaya geri dönmesini sağlamak için güncellenir.

## Daha derine inmek (isteğe bağlı okuma)

Aşağıdaki bölümler, ayrıntıları seven okuyucular için ek arka plan bilgisi sunar.

### Gerçek belirteç listeleri

Aşağıdaki grafik, TeX’in dahili verilerine ve veri yapılarına erişim sağlayan Knuth’un TeX sürümünün Overleaf’e özel derlemesi kullanılarak oluşturulmuştur. Bir belirteç listesinin bu gösterimi, yukarıda sunulan basitleştirilmiş sürümün üzerine kuruludur ve tarafından üretilen karakterleri göstermesi gibi ek veriler içerir `\\jobname` kategori kodu 12’ye sahiptir, olağan 11 kategori koduna değil. Bu diyagramda “node”, TeX’in kullandığı bir bellek depolama birimine verilen addır.

![Bir TeX belirteç listesinin içinde](/files/837475c506288e46655bfa70206934da75f06be3)

### TeX \jobname'i nasıl okur ve işler

Ayrıca, eksiksizlik için, TeX’in ... algılarken izlediği “düşünce süreçlerine” genel bir bakış burada `\\jobname` girdimizde `.tex` dosyamızda. Bu grafikte TeX’in bir kaçış karakterini (`\` kategori kodu 0 olan), karakter dizisini işler `jobname`, bir belirteç üretir ve ... anlamını arar `\\jobname` komutunun; burada TeX bunun 100'den büyük bir komut koduna sahip olduğunu keşfeder; bu da onun genişletilebilir bir komut olduğunu gösterir.

![TeX \jobname'i nasıl tarar ve işler](/files/1d19690d76b0f2237926d35a02a18c0b9c7eace1)

[Bölüm 1](/latex/tr/derinlemesine-makaleler/19-how-does-expandafter-work-an-introduction-to-tex-tokens.md) [Bölüm 2](/latex/tr/derinlemesine-makaleler/22-how-does-expandafter-work-the-meaning-of-expansion.md) [Bölüm 3](/latex/tr/derinlemesine-makaleler/21-how-does-expandafter-work-tex-uses-temporary-token-lists.md) [Bölüm 4](/latex/tr/derinlemesine-makaleler/20-how-does-expandafter-work-from-basic-principles-to-exploring-tex-s-source-code.md) [Bölüm 5](/latex/tr/derinlemesine-makaleler/17-how-does-expandafter-work-a-detailed-macro-case-study.md) [Bölüm 6](/latex/tr/derinlemesine-makaleler/18-how-does-expandafter-work-a-detailed-study-of-consecutive-expandafter-commands.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://ayakaleaf-pro.ayaka.space/latex/tr/derinlemesine-makaleler/21-how-does-expandafter-work-tex-uses-temporary-token-lists.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.
