# LaTeX Editor [![CI](https://img.shields.io/github/actions/workflow/status/s-balli/latex-editor/ci.yml?branch=main&label=CI)](https://github.com/s-balli/latex-editor/actions) [![License](https://img.shields.io/badge/license-GPL--3.0-blue.svg)](LICENSE) [![Version](https://img.shields.io/github/v/release/s-balli/latex-editor?label=version&color=green)](https://github.com/s-balli/latex-editor/releases) [![Downloads](https://img.shields.io/github/downloads/s-balli/latex-editor/total)](https://github.com/s-balli/latex-editor/releases) [![LaTeX Editor | AlternativeTo](https://alternativeto.net/static/badges/badge-compact-color.svg)](https://alternativeto.net/software/latex-editor/about/?utm_source=badge&utm_medium=referral) [![AppImageHub](https://img.shields.io/badge/AppImageHub-LaTeX_Editor-1e88e5?logo=linux&logoColor=white)](https://appimage.github.io/LaTeX_Editor/) > 🌐 **Tanıtım sayfası:** https://s-balli.github.io/latex-editor/ > **English:** [README.md](README.md) | **Türkçe:** README.tr.md (şu an buradasınız) PyQt6 tabanlı LaTeX editörü ve derleyici. Notepad++ tarzı düzenlemeyi gömülü PDF önizleme, sözdizimi renklendirme, SyncTeX, çoklu tema ve dil desteği ile birleştirir. Windows (TeX Live için WSL) ve Linux (AppImage). GPL-3.0 lisanslı. Pasif/deneysel bir web sürümü (FastAPI + React/Monaco) `web/` altında bulunur ancak **dağıtılmaz**. --- ## Ekran görüntüsü ![Ana pencere](./docs/assets/01.png) ### SyncTeX canlı Editörde bir satıra Ctrl+Click → PDF o konuma, sayfalar arası bile zıplar. PDF'e Ctrl+Click → editör o kaynak satıra geri döner. ![SyncTeX: kaynak satıra tıkla ↔ PDF'e geç](./docs/assets/ss1.gif) --- ## İndirme / Download | Platform | Dosya | Gereksinim | |----------|-------|------------| | **Windows** | `LaTeX_Editor_v*_Windows.exe` (portable) | [WSL](https://learn.microsoft.com/en-us/windows/wsl/install) + TeX Live | | **Linux** | `LaTeX_Editor_v*_Linux_x86_64.AppImage` ([AppImageHub](https://appimage.github.io/LaTeX_Editor/)'da da var) | TeX Live | ➜ **[Download (Releases) sayfası](https://github.com/s-balli/latex-editor/releases)** > ⚠️ **Önemli:** Uygulama yalnızca GUI'yi içerir. LaTeX derleyicisi (`lualatex`/`pdflatex`/`xelatex`) ayrıca **TeX Live** ile kurulmalıdır — Windows'ta **WSL** üzerinden, Linux'ta `apt` ile. Detaylar için [Gereksinimler](#gereksinimler) bölümüne bakın. > 🔏 **İndirdiğinizi doğrulama.** Sürüm dosyaları kod imzalı değil, o yüzden Windows SmartScreen ilk açılışta uyarı veriyor. Ama imzalı bir derleme kanıtı taşıyorlar; bu daha temel bir soruyu cevaplıyor: bu dosya gerçekten bu depodan, bu iş akışı koşusunda mı üretildi? GitHub CLI ile bakabilirsiniz: > > ```sh > gh attestation verify LaTeX_Editor_v_Windows.exe --repo s-balli/latex-editor > ``` > > Kanıt Sigstore ile imzalanıp herkese açık Rekor şeffaflık kütüğüne yazılıyor, yani bu depodan bağımsız olarak da doğrulanabiliyor. Kanıtlar v1.0.23'ten SONRA yayınlanan ilk sürümle başlıyor; daha eski dosyalarda yok ve komut bunu bildiriyor. macOS `.dmg` dosyasında kanıt v1.2.1 ile başlıyor. --- ## Sürüm Geçmişi ### v1.2.5: Sözlük Yüklenirken - **Yazım denetimi sözlüğü yüklenirken kapatılan uygulama artık çıkışta çökmüyor.** Sözlük yüklemek birkaç saniye sürüyor. Pencere bu sırada kapanırsa uygulama çıkarken çöküyordu. Artık yüklemenin bitmesini bekleyip öyle çıkıyor. - **Sözlük yüklenirken dil değiştirince denetim artık eski sözlükle yapılmıyor.** Metin, seçtiğiniz dilin değil yüklenmekte olan sözlüğün sonucuyla işaretleniyordu. Uygulama artık son seçimi hatırlıyor ve süren yükleme biter bitmez onu yüklüyor. - **PDF önizlemesi PDFium 156 kullanıyor.** Paketler pypdfium2 5.14.0 taşıyor (1.2.4'te 5.13.0 ve PDFium 153 vardı). Tam test takımı onunla Windows, Linux ve macOS'ta geçiyor; paket boyutları 0,1 MB'tan az değişti. ### v1.2.4: Daha Kararlı Önizleme - **PDF'te satır sonunda bölünmüş bir sözcüğü kopyalamak artık görünmez bir karakter taşımıyor.** PDF'te seçilip kopyalanan metinde, satır sonunda bölünmüş her sözcüğün ortasına bir U+FFFE işareti giriyordu. Arama bu işareti zaten atıyordu; kopya da artık sözcüğü düzgün birleştiriyor. - **Hiçbir şeyi değiştirmeyen bir yakınlaştırmadan sonra görüntü artık geri zıplamıyor.** Sayfa zaten sığmışken "Genişliğe Sığdır"a basmak ya da %300 sınırında yakınlaştırmak, yakınlaştırmanın konum kaydını bekletiyordu. Başka bir sayfaya kaydırdıktan sonraki ilk pencere boyu değişikliği ya da sayfa sayısını değiştiren bir derleme, görüntüyü yakınlaştırmanın yapıldığı yere geri atıyordu. Bu, PDF bölmesi araç çubuğunun tamamına yetecek kadar genişken oluyordu. - **Çift sayfa görünümünde sayaç ve düğmeler sayfa çiftine göre çalışıyor.** Sayfa sayacı kaydırırken sağ sayfayı, bir yere gidince sol sayfayı gösteriyordu; F5 ile başlatılan sunum bu yüzden bir sayfa geç başlayabiliyordu. Sayaç artık çiftin sol sayfasını gösteriyor; "<" ve ">" düğmeleri yarım adım yerine bir sayfa çifti ilerliyor. ### v1.2.3: Yeni Motor - **PDF önizlemesi daha yeni bir PDFium kullanıyor.** Paketler Mayıs 2024 tarihli pypdfium2 4.30.0'ı (PDFium 126) taşıyordu. 4.x'in sonraki tek sürümü metin çıkarmadaki bir gerileme yüzünden geri çekildiği için sürüm sınırı her derlemeyi orada tutuyordu. Artık pypdfium2 5.13.0 (PDFium 153) taşıyorlar; tam test takımı onunla Windows, Linux ve macOS'ta geçiyor. Paketler 0,6 ile 0,9 MB arasında büyüdü. - **Her değişiklik artık paketlere giren kütüphanelerin bilinen açıklarına karşı denetleniyor.** CI, bir sürümün taşıyacağı tam sürümleri çözüp PyPI'nin güvenlik verisiyle karşılaştırıyor. 1.2.2'nin çıkardığı Pillow sürümünü yakalayacak olan denetim bu. ### v1.2.2: Daha Hafif - **Pillow üç paketten de çıktı.** Uygulama onu tek bir adım için kullanıyordu: çizilen PDF sayfasını Qt'ye aktarmak. PDFium artık sayfayı Qt'nin okuduğu bayt sırasında çiziyor ve görüntü doğrudan Qt'ye gidiyor. Eski yolla 60 çizimde (iki test PDF'i ve altı şablon, dört yakınlaştırma düzeyi) piksel piksel karşılaştırıldı, 60'ı da aynı. Paketler Pillow 11.3.0 taşıyordu; GitHub Advisory Database'de bu sürüm için 13 güvenlik kaydı var (10'u yüksek, 3'ü orta önemde) ve hepsinin düzeltmesi yalnız 12.x'te. Uygulama bu kodlara hiç uğramıyordu (PSD, FITS, JPEG 2000 gibi biçimlerin çözücüleri), ama kütüphane paketteydi. - **İndirmeler küçüldü:** Windows exe'si 6,4 MB, AppImage 5,7 MB, macOS `.dmg` 4,6 MB küçük; yayın adımlarıyla yapılan derlemelerde ölçüldü. - **Yayın denetimi, Pillow bir pakete geri girerse artık düşüyor.** PyInstaller, Pillow kurulu her derleme makinesinde onu kendiliğinden pakete alıyordu. ### v1.2.1: Aynı Yer, İki Ad - **Sembolik bağ üzerinden açılan projede PDF'e Ctrl+tık sonraki dosyaya atlayabiliyordu.** TeX dosya adlarını klasörün gerçek yoluyla kaydediyor, bu yüzden SyncTeX projenin açıldığı yoldan farklı bir yol döndürüyordu. Her cevap proje dışından gelmiş gibi görünüyor, bölüm sonundaki tıklamayı doğru dosyada tutan kural da çalışmıyordu. macOS'ta `/var` ve `/tmp` birer bağ olduğu için geçici klasördeki her proje etkileniyordu: bölüm sonu sayfasında 88 tıklamanın 88'i öbür yolla döndü, LuaLaTeX'te ilk altısının beşi sonraki dosyaya gitti. Cevaplar artık projenin kendi yoluna çevriliyor. - **macOS `.dmg` artık imzalı derleme kanıtı taşıyor**, Windows exe'si ve AppImage gibi; `gh attestation verify` onda da çalışıyor. - **AppImage çevirilerin hiç okunmayan ikinci bir kopyasını** `.ts` kaynaklarıyla birlikte taşımıyor. Yayın denetimi artık ara klasöre değil, indirdiğiniz AppImage'e bakıyor; kopya bu yüzden fark edilmemişti. - **Test takımı macOS'ta (Apple Silicon) ilk kez hatasız geçiyor**, TeX kurulu olsa da olmasa da. ### v1.2.0: Kullanıcının Gözünden - **WSL yokken derleme "0 hata" deyip başka motor öneriyordu.** WSL kurulu olmayan ya da kurulu olup Linux dağıtımı olmayan bir Windows'ta `wsl.exe` yine başlıyor ve kendi hatasını yazıp çıkıyor. Derleme boş bir Hatalar listesiyle düşüyor, Öneriler sekmesi de pdflatex ya da xelatex öneriyordu; oysa her motor aynı `wsl.exe`'den geçiyor. Artık `wsl.exe`'nin iletisi hata olarak görünüyor, öneri de sorunu çözen komut (`wsl --install`). - **Bazı hata ipuçları yanlış yere gönderiyordu.** Kabuk erişimi kapalıyken minted, `[width=2cm]` gibi seçenekleri bozan Türkçe babel'in `=` kısaltması ve kodlaması `inputenc` ile uyuşmayan dosya için ipucu yoktu; bu yüzden genel "motoru değiştirin" önerisi çıkıyordu, oysa hata her motorda aynı. Tanımsız göndermelerin ipucu "yeniden derleyin" diyordu; `\label`'ı olmayan bir `\ref` için bu hiçbir işe yaramaz, uygulama zaten "Rerun" uyarısı kalmayana kadar yeniden derliyor. Artık her durumun kendi ipucu var ve çözümü söylüyor. Eksik paket önerisi iki kez listeleniyordu; uzun ipuçları tek satırda kalıyor, çözüm yatay kaydırmanın arkasında kalıyordu (2132 px'lik satırın 1134 px'i görünmüyordu). Listeler artık satır kırıyor. - **Eski kodlamalı belgeyi UTF-8'e çevirmek onu bozuyordu.** Baytlar UTF-8 oluyor ama `\usepackage[latin5]{inputenc}` satırı kalıyordu; derleme düşüyor, PDF'teki Türkçe harfler bozuk çıkıyordu. Her zaman UTF-8 yazan Farklı Kaydet de aynısını yapıyordu. Artık `inputenc` satırı da aynı geri alma adımında çevriliyor. Kodlama uyarısı koyu temada beyazdı. - **Büyük/küçük harf duyarsız arama Türkçe büyük harfleri kaçırıyordu.** Eşleştirme I'yı yalnız i'nin büyüğü sayıyordu, oysa Türkçede ı'nın büyüğü; KARŞILAŞTIRILABİLİRLİK gibi büyük harfle yazılan bir sorgu küçük harfli yazımı bulmuyordu. Ctrl+F, Klasörde Ara, PDF araması, Ctrl+P ve Kaynakça süzgeci artık sorguyu iki türlü okuyor (21 durumun 21'i doğru, önce 9'u). - **Yazım denetimi.** Bulguya tıklamak imleci satır başına götürüyordu, uzun bir paragrafta kelimeyi gözle aramak gerekiyordu; artık kelime seçiliyor, üstüne satır ekledikten sonra da. Sözlüğe eklenen kelimeyi geri almanın yolu yoktu: Yazım sekmesindeki yeni Kişisel Sözlük penceresi eklediklerinizi listeliyor ve seçtiklerinizi çıkarıyor. - **Tablo ve görsel metne yapışıyordu.** Tablo Sihirbazı ve görsel ekleme kodu imlecin tam yerine koyuyordu: satır ortasında `metin\begin{table}`, satır başında bile `\end{table}metin`. İki blok da artık kendi satırlarına giriyor. - **CSV yükleme.** Ondalık ayracı virgül olduğu için `;` ile yazan Türkçe Excel'in başlıksız CSV'si ondalık virgüllerden bölünüyordu. Ayraç artık kendiliğinden bulunuyor, CSV Yükle'nin yanında görünüyor ve tahmin yanlışsa elle seçilebiliyor (tek sütunlu ondalık bir liste ile iki sütunlu bir tamsayı listesi bayt bayt aynı). Var olan bir tablo düzenlenirken eski hizalama kutuları ızgaranın üstünde kalıyor, ızgaranın başlığı da koyu temada okunmuyordu. - **PDF'te Ctrl+tık başka dosyaya gidiyor ya da Windows'ta bir saniyeye kadar sürüyordu.** Satır sonundaki boşluğa, bölüm dosyasının sonuna ya da LuaLaTeX'in sınıf dosyası kayıtlarına düşen tıklamalar başka bir dosyayı, hatta TeX dağıtımının sınıf dosyasını açıyordu (LuaLaTeX'te boşluğa düşen 28 tıklama başka yere gidiyordu, şimdi hiçbiri). Her sorgu ayrıca kendi WSL sürecini başlatıyordu; artık tek süreci paylaşıyorlar, sonuçlar nokta nokta aynı, en uzun tıklama 1,1 ile 1,4 sn'den 0,25 ile 0,47 sn'ye indi. - **Büyük dosyalar yavaş açılıyordu.** 12 MB'lık bir dosya 1.1.2'de 13,8 sn'de açıldı, sürenin neredeyse tamamı satır kaydırmadaydı; kaydırma artık metin yüklenirken bekliyor ve çok satırlı 12 MB'lık dosya 0,04 sn'de açılıyor. Yakınlaştırınca dört haneli satır numaralarının ilk hanesi kesiliyordu. - **Bölüm dosyasıyla açılınca proje bölüm klasörüne daralıyordu.** `bolumler/giris.tex` Birlikte Aç ile açılınca derleme `% !TEX root` ile ana dosyaya gidiyor, ama dosya ağacı yalnız `bolumler/` klasörünü gösteriyor, Sürümle de ana dosyayı, `.bib`'i ve şekilleri sürümün dışında bırakıyordu. Proje klasörü artık dosyanın derlendiği belgenin klasörü. Ağacın kök yolu üç satıra bölünüyor, klasörün adı görünmüyordu; artık tek satır ve soldan kısaltılıyor. - **Aynı adlı dosyalar Son Açılanlar'da ayırt edilemiyordu.** İki projenin `giris.tex`'i menüde iki özdeş satırdı. Adlar çakışınca artık klasörün adı ekleniyor; menü öğeleri ve sekmeler ipucunda tam yolu gösteriyor. - **Silme.** Silme sorusu Linux ve macOS'ta da "Geri Dönüşüm Kutusu" diyordu; artık sistemin çöp için kullandığı adı söylüyor. Açık bir dosyayı ağaçtan silmek fazladan bir "diskten silindi" kutusu açıyordu; sekme artık doğrudan kapanıyor. Tüm sürüm geçmişini silme onayı artık hangi klasörün çöpe gittiğini söylüyor ve sürümlemenin oluşturduğu `.gitignore`'u da, siz değiştirmediyseniz, kaldırıyor. - **PDF görüntüleyici.** Sayfa sayacı belge yokken "Sayfa 1 / 0" diyor, yeniden yüklemeden sonra görünümden ayrışıyordu; F5 bu yüzden yanlış slayttan başlayabiliyordu. Farklı Kaydet programın başlatıldığı klasörde açılıyordu. Seçim ve arama vurgusu kelimenin sağ ve alt kenarında bir piksele kadar eksik kalıyordu. Sonraki dosyada biten bir paragrafın taşma uyarısı o dosyayı gösteriyordu. - **AppImage: Klasörde Aç, PDF'teki web bağlantıları, Hakkında ve güncelleme penceresindeki bağlantılar, Tarayıcıda Aç ve Log Klasörünü Aç** GNOME'da hiçbir şey açmıyordu. Paketin kitaplık yolu `xdg-open`'a sızıyor, o da `gio`'yu yükleyemiyordu. `xdg-open` artık temiz ortamla başlıyor; Log Klasörünü Aç da yolu panoya kopyalamak yerine klasörü açıyor. - **Küçük ekranlar.** Klavye Kısayolları ve güncelleme bildirimi yaygın ekranlardan (1366x768 ya da %150 ve %175 ölçekli 1080p) uzundu, Tamam ve Tarayıcıda Aç düğmelerine ulaşılamıyordu: %175'te kısayol kutusu çalışma alanının 147 px altına iniyordu. İkisi de, Özellikler penceresi de artık ekrana sığıyor ve kayıyor. - **Temalar.** Koyu temalarda dosya ağacı, anahat, hata listeleri ve kaynakçada seçili öğenin yazısı koyu seçim zemininde siyahtı; karşıtlık artık yedi temanın hepsinde en az 7,5. Linux'ta işaretsiz onay kutuları koyu temada görünmüyordu (karşıtlık 1,00, şimdi en az 3). - **Kaynakça.** Kaynakça sekmesi elle yazılmış `.bib` dosyalarının LaTeX'ini ham gösteriyordu: `The \TeXbook`, `Sa{\u{g}}ba{\c{s}}` gibi. 306 gerçek girdide yazar sütunu basılan PDF'ten artık 29 yerine 6 yerde ayrışıyor. DOI ile Kaynak Ekle, Crossref'in alt başlığı başlığı yinelediğinde başlığı iki kez yazıyordu. - **Türkçe arayüz.** Durum çubuğu "Basarili", "Basarisiz" ve "uyari" diye Türkçe harfsiz yazıyordu, yorum komutunun adı "Yorum Toggle" idi, Dışa Aktar menüsünde "Plain Text" İngilizce kalıyordu, Linux'ta Qt'nin kendi dosya kutusunun iki etiketi de İngilizceydi. - **Küçük düzeltmeler.** Durdurulan ya da zaman aşımına uğrayan derlemeler geçici klasörlerini geride bırakıyor, bunlar birikiyordu; her derleme artık sahibi kalmamış olanları siliyor. Günlük "Derleme başladı" satırını kabuk erişimi sorusu cevaplanmadan yazıyordu; artık satırı cevaptan sonra, cevapla birlikte yazıyor. HTML'e dışa aktarılan sayfanın başlığı ara dosyanın adıydı (`tez.tex.export_tmp`). - **Geçici klasörden çalışan exe `.tex` ilişkisini kendine çeviriyordu.** O klasör silinince (örneğin doğrudan zip'in içinden açılan bir kopya) `.tex` dosyasına çift tıklamak hiçbir şey açmıyordu. Böyle bir kopya artık ilişkiye dokunmuyor; kalıcı bir yerden çalışan kopya eskisi gibi alıyor, yani yeni indirilen sürüm yine çalışıyor. ### v1.1.2: Emin Ellerde - **Otomatik kaydetme, uygulama dışında yapılan bir değişikliği ezebiliyordu.** Dosya izleyici diskteki değişikliği sormadan önce yarım saniye bekliyor; otomatik kayıt tam o yarım saniyeye denk gelince değişikliğin üstüne soru sormadan yazıyordu. Kayıttan 0, 50, 200 ya da 400 ms önce gelen değişiklik kayboluyor, silinen dosya geri geliyordu. Otomatik kaydetme artık diskteki dosyayı son okuduğu ya da yazdığı hâlle karşılaştırıyor ve yazmak yerine soruyor. - **WSL içindeki projeler hiç izlenmiyordu.** Windows `\\wsl.localhost` altındaki bir dosyayı okuyabiliyor ama değişikliklerini bildirmiyor. WSL'de bir `git pull`dan sonra Ctrl+S, derleme öncesi kayıt, sürümleme ve otomatik kaydetme yeni içeriğin üstüne sormadan yazıyor, kaydedilmemiş değişikliği olmayan sekme de eski metni göstermeye devam ediyordu. Bu dosyalar artık iki saniyede bir denetleniyor ve değişiklik yerel diskteki gibi soruluyor. - **Otomatik kaydetme çökme kurtarmanın sözünü bozuyordu.** Geri yükleme sorusu diskteki dosyaya siz kaydedene kadar dokunulmayacağını söylüyor, ama ilk otomatik kayıt geri yüklenen kopyayı diske yazıyordu; dosya çökmeden sonra diskte değiştiyse (örneğin bir `git pull` ile) o değişiklik de kayboluyordu. Geri yüklenen sekmeler artık sizin kaydınızı bekliyor, soru da kopyadan sonra diskte değişen dosyaları sayıyor. - **Yeni Dosya ve Farklı Kaydet başka bir sekmede açık dosyanın üstüne yazabiliyordu.** İki sekme aynı dosyaya bağlanıyor, öbür sekmenin otomatik kaydı yeni içeriği eziyor, sekmelerden biri kapanınca öbürü için izleme de duruyordu. Başka sekmede açık bir dosya seçilince artık önce o sekmeyi kapatmanız isteniyor; sekmenin kendi dosyasına Farklı Kaydet çalışmaya devam ediyor. - **Kurtarma kopyası yazılamadığında fark edilmiyordu.** Kurtarma klasörüne yazılamazsa (dolu disk, izin) kopya oluşmuyor ve bunu hiçbir şey söylemiyordu. Artık durum çubuğu ve günlük bunu bir kez söylüyor. - **Proje özellikleri kaydedilmemiş metni görmüyordu.** Klasörde Ara, Referans Denetimi, Kaynakça sekmesi, `\ref` tamamlaması ve tanıma git bölüm dosyalarını ve `.bib`'i diskten okuyordu: yeni yazdığınız etiket "tanımsız" görünüyor, yeni girdi listede çıkmıyordu. Tablo sihirbazı, DOI ile Kaynak Ekle ve F2 ile yeniden adlandırma da ad çakışmasına bakarken kardeş bölümlerdeki etiketleri ve anahtarları kaçırıyordu. Hepsi artık açık sekmeleri ve projenin tamamını okuyor. - **Sonuç listeleri düzenlemeden sonra eski satıra gidiyordu.** Bir öğenin üstüne satır ekledikten sonra uyarıya, denetim bulgusuna, arama sonucuna, yazım bulgusuna ya da kaynakça satırına tıklamak, liste kurulduğu andaki satıra gidiyordu (14 adımın 3'ü doğru, şimdi 14'ü). F4 ve Hatalar listesi de hata düzeltilirken aynısını yapıyordu. Artık metni izliyorlar. - **Türkçe Q klavyede Ctrl+/ yorum satırı yapmıyordu**; bu düzende `/` Shift+7 ile yazılıyor. Kısayol bunun yerine kelimenin bir kısmını seçiyor, sonraki tuş da seçileni siliyordu. Komutu olmayan Ctrl birleşimleri (Ctrl+1, Ctrl+. gibi) belgeye karakter yazıyordu (44 basışın 35'i, şimdi hiçbiri). - **Kod katlama hiçbir şeyi katlamıyordu.** Katlama kenarı ilk sürümden beri vardı, ama hiçbir satırın katlama düzeyi yoktu. Ortamlar ve bölüm başlıkları artık katlanıyor; bölüm, alt bölümleriyle birlikte katlanıyor. - **DOI ile Kaynak Ekle kaynakçayı bozabiliyordu.** Crossref'ten Yunan harfi, alt simge ya da `` etiketiyle gelen başlıklar pdflatex'i durduruyor, lualatex ise karakterleri sessizce atlıyordu (19 gerçek kaydın 10'unda, şimdi hiçbirinde). plain gibi stiller NF-κB ve TiO2 gibi kısaltmaları ve formülleri küçültüyordu (21 kayıtta 47 bozuk sözcük, şimdi 5). Kaynakça sekmesi başlıkları okunur gösteriyor. - **Anahat başlıklara renk adı, etiket anahtarı ve adres karıştırıyordu** (18 yaygın biçimin 13'ünde); bu yüzden aynı bölüm iki kez listelenebiliyordu. - **LuaLaTeX'te PDF'e tıklamak çok dosyalı projelerde çoğu zaman başka dosyaya atlıyordu.** Gerçek bir tezde doğru satıra giden tıklama, yaklaşık 465 tıklamada 406'dan 460'a çıktı. - **PDF araması satır sonunda bölünen sözcükleri** ve sonraki satıra taşan ifadeleri bulmuyordu: 1659 sözcük geçişinin 252'si bulunamıyordu, şimdi 4'ü. - **Tez klasörü açılınca dosya ağacı donuyordu**: 80 bölüm dosyasıyla 4,7 saniye, şimdi 0,7 saniye. - **Sunum modu.** Kumandanın karartma düğmesi artık ekranı karartıyor, Shift+F5 de sunumu geçerli sayfadan başlatıyor. - **PDF araç çubuğunun düğmeleri üst üste biniyordu**, varsayılan pencere boyutunda bile. Sığmayan araçlar artık çubuğun sonundaki » menüsüne gidiyor. - **Gizlilik.** Bir [gizlilik politikası](PRIVACY.md) uygulamanın bilgisayarınızda ne tuttuğunu ve yaptığı yalnız iki ağ isteğini anlatıyor; açılıştaki güncelleme denetimi artık Görünüm → Editör Ayarları'ndan kapatılabiliyor. ### v1.1.1: Sahnede - **Sunum kumandaları çalışmıyordu.** Kumandalar Page Down ve Page Up gönderiyor; sunum modu ikisini de, Backspace'i de yok sayıyordu. Artık slayt değiştiriyorlar. - **Sunum sürerken biten derleme sunumu geri götürüyordu.** Konuşma 6. slayttayken arkada biten bir derleme ekranda eski PDF'in slaytını bırakıyor, sonraki tuş 2. slayda gidiyordu. Sunum artık slaytında kalıp yeni PDF'i gösteriyor; ileri arama ya da ikinci ekranda görüntüleyiciyi kaydırmak da onu oynatmıyor. - **Beamer slaytları ekranı doldurmuyordu.** Sabit bir ölçek sınırı 4:3 slaytı ekran yüksekliğinin %76'sında, 16:9 slaytı %71'inde tutuyordu (4K'da %38 ve %36). Artık %98'ini dolduruyorlar. - **Slayttaki bağlantılar artık çalışıyor.** İçindekiler, `\beamergotobutton` düğmeleri, gezinme simgeleri ve `\href` adresleri sonraki slayda geçiyordu; artık hedeflerine gidiyorlar. Başka bir yere tıklamak yine ileri götürüyor. Fare tekerleği slayt değiştiriyor, imleç üç saniye kıpırdamayınca gizleniyor. - **İki ekranda sunum.** Uygulama penceresi öbür ekrandayken bile sunum birincil ekranda açılıyordu; artık pencerenin olduğu ekranda açılıyor. Alt+F4 ya da görev çubuğuyla kapatınca uygulama sunumun sürdüğünü sanıyordu; konuşma sırasında ana pencereyi kapatmak slaytı ekranda bırakıp süreci çalışır tutuyordu. - **Yüksek DPI ekranda PDF bulanıktı.** Sayfalar ekranın mantıksal çözünürlüğünde çizilip büyütülüyordu: %200 ölçekte önizleme yerel bir çizimin netliğinin %52'sini, sunum modu %37'sini taşıyordu. Sayfalar artık ekranın piksel yoğunluğunda çiziliyor (%125 ve %200'de %100, %150'de %91); pencere başka ölçekli bir ekrana taşınınca yeniden çiziliyor. - **Ana dosyanın yanındaki bölümler derlenemiyordu.** v1.1.0 bölüm dosyasından bütün belgeyi derlemeyi getirmişti, ama yalnız bölüm bir alt klasördeyse; `main.tex` ile aynı klasördeki bölüm hâlâ derlenemez diyordu. İki düzen de artık çalışıyor. - **Linux menüsünde açıklama yalnız Türkçeydi.** İngilizce masaüstleri ve AppImageHub kataloğu "LaTeX editörü ve derleyici" gösteriyordu. Açıklama artık İngilizce, Türkçe karşılığıyla; AppImage AppStream bilgisi de taşıyor: lisans, ana sayfa ve ekran görüntüsü. - **Artık AppImageHub'da**: https://appimage.github.io/LaTeX_Editor/ - **4328 test** (v1.1.0'da 4302) ### v1.1.0: Bölüm Bölüm - **Geri yükleme sürümlenmemiş işi silebiliyordu.** Sürüm geçmişinden bir dosyayı geri yüklemek eski sürümü kaydedilmiş ama sürümlenmemiş değişikliklerin üstüne doğrudan yazıyordu: sonra o değişiklikler ne diskte ne Ctrl+Z'de ne geçmişte ne de kurtarma klasöründe vardı, uyarı ise yalnız kaydedilmemiş değişikliklerden söz ediyordu. Şimdiki hâl artık önce "Geri yüklemeden önce: " adıyla sürüme alınıyor (kaydedilmemiş değişiklik de önce kaydedilip ona giriyor); o sürüm alınamazsa hiçbir şey geri yüklenmiyor. Ctrl+K artık proje klasörü dışındaki sekmeleri diske yazmıyor, fark ekranı da diskteki dosyayla değil editördeki metinle karşılaştırıyor - **Otomatik kaydetme "Kaydetme" cevabını boşa çıkarabiliyordu.** Otomatik kaydetme (öntanımlı açık, üç dakikada bir) "Değişiklikler kaydedilsin mi?" sorusu ekrandayken de çalışıyordu; atmayı seçtiğiniz metin yine diske gidebiliyordu. Artık herhangi bir soru açıkken bekliyor. Çökme kurtarmada "Geri Yükle"den hemen sonra da diskte kurtarılabilir hiçbir şeyin olmadığı bir an vardı; geri yüklenen sekmeler anlık görüntülerini artık temiz kapanışa kadar tutuyor - **Kapanış ayracını yazıp Enter'a basmak onu silebiliyordu.** `\input{bolumler/giris}`, `\ref{fig:a}` ya da `\cite{knuth84}` harf harf yazılıp satır sonunda Enter'a basılınca bir önceki harfin açık bıraktığı tamamlama listesi kabul ediliyor, `}` siliniyor ve Enter yutuluyordu. `\begin{itemize}` ardından Enter ya da Tab gövde satırını da siliyordu, `\begin{figure}` ise `\begin{figure*` oluyordu. Görünür, gerçek bir pencerede ölçüldü - **Tam yazılmış komuttan sonra Enter komutu değiştiriyordu.** O liste açık kaldığı için `\centering` ya da `\hline` ardından Enter yeni satır açmıyordu (bilinen 396 komutun 372'si böyle), `\item` madde imini kaldıran `\item[]` oluyordu, `\par` ise `\paragraph{}`. Liste artık tam bir komut yazılınca kapanıyor; Ctrl+Space uzun adayları yine gösteriyor. Yalnız `\begin{...}` içeren bir satırın hemen altında tamamlamayı Enter'la kabul etmek de imleci satırın sonuna atıyordu - **Otomatik ayraçlar belgeyi bozabiliyordu.** `\$` yazmak matematiği açan ikinci bir `$` ekliyordu ("Missing $ inserted"). `%` yorumunun içinde `\begin{...}` yazmak yorumun dışına çalışan bir `\end{...}` koyuyordu. Az önce yazılan ayracı ya da `$`ı silmek eşini geride bırakıyordu; ortamın adı `}` dahil silinip yeniden yazılınca eklenen ikinci `\end` da `\item`leri listenin dışına itiyordu. CRLF dosyalarda (paketle gelen 132 şablonun 17'si) `\begin{...}` satırında Enter'dan sonraki tuş alt satıra düşüyordu. Her durum gerçek pdflatex ile sınandı: niyet edilen metin derleniyor, editörün ürettiği derlenmiyordu - **Tamamlama, LaTeX'in kabul ettiği yazımlarda açılmıyordu.** Türkçe harfli yol ve etiketler (`\input{bölümler/`, `\ref{şekil`), virgülden sonra boşluklu `\cite{a, b}`, isteğe bağlı argümanlı `\cite[s.~5]{...}` ve `\cref{a,b}` listesinin ikinci anahtarı liste almıyordu. Yorumun içinde kapalı olması gereken tamamlama da yazarken açılıyordu - **Bölüm dosyaları bütün bir belge sanılıyordu.** Bölümlerinde `% !TEX root` satırı olmayan bir tezde (paketle gelen bölüm dosyalarının hiçbirinde yok) F5 ve Ctrl+S bölümün derlenemeyeceğini söylüyordu; bölüme yapıştırılan görsel derlemenin bulamadığı bir yol alıyordu; F2 ile yeniden adlandırma öteki bölümlere dokunmuyordu; DOI ile ekleme, Kaynakça sekmesi, yazım dili ve `\input` ağacı yalnız bölüme bakıyordu. Bölüm sekmesinden dışa aktarma yalnız o bölümü aktarıyor, `\graphicspath` görsellerini gömmüyordu. Derleme motoru derlenen belgeden değil öndeki sekmeden geliyordu; "Birlikte Aç"a verilen göreli bir yol da çalışan pencerede başka bir projenin dosyasını açabiliyordu - **Günlük dosyası kilitliyken uygulama açılmıyordu.** Başka bir program `latex-editor.log` dosyasını paylaşıma kapalı açık tutuyorsa (Word ve Excel böyle yapıyor) uygulama ilk penceresinden önce düşüyor ve hiçbir şey göstermiyordu. Artık o durumda dosyaya günlük yazılmıyor, uygulama açılıyor - **Linux ve macOS'ta Durdur TeX'i durdurmuyordu.** Derlemeyi durdurmak ya da zaman aşımı yalnız TeX'i saran betiği öldürüyor, her iptal bir işlemci çekirdeğini %100'de tutan bir TeX süreci bırakıyordu. Artık bütün süreç grubu sonlandırılıyor. XeLaTeX ya da LuaLaTeX isteyen belge (fontspec) motor önerisini yeniden alıyor, TeX'in iki satıra böldüğü bir Unicode hatası da ipucunu gösteriyor - **Daha açık hata paneli.** Hata satırları artık hangi dosyadan geldiğini söylüyor; bir paketin içinde doğan hata, paketin kendi dosyasındaki bir satırı değil sizin `\usepackage` satırınızı gösteriyor. Kendi makronuzun içinde kullanılan tanımsız bir komut (`\newcommand{\R}{\mathbb{R}}`) artık ipucunun makronun kendisini suçlamasına yol açmıyor - **UTF-16 dosyalar ikili diye reddediliyordu.** Windows PowerShell'in `>` yönlendirmesiyle yazılmış bir `.tex` (örneğin `latexdiff eski.tex yeni.tex > fark.tex`) UTF-16 oluyor ve açılmıyordu. Artık UTF-8'e çevrilerek açılıyor; uyarı da ilk kaydın, otomatik kaydetme dahil, dosyayı UTF-8 yazacağını söylüyor - **Referans denetimi adres ve koddaki `%`yi yanlış okuyordu.** `\url{...}`, `\href{...}` ya da `\verb|...|` içindeki `%` (adreslerde `%C3%87` gibi yüzde kodlu Türkçe harfler sık) yorum sanılıyordu; aynı satırdaki sonraki `\label` görünmüyor, ona giden her `\ref` tanımsız diye bildiriliyordu - **Küçük düzeltmeler.** `\begin`/`\end` vurgusu yorumdaki ve sözel ortamdaki etiketleri saymıyor, aynı satırda iki kez geçen etikette doğru eşi buluyor, eski Mac satır sonlu dosyada da doğru satıra iniyor. PDF yer imleri sayfa başına değil başlığa gidiyor, kapattığınız düğümler derlemeler arasında kapalı kalıyor. Ayarlar penceresi kayıtlı değerleri artık kırpmıyor, büyük yazıda satır numaraları kesilmiyor. `\input` ağacı ve dil etiketi tema değişikliğini izliyor, son sekme kapanınca yan paneller boşalıyor. Güncelleme penceresi sürüm notunda `&` göstermiyor ve yeniden açılışlar arasında günde en çok bir kez denetliyor - **4302 test** (v1.0.30'da 4225) ### v1.0.30: Geride Kalan İkiz - **Bozuk bir PDF sayfası uygulamayı hiçbir uyarı vermeden kapatabiliyordu.** Farenin sayfanın üzerinde gezinmesi, SyncTeX için Ctrl+tık ya da metin seçilirken derlemenin bitmesi Qt olay işleyicisinin içinde bir istisna doğuruyordu ve PyQt6 buna süreci durdurarak karşılık veriyor (Windows'ta çıkış kodu `0xC0000409`): ne diyalog ne günlük ne yığın izi, kaydedilmemiş her şey gidiyordu. Görüntüleyicideki kardeş yolların hepsi (yakınlaştırma, sunum, yer imleri, arama vurgusu, çift tık) korumayı çoktan almıştı; bu üçü o taramanın dışında kalmıştı - **Tümünü Değiştir belgeyi sessizce bozabiliyordu.** `İ` harfini ayrıştırılmış biçimde taşıyan metin (`I` ve ardından birleşen nokta U+0307; macOS dosya adlarını böyle yazıyor, bazı PDF ve web sayfalarından kopyalanan metin de böyle geliyor) katlanınca kısalıyor ve ondan sonraki her eşleşme bir karakter kayıyordu: Bul yanlış metni seçiyor, Tümünü Değiştir `Burada şekil var.` satırını `BuradaŞEKİLl var.` yapıyordu. Klasörde Ara ve PDF arama vurgusu da aynı ofsetleri kullanıyordu. Eşleşmeler artık özgün metne geri eşleniyor; katlanınca boşalan bir arama da artık sonsuz döngüye girmiyor - **Başlığında çapraz başvuru olan şekil dışa aktarımda bozuluyordu.** pandoc böyle bir başlığın içine bağlantı koyuyor (`bkz. Tablo [1](#tbl1)`) ve görsel deseni o bağlantıda duruyordu: belge içi `#tbl1` çapası mutlak dosya yoluna çevriliyor, başvuru kırılıyor ve yerel kullanıcı klasörünüz paylaşılan dosyaya sızıyordu; şeklin gerçek görsel yolu ise göreli kalıyordu. 39 şablonun tamamında uçtan uca sınandı: önce bir kırık bağlantı ve bir sızan yol, sonra hiçbiri - **PDF görüntüleyicide sayfaya gitmek kendini geri alıyordu.** SyncTeX atlaması, yer imi ya da belge içi bağlantıdan sonra sayfa sayacı 100 ms içinde önceki sayfaya dönüyordu; küçük yakınlaştırmada sayfa düğmeleri hiçbir şey yapmıyordu, çünkü Qt `ensureWidgetVisible` çağrısını hedef zaten görünürken atlıyor. Arama işçisi de ilk açılışı derleyicinin PDF'i yeniden yazdığı ana denk gelirse o belge boyunca ölü kalıyordu; ikizi olan çizim işçisi bu dersi iki hafta önce almıştı - **Bul sayacı bir önceki aramayı gösteriyordu.** Bul kutusu boşaltılınca bekleyen sayım durdurulmuyor, 300 ms sonra boş kutunun altına eski sorgunun sayısını yazıyordu - **`\pageref{LastPage}` tanımsız referans sayılıyordu.** `lastpage` ve `totpages` bu etiketleri kendileri tanımlıyor; referans denetimi düzeltemeyeceğiniz bir hata gösteriyordu. Artık tanımlı sayılıyorlar, ama yalnız paket gerçekten yüklüyse - **`\href`in bağlantı metni yazım denetiminden hiç geçmiyordu.** İki argüman da atlanıyordu, oysa ikincisi PDF'e basılıyor. 17 şablonda daha önce hiç denetlenmemiş 58 gerçek kelime vardı - **Proje kökündeki şekil PDF'leri dosya ağacında gizleniyordu.** "Kökteki PDF derleme çıktısıdır" kuralı dosya adına bakılarak yapılmış bir sayıma dayanıyordu; belgenin dosyayı gerçekten çağırıp çağırmadığına bakılınca 39 şablonun 5'inde, 142 PDF'ten 6'sı yazarın kendi şekliydi. Aynı hata alt klasörler için zaten düzeltilmişti - **`\includegraphics{` önerileri derlenmiş belgeleri şekil diye sunuyordu.** Süzgeç yalnız kaynağıyla birebir aynı adı taşıyan çıktıyı tanıyordu. Dosya adıyla değil sayfa sayısıyla ölçüldü: önerilen 84 PDF'in 51'i `main_pdflatex.pdf` gibi çok sayfalı belgelerdi. Adı yanındaki tam bir belgenin adını uzatan PDF (`main.tex` ve `main_pdflatex.pdf`) artık çıktı sayılıyor; şablonların gerçekten kullandığı 23 şeklin hiçbiri listeden düşmedi - **`\input` edilen dosyadaki bir uyarıya tıklamak ana belgeye götürüyordu.** Hatalar dosyalarını `-file-line-error` açıldığından beri taşıyor; TeX'te uyarılar için öyle bir anahtar yok ve derleme betiği uyarı satırlarını çevrelerindeki dosya işaretleri olmadan iletiyordu, yani bölüm dosyasındaki her uyarı ana belgenin aynı numaralı satırını gösteriyordu. Betik artık TeX'in açtığı dosyaları izliyor ve böyle uyarıların başına kaynak dosyayı yazıyor. 39 şablonda 52 uyarı artık geldiği bölüm dosyasını gösteriyor; satırı gösterdiği dosyanın sonundan öte düşen uyarı sayısı 10'dan 4'e indi (kalan dördü paket dosyalarından geliyor) - **Yeni: PDF belgenin istediğinden başka bir kâğıda çıktıysa Öneriler sekmesi bunu söylüyor.** A4 isteyen ama öntanımlısı US Letter olan bir TeX kurulumunda (macOS'ta olduğu gibi) derlenen belgeye, düzelten `geometry` seçeneğiyle birlikte tek satır düşüyor. Kâğıt sizin yerinize değiştirilmiyor, çünkü Letter isteyen şablonlar var (IEEE gibi). Ölçüldü: metin kaybolmuyor, değişen yalnız kâğıt boyu ve kenar boşlukları - **4225 test** (v1.0.29'da 4181). Bu düzeltmelerin altısı aynı kalıbı izliyor: bir yerde alınmış ama ikizine hiç uygulanmamış bir ders ### v1.0.29: Kimsenin Bakmadığı Yer - **macOS'ta iki yol denetimi yanlıştı ve hiçbir şeyin bunu yakalama imkânı yoktu.** İkisi de yolları metin olarak karşılaştırıyor ve harf farkını `os.path.normcase` ile eritmeye çalışıyordu. O işlev harfi yalnız Windows'ta indiriyor, POSIX'te kimlik işlevi. macOS POSIX ama öntanımlı APFS birimi harf **duyarsız**, yani `.../TEZ` ile `.../tez` aynı dizinken karşılaştırma onları ayrı sayıyordu. Sonuç: Klasörde Ara, klasörün içindeki bir dosya için "açık dosya bu klasörün dışında" diyordu; kabuk erişimi (minted) izni ise yanlış anahtara yazılıyordu, ki bu ya her alt klasörde yeniden sormak ya da minted taramasını yanlış kökte koşturup derlemeyi düşürmek demek. Gerçek bir Apple Silicon koşucusunda, düzeltme kapalı ve açıkken ayrı ayrı ölçüldü. Karşılaştırma artık "hayır" dediği anda dosya sistemine soruyor (`os.path.samefile`), böylece sembolik bağ ve kavşak da aynı anda çözülüyor; kapının beklediği değer de işletim sisteminin adından değil dosya sisteminden geliyor - **SyncTeX'in Windows kolu sembolik bağı hiç çözmüyordu.** v1.0.28 bunu yerli kol için düzeltmişti (macOS `/var` ile `/private/var` arasında boş dönüyordu); Windows'un kullandığı WSL kolu geride kalmıştı, yani dizin bağlantısı altındaki bir proje aynı duvara tosluyordu - **Eksik paket önerisinde başıboş ters bölüler vardı.** `printf` biçim dizgisinde `\(` diye bir kaçış yok, satır `Eksik paket: biber \(biblatex kaynakça aracı\)` olarak çıkıyordu; hem terminalde hem de satırı olduğu gibi alan Öneriler sekmesinde. Üç yazdırma yerinde bu kusur vardı, dördüncüsünde yoktu - **Tüm test takımı artık macOS'ta gerçek bir TeX kurulumuyla koşuyor.** İki iş vardı ve arasında delik kalıyordu: biri her testi koşturuyordu ama TeX yoktu, 153 test atlanıyordu; öteki TeX'liydi ama dört dosya koşuyordu. Son iki sürümün macOS kusurlarının hepsi o delikte durmuştu. Delik kapandı - **Var olup hiçbir yerde koşmayan beş kapı.** Dördü örnek bir PDF, biri şablon ağacı istiyordu; ikisi de depo dışındaydı. Artık testlerle birlikte gelen bir kaynaktan üretilmiş 15 KB'lik PDF ve 6 KB'lik dosya adı listesi kullanılıyor. Altıncısı bilerek yerelde kalıyor: o kapı canlı şablon korpusunun denetlediği vakaları hâlâ içerip içermediğini soruyor ve donmuş bir örneğe bağlansa yanındaki sentetik testlerin kopyasına dönerdi - **4181 test** (v1.0.26'da 3923). Bu sürümdeki hiçbir şey bir hata bildiriminden gelmedi. Hangi vaatlerin hiç ölçülmediğini sormaktan geldi: uygulamanın duyurduğu her kısayol gerçek pencereyle karşılaştırıldı, her menü öğesi gerçek belgede tetiklendi ve atlanan testler tek tek okunup hangisinin gerekçesinin artık doğru olmadığına bakıldı ### v1.0.28: İlişkilendirmenin Öteki Yarısı - **`.tex` dosyasına çift tıklayınca artık açılıyor.** v1.0.27 uygulamayı `.tex` için işleyici olarak kaydetmişti ama kimse buna göre davranmıyordu: macOS açılan belgeyi `sys.argv` ile geçirmiyor, uygulamaya bir olay gönderiyor ve yalnız `sys.argv` okunuyordu. İlişkilendirme vardı ve hiçbir şey yapmıyordu, uygulama boş editörle açılıyordu. Yayınlanan `.dmg` ile gerçek bir Apple Silicon makinede ölçüldü - **Güncelleme penceresi sürüm notunu ortasından kesmiyor.** Notları satır sınırında kırpıyordu, oysa bir sürüm notundaki maddeler birkaç satıra yayılıyor, yani gördüğünüz son madde cümlenin ortasında bitiyordu. Artık madde sınırında kırpıyor ### v1.0.27: Başarılı Diyen Derlemeler - **macOS destekleniyor.** Uygulama Apple Silicon'da çalışıyor ve yayınla birlikte bir `.dmg` geliyor. Derleme betiği orada daha ilk satırında ölüyordu: macOS hâlâ bash 3.2 taşıyor ve betik bash 4 sözdizimi kullanıyordu. Uygulama Finder'dan açılınca MacTeX'i de bulamıyordu, çünkü Finder bir uygulamaya `/Library/TeX/texbin`i içermeyen asgari bir PATH veriyor - **Düşen kaynakça artık başarılı demiyor.** biber ya da bibtex kaynakçayı kuramadığında derleme çıkış kodu 0 ile bitiyor, panel "0 hata" diyor ve PDF boş kaynakçayla çıkıyordu; aracın çıkış kodu atılıyordu. Salt okunur proje klasörü de aynı biçimdeydi: PDF geçici dizinde üretilip geri kopyalanıyor ve kopyalama düştüğünde betik yine "başarılı" yazıyordu - **Elle seçtiğiniz motor seçili kalıyor.** Sekme değiştirmek onu sessizce algılanan motora geri döndürüyordu - **Eksik paket önerisi artık gerçekten çalışan bir komut veriyor.** macOS'ta uygulama orada var olmayan `apt-get`i, üstelik TeX Live'ın tanımadığı Debian paket adlarıyla öneriyordu - **Her gün karşılaşılan küçükler.** Bul ve Değiştir'deki `\b` hiçbir Türkçe kelimeyi eşleştirmiyordu, atıf anahtarları ve etiketler yazım hatası sayılıyordu, başlıktaki aksan makroları anahatta yanlış kelime gösteriyordu ve README kurulum listesinde üç paket eksikti, yani listeyi izleyen kullanıcı PDF önizlemesi, sürüm geçmişi ve yazım denetimi olmayan bir uygulama kuruyordu ### v1.0.26: Bildiği Ama Söylemediği - **Derleme hatası hangi komutun bozuk olduğunu hiç söylemiyordu.** Panel "Tanımsız komut: yazım hatası olabilir ya da paketi yüklenmemiş" deyip susuyordu, oysa günlük suçluyu bir alt satırda adıyla yazıyor. O satırı okuyan kol "yalnız satır numarası bilinmiyorsa" koşuluna bağlıydı ve motor `-file-line-error` ile çağrıldığı için satır numarası her zaman biliniyor, yani koşul hiç sağlanmıyordu. Gerçek boru hattında beş belgeyle ölçüldü: 6 hatanın 0'ı bağlam taşıyordu. Aynı koşu her hatanın panelde **iki kez** listelendiğini de gösterdi, çünkü betik hata bloğunu iki kez basıyor ve tekrarı kimse ayıklamıyordu; 14 gerçek şablonda panel 163 satırdan 64'e indi ve kaybolan ayrı hata olmadı - **Artık paketi de söylüyor.** Tanımsız bir ortam ya da komut çoğu zaman bir `\usepackage` uzaklıktadır ve cevap tek kelimedir. Ölçülmüş iki harita eklendi: uygulamanın bildiği 79 ortamın 43'ü, kendi oluşturduğu boş belgede yok; tamamladığı 382 komut adının 44'ü orada tanımsız. Her satır gerçek derlemeyle iki yönde denendi ve bu, akla yatkın iki tahmini eledi: `amsthm` `theorem` ortamını tanımlamıyor (`\newtheorem` gerekiyor) ve `subfig` `subfigure` ORTAMINI vermiyor (`subcaption` veriyor). Dört komutun cevabı paket değil: `\chapter`, `\frontmatter`, `\mainmatter` ve `\backmatter` belge sınıfından geliyor ve `article` ile başlayan bir Türkçe tez tam bu duvara tosluyor - **Eksik harf uyarısı zararı 35 kat küçük gösteriyordu.** XeLaTeX ya da LuaLaTeX ile `[T1]{fontenc}` birleşimi Türkçeye özgü dört harfi sessizce düşürüyor; derleme başarıyla bitiyor, harfler PDF'te yok. Uyarı kaç harfin düştüğünü sayıyor ama betik o satırları sayaca gelmeden tekilleştiriyordu, yani sayı "kaç farklı karakter" oluyordu. 140 düşen harf içeren bir belgede panel "4 karakter" diyordu. Artık 140 diyor ve kaç farklı harf olduğunu da yazıyor - **Kaynakça sessizce çöküyordu.** bibtex biçem dosyasını ya da `.bib`i açamadığında, veya `.bib` sözdizimi bozuk olduğunda derleme yine başarıyla bitiyor ve kaynakça boş kalıyor. Betik bibtex çıktısını "error" ve "warning" kelimeleriyle süzüyordu; bibtex'in asıl tanısı ise bunların hiçbirini kullanmıyor: "I couldn't open style file", "I found no database files", "Illegal end of database file". Geriye kalan tek şey "(There were 2 error messages)" özeti oluyordu, mesajlar olmadan. Dört bozuk kurulumda ölçüldü; birinde panele tek satır bile ulaşmıyordu. Aynı süzgeç biber ve bibtex için iki ayrı yazımla duruyordu, artık tek - **İngilizce belge Türkçe sözlükle denetleniyordu.** Yazım dili `babel` bildiriminden okunuyor ve `british` ile `en-GB`, uygulamanın ne sözlüğü ne de seçicide girdisi olan bir dile gidiyordu; sonuçta hiçbir şey seçilmiyor ve denetim o an seçili dille koşuyordu. babel'in kendi 28 İngilizce adıyla ölçüldü: 5'i doğru çözülüyor, 2'si boşluğa gidiyor, 21'i hiç tanınmıyordu (`ukenglish`, `canadian`, `australian`, `en-AU`...). Üç gerçek İngilizce şablonda panel 4642, 1944 ve 1333 bulgudan 95, 21 ve 34'e indi - **Klasör adında boşluk varsa Markdown çıktısında görseller kayboluyordu.** CommonMark ve GitHub biçiminde bağ hedefinde boşluk olamaz, satır görsel yerine düz metin basılır; GitHub ve VS Code önizlemesi böyle davranıyor. pandoc'un kendi okuyucusu hoşgörülü olduğu için gözden kaçıyordu. Türkçe projeler her gün "Ölçüm Çalışması" gibi klasörlerde duruyor. Aynı turda öteki üç dışa aktarma biçimi de ölçüldü ve temiz çıktı - **Dizin ve sözlük araçlarının süzgeci tersine çalışıyordu.** Sağlıklı koşuda içeriği yalnızca "0 warnings" olan sarı bir "makeindex uyarıları" bloğu çıkıyor, buna karşılık makeindex'in **reddettiği** (ve dizininizden düşen) bir girdi hiçbir iz bırakmıyordu: araç bunun için uçbirime hata satırı basmıyor ve sıfırla çıkıyor. Ölçüt artık sayının sıfır olmaması. Üç kol üç ayrı süzgeç kullanıyordu, artık tek - **Ortam Denetimi kendine "derleme zincirinin tamamı" diyip üç aracı atlıyordu.** `bibtex`, `makeindex` ve `makeglossaries` derleme betiği tarafından çağrılıyor ama hiç sorulmuyordu; üçünün de eksikliği sessiz: başlık basılıyor, altı boş kalıyor. `makeglossaries` ayrıca tek başına eksik olabiliyor, çünkü motorlardan başka bir paketten geliyor. Denetim artık `makeglossaries-lite`ın da aynı işi gördüğünü biliyor; Perl'siz kurulumda olan tam budur - **Her gün karşılaştığınız küçük şeyler.** Türkçe adlı bir görsel anlaşılmaz bir etiket üretiyordu (`Ölçüm Değerleri.png` → `fig:l-m-De-erleri`) ve F2, tablo sihirbazının kendi ürettiği etiketleri yeniden adlandırmayı reddediyordu; `İstanbul` yazınca Hızlı Dosya Aç dosyayı bulamıyordu; eski kodlamalı bir belge hiç kaydedilemiyordu; DOI ile çekilen başlıktaki `%` kaynakça girdisini sessizce kesiyordu; tezin ön maddesi anahat panelinde görünmüyordu; ve önsöz ayrı bir dosyadayken motor yanlış sinyallerden seçiliyordu - **3923 test** (v1.0.25'te 3664). Bu tur tek bir sınıfa harcandı: doğru yazılmış ama gerçek boru hattıyla hiç beslenmeyen mekanizma, ve uygulamanın geri kalanının veremeyeceği bir şeyi vaat eden liste. Her kusur yazılmadan önce ölçüldü, yazıldıktan sonra yeniden ölçüldü, her birinin yanında bir gerileme testi var ve her test düzeltme bilerek bozularak düşerken görüldü. O denetimlerden biri, bir kabuk desenini Python'un düzenli ifade motoruyla okuyan bir kapıyı ortaya çıkardı ### v1.0.25: Uyarı Çıkmadan - **PDF'te tıkladığınız yer.** Ters arama (PDF'te tıkla, kaynağa git) `synctex edit` birden çok kayıt döndürdüğünde sonuncusunu alıyordu; ileri yön aynı durumda ilkini alıyor ve gerekçesi kaynağında yazılı. 30 gerçek `.synctex.gz` üçlüsünden üretilen 143 noktada ölçüldü: 18 nokta çok kayıt döndürdü ve 18'inin 18'inde ilk ile son farklıydı. İstenen satırdan sapmanın ortalaması 245.1 satırdan 6.6'ya, en büyüğü 19114'ten 283'e indi; dosyada olmayan bir satıra gönderen nokta 2 idi, artık yok. 458 satırlık bir belgede son kayıt 19213. satırı gösteriyordu. Aynı taramada iki eksik daha çıktı: tıklanan nokta synctex'e tam sayıya kırpılarak veriliyordu (bir punto kayma), ve projeniz WSL'in kendi dosya sisteminde duruyorsa ters arama Windows'un açamayacağı bir yol döndürüyor, editörde hiçbir şey olmuyordu - **Bayat SyncTeX verisi sessizce kullanılıyordu.** Ön koşul yalnız dosyanın varlığına bakıyordu; PDF'ten eski bir `.synctex.gz` varsa synctex eski yerleşime göre cevap veriyor ve hiçbir uyarı çıkmıyordu. Ulaşılabilir yol üretildi: `derle.sh` geçici dizinde derleyip `.gz`yi kopyalıyor, motor `.gz` üretmezse kopyalama sessizce atlanıyor ve eski dosya yerinde kalıyor. Belgenin kendi `\synctex=0` ataması bunu komut satırı bayrağına rağmen yapabiliyor. Eşik ölçümden geldi: 30 gerçek çiftte `.gz` ile PDF arasındaki fark en çok 1.4 saniye ve hiçbiri negatif değil; 2 saniyelik pay FAT/exFAT için, 30 çiftin 30'unda yanlış alarm yok - **Kesilen bir yazma kaynakçanızı sıfırlayabiliyordu.** `.bib`e ekleme normalde dosyanın sonuna yazıyor, ama yeni girdi dosyanın kendi kodlamasına sığmazsa (DOI ile gelen kayıtlarda olağan) dosyanın tamamı yeniden yazılıyordu ve o yol `wb` kullanıyordu, yani açar açmaz boşaltıyordu. Hata enjeksiyonuyla üretildi: önce `.bib` 0 bayta düşüyor ve girdi gidiyordu, sonra 115 bayt ve girdi yerinde. Aynı turda kaynakça okuma yolu dış kehanetlere karşı ölçülüp temiz çıktı: 22 gerçek `.bib` `biber --tool` ile karşılaştırıldı, 306 anahtarın 306'sı aynı; gerçek `bibtex` ve `plain.bst` ile zorunlu alan uyarılarında fazladan uyarı 0, kaçırılan uyarı 0 - **Kelime sayısı düz yazı olmayanı sayıyordu.** Kehanet dışarıdan geldi: TeX Live'ın `texcount`u, 132 gerçek şablonda. Ortanca oran 1.06 ama kuyruk ağırdı, en uçtaki dosyada texcount'un 15 katı. Üç kaynak çıktı ve üçü de bu depoda başka bir yerde zaten biliniyordu: satır içi `\verb` (940 sahte kelime), çizim ortamları (717), `@` içeren komut adları (701). Toplamda 159839 kelimenin %1.5'i, ama dağılımı değil yoğunluğu önemli: tikz'li bir soru kâğıdında sayı ikiye katlanıyordu, 589 yerine 1224. Üçüncü bir kehanet, basılmış PDF, kimin haklı olduğunu söyledi: 57 belgenin 56'sında biz PDF'e texcount'tan daha yakınız - **Türkçe bir kelimeyi desen kipinde aradığınızda yarısı bulunmuyordu.** Düz metin kipinde v1.0.24'te kapatılan eksik desen kipinde ayakta kalmıştı. Aynı belge, aynı sorgu, yalnız "Desen" kutusu farklı: `ç/Ç`, `i/İ`, `ö/Ö`, `ü/Ü` çiftleri katlanmıyor, `ğ/Ğ` ile `ş/Ş` katlanıyordu. `üçgen` sorgusu 3 eşleşmenin 1'ini buluyordu. Üç yol da aynı eksik listeyle çalışıyordu; en kötüsü "Tümünü Değiştir", çünkü belge yarım değişiyor ve etiket yaptığı değişikliği doğru sayıyordu - **Aynı değişiklik için iki kez sorulması.** Dosya dışarıdan değişince çıkan kutu modal ve dakikalarca açık kalabiliyor. "Diskten Yükle" dediğinizde güncel içerik yükleniyor ama kaydedilen özet diyalog açılmadan önceki hâle ait kalıyordu, yani arabellek diskle birebir aynıyken uygulama onu değişmiş sayıyordu. Kardeş kol ("Kendiminkini Koru") bu dersi zaten biliyordu; asimetri tek koldaydı - **3664 test** (v1.0.24'te 3632). Bu turun çoğu SyncTeX'te geçti ve yüzey uçtan uca tarandı; düzeltilemeyen tek sınır da kaynağına yazıldı: `lscape` ile çevrilen sayfalarda SyncTeX döndürme öncesi yerleşimi bildiriyor. Her düzeltme yazılmadan önce ölçüldü, yazıldıktan sonra yeniden ölçüldü ve yanındaki gerileme testi, düzeltme bilerek bozulunca düştüğü görüldükten sonra kabul edildi ### v1.0.24: Kuralın Öbür Yarısı - **Türkçe bir kelime aradığınızda hiçbir şey bulunmuyordu**, hem de iki ayrı yerde. `Ctrl+F` harf duyarsız kipte Türkçe harfleri hiç katlamıyordu: `şekil` sorgusu `Şekil`i, `istanbul` sorgusu `İstanbul`u bulmuyordu; editör ile "Projede Ara" iki ayrı motor kullanıyor ve yalnız biri bunu biliyordu. PDF'in içinde de aynısı: `fontenc` yüklemeyen belgeler aksanlı harfleri iki ayrı glif basıyor, yani `öğrenci` sayfa metninde `¨o˘grenci` olarak duruyor. Kopyalama yolu bunu v1.0.23'ten beri onarıyordu ama arama yolu pdfium'a hâlâ ham sorguyu veriyordu. 58 gerçek PDF, kendi kaynaklarına karşı ölçüldü: kaynakta geçen 642 Türkçe kelimenin 471'i bulunuyordu, artık 523'ü bulunuyor ve daha önce bulunan tek bir kelime bile kaybolmuyor. Vurgu da doğru karakterlere oturuyor, 717 gerçek eşleşmede denetlendi - **Tablo sihirbazı açtığınız tabloyu yeniden yazıyordu**. Var olan bir `\begin{tabular*}` bloğunu açıp Tamam demek onu `\begin{tabular}`a çeviriyor, genişlik argümanını düşürüyor ve gerçek kolon belirtimini veriymiş gibi ilk hücreye yazıyordu. 39 şablondaki 194 gerçek tablo bloğunda ölçüldü: 8 `tabular*` bloğunun 8'i de böyle bozuluyordu, 10 `tabularx` bloğunun 9'u kendi genişliğini sessizce kaybediyordu (`0.97\textwidth` yerine `\linewidth`). `>{\columncolor{layer7!30}}` gibi iç içe süslü parantez taşıyan bir kolon belirtimi ise hiç okunamıyordu, o da tablonun gövdesine düşüyordu - **Dışa aktarma arkasında bir şeyler bırakıyordu**. `\graphicspath` yalnızca ana dosyada tek satıra yazıldığında okunuyordu; sınıf dosyasında ya da birkaç satıra yayılmış hâlde bildirilen görsel yolları bulunamıyordu. DOCX çıktısında, şablonun tanımlamadığı bir stile işaret eden tablo var olan bir stile yönlendirilmek yerine SİLİNİYORDU; 16 gerçek şablonda ölçüldü. Şekil başlığı içindeki atıf Markdown çıktısında ham `[@anahtar]` olarak kalıyordu, oysa aynı atıf gövde metninde çözülüyordu - **Renklendirme kendi dosyanız hakkında yanlış şey söylüyordu**. Komut argümanı içindeki `%` yorum sayılmıyordu; satır içi `\verb|...|` gövdesi de LaTeX kodu gibi renkleniyordu, yani `\verb|$x$|` belgenin geri kalanında matematik rengi açıyor, `\verb|%|` satırın gerisini yoruma çeviriyordu. 133 gerçek şablonda 617 satır içi `\verb` üzerinde ölçüldü: önce 1'i doğru renkleniyordu, sonra 615'i; kalan 2 tanesi gerçek yorum satırının içinde - **Çökme kurtarması boşuna korkutuyordu**. Ctrl+S'e basıyordunuz, ardından uygulama ölüyordu ve bir sonraki açılışta zaten kaydedilmiş belge için "kaydedilmemiş değişiklik bulundu" diyordu. Satır sonlarını indirgeme kuralı iki yerde ayrı yazılmıştı ve ikisi `\r\r\n` üzerinde ayrışıyordu; o dizi bu uygulamanın eski sürümlerinin diske yazdığı bir hasar. 132 gerçek şablonda ölçüldü: önce 129 yanlış uyarı, şimdi hiç yok; gerçekten kaydedilmemiş içerik ise denenen 396 durumun hepsinde hâlâ yakalanıyor - **Kuralı duymayan iki yarı daha**. Derleme günlüğü belgenin pdfTeX gerektirdiğini söylediğinde öneri size lualatex'e geçmenizi söylüyordu, yani tam tersini; çünkü motor adını tanıyan desen ile onu karşılığına çeviren tablo ayrı ayrı yazılmıştı. Dosya ağacından derlenen bir belge için verilen kabuk erişimi izni menüden geri alınamıyordu. Yazım denetimi denetlememesi gereken iki bölgeyi denetliyordu ve kırpık bir `.aff` sözlük dosyası hiç onarılmıyordu, yani etkilenen kurulumlarda sözlük hiç yüklenmiyordu - **İndirdiğiniz dosyalar artık imzalı bir derleme kanıtı taşıyor**, yani bir sürüm dosyasının gerçekten bu depodan ve bu iş akışı koşusundan geldiğini, bu projenin kendisi hakkında söylediklerinden bağımsız olarak doğrulayabiliyorsunuz. Dosyalar hâlâ kod imzalı değil ve SmartScreen ilk çalıştırmada yine uyaracak; doğrulama komutu yukarıdaki indirme bölümünde - **3632 test** (v1.0.23'te 3586). On üç düzeltme ve neredeyse hepsi aynı biçimde: bir kural ölçülüp öğrenilmiş ve tek bir yere yazılmış, aynı kurala muhtaç olan ikinci yer ondan hiç haberdar olmamış. Bu yüzden bu turda kusurlar değil sınıfın kendisi arandı: kopya sabit listeleri, ayar anahtarlarını, kısayol kayıtlarını ve çeviri kataloğunu birbirine karşı denetleyen betikler yazıldı. O taramaların dördü temiz çıktı ve temiz olarak raporlandı; çıkmayanlar yukarıdaki düzeltmeler. Her düzeltme yazılmadan önce ölçüldü, yazıldıktan sonra yeniden ölçüldü, yanında bir gerileme testiyle geliyor ve her test düzeltme bilerek bozularak düştüğü görüldükten sonra kabul edildi ### v1.0.23: Sizin Yazmadığınız Değişiklik - **Otomatik kaydetme geldi** ve iki gerçek veri kaybı onunla birlikte kapandı. Kirli sekmeler, yolu olan dosyalar için, seçtiğiniz aralıkta (varsayılan üç dakika) sessizce kaydediliyor; zamanlayıcıdan modal kutu açılmıyor ve derleme tetiklenmiyor. İki kural ölçümle eklendi: diskten silip "Sekmede Tut" dediğiniz dosya diske geri YAZILMIYOR (yoksa sildiğinizi sandığınız dosya dosya ağacında, git durumunda ve derleme çıktısında geri geliyordu), ve dosya dışarıdan değişip "Kendiminkini Koru" dediyseniz otomatik kaydetme o dosyayı ATLIYOR. İkincisi ölçüldü ve ağırdı: dıştan gelen değişiklik (ortak yazar, dal değişimi, senkron istemcisi) üç dakika içinde sessizce yok oluyordu. "Koru" kararı "arabelleğim kalsın" demek, "diski ez" demek değil - **Silme ve yazma yanlış hedefe gidiyordu**. Klasör değiştirdiğinizde Sürüm Geçmişi listesi eski projenin sürümlerini göstermeye devam ediyordu ve o satırdan "Tüm geçmişi sil" demek YENİ projenin `.git`ini çöp kutusuna yolluyordu; ekranda gördüğünüz geçmiş ise yerinde kalıyordu, onay metni de klasör adını yazmıyordu. DOI ile kaynak eklerken onay kutusunda vazgeçmek diskte boş bir `.bib` bırakıyordu. Kesilen bir yazma kullanıcı sözlüğünü kırpıyordu. "Klasör Aç"ta iptal etmek, önceki sekmenin kaydedilmemiş işaretini düşürmüş oluyordu - **F2 belgenin BASTIĞI metni değiştiriyordu**. Etiket ya da atıf anahtarını yeniden adlandırmak `verbatim` / `lstlisting` bloğundaki ve satır içi `\verb` içindeki aynı anahtarı da yazıyordu; oysa orası çalışan LaTeX değil, belgenin basılı kod örneği. Otuz dokuz gerçek şablonda ölçüldü, sekiz dosya etkileniyordu: bir tez şablonunda gerçek `\label{fig:Electron}`i değiştirmek örnekteki satırı da değiştiriyor ve kullanıcı çıktının başkalaştığını görmüyordu - **Dışa aktarma kaynakçasız çıkıyordu**. `.bib` dosyasını bulma iki yerde yazılıydı ve iki uygulama birbirinin düzeltmesini taşımıyordu: dışa aktarma tarafı `\input` zincirini ve sınıf dosyasını taramıyordu. Gerçek pandoc ile uçtan uca ölçüldü, iki tez şablonunda kaynakça hiç bulunmuyordu ve çıktıda yalnız liste eksik değildi, atfın kendisi de boş bir yere basılıyordu ("...PGFPlots ." gibi). Türkçe belgenin `.md` çıktısında kaynakça başlığı İngilizce kalıyordu. Dışa aktarma başarısız olduğunda mesaj, sildiğimiz geçici bir dosyanın adını ve WSL yolunu yazıyordu; artık kendi dosyanızın adını, satır ve sütunla birlikte tek satırda söylüyor - **Uygulama kendisiyle çelişiyordu**. `@article(anahtar, ...)` biçiminde bir `.bib` girdisi (BibTeX'in ikinci geçerli biçimi) Kaynakça sekmesinde görünüyor ama referans denetimi aynı anahtara "tanımsız atıf" diyor, Alt+tık gitmiyor, F2 `.bib` girdisini atlayıp belgede sarkan atıf bırakıyordu. Aynı sınıftan: tanınmayan `\autocite` gibi sekiz atıf komutu tamamlamada, Alt+tık'ta ve F2'de kaçıyordu; referans denetimi kod örneklerindeki anahtarları gerçek sanıp düzeltilemeyen bulgular basıyordu; kelime sayacı LaTeX sözdizimini ve referans anahtarlarını kelime sayıyordu; Projede Ara kendisiyle örtüşen eşleşmeleri ayrı sonuç sayıp `\\` sorgusunda gerçek şablonlarda 2725 satır gösteriyordu, doğrusu 2629 - **Arayüz önceki belgeyi göstermeyi bıraktı**. Sekme değişince bul çubuğundaki sayaç eski belgenin sayısını gösteriyordu; son sekme kapanınca durum çubuğu kapanan belgenin satır ve kodlama bilgisini tutuyordu; anahat panelinde ham LaTeX komutları ve boş satırlar görünüyordu; kapanmamış tek bir `$` belgenin geri kalanını matematik rengine boyuyordu - **Sessizce hiçbir şey yapan yollar kapandı**. Sürükleyip bıraktığınız dosya yok sayılıyordu; tablo "Hizala" sekme yokken sessizce dönüyordu; "Dosya Yolunu Kopyala" kaydedilmemiş sekmede boş dönüyordu; PDF "Farklı Kaydet" başarısız olduğunda hiçbir şey söylenmiyordu; yazım denetiminin iki kolu (sözlüğe ekleme ve öneri uygulama) sessizce düşüyordu; derlemeyi siz iptal ettiğinizde log "hata" yazıyordu - **Küçük ama her gün görünenler**: PDF'ten kopyalanan Türkçe metinde aksanlar ayrık geliyordu (`¨o˘grenci`); PDF arama çubuğunun ikonları tema değişince eski rengi koruyordu; "Farklı Kaydet" düğmesinin etiketi kırpılıp "Farklı Kayd" görünüyordu, ölçtük, düğme 110 piksel ve Türkçe etiket 112 istiyor - **3586 test** (v1.0.22'de 3082). Otuz düzeltme ve bir yeni özellik; hepsi kodu dosya dosya okumaktan çıktı, hiçbiri bir bildirimden gelmedi. Her biri yazılmadan önce ölçüldü, yazıldıktan sonra yeniden ölçüldü, yanına gerileme testi eklendi ve her test, düzeltme bilerek bozularak gerçekten düştüğü doğrulanarak sınandı. Bu turlarda denenen kusur mutasyonlarının hepsi yakalandı; yanmaması gereken kontrol mutasyonları da yanmadı ### v1.0.22: Bakmadığınız Belge - **Uygulamanın yanlış belge üzerinde çalıştığı beş yol**, hepsi kapandı, hepsi önce ölçüldü. Yazım düzeltmesi, bulgunun geldiği dosyaya değil o an önünüzde duran dosyaya gidiyordu: A'yı denetleyin, B'ye geçin, paneldeki bulguya sağ tıklayıp bir düzeltme seçin; B değişiyor, A'ya dokunulmuyor ve durum çubuğu başarılı diyordu. Derleme bölümleri diskten okuyor ama yalnız cari sekme kaydediliyordu, yani bir bölümü düzenleyip ana dosyadan derlemek eski metinden bir PDF üretiyor, hata satırları da artık orada olmayan içeriği gösteriyordu. Satıra gitme, hedef açılamadığında imleci cari belgede oynatıyordu. Üç dosya seçip açmak yalnız ilkini açıyordu, sessizce, oysa Linux masaüstü girdisi bir liste bildiriyor. Sürümleme, sürüm adını sormadan önce bütün açık sekmeleri diske yazıyordu; adı iptal etmek dosyalar yazılmış ve sürüm alınmamış hâlde bırakıyordu - **Geri gelen dosya tek kelime edilmeden eziliyordu**: bir dosya diskten kaybolduğunda uygulama sekmeyi tutmayı öneriyor, kaydedilmemiş iş varken doğru cevap da bu, ama sonra o yolu izlemeyi bırakıyordu. Ölçüldü: dosyayı silin, sekmeyi tutun, bir süre çalışın, dosya bir dal değişiminin geri getirdiği gibi farklı içerikle geri gelsin; hiçbir şey sorulmuyordu ve ilk Ctrl+S geri geleni eziyordu. Artık klasör izleniyor ve geri gelme, diskteki her değişiklik gibi bildiriliyor - **Farenin tek tekerlek tıkı tablonun bir kolonunu siliyordu**. Qt'nin sayı ve açılır kutuları tekerleğe, yalnızca imlecin altında olmakla yanıt veriyor; sihirbazın ızgarası da tekerlekle kaydırılıyor. Tek tıkla ölçüldü: kolon sayısı beşten dörde düştü ve o hücreler gitti, ortam `tabular`dan `tabularx`a geçti, hizalama ortadan sağa kaydı. Hiçbiri istenmemişti ve bu pencerede geri alma yok. Kutular artık odakta değilken tekerleği yok sayıyor - **İki çökme ve kabuğa ulaşan bir bağlantı**: yardımcı komut yokken "Klasörde Aç" uygulamayı öldürüyordu, sürümden geri yükleme de dosya yazılamadığında öldürüyordu, çünkü bir Qt slot'unun içindeki yakalanmamış istisna süreci bitiriyor ve öbür sekmelerdeki kaydedilmemiş işi de götürüyor. PDF içindeki bir bağlantı sistem işleyicisine süzgeçsiz gidiyordu, yani indirilen bir belge bir web adresinden başkasını gösterebilirdi; artık yalnız `http`, `https` ve `mailto` açılıyor - **Derlenmeyen belgeler**: süslü parantez taşıyan bir hücre ve yüzde işareti ya da ters bölü taşıyan bir etiket, LaTeX'in reddettiği bir tablo üretiyordu. Gerçek pdflatex ile ölçüldü: etikette denenen altı karakterin beşi belgeyi derlenemez yapıyor. Eklenen bir görsel derlenmeyen bir belge üretiyordu. Açılması yarıda kesilen bir sözlük kalıcı olarak bozuk kalıyordu; sıkıştırılmış sözlüğü üreten paketleme adımı da kesilince yarım bir dosya bırakabiliyordu - **PDF görünümü yerinizi koruyor**: yakınlaştırmak okuduğunuz yeri kaybediyordu; iç bağlantı yatay konumu hesaplayıp atıyordu; sayfa büyütülünce arama hedefi ekranın dışında kalıyordu; Ctrl+F zaten açık olan PDF arama çubuğunu kapatıp siliyordu; Ctrl+tık ters aramanın yanına bir de bağlantı tıklıyordu; çift tıklama kelimeyi baştaki boşlukla birlikte seçiyordu - **Arayüz yerinizi kaybetmeyi bıraktı**: dosya ağacının her yenilenmesi açtığınız klasörleri kapatıp seçimi siliyordu, yani bir klasörün içinde dosya yaratmak az önce yarattığınız dosyayı gizliyordu; dışarıdan gelen her değişiklik de siz çalışırken aynısını yapıyordu. Açık belgenin bağımlılık listesi de aynı anda siliniyordu. Dosya diyalogları hangi projenin açık olduğunu bilmiyordu. Silinen dosya uyarıları üst üste yığılabiliyordu. Bir kez verilen kabuk erişimi izni geri alınamıyordu. Sekme sağ tık menüsünün iki dalı yanlış iş yapıyordu. SyncTeX, araç kurulu değilken "eşleşme bulunamadı" diyordu - **3082 test** (v1.0.21'de 2563). Otuz altı düzeltme, yine bir bildirimden değil kodu dosya dosya okumaktan çıktı. Her biri yazılmadan önce ölçüldü, yazıldıktan sonra yeniden ölçüldü, her birinin yanında bir gerileme testi var ve her test, düzeltme bilerek bozularak gerçekten düştüğü doğrulanarak sınandı. Kuruluma giren 99 kullanılmayan Qt dil kataloğu da çıkarıldı ### v1.0.21: Satır Satır Denetim ve Belgeyi Bozan On İki Yol - **Çalışmanızı uyarı vermeden bozan on iki yol**, hepsi kapandı. Yazım önerisi uygulanınca çevresindeki metin bozuluyordu. Eski kodlamayla kaydedilmiş bir belge dışa aktarılırken sessizce bozuluyordu, DOI ile kaynak eklemek de `.bib` dosyasına aynısını yapıyordu. Kaydetmek symlink'i koparıyor, ilk satır uzun olduğunda CRLF satır sonunu düşürüyordu. Yorum kaldırma, yorum olmayan bir yüzde işaretini siliyordu. Bul ve değiştir, size gösterdiği eşleşmeyi değil başkasını değiştiriyordu. Sihirbazın sınırlarını aşan bir tablo satır ve sütun kaybediyordu, üstelik haber vermeden. Yanlış kılıf seçmek bloğu siliyordu. Klasörü yeniden adlandırmak, açık sekmelerini dosyalar silinmiş gibi kapatıyordu. Kaydedilmemiş bir sekme, sizin baktığınız sekmenin üzerine yazıyordu. Açık dosya başka bir sürücüdeyken sürüm eylemi uygulamayı öldürüyordu. Ctrl+V ile görsel yapıştırmak çökertiyordu - **Yazım denetimi artık gerçekten denetliyor**: sözlük doğrudan hedefine yazılıyordu ve yarıda kesilen bir yazma, hiç onarılmayan kırpılmış bir dosya bırakıyordu, çünkü güncellik ölçütü boyuta değil zaman damgasına bakıyordu. Üçte birine kırpılmış bir sözlükle ölçüldü: günlük on Türkçe kelimenin sekizi yanlış yazılmış sayılıyordu, yani özellik çalışıyor görünüp neredeyse her kelimenin altını çiziyordu. Yazma artık atomik. v1.0.20 ayrıca hiçbir paket denetiminden geçmeden çıkmıştı: yapıyı doğrulayan betik duruyordu ama onu çağıran hiçbir şey yoktu - **PDF görünümü**: yatay bir sayfadaki iç bağlantı, hedefinin 5864 piksel uzağına götürüyordu. Arama vurgusu sayfanın çizilmesini bekliyor, sonra da yakınlaştırınca kayboluyordu. Sayfa çizilirken fareyi hareket ettirmek arayüzü dondurabiliyordu. Aramayı ya da çizimi durdurmak belgeyi arkada açık bırakıyordu. Sunum modu ekranı doldurmuyor, dosya değişince de kapanmıyordu. Sağ tık menüsü tıkladığınız yerin çok uzağında açılıyordu - **Türkçe arayüzde İngilizce kalan menüler**: editörün sağ tık menüsü QScintilla'nın kendi kataloğundan, süzme kutularınınki Qt'nin kataloğundan besleniyor ve ikisi de hiç yüklenmiyordu. Artık ikisi de arayüz dilinde - **Verbatim blokları yorum gibi görünüyordu**: renk sönük griden ödünç alınıyordu. Yorum renginden uzaklığı gruvbox'ta 3, monokai'de 63, dracula'da 64 ölçüldü; bu projenin gözün ayırt edebildiği sınır olarak zaten 40'ı kullandığı ölçekte. Artık her tema ham kod için kendi rengini taşıyor, `\begin` ve `\end` de komut olarak renkleniyor, böylece bloğun nerede başlayıp bittiği görünüyor - **Derleme**: seçenekli `\usepackage[..]{fontspec}` hiç görülmüyordu, motor yanlış seçiliyordu. Kabuk erişimi izni derlenen belgeye değil proje köküne bağlıydı. "Tanımsız komut" ipucu, düşen komutu değil sağlam olanı gösteriyordu, çünkü günlük bağlam satırını tam suçlunun ardından kesiyor. Saran uyarılar yarım ayrıştırılıyor, hatalar yanlış dosyaya atfediliyordu - **Gezinme**: Ctrl+P'de dosya adını yazıp Enter'a basmak başka bir dosya açıyordu. Büyük harfli `.TEX` uzantılı dosyalar iki referans taramasında da atlanıyordu. Proje araması, sonuç listesi tam sınıra değdiğinde eksiksiz listeyi "kırpıldı" diye gösteriyordu - **Pencere küçük ekranlara sığmıyordu** ve uygulama, sistem dili ne olursa olsun dünyanın her yerinde Türkçe açılıyordu - **Anahat ve kelime sayımı kodu düz metin sanıyordu**: verbatim bloğunun içindeki örnek bölümler anahatta listeleniyor, kod bloğundaki bir `\end{document}` kelime sayımını yarıda kesiyordu - **2563 test** (v1.0.20'de 1874). Elli beş düzeltme, neredeyse hepsi bir bildirimden değil kodu dosya dosya okumaktan çıktı. Her birinin yanında bir gerileme testi var ve her test, düzeltme bilerek bozularak gerçekten düştüğü doğrulanarak sınandı ### v1.0.20: LaTeX'i Bilen Yazım Denetimi ve Açılmayan İki Yapı - **İstendiğinde yazım denetimi**: panelde Yazım sekmesi, dil seçici ve Denetle düğmesi. Türkçe ve İngilizce sözlükler uygulamanın içinde geliyor, hiçbir şey indirilmiyor ve ayrıca kurulması gereken bir şey yok. Siz istemeden devreye girmiyor: sözlük yüklenmiyor, ekranda kendiliğinden hiçbir şey değişmiyor, denetim ancak düğmeye basınca koşuyor. Sözlük ayrı bir iş parçacığında yükleniyor, o sırada arayüz donmuyor - **LaTeX'i biliyor**, zor kısım da tam olarak bu: düz bir denetleyici `\usepackage`, `\alpha`, `sec:giris` ve `ornek2024` hepsinin altını çizer ve araç kullanılamaz hale gelir. Önsöz denetlenmiyor, aksan makroları ürettikleri harf olarak okunuyor, `\section` ve `\caption` argümanları düz metin sayılırken `\label` ve `\cite` sayılmıyor, e-posta adresleri, bağlantılar, DOI'ler, tablo sütun belirteçleri ve kaynakça etiketleri dışarıda kalıyor. Yalnızca önsözü atlamak bir ders notu setinde 2533 bulguyu 1679'a indirdi; aksan işlemesi başka bir şablonda işaretlenen oranı yüzde 9.9'dan 4.8'e düşürdü - **İki dilli belgeler için ikinci sözlük**: Türkçe bir tezin İngilizce özeti, ya da tersi, baştan sona yanlış işaretleniyordu. "Bu belgede ikinci dil de var" kutusunu işaretleyince o bölümler de düzgün denetleniyor. İkinci sözlük bir kelimeyi ancak kendi diline ait görünüyorsa kurtarabiliyor, çünkü ters yön zararlı: Türkçe sözlük saf ASCII Latince kelimeleri kabul ediyor ve İngilizce bir belgede gerçek gürültüyü gizliyordu. Gerçek bir bildiride 424 bulgu 122'ye, bir ders notu bölümünde 214 bulgu 79'a indi - **Kendi sözlüğünüz**: bir kelimeye sağ tıklayıp öneri alabiliyor ya da sözlüğe ekleyebiliyorsunuz, eklenen kelimeler sonraki açılışlarda da duruyor. Öneriler önden değil istendiğinde hesaplanıyor, çünkü tek bir kelime bir saniyeye kadar sürüyor ve listenin tamamı paneli kilitlerdi - **Windows yapısı hiç açılmayacaktı**: güncelleme diyaloğunun ihtiyaç duyduğu bir modül paketleme hariç tutma listesindeydi, bu yüzden exe başlayıp günlüğe tek satır yazmadan hemen düşüyordu. Yayınlanmış v1.0.19 bundan etkilenmiyor; kusur tag atıldıktan sonra geldi. Aynı sınıf hata daha önce de bir kez yaşanmıştı, o yüzden hariç tutma listeleri artık pakete giren kodun gerçekten neyi import ettiğine karşı, iki platformda birden denetleniyor - **Linux AppImage temiz bir sistemde açılmıyordu**: yapım ortamında dört X11 kütüphanesi eksikti ve PyInstaller bulamadığını sessizce atlıyor. O paketler kurulu olmayan temiz bir Ubuntu 24.04'te v1.0.19 çekirdek dökümüyle çıkıyor; bu yapı çalışıyor. Qt platform eklentisinin bağımlılıklarından biri bile çözülemezse yayın artık duruyor - **XeTeX ile `\usepackage[T1]{fontenc}` birlikte Türkçe harfleri sessizce düşürüyor**: derleme başarılı bitiyor, PDF açılıyor, Türkçeye özgü dört harf orada olmuyor. Tek belgede ölçüldü: pdflatex ile 92 harf, bu birleşimle 37, satır kaldırılınca yine 92. Günlük `Missing character` diyor ve onu okuyan yoktu. Uyarı artık panele ulaşıyor, günlüğün taşıyabildiği binlerce satır yerine yazı tipi başına tek satır olarak, uygulanacak düzeltmeyle birlikte - **Okunamayan metinler**: Hakkında, Özellikler ve Ortam Denetimi pencereleri koyu temalarda beyaz zeminde kalıyordu, güncelleme diyaloğundaki Releases bağlantısı yedi temanın beşinde neredeyse görünmüyordu, sekme üzerine gelme dördünde okunmuyordu, soluk metin ve klasör yolu etiketi ise yedisinde birden eşiğin altındaydı. Hepsi kaynak koda değil çalışan uygulamaya bakılarak WCAG AA eşiğine karşı ölçüldü ve artık bir test yedi temayı birden tarıyor, yani bu sınıf geri gelemiyor - **Güncelleme diyaloğu sürüm notlarının yüzde 14'ünü gösteriyordu**: satır sonları çöktüğü için on üç madde tek paragrafa yapışıyordu, markdown başlığı ham görünüyordu ve metin cümlenin ortasında 500 karakterde kesiliyordu, devamı olduğunu söyleyen bir işaret de yoktu - **Büyük harfli `.TEX` uzantısı görmezden geliniyordu**: böyle adlandırılmış bir kök dosya dosya ağacında derlenemez sayılıyordu ve açıldığında motor algılama hiç koşmuyordu, yani bir önceki belgenin motoruyla derlenebiliyordu - **WSL eksikken ortam denetimi** artık sonraki adımı da söylüyor, çünkü taze kurulan bir WSL'de hiç TeX bulunmuyor. "WSL kurulu değil" ile "WSL kurulu ama dağıtım yok" durumları da ayrıldı; ikisi de aynı komutu veriyordu ve ikinci durumda o komut çıkışsız bir yol - **1874 birim testi** (v1.0.19'da 1702). Tanıtım sayfasının artık `/tr/` adresinde Türkçe sürümü var ### v1.0.19: Kaynakça Sekmesi ve Kırılmayı Deneyen Bir Denetim - **Kaynakça sekmesi**: `.bib` dosyasındaki girdiler artık sütunlara ayrılmış olarak listeleniyor (anahtar, tür, yazar, yıl, başlık), tıklayınca girdinin kendisine gidiliyor. Elle yazılmış `\bibitem` listeleri de okunuyor, yani `thebibliography` kullanan belgelerde de çalışıyor. Sekme boş kaldığında sebebini söylüyor: `.bib` bulunamadı mı, dosya boş mu, yoksa hiçbir girdi ayrıştırılamadı mı. Panel iki katına kadar büyütülebiliyor - **DOI ile kaynak ekleme**: DOI yapıştırıyorsunuz, kaynak doğrudan `.bib` dosyasına ekleniyor (önce Crossref, olmazsa doi.org). `.bib` dosyası yoksa üç durum ayrı ele alınıyor: proje klasöründe hiç yok, belge `\bibliography` ile birini gösteriyor ama dosya diskte yok, ya da birden fazla aday var. Önceden üçü de aynı belirsiz hatayı veriyordu - **Mükerrer anahtar ve eksik zorunlu alan denetimi**: aynı anahtarın iki kez tanımlanması ve girdi türünün gerektirdiği alanların eksik olması artık denetim listesinde çıkıyor. İkisi de derlemeyi durdurmayan, sessizce yanlış kaynakça üreten hatalardı - **Dosya ağacı**: klasörler artık her zaman görünüyor (filtreye takılıp kaybolabiliyorlardı), şekil olarak kullanılan PDF'ler listeleniyor ama derleme çıktısı gizli kalıyor, ağaç üzerinden yeniden adlandırma ve yeni dosya/klasör oluşturma eklendi - **Bul/değiştir**: Ctrl+H ile açıldığında değiştir alanı görünmüyordu. Büyük/küçük harf duyarlılığı, tam kelime ve düzenli ifade seçenekleri de eklendi - **`-shell-escape` artık kendiliğinden açılmıyor**: minted gibi paketlerin ihtiyaç duyduğu bu bayrak, `.tex` dosyasının içinden rastgele komut çalıştırmaya izin veriyor. Şimdi proje başına bir kez soruluyor ve cevabınız hatırlanıyor. İnternetten indirilen bir şablon artık siz farkında olmadan komut çalıştıramıyor - **Düzenli ifade araması uygulamayı kalıcı olarak dondurabiliyordu**: `(a+)+$` gibi bir desen Linux'ta arayüzü 90 saniyeden uzun süre, iptal edilemeyecek biçimde kilitliyordu. Windows'ta aynı desen 3 ila 4 saniye sürüyor, ilk ölçüm yalnız orada yapıldığı için tehlike küçük görünmüştü. Böyle desenler artık aranmadan önce reddediliyor. Derin iç içe gruplar (`((((...))))`) ise tüm süreci çökertiyordu - **Büyük `.bib` dosyalarının ayrıştırılması karesel karmaşıklıktaydı**: 100 bin satırlık bir kaynakça 152.91 saniye sürüyordu, artık 1.83 saniye - **PDF sayfa ölçeğine piksel tavanı**: A0 boyutunda bir sayfayı yakınlaştırmak 1031 MB bellek istiyordu, tavandan sonra 211 MB - **Döndürülmüş sayfalarda koordinatlar kayıyordu**: `/Rotate 90` taşıyan bir sayfada arama vurgusu negatif y'ye, yani sayfanın görünmeyen dışına düşüyordu; metin seçimi, bağlantı tıklaması ve SyncTeX geri araması da yanlış noktayı gösteriyordu. Dört dönüş açısı da artık tek bir dönüşüm tablosundan geçiyor - **Çok sayfalı belgede tıklama yanlış sayfaya gidiyordu**: pencere darken ikinci sayfaya tıklamak birinci sayfaya çözümleniyordu. SyncTeX geri araması, metin seçimi ve bağlantı tıklaması aynı hatayı paylaşıyordu; pencere genişken doğru çalışması tesadüftü, sayfalar yatayda ortalandığı için - **İlk derlemede PDF baştan açılıyor**: yeni bir dosya açıp derleyince önizleme belgenin sonuna atlıyordu. Artık imlece dokunmadıysanız ilk sayfa gösteriliyor, imleci taşıdıysanız SyncTeX o satıra gidiyor - **Sessiz bozulmalara karşı**: bozuk bir kurtarma dosyası artık açılışı engellemiyor, Son Açılanlar menüsündeki bellek sızıntısı kapatıldı, güncelleme denetimi ve DOI sorgusu gelen veriyi doğrulamadan kullanmıyor, çok büyük bir dosyayı açmadan önce uyarı çıkıyor - **1702 birim testi** (v1.0.18'de 1271). Bu sürümdeki düzeltmelerin büyük kısmı, uygulamayı kırmayı deneyen bağımsız bir dış incelemeden geldi; yirmiyi aşkın bulgunun tamamı ya kapatıldı ya da gerekçesiyle belgelendi ### v1.0.18: Kaybolmayan İş, Bulunabilen Proje - **Çökme kurtarma**: uygulama öldürülür, çökerse ya da elektrik giderse kaydedilmemiş arabellekler tamamen gidiyordu. Kirli sekmeler artık 30 saniyede bir uygulama veri dizinine yazılıyor; bir sonraki açılışta geri yüklemek isteyip istemediğiniz soruluyor, temiz kapanışta dosyalar siliniyor. Anlık görüntünün kendisi de atomik yazılıyor ve diskteki içerik zaten aynıysa hiç sorulmuyor. Gerçek bir süreç düzenleme sırasında öldürülerek uçtan uca doğrulandı - **Klasörde ara (Ctrl+Shift+F)**: proje klasöründeki TÜM `.tex`/`.bib`/`.cls`/`.sty` dosyalarının İÇİNDE arıyor — sekmede açık olmayanlar dahil. Ctrl+F yalnızca açık sekmede arıyordu, yani adı değişen bir komutu otuz bölümde takip etmek dosyaları tek tek açmak demekti. Sonuçlar `dosya:satır` ve eşleşen metinle listeleniyor, tıklayınca oraya gidiliyor. Büyük/küçük harf eşleştirme seçilebilir, aranan klasör kutunun yanında yazıyor ve tarama arka planda koşuyor — büyük projede arayüz donmuyor. Türkçe noktalı **İ** doğru eşleşiyor: düz küçültme beş gerçekçi Türkçe sorgudan dördünü kaçırıyordu, çünkü Unicode `İ`yi `i` artı birleşen noktaya çeviriyor - **Belgeyi sessizce bozan üç yol**: içinde `\\` geçen bir hücreyle tablo hizalama, projenin yalnız bir kısmına erişilebilirken etiket yeniden adlandırma, ve kabuğun yeniden yorumlayacağı bir dosya adıyla dışa aktarma. Üçü de artık derlenmeyen bir dosya yazıp hiçbir şey söylemiyordu - **Başarılı derleme başarısız gösterilebiliyordu**: "bu PDF az önceki derlemenin ürünü mü" denetimi, WSL'in yazdığı zaman damgasını Windows tarafında okunan saatle karşılaştırıyordu. WSL2'nin saati ana makineye göre kayıyor ve yaklaşık bir saniyelik sıçramalarla senkronlanıyor; bu yüzden tertemiz bir PDF düzenli olarak bayat sayılıyordu — log `[basarili]` diyor, panel "başarısız — 0 hata" diyor, önizleme temizleniyordu. Gerçek derlemelerle ölçüldü: önce 40 turun 32'si, sonra 40'ın 40'ı başarılı - **Kapanmamış `$` yakınında düzenleyince renklendirme bozuluyordu**: artımlı lexer'ın satır durumu önbelleği iki ayrı yoldan bayatlıyor, matematik içindeki bir satır sonradan düz metin sanılıyordu. Kodu okuyarak değil, rastgele düzenleme testiyle bulundu. Böyle bir belgede yazmak artık 9 kat da hızlı — lexer açık bloğun ortasından devam ediyor, baştan taramıyor - **Satıra Git (Ctrl+G) hiç açılmıyordu**: bir üst satırdaki `_` adlı yerel değişken çeviri fonksiyonunu gölgeliyor, dialog açılmak yerine hata veriyordu. Menü öğesi de aynı şekilde ölüydü - **Anahat bölümleri düşürüyordu**: `\chapter[Kısa]{Uzun Başlık}` — tezlerin standart kullanımı — hiç görünmüyordu; iç içe küme içeren başlıklar da kırpılıyor ya da tamamen kayboluyordu. Başlık artık desenle değil ayraç sayarak okunuyor, yani keyfi derinlik çalışıyor ve kaçışlı kümeler de doğru işleniyor - **PDF görüntüleyici yük altında çöküyordu**: pdfium çağrılarının tamamı artık tek bir kilitten geçiyor. Render, arama ve bağlantı çözümü, iş parçacığı güvenli olmayan bir kütüphaneye farklı thread'lerden erişiyordu; derlemeden sonra kaydırırken tüm süreç düşebiliyordu. Referans denetimi de büyük bir tezde arayüzü 1.7 saniye dondurmuyor artık — 20 ms - **Türkçe yollarda SyncTeX**: proje yolunda cp1254'ün karşılayamadığı bir karakter varsa ileri/geri arama sessizce hiçbir şey yapmıyordu. Zaman aşımı da soğuk WSL başlangıcı için dardı; makineyi açtıktan sonraki ilk atlama çoğu zaman görünür bir sebep olmadan düşüyordu - **Sıkıştırılmış exe betiği hiç çalışmamış**: satır devamının içine konan bir yorum PyInstaller'a argüman olarak geçiyor ve komutu orada kesiyordu — ne hariç tutma, ne sıkıştırma, ne de derlenecek betik. Paketleme artık tek yerde tanımlı ve yerel yapı, yayınlananın birebir aynısını üretiyor - **Linux yapısı artık sabitlenmiş bir yorumlayıcı gömüyor**: AppImage, CI imajının o gün taşıdığı Python ile (3.10) derleniyordu; Windows yapısı 3.12 kullanıyor ve belgeler 3.12+ diyordu - **1271 birim testi**, Linux'un yanı sıra Windows'ta da koşuyor ### v1.0.17: "Birlikte Aç" Nihayet Açıyor - **"Birlikte Aç" artık dosyayı gerçekten açıyor**: uygulama `.tex` için kendini kaydediyordu — ikon, sağ tık menüsü, hepsi — ama ikinci açılış yalnızca "zaten çalışıyor" denip reddediliyor, dosya hiç açılmıyordu. Editör açıkken bir `.tex`'e çift tıklamak işe yaramıyordu. İkinci örnek artık yolu çalışan pencereye iletiyor; dosya yeni sekmede açılıyor ve pencere öne geliyor. Çalışan örnek takılmışsa hiçbir şey olmaması yerine size durum bildiriliyor - **Linux'ta ikinci kullanıcının uygulamayı hiç açamaması giderildi**: tek örnek kilidi geçici dizinde sabit bir adla duruyordu; bu dizin Windows'ta kullanıcıya özel ama Linux'ta paylaşımlı (`/tmp`). Çok kullanıcılı bir makinede — laboratuvar, ortak iş istasyonu — ikinci deneyen doğrudan reddediliyordu, çünkü kilit hâlâ birinci kişinin canlı sürecine aitti. Kilit ve soket adı artık kullanıcıyı içeriyor - **Başlatıcı betik argüman iletmiyordu**: `LaTeX Editor.bat` (kaynaktan çalıştırırken kullanılan) dosya yolunu tamamen düşürüyordu, uygulamaya hiçbir şey ulaşmıyordu. Yalnız kaynaktan çalıştırmayı etkiliyordu; paketlenmiş sürüm etkilenmiyordu - **Türkçe Windows'ta konsol logu**: log satırlarının onunda `→` geçiyor ve cp1254 bu karakteri kodlayamıyor. Her biri logging handler'ının içinde hata verip sessizce yutuluyor, satır konsola hiç yazılmıyordu. Dosya logu her zaman doğruydu - **İki sessiz hata artık iz bırakıyor**: dosya ağacındaki derlenebilirlik denetimi ve tablo sihirbazındaki etiket taraması düşerse görünmeden geçiyordu - **İngilizce arayüz**: hâlâ Türkçe görünen dört diyalog çevrildi, çeviri aramasındaki ölü dal kalktı - **Özellikler listesi**: Ortam Denetimi eksikti, eklendi; tek-instance açıklaması yeni davranışı anlatıyor - **Testler artık Windows'ta da koşuyor**: paket pratikte yalnız Linux'taydı — 13 başarısız ve bir sonsuz asılma vardı. Asılmanın sebebi kodlama vermeden dosya yazan bir testti; uygulama haklı olarak "bu dosya UTF-8 değil" diyaloğunu açıyor ve tıklama bekliyordu. 950 birim testi, iki platformda da yeşil - **950 birim testi** ### v1.0.16: Kaydedilmemiş Emeğin Korunması - **Silinen dosya artık kaydedilmemiş değişikliklerinizi de götürmüyor**: editörde açık bir dosya diskten silindiğinde (dal değiştirme, temizlik betiği, senkron istemcisi) sekme sessizce kapanıyor ve arabellekteki her şey onunla gidiyordu. Kaydedilmemiş değişiklik varsa artık seçenek sunuluyor — Farklı Kaydet, Sekmede Tut, Sekmeyi Kapat — ve varsayılan, emeğinizi kurtaran seçenek - **Sürümleme, kendi git deponuza yazacağı zaman artık haber veriyor**: "Sürümle" ayrı bir geçmiş tutmaz — kayıtları mevcut deponuza, bulunduğunuz dala işler — ve "Tüm Geçmişi Sil" o gerçek `.git` klasörünü (dallar, etiketler, uzak bağlantılar dahil) çöp kutusuna taşır. Klasör sizin deponuzsa ya da bir deponun içindeyse ilk sürümlemeden önce bir kez uyarılıyorsunuz; silme diyalogları da neyin gittiğini açıkça söylüyor. Editörün kendi kurduğu klasörlerde hiç sorulmuyor - **Başka editörlerin `.tex` ikonu artık ezilmiyor**: Windows'ta uygulama, `.tex` uzantısının bağlı olduğu programın (TeXstudio, VS Code…) kaydettiği ikonu kendi ikonuyla değiştiriyordu; dosyalar bu uygulamanın ikonuyla görünüp o programda açılıyor ve bu geri alınmıyordu. Artık yalnız kendi ikonunu ayarlıyor - **Daha temiz kapanış**: arka planda sürüm alınırken ya da dışa aktarma sürerken pencere kapatılırsa işin bitmesi bekleniyor; ortasında kesilen bir `git` kaydı depoyu yarım bırakabiliyordu - **İngilizce arayüz tamamlandı**: dört diyalog (UTF-8 olmayan dosya uyarısı, "dosya diskte değişti" isteminin iki hâli ve sürüm geri yükleme onayı) hâlâ Türkçe görünüyordu — çeviri çıkarıcısındaki bir kusur yüzünden hiç kataloğa girmemişlerdi. Çıkarıcı yeniden yazıldı; artık bir arayüz metninin sessizce çeviri dışına düşmesini bir test engelliyor - **931 birim testi** ### v1.0.15: Daha Akıcı Düzenleme ve Güvenilir Çıktılar - **Sürümle (Ctrl+K) artık dondurmuyor**: sürüm anlık görüntüsü arka planda alınıyor; büyük klasörlerde saniyeler süren dulwich kaydı sırasında arayüz kilitleniyordu. İş sürerken ikinci Ctrl+K reddediliyor, durum çubuğu 'Sürüm alınıyor...' gösteriyor - **Yazma akıcılığı büyük belgelerde**: sözdizimi renklendirmesi belge baytlarını önbelleğe aldı; her tuş vuruşunda tüm belge yeniden kopyalanmıyordu artık değil (330KB belgede stil maliyeti ~1.9x hızlandı). Matematik bölgesi de artık tema fontunu alıyor - **İpucu çöküşü düzeltmesi**: bazı hata ipuçları (listings, kapanmamış ortam) gösterilirken panel yarıda kesiliyor ve Log sekmesi boş kalabiliyordu; şablonlardaki gerçek LaTeX parantezleri artık güvenli işleniyor - **Yeni ipucu: Listings + Türkçe babel**: 'language ansi of c undefined' hatasının nedeni ve çözümü (language={[ANSI]C}) artık uygulama kendisi söylüyor - **Dışa aktarma sağlamlığı**: beklenmedik hatalar artık dışa aktarmayı kalıcı kilitlemiyor; Markdown dışa aktarımında 'width' geçen metin örnekleri yanlışlıkla silinmiyor (yalnız görsel boyut nitelikleri düşürülüyor); pandoc hataları tam ayrıntısıyla loglanıyor - **Dosya değişimi bildirimleri sıraya giriyor**: 'dosya değişti' diyaloğu açıkken gelen diğer değişiklikler artık üst üste pencere yığmıyor, diyaloğun ardından sırayla geliyor - **Anahat tercihleri korunuyor**: elle daralttığınız/genişlettiğiniz bölümler artık her düzenlemede geri geliyor değil, düzenlemeler arasında da korunuyor - **Sürüm Geçmişi sekmesi**: adı 'Geçmiş'ten 'Sürüm Geçmişi'ne değişti (derleme sekmeleriyle karışmıyor) - **Hafiflemeler**: uzun oturumlarda önbellek birikmesine sınır; bağlantılı dosya denetimi tek okumaya indi; \input'lu büyük projelerde sekme geçişleri hızlandı - **881 birim testi** ### v1.0.14: Büyük PDF'lerde Akıcı Görüntüleyici - **Sayfa render'ı arka planda**: eskiden her scroll/zoom adımında görünür sayfalar UI'yi bloke ederek render ediliyordu; artık arka plan işçisi render ediyor, sayfalar placeholder'dan dolduğu gibi görünür. Hızlı kaydırmada arayüz hiç durmaz (181 sayfalık belgede ölçüldü: adım başına 0 ms bloklama) - **Bellek üst sınırı**: sayfa görseli önbelleği artık 256MB ile sınırlı; yüksek zoomda (~40MB/sayfa) eskiden ~800MB'a çıkabiliyordu - **PDF araması arka planda ve iptal edilebilir**: arama tüm dokümanı UI'yi dondurarak tarıyordu; artık arka planda koşar, yeni sorgu girilince süren arama sayfa sayfa iptal edilir, sayaç 'Aranıyor...' gösterir - **Daha temiz kapanış**: render/arama işçileri uygulama kapanışında düzgün durdurulur - **861 birim testi** ### v1.0.13: Güvenilirlik Düzeltmeleri - **Derleme çıktısında kaybolan öneriler**: çıktı chunk sınırlarında bölünen ANSI renk dizisi "eksik paket" önerisinin kaybolmasına, bölünen UTF-8 de Türkçe çıktıda bozuk karaktere yol açıyordu; artık taşımalı tamponla birleştiriliyor - **Çift sayfa görünümü**: link tıklaması ve arama sonuçları yanlış konuma kaydırıyordu; konumlar SyncTeX ile aynı yoldan hesaplanıyor - **Windows'ta farklı sürücüler**: resim sürükle-bırak/yapıştırma artık göçmüyor (göreli yol kurulamayınca mutlak yol kullanılıyor) - **Son Açılanlar**: açılışta geri yüklenen oturum sekmeleri listeyi yeniden sıralamıyor; liste kullanıcının gerçek açışlarını taşıyor - **Klasör açma**: kayıt soruları HİÇBİR sekme kapanmadan önce soruluyor; iptal ya da başarısız kayıt yarım kapanmış sekmeler bırakmıyor - **Küçük düzeltmeler**: yeni dosyada başarısız kayıt sahte yollu sekme açmıyor; dışa aktarmada meşgul kontrolü hedef penceresinden önce; kapanışta güncelleme kontrolü ve SyncTeX işçisi bekleniyor (nadir çıkış çökmesi); PDF çift tıklamada zamanlayıcı sızıntısı - **CI**: derle.sh entegrasyon testleri artık gerçek TeX Live ile koşuyor; release test kapısına ve tag/sürüm eşleşme denetimine bağlandı - **850 birim testi** ### v1.0.12: Ortam Denetimi ve Güvenilirlik Düzeltmeleri - **Ortam Denetimi (Yardım menüsü)**: WSL, lualatex/pdflatex/xelatex, biber, pandoc, synctex ve pygmentize durumunu tek ekranda gösterir; eksik araca kurulum komutunu önerir, "Raporu Kopyala" düğmesi destek taleplerine eklenebilir rapor üretir. Kontroller arka planda koşar (WSL tek sorguyla denenir), arayüz bekletilmez. Hiç TeX motoru yoksa README'nin tek komutluk tam kurulumu önerilir - **Derleme hatasından tek tık**: derleme eksik paket/motor/Pygments/WSL yüzünden düştüğünde Öneriler sekmesine "⚙ Ortam Denetimi'ni Aç..." satırı düşer; Windows'ta WSL hiç yokken artık `wsl --install` önerisi de gelir - **minted kurulum zinciri tamamlandı**: `pygmentize`'ı sağlayan `python3-pygments`, `texlive-latex-extra`'nın yalnız önerdiği (Suggests) bir paket olduğundan apt ile hiç kurulmuyordu; README kurulum listelerine eklendi, "Missing Pygments output" hatasında derleyici artık `python3-pygments` kurulumunu öneriyor - **Veri kaybı düzeltmesi**: kayıt başarısız olduğunda (disk dolu, izin hatası...) değiştirilmiş sekme yine de kapanıp içeriği kayboluyordu; artık sekme açık kalıyor, çıkış iptal ediliyor - **--watch düzeltmesi**: `derle.sh --watch` ilk başarısız derlemede tümüyle sonlanıyordu; artık hatalardan sonra da dinlemeye devam ediyor - **Derleme yarışı düzeltmesi**: derleme sürerken yeniden derleme tetiklenirse (otomatik modda Ctrl+S) süren derlemenin hataları yanlış dizine çözülüyordu; meşgulken yeni derleme artık temiz biçimde reddediliyor - **Daha hızlı dosya taraması**: değişiklik izleme yürüyüşü ve Ctrl+P listesi artık node_modules, venv, `__pycache__` gibi dizinlere inmiyor (dosya ağacıyla aynı kurallar); WSL /mnt/c klasörlerinde belirgin hızlanma - **835 birim testi** ### v1.0.11 — minted Desteği Düzeltildi - **minted'li belgeler yeniden derleniyor**: otomatik `-shell-escape` tespiti yalnız `\usepackage{minted}` arıyordu; özel `.sty`/`.cls` içinden `\RequirePackage{minted}` ile yüklenen (veya yalnız `\begin{minted}` ortamı kullanılan) paketler kaçırılıyor, "You must invoke LaTeX with the -shell-escape flag" hatasıyla derleme düşüyordu. İki desen de artık algılanıyor - **minted + izole çıktı dizini**: minted 2.x kod parçasını çıktı dizinine yazıp pygmentize'a çalışma dizininden okutuyor; bu yüzden shell-escape açık olsa bile "Missing Pygments output" ile derleme başarısız oluyordu. Her motor geçişinde geçici bir sembolik bağ iki tarafı köprülüyor ve kaynak klasörde hiçbir geçici dosya kalmıyor (pdflatex, xelatex ve lualatex ile doğrulandı) - **808 birim testi** ### v1.0.10 — Hata Düzeltmeleri - **Tablo sihirbazı**: `\begin{table}` kılıfı içindeki tabloyu düzenlemek artık iç içe (geçersiz) `\begin{table}` üretmiyor; kılıf bütünüyle değiştiriliyor, caption/label taşınıyor. Geniş tablo yüklerken 3 kolon ötesi hizalama kayboluyordu, artık korunuyor; büyük CSV'ler satır kutusuna dokununca sessizce kırpılmıyor (sınırlar 1000 satır / 30 kolona çıkarıldı) - **Diyaloglar ve kısayollar**: Esc dialog'ları yeniden kapatıyor; dialog açıkken Ctrl+K / Ctrl+T yeniden tetiklenmiyor (uygulama düzeyi tuş filtresi modal dialog'lara karışmıyor artık) - **Sürümleme**: dosyayı sürümden geri yükledikten hemen sonra sahte "dosya diskte değişti" uyarısı çıkmıyor; "sürümü sil" / "tüm geçmişi sil" açık dosya olmadan da çalışıyor; klasör yokken mesaj daha anlaşılır - **Çeviri**: İngilizce arayüzde Öneriler sekme başlığı çevriliyor - **806 birim testi** ### v1.0.9 — Sürümleme, Tablo Sihirbazı ve Büyük Hızlanma - **Sürümleme (Ctrl+K)**: tüm değişiklikleri adlandırılmış anlık görüntüye kaydet; Geçmiş sekmesinden renkli farkları gör, dosyayı eski sürümden geri yükle (kodlama ve imleç korunur), eski içeriği panoya kopyala, son sürümü veya tüm geçmişi sil (çöp kutusuna). Git bilgisine gerek yok; gömülü dulwich kullanır, klasörde standart `.git` oluşur (gerçek git/GitHub ile uyumlu, hiçbir şey kurulmaz) - **Tablo sihirbazı (Ctrl+T)**: hücrelere yazarak, CSV yükleyerek veya mevcut LaTeX tablo kodunu yapıştırarak tabular/tabularx/longtable üret (booktabs, hizalama, caption + çakışmasız otomatik label); imleç tablonun içindeyse düzenler; Düzenle > Tabloyu Hizala kolonları hizalar - **Hata mesajlarına insan dili**: yaygın ~16 hata/uyarı kalıbına kısa açıklama + çözüm eki (tanımsız komut, matematik modu, Word akıllı tırnakları, çift label, "tekrar derleyin" uyarıları...) - **`% !TEX root`**: çok dosyalı projelerde alt dosyadan (bölüm) derle; kök belge otomatik bulunur, motor kökün içeriğinden algılanır, açık kök sekmesi kaydedilir - **Derleme sonrası otomatik atlama**: başarılı derleme bitince PDF, imlecin olduğu yere SyncTeX ile kaydırılır - **19x daha hızlı yazma**: artımlı sözdizimi renklendirme (kanıtlı erken çıkış + bytes-uzayı tarama); 300KB belgede tuş başına ~58ms → ~3ms, 1MB'de ~210ms → ~11ms - **Arayüz donmaları giderildi**: pandoc dışa aktarma ve açılıştaki WSL kontrolü arka planda; klasör açılışı artık her .tex dosyasını okumuyor - **Kritik düzeltme (Windows)**: kaydetme, satır sonlarını bozuyordu (`\r\r\n`; derlemeyi 32 hatalık kaskatlarla kırıyordu). Açılışta stil algılanır, kayıtta birebir korunur; ayrıca dışa aktarma sıfır bozulma garantisiyle bayt-düzeyinde geri yükleme - **799 birim testi** ### v1.0.8 — AppImage XeLaTeX Düzeltmesi - **Hata düzeltme (Linux/AppImage)**: AppImage içinde XeLaTeX `GLIBCXX_3.4.32 not found` hatasıyla düşüyordu — gömülü (eski) `libstdc++`, `LD_LIBRARY_PATH` üzerinden sistem ikililerine sızıyordu. Derleme zinciri (`derle.sh`), pandoc dışa aktarma ve SyncTeX artık sistem araçlarını başlatmadan önce gömülü kütüphane yollarını temizliyor - **659 birim testi** ### v1.0.7 — Hızlı Açma, Yeniden Adlandırma ve Otomatik Denetim - **Editör**: hızlı dosya açma (Ctrl+P): proje klasöründeki dosyalar (.tex/.bib/.cls/.sty) bulanık filtreyle; yaz, ok tuşlarıyla gez, Enter ile aç - **Klasörde ara (Ctrl+Shift+F)**: proje klasöründeki TÜM .tex/.bib/.cls/.sty dosyalarının İÇİNDE arar — sekmede açık olmayanlar dahil (Ctrl+F yalnız açık sekmede arar). Sonuçlar dosya:satır ve eşleşen metinle listelenir, tıklayınca oraya gidilir. Büyük/küçük harf duyarlılığı seçilebilir; Türkçe noktalı İ doğru eşleşir. Tarama arka planda koşar, büyük projede arayüz donmaz. - **Editör**: `\cite` anahtarı veya `.bib` girdisi üzerinde F2 ile kaynakça anahtarını doküman, `\input` zinciri ve `.bib` girdisinin kendisinde toplu yeniden adlandır; `\bibitem` (el ile kaynakça) girdileri de desteklenir (çoklu `\cite{a,b}` segmentleri destekli; açık sekmeler tek undo adımı alır; çift isim engellenir). Label'da F2 eskisi gibi çalışır - **Editör**: isteğe bağlı derleme sonrası referans denetimi (Derle menüsü anahtarı): her derlemeden sonra bulgular, derleme hatalarını silmeden panelin sonuna eklenir; eskisi gibi tıklanabilir; durum çubuğuna, derleme sonucunun yanına sıfır kategorileri atlayan tek satır özet düşer - **656 birim testi** ### v1.0.6 — Tamamlamalar, Referans Denetimi, Yeniden Adlandırma ve XeLaTeX - **Editör**: ayarlar penceresi (Görünüm > Editör Ayarları): tab genişliği, font boyutu ve satır kaydırma; oturmlar arası kalıcı, açık sekmelere ve yenilerine uygulanır - **Motor**: XeLaTeX desteği: araç çubuğunda üçüncü motor, `derle.sh`'de `--xelatex` bayrağı, magic comment ve paket bazlı algılama (`mathspec`, `xeCJK`, `xltxtra`, `requires XeLaTeX`), motor eksikse `sudo apt-get install texlive-xetex` önerisi - **Editör**: `\input{` / `\include{` tamamlaması: projedeki `.tex` dosyalarını önerir (göreli yol, uzantısız), alt dizinler dahil - **Editör**: `\includegraphics{` tamamlaması: projedeki resim dosyalarını (`png/jpg/jpeg/pdf/eps`) önerir; resim yapıştırma/sürükle-bırak ile aynı yol kuralı (ana dosyaya göre, uzantılı); `[width=...]` argümanlı kullanımı da tanır - **Editör**: `\label`/`\ref` üzerinde F2 ile anahtarı doküman ve `\input` zincirinde toplu yeniden adlandır (çoklu `\cref{a,b}` segmentleri destekli; açık sekmeler tek undo adımı alır, disk dosyaları atomik yazılır; çift isim engellenir) - **Editör**: referans denetimi (Düzenle > Referansları Denetle): tanımsız `\ref`/`\cite` anahtarları, kullanılmayan `.bib` girdileri ve kullanılmayan `\label`lar, derlemeden bağımsız lokal analiz; çok dosyalı (`\input`) farkında, yorumları ve `\nocite{*}` gözeten; bulgular tıklanabilir (kullanım satırına, `.bib` girdisine ya da label'a atlar) - **615 birim testi** ### v1.0.5 — Tanıma Git, Hata İşaretleri ve Editör İyileştirmeleri - **Editör**: doküman-farkında tamamlama: `\ref`/`\eqref`/`\pageref` ve `\cite`/`\citep`/`\citet` (ve benzerleri) için dokümandaki (ve `\input` zincirindeki) `\label` anahtarları ile `.bib` giriş anahtarlarını önerir; `\cite{key1,key2}` çoklu anahtar destekli - **Editör**: panodan resim yapıştırma (Ctrl+V): resmi `media/`'a kaydeder ve `\begin{figure}` bloğu ekler (sürükle-bırak diyaloğunu paylaşır) - **Editör**: derleme hataları gutter'da işaretlenir; F4 / Shift+F4 ile hatalar arasında dolaşılır (çok dosyalı belgeleri destekler) - **Editör**: `\ref`/`\cite` üzerine Alt basılı tıkla → tanıma git (`\label`, `.bib` veya `\bibitem` girişi); `.bib` girdisine tıkla → makalede `\cite` edildiği yere. Çok dosyalı `\input` ve çok anahtarlı `\cite` destekli - **Editör performansı**: büyük belgelerde daha hızlı yazım (sözdizimi lexer'ı ve `\begin`/`\end` vurgu sıcak yolları optimize edildi) - **Hata düzeltme**: çok satırlı `verbatim` / `\[...\]` bloğu içinde düzenleyince artık renklendirme bozulmuyor - **549 birim testi** ### v1.0.4 — Editör ve Dışa Aktarma İyileştirmeleri - **Editör**: `\[...\]` / `\(...\)` math renklendirme, Ctrl+Space + ortam adı tamamlama, eşleşen `\begin`/`\end` vurgulama, akıllı girintileme, yorum/verbatim algılayan tamamlama, dinamik satır numarası margin - **Dosya güvenliği**: atomik kayıt (çökmede truncation yok) ve UTF-8 / eski-Türkçe kodlama tespiti (sessiz bozulma yok) - **Dışa aktarma**: abstract ve başlık artık tüm formatlarda; kaynakça HTML/DOCX/TXT/Markdown'da çözülüyor; Plain Text artık gerçek plain text; docx Word uyumluluk düzeltmeleri - **480+ unit test** ### v1.0.3 — Uyumluluk Düzeltmesi - **PDF yer imleri**: pypdfium2 outline API değişimine uyum (`PdfBookmark` → `PdfOutlineItem`) - **Linux paketleme**: AppImage `.zsync` delta güncelleme dosyası ve adlandırma düzeltmeleri ### v1.0.2 — Dağıtım Altyapısı - **Bağımlılıklar**: tekrarlanabilir derlemeler için sürüm sabitleme - **Linux paketleme**: AppImage kurala uygun adlandırma + delta güncellemeler için `updateinformation` - **Dokümanlar**: dinamik sürüm rozetleri, sürümden bağımsız referanslar ### v1.0.1 — Motor ve Derleme İyileştirmeleri - **Motor seçimi**: `% !TEX program` magic comment desteği (örn. `% !TEX program = pdflatex`) - **Derleme watchdog**: 120s zaman aşımı, takılı kalan derlemeler iptal edilir - **Rerun döngüsü**: çapraz referanslar çözülene kadar yeniden derler (maks. 5 geçiş) - **Kaynakça**: `biber`/`bibtex` eksikse kurulum komutu önerilir - **Hata düzeltme**: uyarı bağlamlı `l.NNN` satırları artık derleme hatası sayılmıyor ### v1.0.0 — İlk Public Sürüm - **Public lansman**: İlk halka açık sürüm - **Lisans**: GPL-3.0 (PyQt6 GPL uyumlu) - **Dağıtım**: GitHub Releases — Windows portable `.exe` + Linux `.AppImage` (GitHub Actions ile otomatik derleme) - **Otomatik güncelleme kontrolü**: Yardım menüsünden veya açılışta GitHub Releases API ile sürüm kontrolü - **480+ unit test**: engine_detector, input_parser, log_parser, paths, latex_utils, exporter, derle_sh, i18n, imports, autopair, latex_lexer, pdf_indicator, wordcount, updater - **Özellikler**: Sözdizimi renklendirme, PDF önizleme, SyncTeX, 7 tema, çoklu dil (TR/EN), otomatik parantezleme, PDF yer imleri/arama/seçme, sunum modu, çift sayfa, akıllı motor algılama, görsel sürükle-bırak --- ## Özellikler - **LaTeX sözdizimi renklendirme** — komutlar, yorumlar, matematik, ortamlar - **PDF önizleme** — yan panelde anlık PDF görüntüleme, yakınlaştırma - **Otomatik derleme** — Ctrl+S ile kaydet ve derle; derleme bitince PDF imlecin olduğu yere otomatik kaydırılır (SyncTeX) - **`% !TEX root` desteği** — çok dosyalı projelerde alt dosyadan (bölüm dosyası) derleyin; kök belge otomatik bulunur ve derlenir - **Tablo sihirbazı (Ctrl+T)** — hücrelere yazarak veya CSV yükleyerek tabular üret (booktabs, hizalama, caption/label); mevcut tabloyu düzenler ve kolonları hizalar - **Sürümleme (Ctrl+K)** — tüm değişiklikleri adlandırılmış anlık görüntüye kaydet; Sürüm Geçmişi sekmesinden farkları gör, dosyayı eski sürümden geri yükle. Git bilgisine gerek yok (gömülü dulwich; standart .git oluşur, dış araçlarla uyumlu) - **Üçlü motor desteği** — lualatex (varsayılan), pdflatex ve xelatex - **Proje yönetimi** — klasör açma, dosya ağacı, çoklu dosya sekmeleri - **Hata görüntüleme** — derleme hataları ve uyarıları ayrı sekmelerde - **7 tema** — Koyu, Açık, Solarized Light, Dracula, Monokai, Nord, Gruvbox - **Çoklu dil** — Türkçe ve İngilizce arayüz, yeni dil eklemek için sadece .ts dosyası çevirmek yeterli - **PDF yer imleri** — bölüm/başlık yapısını yan panelde gösterme - **PDF arama** — Ctrl+F ile metin arama, vurgulama, navigasyon - **PDF metin seçme** — sürükleyerek seçme, Ctrl+C ile kopyalama - **Sayfaya sığdır** — genişliğe veya tam sayfaya otomatik zoom - **Çift sayfa görünümü** — yan yana iki sayfa --- ## Masaüstü Uygulaması ### Gereksinimler #### Windows - **Python 3.12+** — [python.org](https://www.python.org/downloads/) - **pip** paket yöneticisi (Python ile birlikte gelir) #### WSL (LaTeX derleme için) ```bash sudo apt-get update sudo apt-get install texlive-base texlive-binaries texlive-latex-base \ texlive-latex-extra texlive-latex-recommended texlive-lang-european texlive-luatex texlive-xetex \ texlive-fonts-extra texlive-science texlive-bibtex-extra texlive-font-utils \ texlive-extra-utils biber texlive-publishers texlive-humanities texlive-pstricks python3-pygments pandoc ``` ### Kurulum #### Yöntem 1: Exe (Tavsiye Edilen) Python kurulumu gerektirmez. `dist/` klasöründen `LaTeX Editor.exe` dosyasını istediğiniz klasöre kopyalayın ve çift tıklayarak çalıştırın. `derle.sh` betiği exe'nin içine gömülüdür, ayrıca kopyalamaya gerek yok. **Boyut:** yayınlanan exe ~50 MB (PyQt6, pypdfium2, send2trash dahil) **Exe'yi oluşturmak için:** `desktop/Exe Olustur.bat` dosyasına çift tıklayın. `dist/LaTeX Editor.exe` oluşur. Veya PowerShell'den (tek satır, Anaconda kullanıyorsanız standalone Python yolunu belirtin): ```powershell cd desktop & "C:\Users\\AppData\Local\Programs\Python\Python312\python.exe" -m PyInstaller --onefile --windowed --name "LaTeX Editor" --add-data "..\core;core" --add-data "gui;gui" --add-data "syntax;syntax" main.py ``` **UPX ile sıkıştırılmış exe (daha küçük boyut):** `desktop/Sikistirilmis Exe Olustur.bat` dosyasına çift tıklayın. UPX, exe dosyasını sıkıştırarak boyutunu küçültür. UPX kurulumu: 1. [UPX Releases](https://github.com/upx/upx/releases) sayfasından en son sürümü indirin 2. `upx/` klasörünü `desktop/upx/` altına çıkarın (`desktop/upx/upx.exe` olacak şekilde) 3. `Sikistirilmis Exe Olustur.bat`'ı çalıştırın UPX yoksa bat dosyası sıkıştırma olmadan normal exe oluşturur. Sonuç: `dist/LaTeX Editor.exe`. Bu bölümün tamamı yalnız Windows içindir (`.bat` dosyaları, UPX `upx.exe`). Linux AppImage olarak paketleniyor, aşağıdaki [Linux](#linux) bölümüne bakın. macOS için paketlenmiş bir yapı henüz yok, kaynaktan çalıştırılıyor. #### Yöntem 2: Kaynak Koddan **Python paketlerini yükle:** ```bash pip install -r desktop/requirements.txt ``` Dışa aktarma: Windows'ta `sudo apt-get install pandoc` WSL İÇİNDE, Linux'ta sistemde; macOS'ta `brew install pandoc`. Windows'ta dışa aktarma pandoc'u WSL içinde çağırıyor, yani Windows'un kendisine kurulan pandoc hiç kullanılmıyor. > **Not:** Anaconda kullanıyorsanız standalone Python kullanmanız gerekir: > ``` > C:\Users\\AppData\Local\Programs\Python\Python312\python.exe -m pip install -r desktop/requirements.txt > ``` **Uygulamayı başlat:** `desktop/LaTeX Editor.bat` dosyasına çift tıklayın. Veya PowerShell'den: ``` cd desktop & "C:\Users\\AppData\Local\Programs\Python\Python312\python.exe" main.py ``` ### Başka Bilgisayarda Dağıtım Başka bir bilgisayarda çalıştırmak için: | Gereken | Açıklama | |---------|----------| | `LaTeX Editor.exe` | Tek dosya, Python gerektirmez | | **WSL** | Windows 10/11'de WSL aktif olmalı | | **TeX Live** | WSL içinde: `sudo apt-get update && sudo apt-get install texlive-base texlive-binaries texlive-latex-base texlive-latex-extra texlive-latex-recommended texlive-lang-european texlive-luatex texlive-xetex texlive-fonts-extra texlive-science texlive-bibtex-extra texlive-font-utils texlive-extra-utils biber texlive-publishers texlive-humanities texlive-pstricks python3-pygments pandoc` | | **pandoc** | Dışa aktarma için: WSL içinde `sudo apt-get install pandoc` | Kurulum adımları: 1. WSL'i etkinleştir: `wsl --install` (PowerShell, yönetici olarak) 2. Ubuntu uygulamasını aç (veya PowerShell'de `wsl` yaz) ve yukarıdaki komutu çalıştırarak TeX Live'ı kur 3. `LaTeX Editor.exe`'yi masaüstüne kopyala, çift tıkla ### Linux #### Yöntem 1: AppImage (Tavsiye Edilen) Python veya bağımlılık kurulumu gerektirmez. **1. AppImage dosyasını indir:** ```bash chmod +x LaTeX_Editor_v*_Linux_x86_64.AppImage ./LaTeX_Editor_v*_Linux_x86_64.AppImage ``` **2. TeX Live kur (derleme için):** ```bash sudo apt-get update sudo apt-get install texlive-base texlive-binaries texlive-latex-base \ texlive-latex-extra texlive-latex-recommended texlive-lang-european \ texlive-luatex texlive-xetex texlive-fonts-extra texlive-science texlive-bibtex-extra \ texlive-font-utils texlive-extra-utils biber texlive-publishers \ texlive-humanities texlive-pstricks libxcb-cursor0 python3-pygments pandoc ``` > **Not:** `texlive-full` (~7 GB) yerine sadece gerekli paketler kurulur (~1.5 GB). Daha az paket kurmak isterseniz ihtiyacınıza göre kaldırabilirsiniz: | Paket | Boyut | Ne için gerekli | |-------|-------|----------------| | `texlive-base` | ~50 MB | Temel LaTeX (zorunlu) | | `texlive-binaries` | ~30 MB | lualatex, pdflatex (zorunlu) | | `texlive-latex-base` | ~20 MB | Temel paketler (zorunlu) | | `texlive-latex-recommended` | ~40 MB | Sık kullanılan paketler | | `texlive-latex-extra` | ~200 MB | Ek paketler (tcolorbox, minted vb.) | | `texlive-luatex` | ~30 MB | LuaLaTeX desteği | | `texlive-xetex` | ~20 MB | XeLaTeX desteği | | `texlive-fonts-extra` | ~300 MB | Ek fontlar | | `texlive-science` | ~50 MB | algorithm, siunitx vb. | | `texlive-bibtex-extra` + `biber` | ~30 MB | Kaynakça | | `texlive-publishers` | ~40 MB | IEEE, Elsevier şablonları | | `texlive-humanities` | ~10 MB | phonrule vb. | | `texlive-pstricks` | ~30 MB | PSTricks grafik | | `texlive-lang-european` | ~20 MB | Türkçe dahil Avrupa dilleri | | `texlive-font-utils` | ~5 MB | Font dönüştürme araçları | | `texlive-extra-utils` | ~5 MB | Ek araçlar | | `python3-pygments` | ~2 MB | minted kod renklendirme (pygmentize) | | `libxcb-cursor0` | ~1 MB | PyQt6 fare imleci desteği | **Minimum kurulum** (sadece temel derleme): ```bash sudo apt-get update sudo apt-get install texlive-base texlive-binaries texlive-latex-base \ texlive-latex-recommended texlive-luatex texlive-xetex libxcb-cursor0 ``` **AppImage oluşturmak için:** ```bash cd desktop ./build_appimage.sh ``` Sonuç: `dist/LaTeX_Editor_v*_Linux_x86_64.AppImage` #### Yöntem 2: Kaynak Koddan Python ve TeX Live kur: ```bash sudo apt-get install python3 python3-pip texlive-base texlive-binaries texlive-latex-base \ texlive-latex-extra texlive-latex-recommended texlive-lang-european texlive-luatex texlive-xetex \ texlive-fonts-extra texlive-science texlive-bibtex-extra texlive-font-utils \ texlive-extra-utils biber texlive-publishers texlive-humanities texlive-pstricks libxcb-cursor0 python3-pygments pandoc pip install -r desktop/requirements.txt ``` Çalıştır: ```bash cd desktop python3 main.py ``` ### macOS Python ve MacTeX kur: ```bash brew install python brew install --cask mactex pip3 install -r desktop/requirements.txt ``` Çalıştır: ```bash cd desktop python3 main.py ``` **.dmg ile (Apple Silicon):** bu bölüm yazıldıktan sonra çıkan sürümler `LaTeX_Editor_v*_macOS_arm64.dmg` içeriyor. Aç, uygulamayı Applications klasörüne sürükle, sonra indirme karantinasını bir kez kaldır: ```bash xattr -dr com.apple.quarantine "/Applications/LaTeX Editor.app" ``` Bu komut olmadan macOS uygulamayı açmıyor. Paket ad-hoc imzalı ama notarization yok, çünkü notarization ücretli bir Apple Developer ID istiyor; komut yalnızca tarayıcının indirmeye taktığı işareti siliyor, uygulamayı değiştirmiyor. Intel Mac'ler bu yapının kapsamında değil, yukarıdaki kaynaktan kurulumu kullan. --- ## Web Uygulaması (Deneysel — Dağıtılmıyor) > ⚠️ **Web sürümü deneysel/pasiftir.** ~14 sürüm geride, dağıtılmaz ve GitHub Releases'e dahil edilmez. Kaynak kodu `web/` altında referans için tutulur. Aktif geliştirme yalnızca masaüstü (`desktop/`) üzerinedir. Tarayıcı tabanlı LaTeX editörü. FastAPI backend + React/Monaco frontend. ### Backend ```bash pip install fastapi uvicorn python -m web.backend.run ``` Backend `http://localhost:8000` adresinde çalışır. ### Frontend ```bash cd web/frontend npm install npm run dev ``` Frontend `http://localhost:5173` adresinde çalışır. ### Özellikler - Monaco editor ile LaTeX sözdizimi renklendirme (Monarch tokenizer) - 162 komut autocompletion (`\` yazınca tetiklenir) - WebSocket ile gerçek zamanlı derleme çıktısı - PDF.js ile PDF önizleme, yakınlaştırma - Otomatik motor algılama (fontspec→lualatex, inputenc→pdflatex) - Tab bazlı dosya yönetimi, session kalıcılığı (localStorage) - VS Code tarzı koyu tema, menü bar, durum çubuğu - Uyarı tıklama ile ilgili dosyaya/satıra gitme --- ## Kullanım ### Temel İş Akışı 1. **Klasör Aç** butonuna bas veya `Ctrl+O` → .tex dosyalarının olduğu klasörü seç 2. Dosya ağacından `.tex` dosyasına **çift tıkla** → editörde açılır 3. **Ctrl+S** ile kaydet → otomatik derleme başlar 4. Sağ panelde **PDF** güncellenir ### Klavye Kısayolları | Kısayol | İşlev | |---------|-------| | `Ctrl+S` | Kaydet + Otomatik Derle | | `Ctrl+B` | Derle | | `Ctrl+N` | Yeni Dosya | | `Ctrl+O` | Klasör Aç | | `Ctrl+Shift+O` | Dosya Aç (Masaüstü) | | `Ctrl+Shift+S` | Farklı Kaydet (Masaüstü) | | `Ctrl+W` | Sekmeyi Kapat (Web) | | `Ctrl+Z` | Geri Al | | `Ctrl+Y` | Yinele | | `Ctrl+F` | Bul (Editör veya PDF) | | `Ctrl+H` | Bul ve Değiştir | | `Ctrl+Shift+F` | Klasörde Ara (tüm proje dosyalarının içinde arar) | | `Ctrl+C` | Kopyala (PDF'te metin seçiliyse) | | `Ctrl+/` | Yorum Satırı Yap/Kaldır | | `Ctrl+G` | Satıra Git | | `Esc` | Derlemeyi Durdur / Sunum Modundan Çık | | `F5` | Sunum Modu (PDF) | | `Ctrl+Q` | Çıkış (Masaüstü) | | `Ctrl+Fare Tekerleği` | PDF Yakınlaştır | | `Ctrl+Tıklama (Editör)` | SyncTeX: PDF'te konumu göster | | `Ctrl+Tıklama (PDF)` | SyncTeX: Kaynak koda git | ### Motor Seçimi Araç çubuğundaki açılır menüden motor seçilir: | Motor | Kullanım | |-------|----------| | **lualatex** (varsayılan) | Makaleler, genel belgeler. Yüksek font kalitesi, Overleaf uyumlu | | **pdflatex** | ASYU/IEEE şablonları, Beamer sunumları | | **xelatex** | `xeCJK`, `mathspec` ya da `xltxtra` gerektiren belgeler. Uygulama bu paketlerden birini ya da `% !TEX program = xelatex` satırını görünce motoru kendiliğinden seçer | #### Ne Zaman pdflatex Kullanmalı? - **ASYU, IEEE, IEEEtran gibi şablonlar**: Bu şablonlar `ptm` (Times) gibi Type 1 fontlar kullanır. `lualatex` ile Türkçe karakterler görünmez. - **Beamer sunumları**: Türkçe içerik ASCII olarak yazıldığı için `pdflatex` yeterlidir. - `pdflatex` ile font ve renk kalitesi daha düşük olur. Overleaf makaleleri için `lualatex` tercih edin. #### Lokal vs Overleaf Sayfa Farkı Lokal derleme ile Overleaf arasında 1 sayfa fark olabilir. Nedeni: farklı TeX Live sürümleri (lokal: 2023, Overleaf: 2025). Font metric hesaplamalarındaki küçük farklar sayfa sonlarını farklı yerlere taşır. İçerik tamamen aynıdır. ### PDF Önizleme - **+/-** butonları veya **Ctrl+Mouse Tekerleği** ile yakınlaştır - **Genişliğe/Sayfaya sığdır** butonları ile otomatik zoom - **Çift sayfa** toggle ile yan yana iki sayfa görünümü - Sayfa gezinme: **< >** butonları - **Yer imleri** paneli ile bölüm/başlık navigasyonu - **Ctrl+F** ile PDF içinde metin arama, sonuçları vurgulama - Fareyle metin seçme, **Ctrl+C** ile kopyalama, çift tıklama ile kelime seçme - **Invert** butonu ile PDF renklerini ters çevir (koyu temada okuma) - **F5** ile sunum modu — tam ekran, sayfa sayfa gezinti - Varsayılan yakınlaştırma: %75 ### Otomatik Derleme Araç çubuğunda **● Otomatik** yazısına tıklayarak otomatik derlemeyi açıp kapatabilirsiniz. Otomatik modda Ctrl+S hem kaydeder hem derler. Manuel modda sadece kaydeder, derleme için Ctrl+B gerekir. --- ## Test 480+ unit test. PyQt6 bağımlılığı yok, saf pytest. ```bash # pytest yükle (ilk sefer) pip install pytest # Tüm testleri çalıştır python3 -m pytest tests/ -v # Tek dosya python3 -m pytest tests/test_log_parser.py -v # Kısa özet python3 -m pytest tests/ -q ``` Kapsam: | Modül | Test sayısı | Kapsanan fonksiyonlar | |-------|------------|----------------------| | `engine_detector` | 47 | motor algılama, compilable kontrolü, yorum temizleme, .cls tespiti | | `input_parser` | 24 | \input/\include çözümleme, path traversal koruması, döngüsel referans, dizin gruplama | | `log_parser` | 26 | hata/uyarı/öneri parse, satır numarası, motor önerisi, dosya referansı | | `paths` | 20 | Windows/WSL yol dönüşümleri, roundtrip | | `latex_utils` | 18 | Yorum temizleme, strip_comments | | `exporter` | 32 | Pandoc dışa aktarma, hata senaryoları | | `derle.sh` | 23 | derle.sh entegrasyon testleri (lualatex/pdflatex) | | `i18n` | 25 | Çeviri altyapısı, import güvenlik, başlatma akışı | | `imports` | 3 | Modül import testleri (parametrized, syntax doğrulama) | | `autopair` | 12 | Otomatik parantezleme, \begin/\end kapanışı | | `latex_lexer` | 5 | Sözdizimi renklendirme | | `pdf_indicator` | 9 | Eski PDF göstergesi, tazelik kontrolü | | `wordcount` | 11 | Kelime sayımı, matematik dışında tutma | | `updater` | 24 | Sürüm karşılaştırma, GitHub API, cache, ağ hatası | | `log` | 6 | Logger başlatma, dosya handler, multi-logger | | `compiler` | 11 | derle.sh yol bulma, frozen mod, motor ayarı | --- ## Terminal Kullanımı `derle.sh` uygulamadan bağımsız olarak terminalden de kullanılabilir. VS Code, Vim, nano gibi herhangi bir editörle birlikte çalışır. ### Temel Kullanım ```bash # Tek dosya derle (lualatex) bash derle.sh dosya.tex # pdflatex ile derle bash derle.sh dosya.tex --pdflatex # Klasördeki tüm .tex dosyalarını derle bash derle.sh *.tex # Klasör argümanı bash derle.sh /proje/klasoru/ ``` ### Watch Modu Dosya kaydedildiğinde otomatik yeniden derler. Başka bir editörle (VS Code, Vim vb.) çalışırken kullanışlıdır. ```bash # Dosya değişince otomatik derle bash derle.sh dosya.tex --watch # Watch + pdflatex kombinasyonu bash derle.sh dosya.tex --watch --pdflatex ``` Watch modunda `Ctrl+C` ile durdurulur. Her derlemede süre bilgisi gösterilir. ### Parametreler | Parametre | Açıklama | |-----------|----------| | `--pdflatex` | LuaLaTeX yerine pdfLaTeX kullanır | | `--watch` | Dosya değişikliğini izler, otomatik yeniden derler (tek dosya) | | `--shell-escape` | `-shell-escape` bayrağını zorlar (minted paketi otomatik algılanır) | ### Derleme Özellikleri - Kaynakça: BibTeX ve BibLaTeX (biber) otomatik algılanır - İndeks: `makeindex` `.idx` dosyası varsa otomatik çalışır - Çoklu pass: İçindekiler tablosu, referanslar değişiyorsa 2. ve 3. derleme otomatik tetiklenir - Eksik paket tespiti: Derleme hatasında eksik TeX paketini ve `apt-get` komutunu gösterir ### Terminal + Harici Editör İş Akışı Uygulama yerine terminalden çalışırken: 1. **WSL terminalinde** watch'ı başlat: `bash derle.sh dosya.tex --watch` 2. **Notepad++ veya VS Code** ile `.tex` dosyasını düzenle ve kaydet 3. **SumatraPDF** ile PDF açık — dosya değişince otomatik yenilenir > SumatraPDF PDF'i kilitlemez ve değişiklikleri otomatik gösterir. Adobe Acrobat ve Edge PDF dosyayı kilitler. ## Teknik Detaylar ### Derleme Akışı 1. Python GUI (Windows) → `wsl bash derle.sh dosya.tex` çağırır 2. `derle.sh` → `mktemp -d`'de derler, kaynakça/indeks işler, çoklu pass yapar, PDF'i kaynak klasöre kopyalar 3. GUI → PDF'yi `pypdfium2` ile render eder, sağ panelde gösterir ### Neden WSL WSL'de TeX Live kurulu olduğundan derleme WSL tarafında yapılır. GUI Windows'ta çalışır, derleme için `wsl.exe` üzerinden betik çağırılır. Bu sayede ayrı bir Windows TeX Live kurulumu gerekmez. ### Uyumluluk Proje **TeX Live 2023** (Ubuntu 24.04 LTS depo sürümü) ile geliştirilmiş ve test edilmiştir. Tüm template'ler bu sürümle uyumludur. Overleaf güncel TeX Live kullandığı için lokal derleme ile 1 sayfa farkı olabilir (içerik aynıdır). ### Neden İkinci Derleme Gerekli Olabilir İlk derlemede içindekiler tablosu (.toc) ve çapraz referans dosyaları oluşur. Bu dosyalar varsa ikinci derleme yapılır ve tablo/referanslar doldurulur. Yardımcı dosya oluşmamışsa ikinci derleme atlanır. ## Derleme Öncesi Hazırlık Overleaf'ten indirilen dosyalarda aşağıdaki değişikliklerin yapılması gerekir. ### 1. iftex Bloğu (Türkçe Karakter Desteği) **Eski:** ```latex \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} ``` **Yeni:** ```latex \usepackage{iftex} \ifluatex \usepackage{fontspec} \else \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \fi ``` ### 2. Filigran Düzeltmesi `everypage` paketi `tcolorbox` breakable kutularıyla sayfa atlıyor. `eso-pic` ile her sayfada garantili çalışır. **Eski (`everypage`):** ```latex \usepackage{everypage} \AddEverypageHook{...} ``` **Yeni (`eso-pic`):** ```latex \usepackage{eso-pic} \AddToShipoutPictureFG{...} ``` ### Otomatik Düzeltme Betiği Birden fazla `.tex` dosyanız varsa, aşağıdaki betik hepsine iftex + eso-pic değişikliklerini otomatik uygular: ```bash #!/bin/bash # Kullanim: bash duzelt.sh /mnt/c/Users/secho/Desktop/abc/ KLASOR="$1" for dosya in "$KLASOR"/*.tex; do echo "Isleniyor: $dosya" # fontspec + iftex degisikligi sed -i '/\\usepackage\[utf8\]{inputenc}/{ s/\\usepackage\[utf8\]{inputenc}/\\usepackage{iftex}\n\\ifluatex\n \\usepackage{fontspec}\n\\else\n \\usepackage[utf8]{inputenc}/ }' "$dosya" sed -i '/\\usepackage\[T1\]{fontenc}/a\\\\fi' "$dosya" # Filigran: everypage -> eso-pic sed -i 's/\\usepackage{everypage}/\\usepackage{eso-pic}/' "$dosya" sed -i 's/\\AddEverypageHook{/\\AddToShipoutPictureFG{/' "$dosya" echo "Tamam: $dosya" done ``` > Betik çalıştırmadan önce dosyalarınızı yedekleyin. ## Sık Karşılaşılan Sorunlar ### "Python çalışmayı durdurdu" hatası Anaconda Python ile PyQt6 uyumsuzluğu. Standalone Python kullanın: ``` cd desktop "C:\Users\\AppData\Local\Programs\Python\Python312\python.exe" main.py ``` ### Derleme başarısız oluyor WSL'de TeX Live kurulu olduğundan emin olun: ```bash wsl which lualatex ``` ### PDF görünmüyor Derleme başarılı olduktan sonra PDF otomatik gösterilir. Dosya ağacında `.pdf` dosyası oluşmuş mu kontrol edin. ## Bağımlılıklar ### Masaüstü | Paket | Sürüm | Açıklama | |-------|-------|----------| | PyQt6 | >=6.6 | GUI framework | | PyQt6-QScintilla | >=2.14 | Kod editörü bileşeni | | pypdfium2 | >=4.20 | PDF render (PDFium tabanlı) | | send2trash | >=1.8 | Dosyaları çöpe taşıma | ### Web | Paket | Açıklama | |-------|----------| | FastAPI | Backend framework | | uvicorn | ASGI server | | React | Frontend framework | | Monaco Editor | Kod editörü | | Zustand | State management | | PDF.js | PDF render | ## Proje Yapısı ``` latex-editor/ ├── .github/workflows/ # CI + Release (GitHub Actions) │ ├── ci.yml # Her push'ta pytest │ └── release.yml # tag v* → exe + AppImage ├── core/ # Ortak (desktop + web) │ ├── derle.sh # Ortak LaTeX derleme betiği │ ├── compiler.py # Desktop derleme motoru │ ├── log_parser.py # Hata/uyarı ayrıştırma │ ├── engine_detector.py # Motor algılama + derlenebilirlik kontrolü │ ├── input_parser.py # \input/\include bağımlılık çözümleyici │ ├── exporter.py # Pandoc dışa aktarma │ ├── latex_utils.py # Ortak LaTeX yardımcı fonksiyonları │ ├── paths.py # Platform path dönüşümleri (Windows/WSL) │ ├── log.py # Merkezi logging (platform-aware, rotating) │ ├── i18n.py # Uluslararasılaştırma (desktop + web ortak) │ ├── updater.py # GitHub Releases API güncelleme kontrolü │ └── version.py # Merkezi versiyon kaynağı ├── desktop/ # Masaüstü uygulama (PyQt6) │ ├── main.py # Giriş noktası │ ├── requirements.txt # pip bağımlılıkları │ ├── build_appimage.sh # Linux AppImage build betiği │ ├── LaTeX Editor.spec # PyInstaller Windows spec │ ├── latex-editor-linux.spec # PyInstaller Linux spec │ ├── gui/ │ │ ├── main_window.py # Ana pencere — layout, tema, event filter, state │ │ ├── stylesheet.py # Tema CSS üretici (statik fonksiyon) │ │ ├── editor.py # QScintilla LaTeX editörü │ │ ├── pdf_viewer.py # PDF görüntüleyici (kompozisyon + mixin'ler) │ │ ├── pdf_render.py # Saf render fonksiyonu (pypdfium2 → QPixmap) │ │ ├── pdf_links.py # Saf link çözümleme (ctypes soyutlama) │ │ ├── file_tree.py # Proje dosya ağacı │ │ ├── output_panel.py # Derleme çıktıları │ │ ├── outline.py # Belge anahattı (\section hiyerarşisi) │ │ ├── find_replace.py # Bul/değiştir paneli │ │ ├── synctex.py # SyncTeX forward/reverse arama │ │ ├── theme.py # Merkezi tema tanımları (7 tema) │ │ ├── mixins/ # MainWindow sorumluluk ayrımı (mixin pattern) │ │ │ ├── file_ops.py # Dosya aç/kaydet/yeni, recent files, motor algılama │ │ │ ├── file_watch.py # Açık dosyaların diskte değişmesini algıla │ │ │ ├── tab_ops.py # Sekme yönetimi, wordcount, outline güncelleme │ │ │ ├── edit_ops.py # Geri al, yinele, bul, değiştir, yorum, satıra git │ │ │ ├── compile_ops.py # Derleme, durdurma, otomatik derleme │ │ │ ├── image_ops.py # Görsel ekleme, şablon tespiti, snippet üretimi │ │ │ └── synctex_ops.py # SyncTeX forward/reverse arama │ │ └── pdf_viewer_mixins/ # PdfViewer sorumluluk ayrımı (mixin pattern) │ │ ├── _render.py # PDF yükleme, sayfa render, placeholder, çift sayfa │ │ ├── _ui_setup.py # Araç çubuğu, tema, kaydetme, fit butonları │ │ ├── _navigation.py # Sayfa geçişi, zoom, sayfaya sığdır │ │ ├── _presentation.py # Sunum modu (tam ekran) │ │ ├── _events.py # Event filter + link tıklama + metin seçme │ │ ├── _synctex.py # SyncTeX koordinat dönüşümü │ │ ├── _highlight.py # Vurgulama │ │ ├── _bookmarks.py # PDF yer imleri (TOC) │ │ ├── _search.py # PDF metin arama │ │ └── _selection.py # PDF metin seçme/kopyalama │ ├── syntax/ │ │ └── latex_lexer.py # LaTeX sözdizimi renklendirme │ ├── translations/ # .ts (kaynak) + .qm (derlenmiş) çeviri dosyaları │ ├── linux/ # AppRun, .desktop, AppStream bilgisi, ikonlar │ └── *.bat # Windows build/launcher betikleri ├── scripts/ │ └── update_translations.sh # .ts üret + .qm derle betiği ├── web/ # Web uygulama — deneysel/pasif (FastAPI + React) │ ├── backend/ │ │ ├── services/ │ │ │ ├── compiler.py # WebSocket tabanlı derleme servisi │ │ │ └── file_system.py # Dosya sistemi işlemleri │ │ └── run.py # Backend giriş noktası │ └── frontend/ │ └── src/ │ ├── components/ # React bileşenleri │ ├── hooks/ # Custom hooks │ ├── store/ # Zustand state management │ └── utils/ # LaTeX komut listesi, yardımcılar ├── tests/ # Unit testler (pytest, 326 test) ├── .github/ISSUE_TEMPLATE/ # Hata bildirim & özellik isteği şablonları ├── LICENSE # GPL-3.0 ├── CONTRIBUTING.md # Katkı rehberi └── README.md ``` --- ## Lisans GPL-3.0 — bkz. [LICENSE](LICENSE). PyQt6 ve PyQt6-QScintilla GPL-3.0 lisanslıdır; bu nedenle uygulama GPL-3.0 ile lisanslanmıştır.