> 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/06-an-introduction-to-kpathsea-and-how-tex-engines-search-for-files.md).

# Kpathsea'ye giriş ve TeX motorlarının dosyaları nasıl aradığı

## Giriş

Bu makale, belgenizi dizmek için gereken dosyaları TeX motorlarının nasıl bulduğuna giriş niteliğindedir—LaTeX ya da başka herhangi bir makro paketi kullanarak. Overleaf, kullanıcıları bir TeX kurulumunu yönetmenin zorluklarından kurtarsa da ([TeX Live](https://www.tug.org/texlive/)), TeX motorlarının dosyaları nasıl aradığına dair temel bilgiler, Overleaf projenizi düzenlemeye yardımcı olacak bir klasör yapısı oluşturmak istiyorsanız sizin için yararlı/ilgi çekici olacaktır.

Bu neden doğru olabilir? Overleaf proje dosyalarınızdan bazılarını klasörlerin içine kaydederseniz LaTeX bu dosyaları bulamayabilir; çünkü varsayılan olarak TeX motoru (derleyici) aramayı *bilmeyebilir* —dolayısıyla içerdikleri dosyaları bulamaz. Bunu önlemek için projenize, adı verilen bir yapılandırma dosyası oluşturup ekleyebilirsiniz, [latexmkrc dosyası](https://mg.readthedocs.io/latexmk.html#configuration-files) bu dosya, bir TeX motoruna klasörlerinizin var olduğunu ve onları araması gerektiğini söylemek için kullanılabilir.

latexmkrc dosyası gösteren bir örneğe geçmek isterseniz, bu yardım makalesini okuyabilirsiniz: [Overleaf ile latexmkrc nasıl kullanılır: örnekler ve teknikler](/latex/tr/derinlemesine-makaleler/28-how-to-use-latexmkrc-with-overleaf.md). Bu latexmkrc dosyasının aslında nasıl ya da neden çalıştığı hemen anlaşılmayabilir. Nedenini öğrenmek ve belki de projeniz için daha fazla yapılandırma olanağıyla kullanmak üzere daha iyi bir anlayış geliştirmek istiyorsanız okumaya devam edin... Bu makalenin sonunda bir [uygulamalı örneği](#kpathsea-and-texinputs-latexmkrc-file-to-the-rescue)—TeX’in dosyaları nasıl aradığına dair bilgimizi kullanarak—grafik dosyalarınızı içeren iç içe klasörleri yönetmek için bir latexmkrc dosyası oluşturacağız.

## TeX ve platform bağımsızlığı

Knuth TeX’i yaratırken platform bağımsızlığı, tasarımını ve uygulamasını yönlendiren temel bir ilkedir ve bu felsefe TeX’in iç işleyişinin tamamına yansır (ör. tamsayı aritmetiği kullanımı, “elden yapılmış” dize işleme, bellek yönetimi vb.). Günümüzde bile modern TeX tabanlı motorların platform bağımsızlığı, kamu forumlarında hâlâ soru ve tartışma konusu olmaktadır; örneğin tex.stackexchange’deki şu tartışmaya bakın: [XeTeX ve LuaTeX platforma bağımlı mı?](https://tex.stackexchange.com/questions/94297/are-xetex-and-luatex-platform-dependent) ki bu da bir dizi tanınmış TeX uzmanının yaptığı yorum ve gözlemleri içerir.

Ancak şimdilik ayrıntıları bir kenara bırakalım ve TeX motorlarının yine de son derece taşınabilir olması gerektiğini—birden çok işletim sisteminde çalışabilmesi ve “özdeş” sonuçlar üretebilmesi gerektiğini—not edelim. Taşınabilirliğin önemli bir yönü, dosyaları platformdan bağımsız bir şekilde aramaktır.

## TeX motorları dosya aramaz… gerçekten mi!?

Hayır, TeX motorları *doğrudan* dosya aramaz *kendileri*. Bir `.tex` dosya işlenirken bir TeX motoru belirli bir dosyayı açma gereğini fark edebilir, ancak *görevi* onu bulmayı [*Kpathsea*](https://tug.org/kpathsea/): TeX motorlarının kaynak kodunun *çekirdek* bir parçası olmayan harici bir yazılım kütüphanesi. Kpathsea’nın sağladığı şey, özünde, TeX motorlarının (ayrıca BibTeX, MetaPost ve diğer uygulamaların) belirli bir dosyayı açmaları gerektiğinde çağırabilecekleri bir API’dir ([Uygulama Programlama Arayüzü](https://en.wikipedia.org/wiki/Application_programming_interface)); Kpathsea dosyayı bulma işinin kendisini yapar.

Knuth, diğer tüm TeX motorlarının nihayetinde türediği özgün TeX motorunu yazdığında, dosyaları bulma/açma sorunu, o dönemin son derece farklı teknoloji ekosistemi nedeniyle kısmen, önemli bir zorluktu. Aslında TeX’in kaynak kodunda Knuth, dosya girdi/çıktısını “taşınabilirliğin belası” olarak adlandırır (bakınız sayfa 12, bölüm 25, [TeX: The Program](https://www.amazon.co.uk/Computers-Typesetting-TeX-Program-TEX/dp/0201134373)).

TeX topluluğu, TeX için dosya aramayı uyumlu hale getirme (standartlaştırma) ihtiyacını fark etti—*ve TeX ile ilgili yazılımlar için*—ve bunu yapacak araçları TeX’e sağlamaya karar verdi. Dosya bulmak için platformdan bağımsız bir yöntem gibi çok zorlu bir sorunu ele almak üzere, TeX topluluğunun önde gelen üyelerinden Karl Berry, problemi çözmek için yazılımı yazdı *yol*-arama [**Kpathsea**](http://tug.org/texinfohtml/kpathsea.html)problemine: bu çözüme şu adı verdi **K**arl’ın **Yol** **Arama** (bakınız [Karl Berry ile röportaj](http://www.tug.org/interviews/berry.html)).

Adının K**yol**sea değil de K**dosya**sea olmasının nedeni, [belgelere](http://tug.org/texinfohtml/kpathsea.html) notlarında da belirtildiği gibi, bu bir \*yol\*-arama kütüphanesidir. Kpathsea’nın yalnızca TeX motorları tarafından kullanılmadığını; BibTeX ve MetaPost dâhil çeşitli TeX ile ilgili programların da giriş dosyalarını aramak için Kpathsea’yı kullandığını fark etmek önemlidir.

Özetle, TeX/LaTeX makrolarının belirli bir dosyayı açması gerektiğinde, bu makroların oluşturulduğu komutlar sonunda TeX motorlarının gerçekten yürüttüğü düşük düzey TeX yönergelerine (TeX ilkelleri) dönüştürülür. Eğer bu yönergeler bir dosya açma ihtiyacını içeriyorsa, TeX motoru Kpathsea’yı çağırarak özünde “lütfen bu dosyayı bul” diyecektir; eğer bu Kpathsea araması başarılı olursa dosya açılır. Ancak Kpathsea dosyayı bulamazsa, TeX motoruna bu durum bildirilecek ve meşhur hata mesajını vermek üzere çalıştırma durdurulacaktır ``! Dosya `...’ bulunamıyor`` Gerçek şu ki Kpathsea onu bulamıyor.

### LuaTeX üzerine notlar

Kesin konuşmak gerekirse, bu bölüme bir uyarı eklemeliyiz; çünkü LuaTeX, kullanıcının *geri çağrılar*kullanarak kendi dosya arama kodunu sağlamasına yönelik bir mekanizma sunar. LuaTeX, kullanıcıların Lua betik dilinde işlevler yazmasına ve bunları LuaTeX’e kaydetmesine olanak tanır; böylece LuaTeX çalışması sırasında belirli aşamalarda bu kullanıcı tanımlı işlevi çağırır—dolayısıyla şu terim kullanılır *geri çağrılar*geri çağrı [LuaTeX Başvuru Kılavuzu'nda](http://www.pragma-ade.com/general/manuals/luatex.pdf) . Bu çok güçlü bir tekniktir ve ilgilenen okuyucu daha fazla bilgiyi

### bölüm 9’unda

Kpathsea yapılandırma dosyası: texmf.cnf `texmf.cnf` adlı bir metin dosyası içerir; bu, Kpathsea tarafından kullanılan bir yapılandırma dosyasıdır: Kpathsea’nın TeX motorlarının (ya da BibTeX, MetaPost vb.) ihtiyaç duyabileceği çeşitli dosya türlerini aramak için kullanacağı yolları tanımlayan çok sayıda “yapılandırma değişkeni” içerir. Aşağıda göreceğimiz gibi, bu “yapılandırma değişkenleri” denilen yol öğelerinden oluşturulan arama yollarını tanımlar *yol öğeleri*: çeşitli yapılar, değişkenler ve parametreler kullanarak her yol öğesini Kpathsea’nın arama yapacağı gerçek, fiziksel dizinleri oluşturmak için işlediği bir “şablon” olarak tanımlar.

Somut bir örnek vermek gerekirse, OpenType yazı tipleri için arama yollarını tanımlayan şu yapılandırma değişkenlerinden biri vardır—şimdilik bu yolun nasıl oluşturulduğunun anlamı konusunda endişelenmeyin:

```
OPENTYPEFONTS = .;$TEXMF/fonts/{opentype,truetype}//;$OSFONTDIR//
```

Burada önemli olan tek şey, `texmf.cnf` (Kpathsea tarafından okunur) adlı bir yapılandırma değişkeni tanımlamasıdır `OPENTYPEFONTS` Bu değişken, Kpathsea’nın OpenType yazı tiplerini aramak için kullanacağı yol(lar)ı tanımlamak için kullanılır. “=” işaretinin sağ tarafı tipik bir aygıtta gördüğünüz hiçbir yola benzemez; çünkü gerçek arama dizinlerini oluşturmak için Kpathsea’nın kullanacağı bir “şablon” ya da “taslak” olarak her yolu tanımlamak üzere çeşitli değişkenler ve parametreler kullanılarak oluşturulmuştur.

### Kpathsea’nın “yol” kavramı

Anlaşılması gereken merkezî kavram belki de Kpathsea’nın “yol” anlayışıdır: Kpathsea’nın belirli bir dosyanın nerede bulunduğunu çözmek için kullandığı temel yapı. Yukarıdaki `OPENTYPEFONTS` örneğinde gördüğümüz gibi, Kpathsea’nın yol anlayışı, masaüstü ya da taşınabilir aygıtlarımızda kullanmaya alışık olduğumuz yollardan oldukça farklı görünür.

Kpathsea’nın belgelerinden alıntı yapacak olursak, [belgelere](http://tug.org/texinfohtml/kpathsea.html#Searching-overview):

> ... bir *arama yolu* iki nokta üst üste ile ayrılmış bir *yol öğeleri*, yani birkaç “ek süsleme”ye sahip dizin adları listesidir.

—ancak noktalı virgül (`;`) aynı zamanda ayırmak için de kullanılır *yol öğeleri*. Daha sonra, bu “ek süslemeler”in bazılarının doğasını kısaca göstereceğiz.

Bizim `OPENTYPEFONTS` örneğimizde, her biri noktalı virgül (`;`):

![Kpathsea yol tanımında yer alan yol öğelerini gösteren resim](/files/278fb3e20b5114f752d604749e28f40435fefe1d)

1. `.` (geçerli dizin anlamına gelir)
2. `$TEXMF/fonts/{opentype,truetype}//`
3. `$OSFONTDIR//`

Bir yol öğesindeki çift eğik çizginin (`//`) alt dizinlerin (özyinelemeli olarak) aranması anlamına geldiğine dikkat edin.

Tipik bir `texmf.cnf` dosya, Kpathsea’nın arayabileceği dosya türleri için arama yollarını tanımlamak üzere çok sayıda “yapılandırma değişkeni” içerir.

## Kpathsea: Çok kısa bir genel bakış

Kpathsea son derece karmaşık bir kütüphanedir—pek çok ince ayrıntı ve nüans içerir—ve onun [belgelere](http://tug.org/texinfohtml/kpathsea.html) bir bakış bile tüm ayrıntılara giremeyeceğimizin açık olduğunu gösterir. Ancak ne yaptığının bir genel bakışını sunmaya çalışabiliriz—düşüncenizi yönlendirmeye ve daha fazla okuma için bir başlangıç noktası sunmaya yardımcı olmak amacıyla.

### Kpathsea’nın temel amacı

Belgelendirmede belirtildiği üzere, Kpathsea’nın temel amacı “kullanıcı tarafından belirtilen bir dizin listesinden bir dosya adı döndürmek”tir ve bu dizinlerin (arama yollarının) “birkaç ek süsleme” kullanılarak belirtildiğidir.

### Bu “ek süslemeler”

Yukarıda bahsedilen “birkaç ek süsleme”, Kpathsea’nın arama yollarını (ya da “yol şablonlarını”) daha genel bir biçimde tanımlayabilmesi için kullandığı çeşitli parametre ve değişkenleri içerir. Bir TeX motoru gerçekten çalışırken (yürütülürken), Kpathsea bu parametre/değişkenlerin geçerli değerini kullanarak değişkenleri gerçek (çalışma zamanı) değerleriyle değiştirip gerçek yolları bulabilir. Bu değişkenleri (yol öğeleri içinde) kolayca fark edebilirsiniz; çünkü `$` işaretiyle başlarlar.

Bu nedenle, Kpathsea’nın bir yol öğesini *genişlettiğini* söyleriz; yani bu parametre ve değişkenleri dönüştürür: bir yol “şablonunu”, dosya aranacak bir ya da daha fazla fiziksel dizinin gerçek adına/adlarına dönüştürür. Bu, büyük bir esneklik sağlar ve Kpathsea’nın tek bir yol öğesine karşılık gelen bir dizin listesi oluşturabileceği anlamına gelir—örneğin, alt dizinleri araması söylenirse.

### OpenType örneğimize yeniden bakalım

Çeşitli konuları bir araya getireceğiz ve `OPENTYPEFONTS` biraz daha ayrıntıyla inceleyeceğiz:

```
OPENTYPEFONTS = .;$TEXMF/fonts/{opentype,truetype}//;$OSFONTDIR//
```

İki yol öğesini ele alalım `$TEXMF/fonts/{opentype,truetype}//` ve `$OSFONTDIR//`. Burada Kpathsea süslü ayraçların kullanımını fark eder `{...}` ve bunları `$TEXMF/fonts/{opentype,truetype}` şunu temsil ediyor olarak ele alır *iki* yol öğesi:

1. `$TEXMF/fonts/opentype//`
2. `$TEXMF/fonts/truetype//`

ve her iki yol öğesinin de *alt dizinlerinin* de aranması gerektiğini (sondaki `//`).

**Not**: Kpathsea belgelerine bakın [alt dizin genişletmesi](http://tug.org/texinfohtml/kpathsea.html#Subdirectory-expansion) hakkında, alt dizinlerin herhangi bir düzeyde hangi sırayla aranacağına dair önemli bir uyarı için (bu sıra belirtilmemiştir).

Şunun üzerine birkaç gözlem yapacağız `$TEXMF` aşağıda.

#### $OSFONTDIR//

`$OSFONTDIR` değeri, yazı tiplerinin saklandığı konumu içeren bir ortam değişkeni olarak tanımlanması gereken bir değişkendir: elbette kesin değer, TeX’i çalıştırmak için kullanılan işletim sistemine bağlı olacaktır. Burada, sondaki `//` Kpathsea’ya OpenType yazı tiplerini ararken alt dizinleri taramasını söyler.

Varsayılan tanım `OSFONTDIR` içinde `texmf.cnf` şudur:

```
OSFONTDIR = /please/set/osfontdir/in/the/environment
```

Dolayısıyla, bunu kullanmak istiyorsanız mutlaka ayarlamanız gerekir—ortam değişkeniniz, içinde bulunan bu “yer tutucu” tanımı geçersiz kılacaktır `texmf.cnf`.

Ortam değişkenini ayarlarsanız `OSFONTDIR` o zaman çalışma zamanında, Kpathsea nerede `$OSFONTDIR` bir yol öğesinin parçası olarak görürse (içinde `texmf.cnf`) değişkeni `$OSFONTDIR` ortam değişkeninde saklanan gerçek değerle değiştirebilir `OSFONTDIR`. Unutmayın, bunu `texmf.cnf` yol öğeleri içinde kullanırken değişkeni `$OSFONTDIR`—baştaki `$`—ile belirtiriz *değer* —Kpathsea’ya bunun kullanması gereken bir değişken olduğunu söylemek için.

#### $TEXMF üzerine kısa notlar

`TEXMF` başka bir yapılandırma değişkenidir ve içinde tanımlanır `texmf.cnf`; örneğin, ana TeX Live dağıtımında şunu görürsünüz:

```
TEXMF = {$TEXMFAUXTREES$TEXMFCONFIG,$TEXMFVAR,$TEXMFHOME,!!$TEXMFLOCAL,!!$TEXMFSYSCONFIG,!!$TEXMFSYSVAR,!!$TEXMFDIST}
```

Bu tanımın ayrıntıları konusunda endişelenmenize gerek yok `TEXMF`—tüm ayrıntıları incelemeyeceğiz, yalnızca `$TEXMF` değişkeninin yol öğeleri içinde kullanıldığını not edeceğiz; çünkü bu değişken, dosya aramasına başlayabileceğiniz bir dizi üst düzey klasörü (“texmf ağaçları” olarak anılır) tanımlar.

`TEXMF` bir TeX kurulumunu birden çok dizin (ya da dizin “ağacı”) boyunca bölmek istiyorsanız, veya buna ihtiyacınız varsa, son derece kullanışlıdır. Örneğin, ana ya da merkezi bir TeX/LaTeX paketi koleksiyonuna (örn. TeX Live) ve yerel LaTeX paketlerini depolamak için kullanılan başka bir dosya ve klasör koleksiyonuna sahip olmak—ya da belki yerel yapılandırma dosyalarını ya da standart paketlerin özelleştirilmiş sürümlerini depolamak için kullanmak. TeX kurulumunu bu şekilde bölmek, ana/merkezi TeX/LaTeX paketleri koleksiyonunu (dağıtımını) yükseltmeyi daha kolay yönetilebilir hâle getirebilir; çünkü yerel koleksiyonunuz, TeX Live dağıtımınızı/kurulumunuzu yükselttiğinizde güncellenen ana dosyalardan ayrı tutulur.

Daha karmaşık TeX kurulumlarını yönetme konusunda daha fazla ayrıntı için ilgilenen okuyucu şu iki makaleye yönlendirilir:

* [Birden Çok TDS Ağacını Yönetmek](http://tug.org/TUGboat/Articles/tb22-3/tb72downes.pdf) Michael J Downes tarafından;
* [texmf ağaçlarıyla jonglörlük](http://www.ntg.nl/maps/27/17.pdf) Siep Kroonenberg tarafından.

#### TeX Dizin Yapısı

Bir TeX kurulumunu yönetmiş olan herkes, TeX Live gibi modern TeX sistemlerinin çok çeşitli dosya türlerinden oluşan on binlerce dosya içerdiğini bilir. TeX Dizin Yapısı (TDS), çalışan bir TeX kurulumundaki devasa dosya koleksiyonunu düzenlemek için en iyi uygulama niteliğinde bir “taslak” olarak tasarlanmıştır ve Kpathsea ile kullanım için güçlü biçimde önerilir.

Daha fazla bilgi için okuyucu TDS belirtim belgesine yönlendirilir: [TeX Dosyaları için Dizin Yapısı](https://www.tug.org/tds/tds.pdf).

## Kpathsea dosya türleri

Kpathsea kullanan uygulama paketi, çok geniş bir dosya türleri yelpazesine erişmek zorundadır; bu nedenle Kpathsea, desteklediği her dosya türü (ya da dosya grubu) için yol(lar)ı tanımlamak üzere bir “yapılandırma değişkeni” kullanır. Çevrimiçi belgede eksiksiz bir liste vardır (ayrıca aşağıdaki [özet tablomuzu da](#table-listing-kpathsea-config-variables)) ancak burada daha yaygın dosya türleri için “yapılandırma değişkenleri” verilmiştir:

|                            |                                                |
| -------------------------- | ---------------------------------------------- |
| **Yapılandırma değişkeni** | **Dosya türü örnekleri**                       |
| TEXINPUTS                  | TeX kaynak dosyaları ve şekil/grafik dosyaları |
| BIBINPUTS, BSTINPUTS       | BibTeX kaynakça kaynak dosyaları               |
| TTFONTS                    | TrueType anahat yazı tipleri                   |
| OPENTYPEFONTS              | OpenType anahat yazı tipleri                   |

`TEXINPUTS` özellikle önemli bir yapılandırma değişkenidir; çünkü bir TeX motorunun giriş kaynak dosyalarını nereden aldığına işaret eder. Görüntü dosyalarının da giriş dosyası sayıldığını ve şu değişken tarafından tanımlanan yol kullanılarak aranabildiğini unutmayın `TEXINPUTS`.

### Kpathsea’ya dair bazı incelikler

Belirtildiği gibi, Kpathsea’nın burada ayrıntılı olarak inceleyemeyeceğimiz birçok inceliği vardır. Bununla birlikte, bazı okuyucuların keşfetmek isteyebileceği özellikler şunlardır:

* **dosya adı veritabanı:** Disk aramalarını en aza indirmek için Kpathsea, “haricen oluşturulmuş bir [ls-R adlı dosya adı veritabanı dosyası](http://tug.org/texinfohtml/kpathsea.html#Filename-database) olan ve dosyaları dizinlere eşleyen” bir veritabanından yararlanabilir. TeX Live bunun bir örneğini ve yeni dosyalar eklendiğinde onu güncellemek için araçları sağlar.
* **ortam değişkenlerini**: “yapılandırma değişkenlerine” (örneğin `OPENTYPEFONTS`ortam değişkenlerinden [ortam değişkenlerini](https://en.wikipedia.org/wiki/Environment_variable)de akıllıca yararlanır; örneğin, çalışma zamanındaki ortam değişkeni değeri, içindeki yol öğelerini tanımlamak için kullanılabilir `texmf.cnf` dosyası (muhtemelen içinde tanımlanan aynı adlı değişkenleri geçersiz kılmak için `texmf.cnf`).
* **program adı:** Kpathsea’nın davranışının ince ama temel bir yönü, programa özgü arama yolu yapılarını oluşturmak için yürütülebilir programın adından (örneğin TeX motorundan) yararlanabilmesidir. Bu, yol aramasının belirli bir TeX motoruna ait dosyalara yönlendirilebilmesi nedeniyle önemli ölçüde esneklik sağlar. Örneğin, LuaTeX/LuaLaTeX için:

  ```
  TEXINPUTS.lualatex = .;$TEXMF/tex/{lualatex,latex,luatex,generic,}//
  TEXINPUTS.luatex = .;$TEXMF/tex/{luatex,plain,generic,}//
  ```
* **bulma `texmf.cnf`**: Sorabileceğiniz bir soru, Kpathsea’nın `texmf.cnf` nerede olduğunu nasıl bildiğidir? Cevap, adlı bir ortam değişkenidir `TEXMFCNF`. Bunun, TeX’in çalıştığı aygıtta/platformda `texmf.cnf` saklandığı yol olarak ayarlanması gerekir.

#### Kpathsea sorunlarını ayıklama

Overleaf kullanıcılarının bu olanaklara ihtiyaç duyması olası değildir, ancak tamlık açısından bunları listeliyoruz:

* **kpsewhich**: Ayarlarınızı test etmek için kullanılabilen bağımsız bir program (TeX Live ile birlikte gelir): değişkenlerin değerini belirlemek ve dosya bulmak. İlgilenen okuyucular şu kaynağa yönlendirilir [çevrimiçi belgeler](http://tug.org/texinfohtml/kpathsea.html#Invoking-kpsewhich) Tekniniz bağlı olduğu gibi?
* **ortam değişkenlerini**: Kpathsea, davranışını ayıklamaya yardımcı olması için adlı bir ortam değişkenini destekler [`KPATHSEA_DEBUG`](http://www.tug.org/texinfohtml/kpathsea.html#Debugging) bunu kullanabilirsiniz `KPATHSEA_DEBUG` gereken hata ayıklama bilgisi miktarına bağlı olarak farklı değerlere. Ayarlamak `KPATHSEA_DEBUG=-1` bir *oldukça büyük* bir veri miktarı oluşturur.

## Ve son olarak: klasörler, şekil dosyaları ve latexmkrc

Peki, yukarıdakilerin latexmkrc ile ilişkisi nedir? Bu makaleyi okursanız [Overleaf ile latexmkrc nasıl kullanılır: örnekler ve teknikler](/latex/tr/derinlemesine-makaleler/28-how-to-use-latexmkrc-with-overleaf.md) latexmkrc örneğindeki (Perl) kodun bir ortam değişkeninin değerini ayarladığını görebilirsiniz `TEXINPUTS`:

```
$ENV{'TEXINPUTS'}='./tex//:' . $ENV{'TEXINPUTS'};
```

Burada kullanılan iki nokta üst üste işaretinin (`./tex//**:**`) şudur *Web2C* ) önemli olduğuna dikkat edin. Eğer bu iki nokta üst üste işaretini çıkarırsanız TeX/LaTeX, LaTeX paketleri gibi hayati sistem dosyalarını bulamayabilir!

Bu latexmkrc dosyasının özünde yaptığı şey, üst düzey bir klasör yolunu (`./tex` yukarıdaki örnekte) sistem tarafından tanımlanan `TEXINPUTS` ortam değişkenine eklemektir; böylece Kpathsea `$TEXINPUTS` değişkenini kullandığında `/tex//` klasörünün giriş dosyalarını bulmak üzere aranması gerektiğinin farkında olur. Dikkatlice bakarsanız, kullanılan gerçek yolun `./tex//:` şu `//` Kpathsea’ya tex klasörünü özyinelemeli olarak taramasını söyler—yani `tex` klasörünün içindeki herhangi bir alt klasöre bakmasını sağlar. Belirtildiği gibi, önemli iki nokta üst üste karakterini de ekledik.

Aynı tekniği şekil dosyaları için de kullanabiliriz.

### BibTeX üzerine kısa bir not

Belirtildiği gibi, BibTeX programı da giriş dosyalarını aramak için Kpathsea’yı kullanır; özellikle:

* şu `BSTINPUTS` yapılandırma değişkeni (arama yolu) şu dosyaları aramak için kullanılır `.bst` dosyalar;
* ve `BIBINPUTS` yapılandırma değişkeni (arama yolu) şu dosyaları aramak için kullanılır `.bib` .bib dosyalarını.

Yeni `.bst` ya da `.bib` dosyaları Overleaf projenize eklerseniz, BibTeX’e bu dosyaları nerede bulacağını söylemek için aşağıdaki tekniği kullanabilirsiniz—yerine şunu koymanız gerekir `TEXINPUTS` ile `BSTINPUTS` ve/veya `BIBINPUTS`.

### TEXINPUTS ve grafik dosyaları için iç içe klasörler kullanma

Projenizde çok sayıda grafik dosyası varsa, bunları depolamak ve yönetmek için bir dizi klasör oluşturmak uygun olabilir. Örneğin, aşağıdaki ekran görüntüsü, adı verilen bir üst düzey klasör kullanan bir Overleaf projesinin bir bölümünü gösterir **`graphics`**:

![Overleaf projesinde iç içe klasörleri gösteren resim](/files/021d786cdbe15fa6320d77a83cbc21101aad29da)

Belgemizin çeşitli bölümleri için grafikler içeren çok sayıda (iç içe) alt klasör vardır.

Yukarıdaki klasör yapısına sahip olduğumuzu ve `graphicx`  paketi (`\usepackage{graphicx}`) kullanmak istediğimizi varsayalım ve bunu şöyle yapmaya çalışalım:

```latex
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\includegraphics{endlinechar}% en iyi uygulama olarak dosya uzantısını kullanmamak gerekir
\end{document}
```

Bu işe yaramayacak ve şu şekilde bir hata alacaksınız:

```
! LaTeX Hatası: `endlinechar' dosyası bulunamadı.
l.4 \includegraphics{endlinechar}
Bu dosyayı bu uzantıların hiçbiriyle bulamadım:
.pdf,.PDF,.ai,.AI,.png,.PNG,.jpg,.JPG,.jpeg,.JPEG,.jp2,.JP2,.jpf,.JPF,.bmp,.BMP,
,.ps,.PS,.eps,.EPS,.mps,.MPS,.pz,.eps.Z,.ps.Z,.ps.gz,.eps.gz
```

Bu hata, grafik dosyamızın TeX/LaTeX’in (ve Kpathsea’nın) haberdar olmadığı bir konumda saklanmasından kaynaklanır; bu yüzden onu bulamaz—grafik dosyasının yolu şöyledir:

```
./graphics/Introduction/Chapter1/Section1/Subsection3/endlinechar.png
```

**Not**: Genellikle kabul edilen en iyi uygulama şudur: ***klasör adlarında boşluk karakterlerinden kaçınmak***. Klasör adlarında boşluklar bulunması elbette mümkündür; aşağıda tartışılan teknikleri kullanarak bunu yapabilirsiniz, ancak Overleaf platformu dışındaki belge taşınabilirliği nedenleriyle bunu önermeyiz.

Bu konuda açıklandığı gibi [Overleaf yardım makalesi](/latex/tr/daha-fazla-konu/27-inserting-images.md) elbet, grafiklerinizi depolamak için klasörler kullanabilirsiniz, ancak LaTeX’e nerede depolandıklarını söylemeniz gerekir. Burada iki çözüme bakacağız:

* \graphicspath komutunu kullanmak;
* Kpathsea bilgimizi kullanmak ve `TEXINPUTS`.

### \graphicspath kullanımı

Bu `graphicx` paketi şu `\graphicspath` komutunu sağlar; bununla grafiklerinizin bulunduğu yolları bildirebilirsiniz; örneğin şöyle yapabiliriz:

```latex
\graphicspath{{./graphics/Introduction/Chapter1/Section1/Subsection3/}}
```

ve artık LaTeX bu yol altında saklanan herhangi bir grafiği bulacaktır.

**Not**: Eğer *gerekir* klasör adlarında boşluklar varsa yolları çift tırnak içine almanız gerekir (`"..."`):

```latex
\graphicspath{{"./graphics/Introduction/Chapter 1/Section 1/Subsection 3/"}}
```

**Not**: Birden fazla yolu şöyle bildirebilirsiniz:

```latex
\graphicspath{{path1}{path2}{path3}...{pathN}}
```

burada `...` parantez içine alınmış ek yollar anlamına gelir.

**Not**: Yolu `./graphics` ile başlatıyoruz, sadece `/graphics`ile değil. Nokta (.) işletim sistemine yolun geçerli çalışma dizinine göreli olduğunu söyler.

Bu `\graphicspath` \graphicspath komutu iyi çalışır, ancak çok sayıda klasörünüz varsa her yolu eklemek oldukça zahmetli olabilir; ayrıca, klasörleri yeniden adlandırırsanız veya yeniden yapılandırırsanız, \graphicspath aracılığıyla tanımlanan yollar artık çalışmayacaktır `\graphicspath` daha kolay bir yol var mı? Evet, bir latexmkrc dosyası kullanabilirsiniz!

#### \graphicspath ve özyineleme (alt dizinler)

Bazı sistemlerin `\graphicspath` alt dizinleri özyinelemeli olarak aramayı destekleyip desteklemediği/etkinleştirip etkinleştirmediği konusunda çevrimiçi tartışmalar/tartışma konuları olduğunu unutmayın `//` yolun sonuna eklediğinizde:

* [LaTeX \graphicspath özyinelemeli arama](https://tex.stackexchange.com/questions/25443/latex-graphicspath-recursive-search);
* [MikTeX için Graphicspath](https://tex.stackexchange.com/questions/3131/graphicspath-for-miktex).

En yüksek uyumluluk için `\graphicspath` \graphicspath’ın özyinelemeli dizin aramasını desteklemediğini varsaymalısınız.

### Kpathsea ve TEXINPUTS (yardıma latexmkrc dosyası koşuyor)

**UYARI:** Aşağıdaki tekniğin Overleaf’te ve uygun şekilde yapılandırılmış yerel TeX kurulumlarında iyi çalıştığını unutmayın; **ancak** bir latexmkrc dosyası kullanırsanız, projeniz yayınevleri ve çevrimiçi dergi gönderim sistemlerinin kullandığılar gibi diğer TeX kurulumlarıyla uyumsuz hâle gelebilir. Üçüncü taraf TeX kurulumları latexmkrc kullanımını destekleyebilir de desteklemeyebilir de. Overleaf projenizi başka yerde kullanmak üzere dışa aktarmanız ya da bir dergiye göndermeniz gerekiyorsa, yol adlarındaki boşluk karakterlerini kaldırmalı ve daha iyi uyumluluk için bir `\graphicspath` komutu eklemelisiniz; bu komut tüm yolları tanımlar:

```latex
\graphicspath{{path1}{path2}{path3}...{pathN}}
```

burada `...` parantez içine alınmış ek yollar anlamına gelir.

Aşağıda tartışılan teknik (kullanılarak `TEXINPUTS`) pdfTeX, XeTeX ve LuaTeX motorlarıyla Overleaf üzerinde başarıyla test edilmiştir (yani Overleaf menüsündeki pdfLaTeX, XeLaTeX ve LuaLaTeX derleyici seçenekleriyle):

![Overleaf’te LaTeX derleyicisinin nasıl seçileceğini gösteren resim](/files/aa9ab4c6f28ae696602d5c6acb5d65a8a56b982c)

Örneğimize geri dönersek, bu kodu (derin iç içe klasörlerle) kullanmak istiyoruz ve bunu başarmak için bir latexmkrc dosyası kullanacağız:

```latex
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\includegraphics{endlinechar}% en iyi uygulama olarak dosya uzantısını kullanmamak gerekir
\end{document}
```

Yukarıdaki kodun sorunsuz çalıştığını gösteren bir ekran görüntüsü: LaTeX grafik dosyamızı buldu (`endlinechar.png`) klasör adlarında hiçbir boşluk olmamasına rağmen, derin iç içe klasör yapısında olsa bile.

![Overleaf’te iç içe klasörlü bir projenin derlendiğini gösteren resim](/files/eb0269484948f11345a9a889d7b597878d6aed50)

Peki bunu nasıl yaptık? Tek yapmanız gereken şunlar:

* uzantısı olmayan yeni bir dosya oluşturmak ve adını latexmkrc koymak;
* şu satırı bu dosyaya eklemek:

  ```
  $ENV{'TEXINPUTS'}='./graphics//:'.$ENV{'TEXINPUTS'};
  ```

Kpathsea artık altında bulunan klasörleri bilecek `**grafikler**` ve `//` nedeniyle alt klasörlere de bakacaktır.

Yine dikkat edin ki, `./graphics//:` içindeki iki nokta üst üste aslında *Web2C* ) önemli olduğuna dikkat edin. Eğer bu iki nokta üst üste işaretini çıkarırsanız TeX/LaTeX, LaTeX paketleri gibi hayati sistem dosyalarını bulamayabilir!

Yukarıdaki basit proje örneğini kullanarak artık bunu derleyebilirsiniz ve işte! LaTeX grafik dosyanızı bulur—ve /graphics altındaki klasörleri yeniden adlandırabilir veya yeniden düzenleyebilirsiniz; bu, LaTeX’in onları bulmasını engellemez.

## Kpathsea “yapılandırma değişkenleri” listesi tablosu

Aşağıdaki tablo, şuradan türetilmiş bir özetidir: [Kpathsea belgelerinde listelenen veriler](http://tug.org/texinfohtml/kpathsea.html#Supported-file-formats).

|                                                     |                                                                           |                                |
| --------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------ |
| **Kpathsea yapılandırma değişkeni**                 | **Dosya türü açıklaması**                                                 | **Dosya uzantısı**             |
| AFMFONTS                                            | Adobe yazı tipi metrikleri                                                | .afm                           |
| MFBASES, TEXMFINI                                   | Metafont bellek dökümü                                                    | .base                          |
| BIBINPUTS, TEXBIB                                   | BibTeX kaynakça kaynağı                                                   | .bib                           |
| BLTXMLINPUTS                                        | Biber için BibLaTeXML kaynakça dosyaları                                  | .bltxml                        |
| BSTINPUTS                                           | BibTeX stili                                                              | .bst                           |
| CLUAINPUTS                                          | Lua için dinamik kütüphaneler                                             | .dll ve .so                    |
| CMAPFONTS                                           | karakter eşleme dosyaları                                                 | .cmap                          |
| TEXMFCNF                                            | Çalışma zamanı yapılandırma dosyaları                                     | .cnf                           |
| CWEBINPUTS                                          | CWEB girdi dosyaları                                                      | .w, .web, .ch                  |
| TEXCONFIG                                           | Dvips 'config.\*' dosyaları, örneğin config.ps                            |                                |
| ENCFONTS                                            | kodlama vektörleri                                                        | .enc                           |
| TEXFORMATS, TEXMFINI                                | TeX bellek dökümü                                                         | .fmt                           |
| FONTCIDMAPS                                         | CJK eşleme                                                                | .cid                           |
| FONTFEATURES                                        | özellikle OpenType yazı tipi özellikleri için                             | .fea                           |
| FONTS, GFFONTS, GLYPHFONTS, TEXFONTS                | genel yazı tipi bit eşlemi                                                | .gf                            |
| TEXPICTS, TEXINPUTS                                 | Kapsüllenmiş PostScript şekilleri                                         | .eps, .epsi                    |
| TEXINDEXSTYLE, INDEXSTYLE                           | makeindex stil dosyaları                                                  | .ist                           |
| LIGFONTS                                            | bağlı harf tanım dosyaları                                                | .lig                           |
| TEXMFDBS                                            | Dosya adı veritabanları                                                   |                                |
| TEXFONTMAPS                                         | Yazı tipi eşlemeleri                                                      | .map                           |
| MPMEMS, TEXMFINI                                    | MetaPost bellek dökümü                                                    | .mem                           |
| MPSUPPORT                                           | DMP tarafından kullanılan MetaPost destek dosyaları                       |                                |
| MFINPUTS                                            | Metafont kaynağı                                                          | .mf                            |
| MFPOOL, TEXMFINI                                    | Metafont program dizeleri                                                 | .pool                          |
| MFTINPUTS                                           | MFT stil dosyası                                                          | .mft                           |
| MISCFONTS                                           | diğer kategorilere uymayan yazı tipiyle ilgili dosyalar                   |                                |
| MLBIBINPUTS, BIBINPUTS, TEXBIB                      | MlBibTeX kaynakça kaynağı                                                 | .mlbib, .mlbib                 |
| MLBSTINPUTS, BSTINPUTS                              | MlBibTeX stili                                                            | .mlbst, .bst                   |
| MPINPUTS                                            | MetaPost kaynağı                                                          | .mp                            |
| MPPOOL, TEXMFINI                                    | MetaPost program dizeleri                                                 | .pool                          |
| OCPINPUTS                                           | Omega derlenmiş işlem dosyaları                                           | .ocp                           |
| OFMFONTS, TEXFONTS                                  | Omega yazı tipi metrikleri                                                | .ofm, .tfm                     |
| OPENTYPEFONTS                                       | OpenType yazı tipleri                                                     |                                |
| OPLFONTS, TEXFONTS                                  | Omega özellik listeleri                                                   | .opl                           |
| OTPINPUTS                                           | Omega çeviri işlem dosyaları                                              | .otp                           |
| OVFFONTS, TEXFONTS                                  | Omega sanal yazı tipleri                                                  | .ovf                           |
| OVPFONTS, TEXFONTS                                  | Omega sanal özellik listeleri                                             | .ovp                           |
| PDFTEXCONFIG                                        | PDFTeX’e özgü yapılandırma dosyaları                                      |                                |
| PROGRAMFONTS, PKFONTS, TEXPKS, GLYPHFONTS, TEXFONTS | sıkıştırılmış bit eşlemli yazı tipleri                                    | .pk                            |
| TEXPSHEADERS, PSHEADERS                             | indirilebilir PostScript                                                  | .pro                           |
| RISINPUTS                                           | RIS kaynakça dosyaları, özellikle Bibe için                               | .ris                           |
| SFDFONTS                                            | alt yazı tipi tanım dosyaları                                             | .sfd                           |
| TEXINPUTS                                           | TeX kaynağı                                                               | .tex                           |
| TEXDOCS                                             | TeX sistemi için belgeler                                                 |                                |
| TEXSOURCES                                          | TeX sistemi için kaynak dosyaları                                         |                                |
| TEXMFSCRIPTS                                        | texmf ağaçlarında dağıtılan, mimariden bağımsız çalıştırılabilir dosyalar |                                |
| TEXPOOL, TEXMFINI                                   | TeX program dizeleri                                                      | .pool                          |
| TFMFONTS, TEXFONTS                                  | TeX yazı tipi metrikleri                                                  | .tfm                           |
| TRFONTS                                             | Troff yazı tipleri                                                        |                                |
| TTFONTS                                             | TrueType anahat yazı tipleri                                              | .ttf, ,TTF, .ttc, .TTC, .dfont |
| T1FONTS, T1INPUTS, TEXPSHEADERS, DVIPSHEADERS       | Type 1 PostScript dış çizgi yazı tipleri                                  | .pfa, .pfb                     |
| T42FONTS                                            | Type 42 PostScript dış çizgi yazı tipleri                                 |                                |
| VFFONTS, TEXFONTS                                   | sanal yazı tipleri                                                        | .vf                            |
| WEBINPUTS                                           | WEB girdi dosyaları                                                       | .web, .ch                      |
| WEB2C                                               | web2c uygulamasına özgü dosyalar                                          |                                |


---

# 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/06-an-introduction-to-kpathsea-and-how-tex-engines-search-for-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.
