> 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/23-how-does-latex-typeset-headers-and-footers.md).

# LaTeX üst ve alt bilgileri nasıl dizer?

## LaTeX başlıkları ve altbilgileri nasıl dizgi yapar?

### Giriş

Başlık ve altbilgileri değiştirmeye yönelik bir nasıl yapılır kılavuzu arıyorsanız lütfen [yardım sayfamızı ziyaret edin](/latex/tr/bicimlendirme/02-headers-and-footers.md) çünkü bu makale, başlık ve altbilgileri üretmek için TeX motorları ve LaTeX tarafından kullanılan düşük düzeyli mekanizmaları açıklamaya odaklanır.

* **Not (güncelleme)**: Bu makale, Haziran 2022’den önce kullanılan çekirdek LaTeX işaret mekanizmasını inceler; o tarihte LaTeX’in işaret işleme biçimi için daha yeni ve daha çok yönlü bir uygulama tanıtıldı. Daha fazla ayrıntı için bkz. [LaTeX’in yeni işaret mekanizmasına genel bakış](https://www.latex-project.org/help/documentation/ltmarks-doc.pdf) Daha fazla ayrıntı için. Geriye dönük uyumluluk nedeniyle LaTeX, eski işaret mekanizmasını desteklemeyi sürdürmektedir. TeX motorlarının davranışını tartışan makale bölümleri, LaTeX’teki bu değişikliklerden etkilenmez.
* **Not**: “LaTeX”, “TeX” ve “TeX motoru” terimleri bu tartışmalar boyunca kullanılır; bu yüzden anlamlarını bilmek faydalıdır—bkz. Overleaf makalesi [Bir İsimde Ne Var: TeX'in Çok Sayıdaki Çeşidine Rehber](/latex/tr/derinlemesine-makaleler/55-what-s-in-a-name-a-guide-to-the-many-flavours-of-tex.md) Tekniniz bağlı olduğu gibi?

Faydalı bir arka plan/bağlam sağlamak için, TeX tabanlı dizgide ilgili bazı düşük düzeyli alanların bir genel görünümüyle başlıyoruz—geçici (dahili) içerik depolama, sayfa bölme ve oluşturma dahil. Tartışmalar, bir “gövde” metin ile bazı başlıklar ve altbilgiler içeren dizgilenmiş bir sayfayı ele alarak sadeleştirilmiştir. Şekiller (kayan öğeler) ve dipnotlar gibi sayfa öğeleri ele alınmıyor çünkü bunlar insertions adı verilen karmaşık bir TeX mekanizmasını içerir *eklemeler*, bu makalenin kapsamı tamamen dışındadır.

Temel kavramla başlayacağız *düğümler*: TeX motorlarının geçici (dahili) içerik depolaması için kullandığı temel yapı taşları.

### İçerik depolamaya dair bazı notlar: TeX düğümleri

Temel TeX motoru, paragraf, tablo ve matematik gibi dizgilenmiş materyal üretmek için LaTeX kodunuzu işlerken, bu içeriği, LaTeX kodunuzu işlemek için kullanılan TeX motorunun belleği içinde geçici olarak saklaması gerekir. Dizgilenmiş içeriği saklamak için TeX motorları sözde *düğümler*, bilgisayar (aygıt) belleğinin değişken boyutlu “parçaları” olarak düşünebileceğiniz, bir liste oluşturmak üzere birbirine bağlanmış yapılardan oluşan bir dizi kullanır (bkz. bağlantılı veri yapıları hakkındaki bu [Bağlantılı veri yapıları hakkındaki Vikipedi makalesi](https://en.wikipedia.org/wiki/Linked_data_structure)).

![Bağlantılı düğümler kullanılarak TeX motorlarının içeriği nasıl sakladığının şematik gösterimi](/files/b7c420fb3f438de79bb6b1ca9ed2a2b225058ec0)

TeX tabanlı dizginin temel öğelerini—karakterler, glue, kutular, penalties, kernler ve [*işaretler*](#why-were-here-understanding-mark-nodes) (birkaçını saymak gerekirse)—temsil etmek için TeX motorları farklı *türlerine* düğüm türleri *karakter düğümleri*, *glue düğümleri*, [*işaret düğümleri*](#why-were-here-understanding-mark-nodes) gibi terimlerle karşılaşabilirsiniz: artık bunların, TeX’in dizgilemesinin bir öğesini temsil eden verileri saklamak için ayrılmış bellek parçalarına verilen adlar olduğunu biliyorsunuz.

#### Burada neden bulunduğumuzu hatırlayalım: işaret düğümlerini anlamak

Tartışmamız gereken birçok düğüm türü içinde, adı verilen bir tür vardır *işaret düğümü* ki bu, `\mark` komutuyla:

```latex
\mark{saklanacak şey}
```

Bu `\mark` komutu tarafından oluşturulur ve doğrudan herhangi bir dizgilenmiş içerik üretmez: onun argümanı `*saklanacak şey*` daha sonra kullanılmak üzere belleğe kaydedilir ve bir *işaret düğümü* oluşturularak *saklanacak şey*adresinin bellek konumunu içeren bir `\mark` komutu özellikle *özellikle* başlık ve altbilgilerin üretilmesine yardımcı olmak için oluşturulmuştur.

Tarafından oluşturulan işaret düğümleri `\mark` komutları, TeX motoru dizgilenmiş sayfaya (gövdeye) başlık ve altbilgileri eklemeye hazır olduğunda sayfa oluşturmanın son aşamalarında kullanılmak üzere sayfa içeriğine “gömülür”. Tipik olarak, `*saklanacak şey*` sayfa numaraları ve bölüm ya da alt bölüm başlıkları/numaraları gibi materyaller içerir—başlık ve altbilgilerin yapı taşları.

#### ε-TeX, \marks komutunu ekler

[ε-TeX’in 2. sürümü](https://texdoc.org/serve/e-TeX/0), Knuth’un özgün TeX’ine bir genişletme olarak, 1998’de yayımlandı ve mevcut özelliklere geliştirmelerle birlikte yeni yetenekler sağladı. Günümüzde ε-TeX’in geliştirmelerinin çoğu ana akım TeX motorlarına dahil edilmiştir: pdfTeX, LuaTeX ve XeTeX—bkz. [**`-etex`** TeX motorlarının komut satırı seçeneği](/latex/tr/daha-fazla-konu/44-tex-engine-command-line-options-for-pdftex-xetex-and-luatex.md) ki bu da ε-TeX uzantılarının kullanılmasını sağlar.

Knuth’un özgün TeX yazılımı, yalnızca 1 “sınıf” ya da “tür” işaret düğümü oluşturan \mark komutunu sağlar. Belgeniz birçok \mark komutu içerebilir, ancak hepsi aynı “tür” ya da “sınıf”ta işaret düğümleri oluşturur—bunları gruplamak ya da sınıflandırmak için yerleşik bir mekanizma yoktur. Bu kısıtlama bir ε-TeX geliştirmesiyle kaldırıldı: pdfTeX, LuaTeX ve XeTeX tarafından desteklenen \marks komutu:

```latex
\marks n {saklanacak şey}
```

burada `n` bir tam sayıdır (`0` <= `n` < `32768`) ve işaret düğümü *sınıfını*.

Notlar:

* yazmak `\marks 0` (yani, `n`=`0`) TeX’in özgün `\mark` komut
* ε-TeX ayrıca her işaret[aşağıda bakınız](#pre-output-checks-looking-for-mark-nodes)sınıfı için işaret değişkenleri (`n`) tanıttı: `\firstmarks n`, `\topmarks n` ve `\botmarks n`. Seçilen işaret değişkeni sınıfları, belirli dizgi görevleri için işaret verisi sağlamak amacıyla kullanılabilirdi.
* LuaTeX, değerin üst sınırını artırdı `n` ile `65535`, etkinleştirerek $$2^{16}$$ işaret sınıflarını

### TeX’in işaretleri kullanma nedenleri

Anlamak için *neden* (ve nasıl) TeX motorlarının `\mark` (veya `\\marks`) komutunu başlık ve altbilgi üretmek için kullandığını anlamamız için, sayfa oluşturma—sayfa sonlarını bulma ve tamamlanmış sayfaları bir PDF dosyasına gönderme—mekanizmalarındaki bazı “özgünlükleri” takdir etmemiz gerekir. Gerçekte bu sayfa oluşturma süreçleri karmaşıktır; ancak temel ilkeler/kavramlar, işaretleri anlamamıza yardımcı olacak yeterli arka plan açıklamaları sağlamak için sadeleştirilebilir.

Bir TeX motoru paragraf, tablo veya matematik gibi tekil içerik öğelerinin dizgilenmesini tamamladıkça, dahili bir yordamı (adı verilen bir işlevi) `build_page(...)`çağırır; bu yordam, yeni dizgilenmiş öğeleri bellekte şu anda oluşturulmakta olan sayfaya eklemeye çalışır. Bu yeni materyal oluşturulan sayfaya eklendiğinde, TeX ayrıca bu yeni eklenen içeriğin mevcut sayfayı “yeterince dolu” hale getirip getirmediğini de kontrol eder. Sayfa doluysa TeX bir *sayfa sonu*—o sayfanın içeriğini son işlemeye (“paketlemeye”) ve ardından PDF dosyasına çıkarmaya gönderir.

Sayfa paketlemenin (bileşimin) son aşamasının önemli bir özelliği, *çıkış yordamı* olarak adlandırılan şeydir; bu, etkide, içeriğin sayfasını paketleyip PDF dosyasına gönderilmeye hazır hale getirmek için kullanılan kullanıcı tanımlı bir komut dizisidir. “Paketleme” etkinliklerinden biri başlık ve altbilgi eklemektir, ancak çıkış yordamlarını kullanmanın çok sayıda yolu vardır—örneğin bkz. [TUGboat’taki bu makale](https://tug.org/TUGboat/tb11-1/tb27salomon.pdf). Çıkış yordamları TeX’in oldukça karmaşık bir alanıdır, bu yüzden burada ayrıntıya girmeyeceğiz: şimdilik yalnızca sayfa bileşiminin son aşamasının, topluca *çıkış yordamı*).

Peki, TeX uzun bir metin paragrafının dizgisini tamamlayıp onu tek tek dizgilenmiş satırlardan oluşan bir diziye böldüğünde ne olabileceğini düşünelim. TeX, yeni dizgilenmiş bu paragrafı—satır satır—şu anda oluşturulmakta olan sayfaya eklemek isteyecektir, ancak belki de bu satırların yalnızca *bazı* kadarı mevcut sayfaya sığabilir. “Sayfa” derken, daha sonra (çıkış yordamı tarafından) eklenen başlık ve altbilgiler gibi diğer sayfa öğelerini *sonlanmıyor;* kapsamayan ana metin alanını (sayfa gövdesi) kastediyoruz.

Mevcut sayfaya birkaç paragraf satırı eklendikten sonra sayfa “yeterince dolu” hale gelebilir ve TeX’in bir sayfa sonu oluşturma zamanı gelir. Ancak, paragrafın yalnızca *part* kadarı mevcut sayfaya ulaştığı için elimizde biraz “artık” malzeme vardır: “fazla paragraf içeriği” daha sonra kullanılmak üzere kaydedilir, *sonraki* sayfanın oluşturulmasına hazır halde. Aşağıdaki grafik bu fikri göstermektedir: paragrafın bir kısmı *geçerli* sayfadadır ve bir kısmı için geri tutulmuştur *sonraki* sayfasında açıp kapatabilirsiniz.

![Sayfa sonunu aşan bir paragrafın şematik gösterimi](/files/a5aa1aaaa0cb35596f9750d0a92b0d87bf31b375)

Bu paragraf örneği, bir TeX motorunun çoğu zaman, bütünüyle *tamamı*mevcut sayfaya sığamayan içerik parçalarını işlediğini (dizgilediğini) göstermektedir—çünkü bu içerik, sayfa sonunun gerekli hale geldiği noktayı aşmaktadır. TeX motorlarının satır sonlarını, girdiyi alıp sonra tüm paragrafı dizgileyerek bulduğunu ve bazı uygulamaların aksine, paragrafları satır satır dizgileme yaklaşımını benimsemediğini hatırlayın. Başka bir deyişle, TeX paragrafın *tam paragrafları* ve bazı uygulamaların aksine, paragrafları satır satır dizgileme yaklaşımını benimsemez. Başka bir deyişle, TeX paragrafın *tamamını* paragrafın mevcut sayfaya sığıp sığmadığına bakılmaksızın dizgiler (bu daha sonra belirlenir). Bu arada, “önce tamamen dizginle sonra mevcut sayfaya ekle” ilkesi, .tex dosyasından bütünüyle okunup herhangi bir ekleme girişiminden önce tam olarak dizgilenmiş tablolar da dahil olmak üzere diğer TeX içerik türleri için de geçerlidir.

Paragraf örneğimiz için, o paragrafın tüm metni, *bu metin içindeki komutlar dahil*, tamamen işlenmiş durumdadır—bu da TeX’in dizgilemesinin sizin `.tex` dosyanızda belirli bir konuma ulaştığı anlamına gelir. Değişkenlerin değerleri ya da saklanan parametre ayarları gibi TeX motorunun “mevcut iç durumu”, mevcut konuma kadar işlenmiş malzemeyi, komutlar dahil, yansıtacaktır—yani paragrafın sonunu.

Tam paragraf dizgilenmiş olsa da, bir kısmı mevcut sayfa tarafından barındırılamaz; bunun sonucunda “fazla paragraf içeriği” *sonraki* sayfası için saklanır. “Fazla paragraf içeriğini” üreten LaTeX kodu (metin artı komutlar) içinde TeX motoru *olabilir* TeX motoru içinde dahili olarak saklanan değerleri ve değişkenleri değiştiren çok sayıda komut ve makro çağırmış olabilir—yani TeX’in “mevcut durumunda” değişiklik yapmış olabilir.

Aşağıdaki diyagram, TeX tabanlı dizginin birkaç yönünü etkileyen son derece önemli bir TeX “özgünlüğünü” göstermektedir. Diyagramın sağ tarafına baktığınızda bellekte şu anda saklanan tüm içeriği oluşturan düğümlerin bir gösterimini görürsünüz: açık gri alan *geçerli* sayfayı oluşturan düğümleri içerir ve koyu gri alan *sonraki* sayfasına gidecek dizgilenmiş içeriktir. Bu senaryo paragraf örneğimizi yansıtır: koyu gri alan “fazla paragraf içeriğini” temsil eder: mevcut sayfaya sığmadıkları için geri tutulan metin satırları.

![TeX’in bir sayfa sonu bulduğu düğüm konumunun şematik gösterimi; ayrıca sonraki sayfa için geri tutulan içeriği de gösterir](/files/d7b612e4355421b452de7df285d7bf3b4bf0ee24)

TeX’in “yeterince dolu” bir sayfaya sahip olduktan sonra bu içeriği *çıkış yordamı* olarak adlandırılan bir şeye ilettiğini hatırlayın

Bu grafiğimiz, TeX’in belirli bir düğümde, örneğin `\\baselineskip` dizgilenmiş satırlar arasındaki glue'da, sayfa sonu yapmayı seçtiği ve çıkış yordamını kullanarak mevcut sayfayı paketlemeye başlamaya hazır olduğu durumu temsil eder—bu yordam, yerleşik komutlar ve kullanıcı tanımlı makrolardan oluşan bir dizidir. *Ancak*, bellekte saklanan mevcut sayfayı oluşturan içeriğe ek olarak TeX, sizin *ek materyali*dosyanızdan zaten işleyip bellekte saklamıştır. `.tex` Bu ek materyal *sayfa sonunun ötesine uzanır* ve *olabilir* önemli sayfa ile ilgili değerleri veya değişkenleri değiştiren komutlar içermiş olabilir; bu da TeX’in “mevcut dahili durumu”nu etkiler— buna dahili parametrelerin değerleri ya da makrolar tarafından saklanan veriler dahildir.

TeX mevcut sayfayı paketlemeye başladığında, onun “mevcut dahili durumu” *yapmaz* TeX zaten *o noktanın ötesine geçtiği için* dosyanızda ve ek materyali işlemiş olduğu için, sayfa sonunun gerçekleştiği dosyanızdaki konum ile TeX’in aslında ulaştığı konumu düşünürseniz, saklanan veriler ve değişkenlerin değeri dahil TeX’in iki karşılık gelen dahili durumu çok farklı olabilir. Mevcut TeX dizgisinin durumu genellikle sayfa sonunun oluştuğu noktanın önündedir; yani TeX’in dizgileme etkinlikleri `.tex` dosyanız *eşzamanlı değildir* dizgilenmiş sayfaları çıkış yordamı aracılığıyla dışa aktarma süreciyle.

#### Varsayımsal örnek: yanlış başlıklar nasıl oluşur

Aşağıdaki diyagram varsayımsal komutları göstermektedir `\myheader` ve `\myfooter` başlık ve altbilgilerin istenen metnini saklamak için kullanılır; örneğin, şu temel tanımlar kullanılarak

```latex
\newtoks\headertoks% başlık metni için yeni bir token listesi değişkeni
\newtoks\footertoks% altbilgi metni için yeni bir token listesi değişkeni
% Saklanan başlık veya altbilgi verilerinin
% erişilebilir olmasını sağlamak için \global kullanın, buna
% çıkış yordamındaki komutlar da dahildir
\newcommand{\myheader}[1]{\global\headertoks={#1}}
\newcommand{\myfooter}[1]{\global\footertoks={#1}}
```

içinde `\headertoks` ve `\footertoks` başlık ve altbilgi metnini saklamak için kullanılan token listeleridir.

Ayrıca, varsayımsal örneğimizde, başlık ve altbilgi metnini mevcut değerlerinden alan bir çıkış yordamı da vardır. `\myheader` ve `\myfooter`Diyagramda gösterildiği gibi, mevcut sayfaya gidecek içerik içinde, `\myheader` ve `\myfooter` uygun (doğru) değerleri ayarlar. Ancak, `\myheader` ve/veya `\myfooter` bir sayfa sonunu aşan bir paragraf içinde çağrılabilirdi. TeX’in tüm paragrafı işlemesi gerektiğinden, `\myheader` ve `\myfooter` “TeX’in dahili durumunda” saklanan başlık/altbilgi metnini sıfırlamak için yeniden çağrılacak ve mevcut sayfa için doğru olmayan değerler üretecekti. Çıkış yordamı başlık ve altbilgiyi ürettiğinde bunlar sonraki sayfa için amaçlanan metni içerecektir.

![Çıkış yordamı başlık ve altbilgi metnini almak için yalnızca TeX makrolarını kullanırsa oluşan yanlış başlık ve altbilgileri gösteren grafik](/files/5ea0fa91d8875ec28206320aeab43cfd58cc6a4c)

#### TeX’in eşzamansız davranışı: \mark komutu kurtarıyor

TeX’in dizgileme (içerik oluşturma) etkinlikleri *eşzamanlı değildir* çıkış yordamında bulunan komutlar aracılığıyla dizgilenmiş bir sayfayı dışa aktarma nihai süreciyle. Bir sayfayı dışa aktarma zamanı geldiğinde, TeX’in gerçek dahili durumu, çıkış yapılan mevcut sayfada son içerik parçasını dizgilediği sayfa sonu konumunda sahip olabileceği herhangi bir durumun ötesine geçmiş durumdadır.

İçinde [TeXbook](https://www.amazon.co.uk/TeXbook-Donald-Knuth/dp/0201134489), TeX’in yaratıcısı Donald Knuth, bu durumu şöyle tanımlar

> ... TeX’in çıkış yordamı, sayfa oluşturma etkinliklerinin gerisinde kalır

Bu eşzamanlı olmayan ilişki nedeniyle, “özel olanaklar” biçimindeki *işaret mekanizması*uygulanan `\mark` (veya `\marks n`) komutu aracılığıyla, başlık ve altbilgilerin dışa aktarılan gerçek sayfayla ilgili materyali içermesini sağlamak için gereklidir.  `\mark` komutu, sayfa içeriğine işaret düğümleri yerleştirerek, ev sahibi sayfanın başlık ve altbilgisinde kullanılabilecek içeriğin bellek konumunu saklar.

Tanınmış ve saygı duyulan kitap [TeX by Topic](https://www.eijkhout.net/tex/tex-by-topic.html) yazarı, `\mark` mekanizmasını

> ... çıkış yordamının özellikle şu anda sona erdirilmiş sayfanın içeriği, özellikle de üst ve alt kısmı hakkında bilgi edinebileceği ana mekanizma olarak tanımlar.

Bu `\mark` komutu, TeX’in sayfa bölme ve çıkış yordamı algoritmasının eşzamansız doğasını aşmak için tasarlanmış bir mekanizmadır.

![Sayfa gövdesi içeriğine gömülü işaret verisinin (düğümlerinin) şematik gösterimi](/files/b6ca964c5abb2bc7f52ef45fc21eec3b8952408d)

### Çıkış öncesi kontroller: işaret düğümlerini arama

TeX motoru bir sayfa sonunun konumunu belirledikten sonra, dahili bir yordam çağırır (adı `fire_up()`) ve bu yordam, çıkış yordamı sayfa bileşimini tamamlayıp bitmiş sayfayı PDF dosyasına yazmadan önce çok sayıda ön işleme yapar. Bu ön işleme adımlarının önemli bir kısmı, üç *global işaret değişkeninin*: `\\botmark`, `\topmark` ve `\\firstmark` değerini ayarlamaktır; bunlar başlık ve altbilgi oluşturmak için veri sağlamak amacıyla kullanılır. Elbette bir sayfa birden fazla işaret düğümü içerebilir, ancak bunlar şu şekilde işlev gören üç işaret değişkeni üretmek üzere filtrelenir:

* **`\\botmark`** mevcut sayfa sonundaki işarettir; yani, son görülen işarettir *geçerli* page
* **`\topmark`** önceki `\\botmark` şu paketten: *değeridir* page
* **`\\firstmark`** sayfadaki ilk işarettir—the *geçerli* ile `\topmark` ve `\\botmark`

Aşağıdaki şema, dizgilenmiş sayfa içeriğini ön işlemenin ve üç global işaret değişkeninin değerlerini belirlemenin temel ilkelerini göstermektedir `\\botmark`, `\topmark` ve `\\firstmark`:

![Üç global işaret değişkeni \botmark, \topmark ve \firstmark için değerleri belirlemek üzere kullanılan temel ilkelerin şematik gösterimi](/files/6c8548c6a2e649e6226330cc2b8ceffc4e56a132)

Bir sonraki bölüm, LaTeX’in başlık ve altbilgileri nasıl dizgilediğini ana hatlarıyla açıklamak için yukarıda sağlanan açıklamaların bir kısmını kullanır.

### LaTeX’in sınıfları: sayfa stilleri ve başlıklar/altbilgiler

Yazdığınızda `\documentclass{*class*}` burada `*class*` şu olabilir `article`, `book`, `report` ya da `letter`, LaTeX adlı bir dosyayı yükler `*class*.cls`; örneğin, `book.cls`, `article.cls` ve benzeri. Bu dosyalar, tüm belge sınıflarında bulunması ve hepsi tarafından sağlanması beklenen çeşitli komut ve özelliklerin sınıfa özgü varyasyonlarını uygulamak için LaTeX kodu içerir—tüm belge sınıflarının paylaştığı davranışlar. Örnekler, sınıfa özgü sayfa düzeni kenar boşluklarını ve şu gibi komutların sınıfa özgü sürümlerini içerebilir `.cls` ve benzeri. `\section`, `\subsection` ve benzeri.

LaTeX’in bir başka önemli öğesi `.cls` dosyaları, belirli bir sınıf ve sayfa stili kullanılarak üretilen belgelerin başlık ve altbilgilerini tanımlayan standart sayfa stillerinin sınıfa özgü uygulanışıdır. Örneğin:

* **`book.cls`** ve **`article.cls`** her ikisi de sayfa stillerinin uygulamalarını içerir `headings` ve `myheadings`
* **`letter.cls`** sayfa stilleri için tanımlar içerir `headings`, `empty`, `plain` ve adı verilen bir tane `firstpage`
* **`report.cls`** sayfa stilleri için tanımlar içerir `headings` ve `myheadings`

Sayfa stillerinin uygulamaları çoğu zaman `twoside` seçeneğine bağlıdır `\documentclass`—belgenin tek ya da çift taraflı olup olmadığına—böylece başlık ve altbilgiler sol taraftaki (çift numaralı) sayfalar ve sağ taraftaki (tek numaralı) sayfalar için uygun şekilde tanımlanır.

Belge sınıfları, LaTeX’in başka yerlerde— `plain` ya da `empty` dosyasının dışında—sağladığı varsayılan `.cls` sayfa stilleri tanımlarına dayanabilir.

#### Sayfa stilleri hakkında daha fazlası

Bir sayfanın stilini değiştirirken `\pagestyle{*somestyle*}` ya da `\thispagestyle{*somestyle*}` LaTeX, adı verilen dahili bir komut bulmayı bekler `ps@*somestyle*`—genellikle belge sınıfı tarafından sağlanan `.cls` dosyası ya da belki de şu gibi bir paket tarafından `fancyhdr`. Bu arada, “dahili komut” derken LaTeX kaynak kodunun bir parçası olan ve adında bir `@` simgesi bulunan bir komutu kastediyoruz; bu da normalde sıradan kullanımını engeller (çünkü [kategori kodu](/latex/tr/daha-fazla-konu/43-table-of-tex-category-codes.md)).

\ps@\*somestyle\* `tanımı, o sayfa stilinin özelliklerini/davranışlarını uygulamaktan sorumludur; buna şunların tanımlarını sağlamak dahildir:` komutlar kullanılan sayfa oluşturmanın son aşamalarında (başlık ve altbilgi eklemek için, bkz.

* makalenin ilerleyen bölümlerinde [daha sonra makalede](#commands-for-the-output-routine)):
  * `\@oddhead`
  * `\@oddfoot`
  * `\@evenhead`
  * `\@evenfoot`
* bölümle ilgili işaret verilerini eklemek için kullanılan, bölüm başlıkları, numaraları ve benzerlerini içeren belge başlık ve altbilgileri oluştururken kullanılan komutlar. Örneğin, `headings` sayfa stili (içinde `book.cls`) aşağıdaki işaret üreten komutları tanımlar:
  * `\chaptermark`
  * `\sectionmark`

Şunu [işaret üreten komutları daha ayrıntılı inceleyeceğiz](#mark-commands-and-mark-data), örneğin `\chaptermark`, ancak yalnızca örnek olarak: yazdığınızda `\chapter{chapter title}` şu `\chaptermark` komutu da, sonraki sayfa başlıklarının üretilmesi için bölümle ilgili işaret verisi eklemek üzere yürütülür.

#### Sayfa stiline dayalı başlık ve altbilgi komutlarının anatomisi

Bu bölüm, başlık ve altbilgileri oluşturmak için kullanılan bazı çekirdek LaTeX komutlarını/süreçlerini inceler—makalenin önceki bölümlerinde sunulan açıklamalardan veya kavramlardan yararlanarak.

**LaTeX’in başlık ve altbilgi “modeli”**

LaTeX’in (varsayılan) başlık ve altbilgilerinin içeriği, belge bölümlerinden oluşan iki katmanlı bir hiyerarşiye dayanır: birden çok “alt düzey” bölümü içeren bir “üst düzey” bölüm. Book ve article sınıfları için bu şu anlama gelir:

* `**book**` **sınıfını**: “üst düzey” bölümler `\chapter` komutlarıyla, “alt düzey” bölümler ise `\section`, çok sayıda bölüm içeren chapter’ları yansıtır.
* `**article**` **sınıfını** (iki taraflı belgeler varsayıldığında): “üst düzey” bölümler `\section` komutlarıyla ve “alt düzey” olanlar `\subsection`ile üretilir; bu da aynı bölüm içinde görünen birden çok alt bölümü yansıtır.

LaTeX, bölümleme komutları aracılığıyla başlık ve altbilgi “modelini” uygular; bu komutlar, oluşturulan belge bölümüne ilgili verileri saklamak için işaret düğümleri enjekte eder (\mark komutu aracılığıyla). Örneğin, her `\mark` komutu sayesinde) `\section{*some section title*}` yazdığınızda, yeni bölümü yansıtan veriler içeren bir işaret düğümü oluşturulacaktır—bunun `*some section title*` ve bölüm numarasını içerir.

LaTeX, verileri biçimde içeren bir işaret sistemi kullanır `{sol}{sağ}`, nihayetinde `\mark` komutlar

```latex
\mark{{sol}{sağ}}
```

aracılığıyla üretilir; bunlar, kullanıcıları bu makalenin sonraki bölümlerinde incelenen daha düşük düzey ayrıntılardan korumak için tasarlanmış makro katmanları içinde yer alır.

#### Book sınıfını incelemek

yüklenince, `book.cls` dosyası `\pagestyle{headings}` ile varsayılan sayfa stilini `headings`olarak ayarlar, bu yüzden o sayfa stiline daha ayrıntılı bakacağız.

Yukarıda [belirtildiği gibi](#more-on-page-styles), `headings` sayfa stilinin özellikleri/özellikleri, `book` sınıfı tarafından uygulanmış haliyle, `\ps@headings` dosyasında bulunan `book.cls`. \ps\@headings’in kesin tanımı `\ps@headings` belgenin tek veya çift taraflı olup olmamasına bağlıdır ( `book` sınıfı için varsayılan).

**“İşaret komutları” ve “işaret verisi”**

İki taraflı belgeler için, `book` book sınıfı tarafından üretilen `\ps@headings` \ps\@headings `\chaptermark` ve `\sectionmark` iki “işaret komutu” oluşturur (tanımlar): `{sol}{sağ}`başlık ve altbilgilerde kullanılmak üzere, biçimde “işaret verisi” üretir:

* “üst düzey” bölüm komutu (burada, `\chapter`), sol taraftaki (çift numaralı) sayfa başlıkları için “işaret verisi” sağlamakta kullanılır. Yeni bir chapter başlatırken, yazdığınız `\chapter{*chapter title*}`, `\chaptermark` komutu, o yeni chapter’ı yansıtan “işaret verisi” oluşturmak için çağrılır—içeren `*chapter title*` ve numarası.
* “alt düzey” bölüm komutu (burada, `\section`) sağ tarafta yer alan (tek numaralı) sayfalar için “işaret verisi” sağlamak amacıyla kullanılır. Yazdığınızda `\section{*section title*}` şu `\sectionmark` komutu, yeni bölümü yansıtan—onun `*section title*` ve numarasını içeren—“işaret verisi” oluşturmak için çağrılacaktır. Önceki `\chapter` tarafından sağlanan herhangi bir işaret verisi, sonraki \section komutlarından etkilenmez.

**\markboth ve \markright**

LaTeX’in bölüme özgü işaret komutları, örneğin `\chaptermark` ve `\sectionmark`, ayrıca adı geçen iki komutu kullanır: `\markboth` ve `\markright` üstbilgi ve altbilgiler için gerçek işaret verisini sağlar. `\markboth` ve/veya `\markright` üstbilgi veya altbilgi metnini biçimlendirmek için, örneğin onu büyük harfe dönüştürmek gibi, komutlar içerebilir.

Kullanılarak üretilen belgeler için `book` sınıf varsayılanları (çift taraflı, `headings` sayfa stili), işaret üreten komutlar şu şekilde çalışır:

* `\chaptermark` işaret verisini kullanarak oluşturur `\markboth`
* `\sectionmark` işaret verisi oluşturur `\markright`

`\markboth` ve `\markright` sonunda ilkel (yerleşik, düşük düzeyli) `\mark` komutunu kullanarak bölümleme komutlarının içinden oluşturulan işaretleri gerçekten ekleyen makrolardır.

`\markboth` şu biçimi alır

* **`\markboth{left}{right}`**: kullanarak bir işaret (düğüm) ekler `\mark{{sol}{sağ}}` sonucunda, ayrılmış değerlerden oluşan bir çift içeren bir işaret düğümü oluşturur `{sol}{sağ}`.

`\markright` şu biçimi alır

* **`\markright{newright}`**: kullanarak bir işaret (düğüm) ekler `\mark{{currentleft}{newright}}`; yani, `sağ` ile `newright` değerinin mevcut değerini değiştirir, ancak `sol` (yani, `currentleft`) değerinin mevcut değeri değişmeden kalır; bunun sonucunda ayrılmış değerlerden oluşan bir çift içeren bir işaret düğümü oluşur `{currentleft}{newright}`.

komutunun davranışı `\markboth` ve `\markright` iki katmanlı bölüm hiyerarşisini destekler; örneğin her bölüm içinde birden çok alt bölüm içeren bir belge.

(çift taraflı) için örnekler yoluyla `book` belge sınıfı (başlıklar sayfa stilini kullanarak):

* `\chaptermark` kullanır `\markboth` şunu ayarlamak için:
  * a `{left}` CHAPTER .’ı büyük harfle dizen alan.
  * boş olan bir {right} alanı (`{}`)
* `\sectionmark` kullanır `\markright` şunu ayarlamak için `{right}` işaret alanını da büyük harfle dizilecek şekilde ayarlamak için.

Nedenini anlamak için `\sectionmark` kullanır `\markright` her yeni `\section` komutunun şunları yapması gerektiğini gözlemleyebiliriz:

* bu `\section` için veriyi içeren yeni bir işaret eklemek (örneğin başlığı ve numarası gibi).
* ancak *yapmaz* geçerli `\chapter` değerleri için işaret verisi değerlerini etkilemek `\section` özgül

Bu nedenlerle, `\section` komutu çağırır `\sectionmark` ve bu da `\markright` kullanarak bir `\section`ile ilişkili işaret oluşturur: `{right}` işaret-verisi alanını günceller ancak geçerli `{left}` komutuyla ayarlanan mevcut `\chapter`.

Not: LaTeX kaynak kodunda şu uyarı yer alır:

> İşaretleme komutları, sol işaretler içinde “numaralanmış” sağ işaretler için makul ölçüde iyi çalışır—örneğin, sol işaret bir \chapter komutuyla, sağ işaret ise bir \section komutuyla değiştirilir. Ancak, aynı sayfada 2 \markboth oluşursa biraz anormal sonuçlar üretir.

**Çıkış rutini için komutlar**

Bu `\ps@headings` komutu, aşağıdaki komutların tanımlarını uygular

* `\@oddhead`
* `\@oddfoot`
* `\@evenhead`
* `\@evenfoot`

bunlar, sayfa oluşturmanın son aşamasında üstbilgileri ve altbilgileri eklemek için çıkış rutini tarafından kullanılır. Örneğin, `book.cls` şunu ayarlar `\@oddfoot` ve `\@evenfoot` şu değere `\@empty`, bu da şu şekilde tanımlanır `\def\@empty{}`, böylece `\ps@headings` sol ve sağ tarafta yer alan sayfalarda boş altbilgiler üretir:

```latex
\let\@oddfoot\@empty
\let\@evenfoot\@empty
```

Üstbilgiler şu şekilde tanımlanır:

```latex
\def\@evenhead{\thepage\hfil\slshape\leftmark}%
\def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
```

burada

* `\leftmark` çıkarır `{left}` değeri bir `{sol}{sağ}` işaret çiftinden
* `\rightmark` çıkarır `{right}` değeri bir `{sol}{sağ}` işaret çiftinden
* \thepage geçerli sayfa numarasını çıktılar

Özünde, `\@evenhead` ve `\@oddhead` uygulamaları şu sonuçları üretir:

* `\@evenhead`: sayfa numarası üstbilginin solunda görünür ve `\leftmark`öğesinin içeriği, yazı tipi komutu ile biçimlendirilmiş olarak `\slshape`üstbilginin sağında çıkarılır—araya giren beyaz boşluk son derece esnek `\\hfil` Sıfır olmayan
* `\@oddhead`: `\rightmark`öğesinin içeriği, yazı tipi komutu ile biçimlendirilmiş olarak `\slshape`öğesinin içeriği üstbilginin solunda görünür ve geçerli sayfa numarası üstbilginin sağında çıkarılır—yine aradaki beyaz boşluk `\\hfil` Sıfır olmayan

Ancak, temel bir soru hâlâ duruyor: *hangi* `{sol}{sağ}` işaret çifti `\leftmark` ve `\rightmark`tarafından kullanılır: başka bir deyişle, işaret verisi değerlerini nereden elde ederler?

Yukarıda [belirtildiği gibi](#filtering) ancak [aşağıda açıklandığı gibi](#explainfiltering), son sayfa oluşturma aşamalarında, belge sayfalarında bulunan herhangi bir işaret “filtrelenir” ve üç küresel işaret değişkeninin değerini ayarlamak için kullanılır: `\\botmark`, `\topmark` ve `\\firstmark`. [LaTeX’in işaretlerinin yapısı nedeniyle](#latexs-model-of-headers-and-footers), bu 3 işaret değişkeninin her biri sonunda `{sol}{sağ}` değerini içerecektir `{left}` ve `{right}` ve gerçek `{sol}{sağ}` işaret çiftini (alanlarını) sağlayanlar bunlardır `\leftmark` ve `\rightmark`:

* `\leftmark` çıkarır `sol` değeri `{sol}{sağ}` tarafından sağlanan işaret çifti (alanları) `\\botmark`
* `\rightmark` çıkarır `sağ` değeri `{sol}{sağ}` tarafından sağlanan işaret çifti `\\firstmark`

Not `\markboth` ve `\markright` üstbilgi ve altbilgi metnini biçimlendirmek için komutlar içerebilir—örneğin büyük harfe dönüştürme.

### Düşük düzeyli LaTeX komutlarını kullanan örnekler

Aşağıdaki örnekler, bu makalede tartışılan düşük düzeyli (dahili) LaTeX komutlarından bazılarını yeniden tanımlayarak sayfa stillerinde veya üstbilgiler ve altbilgilerde değişiklik yapmayı göstermektedir (içinde @ sembolü bulunanlar). Üstbilgileri ve altbilgileri değiştirmek için bu yöntemi önermiyoruz, ancak buna ihtiyaç duyanlar için mevcuttur (örneğin paket yazarları). Üstbilgi ve altbilgileri değiştirmenin tercih edilen çözümü, bir sonraki bölümde tartışılan [`fancyhdr` paketini](https://ctan.org/pkg/fancyhdr?lang=en)kullanılmasıdır [Overleaf yardım makalesi](/latex/tr/bicimlendirme/02-headers-and-footers.md).

#### Minimum bir sayfa stili tanımlamak

Aşağıdaki örnek, `demostyle` adlı yeni ve son derece minimal bir sayfa stili tanımlar; bu stil üstbilgileri ve altbilgileri tanımlamak için statik metin kullanır ve üstbilgi ile altbilgi içeriğini ayarlamak için bölümleme komutlarına (`\chapter`, `\section` vb.) dayanmaz.

Örnek, `@` karakterinin kategori kodunu 11’e değiştirerek başlar; böylece makro adları içinde kullanılabilir.  `\ps@demostyle` komutu, üstbilgileri ve altbilgileri üretmek için kullanılan komutları yeniden tanımlayarak bizim minimal sayfa stilimizi uygular: `\@oddhead`, `\@oddfoot`, `\@evenhead` ve `\@evenfoot`. Şuna dikkat edin: `twoside` seçeneği, `\documentclass` bildirimimizde—bu, `article` sınıfını kullanır.

```latex
\documentclass[twoside]{article}
\catcode`@=11
\newcommand{\ps@demostyle}{%
\renewcommand\@oddfoot{\hfil Tek sayfa altbilgisi\hfil}%
\renewcommand\@evenfoot{\hfil Çift sayfa altbilgisi\hfil}%
\renewcommand\@evenhead{\thepage\hfil Çift sayfa üstbilgisi}%
\renewcommand\@oddhead{Tek sayfa üstbilgisi\hfil\thepage}}
\catcode`@=12
\title{Bir sayfa stilinin gösterimi}
\author{Overleaf}
\date{Ağustos 2022}
\begin{document}
\pagestyle{demostyle}
\maketitle
\newpage
\section{Giriş}
\newpage
\section{Daha fazla malzeme}
\end{document}
```

[Bu örneği Overleaf'te açın](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Creating+a+new+page+style\&snip=%5Cdocumentclass%5Btwoside%5D%7Barticle%7D%0A%5Ccatcode%60%40%3D11%0A%5Cnewcommand%7B%5Cps%40demostyle%7D%7B%25%0A%5Crenewcommand%5C%40oddfoot%7B%5Chfil+The+odd-page+footer%5Chfil%7D%25%0A%5Crenewcommand%5C%40evenfoot%7B%5Chfil+The+even-page+footer%5Chfil%7D%25%0A%5Crenewcommand%5C%40evenhead%7B%5Cthepage%5Chfil+The+even-page+header%7D%25%0A%5Crenewcommand%5C%40oddhead%7BThe+odd-page+header%5Chfil%5Cthepage%7D%7D%0A%5Ccatcode%60%40%3D12%0A%5Ctitle%7BDemonstrating+a+page+style%7D%0A%5Cauthor%7BOverleaf%7D%0A%5Cdate%7BAugust+2022%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cpagestyle%7Bdemostyle%7D%0A%5Cmaketitle%0A%5Cnewpage%0A%5Csection%7BIntroduction%7D%0A%5Cnewpage%0A%5Csection%7BMore+material%7D%0A%5Cend%7Bdocument%7D)

#### Kitap sınıfı için üstbilgilerin değiştirilmesi

Aşağıdaki örnek, `\@oddhead` ve `\@evenhead` komutunu yeniden tanımlayarak kitap sınıfının üstbilgilerini değiştirir; böylece sol ve sağ tarafta yer alan sayfa üstbilgileri geçerli sayfa numarasını ve bölüm başlığını içerir. İkinci `\chapter` komutunun isteğe bağlı kısa bölüm başlığını kullandığına dikkat edin `[Kısa başlık]` ki bu artık uzun başlık yerine üstbilgi metnini sağlar.

`\section` komutlarının üstbilgi içeriği üzerinde hiçbir etkisi yoktur; çünkü üstbilgi yeniden tanımlarımız yalnızca `\leftmark` kullanır; bu da geçerli bölümün ayrıntılarını elde eder. Geçerli alt bölümün ayrıntılarına erişmek için `\rightmark` kullanmak gerekirdi `\@oddhead` ve/veya `\evenhead tanımında`.

```latex
\documentclass{book}
% Not: '@' karakterinin kategori kodu geçici olarak 11'e değiştirildi
% komut adlarında kullanımını etkinleştirmek için
\catcode `@=11
% \@oddfoot ve \evenfoot'u \@empty ile eşdeğer yap
% onları boş (empty) yapmak için
\let\@oddfoot\empty\let\evenfoot\empty
% \@oddhead ve \@evenhead'i yeniden tanımla
\renewcommand{\@oddhead}{\leftmark\hfil\thepage}
\renewcommand{\@evenhead}{\thepage\hfil\leftmark}
\catcode `@=12
% Uygun şekilde küçük bir sayfa boyutu kullan
\usepackage[paperheight=16cm,paperwidth=12cm,textwidth=10cm]{geometry}
\title{Bir \TeX{} kullanıcısının anıları}
\author{Overleaf}
\begin{document}
\frontmatter
\maketitle
Bu, Roma rakamları kullanan ön kısımdır.
\mainmatter
\chapter{Nereden başlamalıyım?}
Bölüm 1: Kısa bir bölüm.
\newpage
\section{Başlangıçta...}
Bir alt bölüm.
\chapter[Kısa başlık]{Başlığı çok uzun olan, bu yüzden üstbilgiler için uygun olmayan bir bölüm}
\newpage
\section{Başka bir bölüm}
İçeriği az.
\newpage
\section{Ne, bir alt bölüm daha mı?}
Aynı şekilde içeriği az.
\end{document}
```

[Bu örneği Overleaf'te açın](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Changing+headers+for+the+book+class\&snip=%5Cdocumentclass%7Bbook%7D%0A%25+NB%3A+category+code+of+%27%40%27+temporarily+changed+to+11%0A%25+to+enable+its+use+in+command+names%0A%5Ccatcode+%60%40%3D11%0A%25+Let+%5C%40oddfoot+and+%5Cevenfoot+be+equivalent+to+%5C%40empty%0A%25+to+make+them+blank+%28empty%29%0A%5Clet%5C%40oddfoot%5Cempty%5Clet%5Cevenfoot%5Cempty%0A%25+Redefine+%5C%40oddhead+and+%5C%40evenhead%0A%5Crenewcommand%7B%5C%40oddhead%7D%7B%5Cleftmark%5Chfil%5Cthepage%7D%0A%5Crenewcommand%7B%5C%40evenhead%7D%7B%5Cthepage%5Chfil%5Cleftmark%7D%0A%5Ccatcode+%60%40%3D12%0A%25+Use+a+conveniently+small+page+size%0A%5Cusepackage%5Bpaperheight%3D16cm%2Cpaperwidth%3D12cm%2Ctextwidth%3D10cm%5D%7Bgeometry%7D%0A%5Ctitle%7BMemoirs+of+a+%5CTeX%7B%7D+user%7D%0A%5Cauthor%7BOverleaf%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cfrontmatter%0A%5Cmaketitle%0AThis+is+frontmatter+which+uses+Roman+numerals.%0A%5Cmainmatter%0A%5Cchapter%7BWhere+do+I+start%3F%7D%0AChapter+1%3A+A+short+chapter.%0A%5Cnewpage%0A%5Csection%7BIn+the+beginning...%7D%0AA+section.%0A%5Cchapter%5BThe+short+title%5D%7BA+chapter+with+a+very+long+title%2C+making+it+unsuitable+for+headers%7D%0A%5Cnewpage%0A%5Csection%7BAnother+section%7D%0AWith+little+content.%0A%5Cnewpage%0A%5Csection%7BWhat%2C+another+section%3F%7D%0AAlso+with+little+content.%0A%5Cend%7Bdocument%7D)

#### ε-TeX’in genişletilmiş işaret komutlarını kullanmak

Bu `book` sınıfı, `\@evenhead` ve `\@oddhead` şu üstbilgileri üretmek için aşağıdaki tanımları kullanır:

```latex
\def\@evenhead{\thepage\hfil\slshape\leftmark}
\def\@oddhead{{\slshape\rightmark}\hfil\thepage}
```

burada komutlar `\leftmark` ve `\rightmark` şu şekilde tanımlanır

```latex
\def\leftmark{\expandafter\@leftmark\botmark\@empty\@empty}
\def\rightmark{\expandafter\@rightmark\firstmark\@empty\@empty}
```

ε-TeX’in genişletilmiş komutlarını ve ε-TeX’in işaret sınıfı 0 ile özgün TeX komutları arasındaki eşdeğerliği kullanarak şunları yapabiliriz:

* yeniden yazmak `\leftmark` kullanarak `\\botmark` ε-TeX’in `\botmarks0` eşdeğeri ve
* yeniden yazmak `\rightmark` kullanarak `\\firstmark` ε-TeX’in `\firstmarks0` eşdeğeri

Bu yeniden tanımlar şunları üretir

```latex
\renewcommand{\leftmark}{\expandafter\@leftmark\botmarks0\relax\@empty\@empty}
\renewcommand{\rightmark}{\expandafter\@rightmark\firstmarks0\relax\@empty\@empty}
```

kullanımına dikkat edin `\relax` TeX’in daha fazla rakam aramasını sonlandırmak için—you can also replace `\relax` ifadesini sonlandırıcı olarak bir boşlukla da değiştirebilirsiniz.

Aşağıdaki örnek, özgün `\leftmark` ve `\rightmark`.

```latex
\documentclass{book}
\leftmark ve \rightmark'ı kullanacak şekilde yeniden tanımla
% sırasıyla \botmarks0 ve \firstmarks0
% Not: '@' karakterinin kategori kodu geçici olarak 11'e değiştirildi
% komut adlarında kullanımını etkinleştirmek için
\catcode `@=11
\renewcommand{\leftmark}{\expandafter\@leftmark\botmarks0\relax\@empty\@empty}
\renewcommand{\rightmark}{\expandafter\@rightmark\firstmarks0\relax\@empty\@empty}
\catcode `@=12
% Uygun şekilde küçük bir sayfa boyutu kullan
\usepackage[paperheight=16cm,paperwidth=12cm,textwidth=10cm]{geometry}
\title{Bir \TeX{} kullanıcısının anıları}
\author{Overleaf}
\begin{document}
\frontmatter
\maketitle
Bu, Roma rakamları kullanan ön kısımdır.
\mainmatter
\chapter{Nereden başlamalıyım?}
Bölüm 1: Kısa bir bölüm.
\newpage
\section{Başlangıçta...}
Bir alt bölüm.
\newpage
Bir başka alt bölüm.
\end{document}
```

[Bu örneği Overleaf'te açın](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Using+%CE%B5-TeX%E2%80%99s+extended+marks+command\&snip=%5Cdocumentclass%7Bbook%7D%0A%25+Redefine+%5Cleftmark+and+%5Crightmark+to+use+%0A%25+%5Cbotmarks0+and+%5Cfirstmarks0+respectively%0A%25+NB%3A+category+code+of+%27%40%27+temporarily+changed+to+11%0A%25+to+enable+its+use+in+command+names%0A%5Ccatcode+%60%40%3D11%0A%5Crenewcommand%7B%5Cleftmark%7D%7B%5Cexpandafter%5C%40leftmark%5Cbotmarks0%5Crelax%5C%40empty%5C%40empty%7D%0A%5Crenewcommand%7B%5Crightmark%7D%7B%5Cexpandafter%5C%40rightmark%5Cfirstmarks0%5Crelax%5C%40empty%5C%40empty%7D%0A%5Ccatcode+%60%40%3D12%0A%25+Use+a+conveniently+small+page+size%0A%5Cusepackage%5Bpaperheight%3D16cm%2Cpaperwidth%3D12cm%2Ctextwidth%3D10cm%5D%7Bgeometry%7D%0A%5Ctitle%7BMemoirs+of+a+%5CTeX%7B%7D+user%7D%0A%5Cauthor%7BOverleaf%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cfrontmatter%0A%5Cmaketitle%0AThis+is+frontmatter+which+uses+Roman+numerals.%0A%5Cmainmatter%0A%5Cchapter%7BWhere+do+I+start%3F%7D%0AChapter+1%3A+A+short+chapter.%0A%5Cnewpage%0A%5Csection%7BIn+the+beginning...%7D%0AA+section.%0A%5Cnewpage%0AAnother+section.%0A%5Cend%7Bdocument%7D)

**ε-TeX üzerine notlar**

Yukarıda [yukarıda belirttiğimiz gibi](#etex)ε-TeX, `\\marks` komutuyla:

```latex
\marks n {saklanacak şey}
```

komutunu getirir; bu komut, Knuth’un TeX motorunun özgün `\mark` özelliğini genişletir ve üç ana akım TeX motorunun hepsinde bulunur: pdfTeX, LuaTeX ve XeTeX.

ε-TeX’in uygulaması ayrıca yeni küresel işaret değişkenleri de getirir `\firstmarks n`, `\botmarks n` ve `\topmarks n`: her sınıf için bir tane `n`. Bu sınıf tabanlı işaret değişkenleri [yukarıda özetlenen mekanizmalar kullanılarak belirlenir](#pre-output-checks-looking-for-mark-nodes)ve üstbilgi ile altbilgi üretiminde hepsi kullanılabilir.

Aşağıdakilerden herhangi birini kullanabilirsiniz $$2^{15}$$ = 32768 işaret sınıfı; 0 ile 32767 arasında değişir ve bunlar `\leftmark` ya da `\rightmark`. Bunun için seçtiğiniz işaret sınıfına uygun işaret verisini sağlamış (eklemiş) olmanız gerekir, `n`, aracılığıyla `\marks n{{left}{right}}`.

LuaTeX’in $$2^{16}$$ = 65536 işaret sınıfı sağladığını ve `n` 0 ile 65535 arasında değiştiğini unutmayın.

**10. işaret sınıfını kullanan örnek**

Bu örnek, belge üstbilgileri oluşturmak için 10. işaret sınıfını (rastgele seçilmiş) kullanmayı gösterir. Örnek belge, bu makalenin sonunda yer alan [çözümlenmiş örnekte](#a-worked-example-to-show-how-tex-engines-determine-values-for-botmark-topmark-and-firstmark)gösterilen işaret dizisini içeren 6 sayfayı dizer. $$\alpha$$, $$\beta$$, $$\gamma$$ ve $$\delta$$Bu örneğin incelenmesi, TeX motorunun neden her bir üstbilgi için belirli bir işareti

kullandığını gösterecektir `\domark`adlı bir kolaylık makrosu tanımlayarak başlıyoruz; bu makro `\marks 10` kullanır ve LaTeX `{sol}{sağ}` kuralını izleyen işaret verisini ekler:

```latex
\newcommand{\domark}[2]{\marks 10{{#1}{#2}}}
```

10\. sınıf işaretleri, `\leftmark` ve `\rightmark`yeniden tanımlanarak LaTeX’in üstbilgi ve altbilgi mekanizmasına erişilebilir hâle getirilir

```latex
—biraz da ek bilgi eklenerek:
\renewcommand{\rightmark}{\expandafter\@rightmark\firstmarks10 \@empty\@empty{} (\texttt{\string\firstmarks10} aracılığıyla)}
```

Birkaç (10. sınıf) işaret eklendikten sonra, TeX motoru (burada pdfTeX), 10. sınıf için küresel işaret değişkenleri oluşturur—`\botmarks10`, `\topmarks10` ve `\firstsmarks10` hangi `\leftmark` ve `\rightmark` üstbilgileri üretmek için kullanılır.

```latex
\documentclass{book}
% 10. sınıf işaretlerini kullanmak için kısa bir komut
% ve LaTeX’in işaret yapısını {left}{right} izleyerek
\newcommand{\domark}[2]{\marks 10{{#1}{#2}}}
\leftmark ve \rightmark'ı kullanacak şekilde yeniden tanımla
% sırasıyla \botmarks10 ve \firstmarks10
\catcode`@=11
—biraz da ek bilgi eklenerek:
\renewcommand{\rightmark}{\expandafter\@rightmark\firstmarks10 \@empty\@empty{} (\texttt{\string\firstmarks10} aracılığıyla)}
\catcode`@=12
\title{\(\varepsilon\)-\TeX’in geliştirilmiş işaretlerini gösterme}
\author{Overleaf}
\date{Ağustos 2022}
\begin{document}

Sayfa 1: Hiç işaret eklenmedi, bu yüzden tüm işaret değişkenleri başlatıldıkları durumda kalır: boş (NULL).

\newpage
Sayfa 2: $\alpha$-işareti bu sayfaya aracılığıyla eklendi

\verb|\domark{$\alpha$-left}{$\alpha$-right}|\domark{$\alpha$-left}{$\alpha$-right}

\newpage
Sayfa 3: Bu sayfaya yeni işaret eklenmedi.

\newpage
Sayfa 4: $\beta$-işareti, ardından $\gamma$-işareti bu sayfaya aracılığıyla eklendi

\verb|\domark{$\beta$-left}{$\beta$-right}|

\verb|\domark{$\gamma$-left}{$\gamma$-right}|.
\domark{$\beta$-left}{$\beta$-right}
\domark{$\gamma$-left}{$\gamma$-right}

\newpage
Sayfa 5: $\delta$-işareti bu sayfaya aracılığıyla eklendi

\verb|\domark{$\delta$-left}{$\delta$-right}|
\domark{$\delta$-left}{$\delta$-right}

\newpage
Sayfa 6: Bu sayfaya işaret eklenmedi.
\end{document}
```

[Bu örneği Overleaf'te açın](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Using+e-TeX+global+marks+variables\&snip=%5Cdocumentclass%7Bbook%7D%0A%25+A+short+command+to+use+marks+with+class+10%0A%25+and+following+LaTeX%27s+mark+structure+%7Bleft%7D%7Bright%7D%0A%5Cnewcommand%7B%5Cdomark%7D%5B2%5D%7B%5Cmarks+10%7B%7B%231%7D%7B%232%7D%7D%7D%0A%25+Redefine+%5Cleftmark+and+%5Crightmark+to+use+%0A%25+%5Cbotmarks10+and+%5Cfirstmarks10+respectively%0A%5Ccatcode%60%40%3D11%0A%5Crenewcommand%7B%5Cleftmark%7D%7B%5Cexpandafter%5C%40leftmark%5Cbotmarks10+%5C%40empty%5C%40empty%7B%7D+%28via+%5Ctexttt%7B%5Cstring%5Cbotmarks10%7D%29%7D%0A%5Crenewcommand%7B%5Crightmark%7D%7B%5Cexpandafter%5C%40rightmark%5Cfirstmarks10+%5C%40empty%5C%40empty%7B%7D+%28via+%5Ctexttt%7B%5Cstring%5Cfirstmarks10%7D%29%7D%0A%5Ccatcode%60%40%3D12%0A%5Ctitle%7BDemonstrating+%5C%28%5Cvarepsilon%5C%29-%5CTeX%E2%80%99s+enhanced+marks%7D%0A%5Cauthor%7BOverleaf%7D%0A%5Cdate%7BAugust+2022%7D%0A%5Cbegin%7Bdocument%7D%0A%0APage+1%3A+No+marks+added+so+all+mark+variables+remain+in+their+initialized+state%3A+empty+%28NULL%29.%0A%0A%5Cnewpage%0APage+2%3A+%24%5Calpha%24-mark+added+to+this+page+via%0A%0A%5Cverb%7C%5Cdomark%7B%24%5Calpha%24-left%7D%7B%24%5Calpha%24-right%7D%7C%5Cdomark%7B%24%5Calpha%24-left%7D%7B%24%5Calpha%24-right%7D%0A%0A%5Cnewpage%0APage+3%3A+No+new+marks+added+to+this+page.%0A%0A%5Cnewpage%0APage+4%3A+%24%5Cbeta%24-mark+followed+by+%24%5Cgamma%24-mark+added+to+this+page+via%0A%0A%5Cverb%7C%5Cdomark%7B%24%5Cbeta%24-left%7D%7B%24%5Cbeta%24-right%7D%7C%0A%0A%5Cverb%7C%5Cdomark%7B%24%5Cgamma%24-left%7D%7B%24%5Cgamma%24-right%7D%7C.%0A%5Cdomark%7B%24%5Cbeta%24-left%7D%7B%24%5Cbeta%24-right%7D%0A%5Cdomark%7B%24%5Cgamma%24-left%7D%7B%24%5Cgamma%24-right%7D%0A%0A%5Cnewpage%0APage+5%3A+%24%5Cdelta%24-mark+added+to+this+page+via%0A%0A%5Cverb%7C%5Cdomark%7B%24%5Cdelta%24-left%7D%7B%24%5Cdelta%24-right%7D%7C%0A%5Cdomark%7B%24%5Cdelta%24-left%7D%7B%24%5Cdelta%24-right%7D%0A%0A%5Cnewpage%0APage+6%3A+No+marks+added+to+this+page.%0A%5Cend%7Bdocument%7D)

Aşağıdaki grafik, bu örneğin ürettiği üstbilgileri gösterir:

![ε-TeX’in genişletilmiş işaret komutlarını kullanan LaTeX kodundan elde edilen çıktıyı gösteren grafik](/files/e6dfca6c80ecd5799499fdbaf3b7c90107de655f)

* **Not**: 1. sayfadaki üstbilgi, 10. sınıf için üç işaret değişkeninin—`\botmarks10`, `\topmarks10` ve `\firstsmarks10`—boş olduğu bir anda oluşturulur. Sonuç olarak `\rightmark` (1. sayfa için) yalnızca son üstbilgi parçasını ekler: `(\texttt{\string\firstmarks10} aracılığıyla)`, yukarıdaki grafikte gösterildiği gibi.

## TeX motorlarının \botmark, \topmark ve \firstmark için değerleri nasıl belirlediğini göstermek üzere çözümlenmiş bir örnek

![Db.gif](/files/35915fca63b8a8e8f243f5dfdae05e8eb19d6a24)![Db.gif](/files/35915fca63b8a8e8f243f5dfdae05e8eb19d6a24) Knuth’un çift tehlikeli viraj işaretleri kullanımını taklit etmek uygun görünüyor (görsel izniyle [bu web sitesi](http://www.truetex.com/db.htm)) çünkü bu malzeme biraz düşük düzeydedir ve “kaputun altına bakar”—gerçi bunun, birkaç ayrıntıyı daha anlamak isteyen cesur okurlar için ilgi çekici olabileceğini umuyoruz.

Aşağıdaki tartışma, [TeXbook](https://www.amazon.co.uk/TeXbook-Donald-Knuth/dp/0201134489)sayfa 258’deki son örneğe yakından dayanır. Burada, The TeXbook’a erişimi olmayanlar için bu örneği düzenleyip yeniden dizdik:

![TeXbook’un 258. sayfasındaki bir örneğin düzenlenmiş ve yeniden dizilmiş sürümü](/files/c22c13eec540283ee08b73ca75a3ea8282f323fb)

Bu grafikte sunulan tablo, Knuth tarafından sağlanan bir tablodan yeniden üretilmiştir; ancak orijinalinde olduğu gibi, nasıl türetildiğine dair bir açıklama yoktur. Burada bunu ele alarak, bu değerlerinin nasıl belirlendiğini gösteren ek ayrıntılar sağlayacağız `\\botmark`, `\topmark` ve `\\firstmark` —bu ayrıntıları elde etmek bir TeX motorunun kaynak kodunu incelemeyi gerektirdi!

değerlerini ayarlama süreci `\\botmark`, `\topmark` ve `\\firstmark` aşağıdaki diyagramda ve sonraki açıklamalarda gösterildiği gibi 3 kısa psödo-kod parçasıyla özetlenebilir:

1. Ön-içerik denetimi
2. İçerik döngüsü
3. Sonrası-içerik denetimi

Not:

* 1\. adım “Ön-içerik denetimi” ve 3. adım “Sonrası-içerik denetimi”ndeki testler sayfa başına bir kez yapılır.
* 2\. adım “İçerik döngüsü”, TeX’in sayfa içeriğini tarayarak işaret düğümlerini aramasını ve bunları gösterildiği gibi işaret-değeri ayarlamak için kullanmasını içerir.

![TeX motorlarının kullandığı üç küresel işaret değişkeninin değerlerini ayarlamak için kullanılan kodun psödo-kod sürümlerini gösteren görsel](/files/fc7dd56419ba7857089d770ae9ca5f6137b77f85)

TeX uygun bir sayfa kırılması bulduğunda, o sayfanın içeriğini son işlem için gönderir ve belgenizdeki her sayfa için bu (üç) işaret işleme adımını uygular. 1, 2 ve 3 olarak etiketlenen işleme adımları bu bölümdeki son diyagramda referans alınmaktadır.

Şuna dikkat edin:

* ilk sayfa işlenmeden önce, üç küresel işaret değişkeninin tümü `\\botmark`, `\topmark` ve `\\firstmark` boş (NULL) olacak şekilde başlatılmıştır.
* değerlerinin son hâlleri `\\botmark`, `\topmark` ve `\\firstmark` sonunda belirlenen *değeridir* sayfa, işlenmekte olan *geçerli* sayfasını işlemek için girdi değerleri olur.

Aşağıdaki kod parçaları ***psödo-koddur*** gerçek TeX motoru kaynak kodundan türetilmiş (özetlenmiştir). Amaç, ilgili temel ilkeleri göstermeye yardımcı olacak kısa bir kod özeti sunmaktır.

**1. Adım: Ön-içerik denetimi** TeX geçerli sayfanın gerçek içeriğine bakmadan önce, mevcut `\\botmark` değerinin—yani *değeridir* sayfasından kaynaklanan değerin—boş (NULL) olup olmadığını denetler:

```latex
if(\botmark != NULL)
{
   \topmark = \botmark;
   \firstmark= NULL;
}
```

Bu testte, eğer `\\botmark` ( *değeridir* sayfasından) *yapmaz* boşsa:

* `\topmark` için *geçerli* sayfasının *değeridir* değeri `\\botmark` değer
* `\\firstmark`için, *geçerli* sayfa (işlenmekte olan), boş (NULL) olarak ayarlanır: bu sayfaya, `\mark` düğümü olmadığını varsayarak başlayın.

Bu testin *bir kez* işlenmekte olan her sayfa için yapıldığını unutmayın.

**2. Adım: İçerik döngüsü** Sonra, TeX sayfa içeriği üzerinde döngü kurar; bu döngünün bir kısmı `\mark` düğümlerini aramayı içerir:

```latex
if(type(node)==mark_node)
{
   if(\firstmark==NULL)
   {
      \firstmark=node(text);
   }
   \botmark= node(text);
}
```

Bu test, geçerli sayfanın içinde yer alan (içerilen) her mark düğümüne uygulanır. Önceki test (yukarıdaki Adım 1), `\\firstmark` boş olacak şekilde ayarlanmış olabilir; böylece geçerli sayfada bulunan ilk mark, `\\firstmark` ve `\\botmark`. Herhangi bir *sonraki* `\mark` bu döngü yürütülürken algılanan düğüm, değerini değiştirmeyecektir `\\firstmark`, çünkü artık boş (NULL) değildir, ancak `\\botmark` güncellenir—çünkü bunun amacı `\\botmark`: en son görülen `\mark` düğümü.

**Adım 3: İçerik sonrası kontrol** TeX, sayfa içeriği üzerinde döngü tamamlandıktan sonra, aşağıdaki son testi uygular; bu test de sayfa başına bir kez yapılır:

```latex
if((\topmark != NULL)&&(\firstmark==NULL))
{
	\firstmark= \topmark;
}
```

* Eğer `\topmark` boş değilse (NULL değilse), Adım 1’den bildiğimiz üzere `\\botmark` önceki sayfa için boş değildi (NULL değildi).
* Eğer `\\firstmark` hâlâ boşsa henüz hiçbir `\mark` düğüm görmemişiz demektir; çünkü Adım 2’deki test tetiklenmedi; dolayısıyla, `\\firstmark` değeri olarak ayarlanır `\topmark` ki bu aynı zamanda `\\botmark` önceki sayfadan gelen değerdir.

Örneğimizdeki 6 sayfanın tümü için bu üç adımın ardışık uygulanmasından sonra, `\\botmark`, `\topmark` ve `\\firstmark` değerleri aşağıdaki diyagramda gösterilen geçişler kullanılarak türetilir; burada:

* açık mavi yuvarlatılmış dikdörtgenler, her sayfa için son mark değişkeni değerleridir
* açık gri yuvarlatılmış kareler, işleme sırasında ortaya çıkan ara değerleri temsil eder
* etiketli oklar, yukarıdaki diyagramda Adım 1, 2 veya 3’e göre işaret değişkeni değerlerindeki değişiklikleri gösterir—ya da bir değer adımların hiçbirince değiştirilmemiştir; “değişiklik yok” olarak etiketlenmiştir.

Aşağıdaki diyagram, sözde kodun üç parçasının nihai değerlerini nasıl ürettiğini gösterir `\\botmark`, `\topmark` ve `\\firstmark` The TeXbook’un 258. sayfasındaki tabloda listelenen

![The TeXbook’un 258. sayfasındaki örneğe eşlik eden, küresel mark değişkenlerine değerleri atanırken iç geçişleri gösteren bir geçiş diyagramı](/files/03e2bcb3dad44c01dad4ea552317157b728351d9)


---

# 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/23-how-does-latex-typeset-headers-and-footers.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.
