> 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/05-an-introduction-to-endlinechar-how-tex-reads-lines-from-text-files.md).

# \endlinechar'a giriş: TeX metin dosyalarından satırları nasıl okur

İnsanlar olarak, metin dosyalarını satır satır görüntülemeyi ve düzenlemeyi tercih ederiz. Bir satırın yeterince uzun olduğunu düşündüğümüzde, o satırın sonunu belirtmek için (metin düzenleyicide) “return” tuşuna basarız. Perde arkasında, metin düzenleyiciniz bunu, bir [satır sonu karakteri](https://en.wikipedia.org/wiki/Newline) satırı bölmeye karar verdiğiniz noktaya.

Ancak iş bu kadar basit olsaydı: sorun şu ki farklı işletim sistemlerinin satır sonu karakteri olarak neyin kabul edildiğine dair farklı anlayışları vardır. İşleri daha da kötüleştirmek gerekirse, Windows satır sonu karakterlerini, bir dosyanın sözde [*ikili mod* ya da *metin modu*](https://docs.microsoft.com/en-us/cpp/c-runtime-library/text-and-binary-mode-file-i-o?view=vs-2017) içinde açılıp açılmamasına bağlı olarak farklı şekilde ele alır. Sonuç olarak, ana işletim sistemine bağlı olarak, bir metin dosyasındaki satırlar *satır başı dönüşü* (ASCII/Unicode karakteri 13) ve *satır besleme* (ASCII/Unicode karakteri 10): şu şekilde gösterilir `\r` ve `\n` sırasıyla.

Açıkça, sistemden bağımsız olmak için TeX'in, okuması ve işlemesi gereken metin dosyalarının içinde bir satırı sonlandırmak için kullanılan farklı karakterlerin getirdiği değişkenliklerle başa çıkmanın bir yoluna ihtiyacı vardır.

### TeX’in giriş tamponu

Sizi şaşırtabilir ya da şaşırtmayabilir, TeX motorlarının (LuaTeX ve XeTeX dahil) girdi dosyalarını bir seferde bir satır okuyarak işlediğini öğrenmek: tüm metin dosyasını belleğe okumazlar. TeX motorları tarafından işlenen çoğu metin dosyası modern cihazlardaki kullanılabilir belleğe kıyasla çok küçük olsa da, dosyadaki her satır ayrı ayrı okunur ve küçük bir dahili tampona kaydedilir. Ancak elbette, TeX’in bir satırı okuma ve saklama sürecinin bazı ek incelikleri vardır.

## “Benim tarzımda yapacağım”—TeX’in \endlinechar komutu

TeX bir giriş dosyasından başka bir metin satırı okuduğunda iki “rutin bakım” görevi yapar:

* satırın sonunda bulunan sonlandırıcı satır sonu karakterlerini (\r veya \n) kaldırır—yani, metin dosyası ilk kez diske kaydedildiğinde eklenen tüm satır sonlarını çıkarır;
* satırın sonunda bulunan tüm sondaki boşluk karakterlerini de kaldırır.

Bu iki işlem, TeX’in satırın kendisinde bulunan karakterleri gerçekten taramaya başlamasından önce gerçekleşir: onları bir sonraki işleme aşamasına (tarama) hazırlık niteliğinde bir tür “rutin bakım” olarak düşünün. Dolayısıyla, satır okuma sürecinin bu ilk aşamasında TeX tüm platforma bağımlı satır sonlarını (ve sondaki tüm boşlukları) temizlemiş olur: peki TeX o satırın nerede bittiğini nasıl bilecek (algılayacak)? TeX’in kolunun altında bir başka “numara” daha vardır: `\endlinechar` komutunu.

Platforma bağlı satır sonu karakterlerinin sorununu önlemek için TeX, `\endlinechar`TeX’in bir dosyadan yeni okuduğu bir metin satırının en sonuna kendi satır sonu karakterini eklemek için kullandığı, kullanıcı tarafından tanımlanabilir bir parametredir. Yine unutmayın ki bu, TeX’in gerçekten karakterleri taramaya başlamasından önce gerçekleşir—bu, TeX’in satırın içindeki gerçek karakterleri okumaya (tarama) hazır olmadan önce yaptığı son “rutin bakım” adımıdır.

TeX, içinde saklanan değeri kullanacaktır `\endlinechar` kendi satır sonu sonlandırıcısını eklemek için, ancak ve ancak, `\endlinechar` uygun şekilde tanımlanmışsa—Knuth’un TeX’inde bunun anlamı değerin >-1 ve < 256 olması gerekir. Tipik olarak, `\endlinechar` 13 değeri atanır: satır başı dönüşü karakteri—genellikle `\r` programlama literatüründe.

Ama eğer şunu yazarsanız `\endlinechar=-1` girişinizin bir yerinde *bir sonraki sefer* TeX bir dosyadan bir metin satırı okuduğunda *yapmaz* satırın sonuna hiçbir ek sonlandırıcı `\endlinechar` eklemez. Sonuç olarak, girişiniz \endlinechar'ı uygun bir değere sıfırlayana kadar tek ve sürekli uzun bir metin dizisi olarak ele alınacaktır—genellikle 13 (`\r`):

```latex
\endlinechar=13
```

TeX’in 16 kategori kodundan biri (değer 5) “satır sonu” karakterini tanımlamak için ayrılmıştır; bu, genellikle `\endlinechar` eklediği karakterdir—bu karakter, ancak ve ancak \endlinechar'ın değeri `\endlinechar` uygun bir değere ayarlanmışsa.

## Satır sonu işleme özeti

Bu ayrıntılar oldukça düşük düzeyde olsa da, satırları okumayla ilgili makrolar yazmayı keşfetmek isteyen herkes için ilgi çekici olacaktır.

1. TeX dosyanızdan bir satır okuduğunda önce tüm satır sonu karakterlerini (`\r` ve `\n`) metin düzenleyiciniz dosya kaydedildiğinde eklemiş olur. Ayrıca:

* TeX ayrıca satırın sonundaki tüm sondaki boşluk karakterlerini de temizler;
* TeX *sonlanmıyor;* sondaki sekme karakterlerini (ASCII karakter kodu 9) kaldırır.

**Ayrıca**: LuaTeX’in kaynak kodu dosyalarından biri, bu boşlukları temizlemeyi gerçekleştiren kodu içeren dosya, aşağıdaki notu içerir:

> (Dosyada alıntılanmıştır `luatex.c`) “David Fuchs, TeX belgelerinin zamanın bazı sistemlerinde sabit kayıtlı "satırlar" üzerindeki boşluklarla doldurulması nedeniyle taşınabilirliğini sağlamak için bu \[boşluk] temizlemesinin yapıldığını belirtir; örneğin IBM VM/CMS ve OS/360.”

3. 1\. adımdan sonra TeX, değeri \endlinechar içinde saklanan ek bir karakter ekler (sağlıklı şekilde tanımlanmışsa: >-1 ve < 256)
4. \endlinechar genellikle 13 değerine ayarlanır (`\r`), bu da 2. adımda eklenen karakterin genellikle 13. karakter (`\r`) olduğu anlamına gelir—ama elbette, makro programlama yoluyla özel etkiler elde etmek için \endlinechar değerini başka bir değere ayarlayabilirsiniz.
5. Girdi tarama yordamları `\r` iç tamponunun sonunda karakterini algıladığında, TeX her zamanki gibi onunla ne yapacağına karar vermek için kategori kodunu kontrol edecektir.
6. Karakter 13 *genellikle* 5 kategori kodu değerine (“satır sonu”) sahiptir; tabii ki kategori kodu değiştirilmemişse—bazı makrolar daha gelişmiş işlem yapmak için satır sonu karakterini etkin hale getirir.
7. TeX’in dahili durumuna bağlı olarak (fiilen, ne yaptığına bağlı olarak) TeX satır sonu karakterini (genellikle `\r`, kategori kodu 5) bir boşluk karakterine dönüştürebilir—satır sonu karakterlerinin boşluğa dönüşmesi böyle olur.
8. Ayrıca TeX’in kategori kodu 5'e sahip karakterleri, boş bir satır okuduğunu ve bir `\par` belirteci

Aşağıdaki grafik, 1. ve 2. adımların görsel bir özetini verir: satır sonu karakterlerini ve sondaki boşluk karakterlerini temizlemek ve `\endlinechar` girdiyi tarama görevine hazır

![TeX \endlinechar’ı nasıl kullanır](/files/a86be0172e0e70c84242c939b355c52dcab343b2)


---

# 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/05-an-introduction-to-endlinechar-how-tex-reads-lines-from-text-files.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.
