From b6b12245cb39a08d19bcbb31e899f2f0aa0568fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hamza=20Sancakdaro=C4=9Flu?= Date: Sat, 6 Jun 2026 00:10:01 +0300 Subject: [PATCH 01/11] itu-thesis:0.1.0 --- packages/preview/itu-thesis/0.1.0/LICENSE | 21 + packages/preview/itu-thesis/0.1.0/README.md | 81 ++++ packages/preview/itu-thesis/0.1.0/lib.typ | 451 ++++++++++++++++++ .../itu-thesis/0.1.0/template/ekler.typ | 44 ++ .../itu-thesis/0.1.0/template/fig/example.png | Bin 0 -> 286 bytes .../itu-thesis/0.1.0/template/kisaltmalar.typ | 20 + .../itu-thesis/0.1.0/template/main-apa.typ | 82 ++++ .../itu-thesis/0.1.0/template/main.typ | 132 +++++ .../itu-thesis/0.1.0/template/onsoz.typ | 13 + .../itu-thesis/0.1.0/template/ozet.typ | 15 + .../itu-thesis/0.1.0/template/ozgecmis.typ | 38 ++ .../itu-thesis/0.1.0/template/refs.bib | 204 ++++++++ .../itu-thesis/0.1.0/template/semboller.typ | 19 + .../itu-thesis/0.1.0/template/summary.typ | 17 + .../preview/itu-thesis/0.1.0/thumbnail.png | Bin 0 -> 188989 bytes packages/preview/itu-thesis/0.1.0/typst.toml | 19 + 16 files changed, 1156 insertions(+) create mode 100644 packages/preview/itu-thesis/0.1.0/LICENSE create mode 100644 packages/preview/itu-thesis/0.1.0/README.md create mode 100644 packages/preview/itu-thesis/0.1.0/lib.typ create mode 100644 packages/preview/itu-thesis/0.1.0/template/ekler.typ create mode 100644 packages/preview/itu-thesis/0.1.0/template/fig/example.png create mode 100644 packages/preview/itu-thesis/0.1.0/template/kisaltmalar.typ create mode 100644 packages/preview/itu-thesis/0.1.0/template/main-apa.typ create mode 100644 packages/preview/itu-thesis/0.1.0/template/main.typ create mode 100644 packages/preview/itu-thesis/0.1.0/template/onsoz.typ create mode 100644 packages/preview/itu-thesis/0.1.0/template/ozet.typ create mode 100644 packages/preview/itu-thesis/0.1.0/template/ozgecmis.typ create mode 100644 packages/preview/itu-thesis/0.1.0/template/refs.bib create mode 100644 packages/preview/itu-thesis/0.1.0/template/semboller.typ create mode 100644 packages/preview/itu-thesis/0.1.0/template/summary.typ create mode 100644 packages/preview/itu-thesis/0.1.0/thumbnail.png create mode 100644 packages/preview/itu-thesis/0.1.0/typst.toml diff --git a/packages/preview/itu-thesis/0.1.0/LICENSE b/packages/preview/itu-thesis/0.1.0/LICENSE new file mode 100644 index 0000000000..b426b83323 --- /dev/null +++ b/packages/preview/itu-thesis/0.1.0/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Hamza Sancakdaroğlu + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/preview/itu-thesis/0.1.0/README.md b/packages/preview/itu-thesis/0.1.0/README.md new file mode 100644 index 0000000000..0b19937355 --- /dev/null +++ b/packages/preview/itu-thesis/0.1.0/README.md @@ -0,0 +1,81 @@ +# İTÜ Tez Şablonu (Typst) · `itu-thesis` + +İstanbul Teknik Üniversitesi (İTÜ) lisansüstü tezleri için Typst şablonu. +Resmi LaTeX şablonu (`itutez.cls` v1.7.1, Ocak 2025) temel alınarak yeniden +yazılmıştır. + +> Thesis template for graduate theses at Istanbul Technical University, ported +> from the official LaTeX class to Typst. + +> ⚠️ **Gayriresmî / topluluk uyarlaması.** Bu paket İstanbul Teknik +> Üniversitesi tarafından resmî olarak onaylanmamıştır; resmî LaTeX şablonundan +> bağımsız bir gönüllü uyarlamasıdır. Teziniz teslim edilmeden önce çıktının +> güncel İTÜ tez yazım kurallarına uyduğunu mutlaka kendiniz doğrulayın. +> +> *Unofficial community port — not officially endorsed by ITU. Verify the +> output against the current official thesis guidelines before submission.* + +## Hızlı başlangıç + +```bash +typst init @preview/itu-thesis:0.1.0 benim-tezim +cd benim-tezim +typst watch main.typ +``` + +Bu komut çalışan bir örnek proje oluşturur. `main.typ` içindeki bilgileri kendi +tezinize göre düzenleyin. + +## Özellikler + +- Dış kapak + Türkçe iç kapak + İngilizce iç kapak +- Jüri onay / imza sayfası +- İthaf, Önsöz, İçindekiler, Kısaltmalar, Semboller +- Çizelge Listesi ve Şekil Listesi (otomatik) +- Özet / Summary +- Ön materyalde roma (i, ii, …), gövdede arabik (1, 2, …) sayfa numarası +- Numaralı bölümler (“BÖLÜM 1. …”) + numarasız ön/arka materyal başlıkları +- Ekler (EKLER kapağı ile) ve Özgeçmiş +- NUM (sayılı/IEEE) ve APA atıf stilleri — bkz. `main.typ` ve `main-apa.typ` +- Türkçe ve İngilizce dil desteği (`dil: "tr"` / `dil: "en"`) + +## Kullanım + +`#show: thesis.with(...)` çağrısındaki başlıca parametreler: + +| Parametre | Açıklama | +|---|---| +| `ad`, `soyad`, `ogrenci-no` | Öğrenci bilgileri | +| `tez-basligi`, `thesis-title` | TR/EN başlık (en çok 3 satır, dizi) | +| `anabilim-dali-tr/-en`, `program-tr/-en` | Akademik birim | +| `enstitu` | `"lisansustu"`, `"bilisim"`, `"fenbilimleri"`, `"sosyalbilimler"`, `"enerji"`, `"avrasya"` | +| `danisman`, `danisman-en`, `es-danisman*` | Danışman / eş danışman (TR & EN) | +| `juri` | `(ad: "...", univ: "...")` sözlüklerinden dizi | +| `dil` | `"tr"` veya `"en"` | +| `derece` | `"yukseklisans"` veya `"doktora"` | +| `cilt` | `"bez"` veya `"karton"` | +| `ithaf`, `onsoz`, `kisaltmalar`, `semboller`, `ozet`, `summary`, `ekler`, `ozgecmis` | Ön/arka materyal içerikleri | +| `kaynakca` | `bibliography("refs.bib", style: "ieee", title: "Kaynaklar")` | + +Gövde bölümleri (`= Giriş`, `== Alt başlık`, …) `#show` çağrısından sonra +normal Typst başlıkları olarak yazılır; otomatik olarak numaralanır. + +### Atıf ve kaynakça + +`refs.bib` dosyasına BibTeX kayıtları ekleyin, metin içinde `@anahtar` ile atıf +yapın. Stil için `kaynakca` parametresinde `style: "ieee"` (sayılı) veya +`style: "apa"` kullanın. + +## Notlar + +- Şablon `Times New Roman` fontunu hedefler; sistemde yoksa `TeX Gyre Termes` / + `Libertinus Serif` gibi alternatiflere düşer. Birebir görünüm için Times New + Roman fontunun kurulu olması önerilir. +- Typst, EPS desteklemez; şekilleri PNG/PDF/SVG olarak ekleyin. + +## Lisans + +MIT — bkz. [LICENSE](LICENSE). + +Bu şablon, İTÜ Bilişim Enstitüsü tarafından hazırlanan resmi LaTeX şablonundan +uyarlanmıştır. diff --git a/packages/preview/itu-thesis/0.1.0/lib.typ b/packages/preview/itu-thesis/0.1.0/lib.typ new file mode 100644 index 0000000000..289ed62664 --- /dev/null +++ b/packages/preview/itu-thesis/0.1.0/lib.typ @@ -0,0 +1,451 @@ +// İTÜ Lisansüstü Tez Şablonu — Typst sürümü +// İstanbul Teknik Üniversitesi · Lisansüstü Eğitim Enstitüsü +// +// Bu şablon, resmi LaTeX şablonu (itutez.cls v1.7.1, Ocak 2025) temel alınarak +// Typst için yeniden yazılmıştır. Aşağıdaki resmi öğeleri üretir: +// · Dış kapak + Türkçe iç kapak + İngilizce iç kapak +// · Jüri onay/imza sayfası (KABUL VE ONAY) +// · İthaf, Önsöz, İçindekiler, Kısaltmalar, Semboller +// · Çizelge Listesi, Şekil Listesi +// · Özet / Summary +// · Ön materyalde roma (i, ii, …), gövdede arabik (1, 2, …) sayfa numarası +// · Numaralı bölümler ("BÖLÜM 1. ...") ve numarasız ön/arka materyal başlıkları +// · Ekler (+ EKLER kapağı), Kaynaklar, Özgeçmiş + +#let thesis( + // ===== KİŞİSEL BİLGİLER ===== + ad: "", + soyad: "", + ogrenci-no: "", + unvan: "", + + // ===== TEZ BAŞLIKLARI (en çok 3 satır) ===== + tez-basligi: ("", "", ""), // Türkçe (kapak + Türkçe iç kapak) + thesis-title: ("", "", ""), // İngilizce (İngilizce iç kapak + onay) + + // ===== AKADEMİK BİLGİLER ===== + anabilim-dali-tr: "", + anabilim-dali-en: "", + program-tr: "", + program-en: "", + // enstitu: "lisansustu" | "bilisim" | "fenbilimleri" | "sosyalbilimler" | "enerji" | "avrasya" + enstitu: "lisansustu", + + // ===== DANIŞMAN ===== + danisman: "", + danisman-univ: "", + danisman-en: "", + danisman-univ-en: "", + es-danisman: "", + es-danisman-univ: "", + es-danisman-en: "", + es-danisman-univ-en: "", + + // ===== JÜRİ ÜYELERİ ===== + // (ad: "...", univ: "...") sözlüklerinden oluşan dizi + juri: (), + + // ===== TARİHLER ===== + savunma-tarihi-tr: "", // Büyük kapaktaki tarih (ör. "Aralık 2024") + savunma-tarihi-en: "", + teslim-tarihi-tr: "", // Onay sayfası teslim tarihi (ör. "22 Eylül 2024") + teslim-tarihi-en: "", + savunma-tarihi-onay-tr: "", // Onay sayfası savunma tarihi (ör. "21 Aralık 2024") + savunma-tarihi-onay-en: "", + + // ===== AYARLAR ===== + dil: "tr", // "tr" | "turkce" / "en" | "ingilizce" + derece: "yukseklisans", // "yukseklisans" | "doktora" + cilt: "bez", // "bez" (ciltli) | "karton" + + // ===== ÖN/ARKA MATERYAL (içerik blokları) ===== + ithaf: none, // İthaf metni (ör. "Aileme,") + onsoz: none, // Önsöz içeriği + kisaltmalar: none, // Kısaltmalar tablosu/içeriği + semboller: none, // Semboller tablosu/içeriği + ozet: none, // Türkçe özet içeriği (anahtar kelimeler dahil) + summary: none, // İngilizce summary içeriği (keywords dahil) + sekil-listesi: true, // Şekil Listesi üretilsin mi? + cizelge-listesi: true, // Çizelge Listesi üretilsin mi? + kaynakca: none, // bibliography(...) çağrısı buraya geçirilir + ekler: none, // Ekler içeriği + ozgecmis: none, // Özgeçmiş içeriği + + body, +) = { + // ---- Dil ---- + let ingilizce = dil == "en" or dil == "ingilizce" or dil == "english" + let lang-code = if ingilizce { "en" } else { "tr" } + + // ---- Enstitü adları ---- + let enstitu-tr = ( + "lisansustu": "Lisansüstü Eğitim Enstitüsü", + "bilisim": "Bilişim Enstitüsü", + "fenbilimleri": "Fen Bilimleri Enstitüsü", + "sosyalbilimler": "Sosyal Bilimler Enstitüsü", + "enerji": "Enerji Enstitüsü", + "avrasya": "Avrasya Yer Bilimleri Enstitüsü", + ).at(enstitu, default: "Lisansüstü Eğitim Enstitüsü") + let enstitu-en = ( + "lisansustu": "Graduate School", + "bilisim": "Informatics Institute", + "fenbilimleri": "Graduate School of Science Engineering and Technology", + "sosyalbilimler": "Graduate School of Social Sciences", + "enerji": "Energy Institute", + "avrasya": "Eurasia Institute of Earth Sciences", + ).at(enstitu, default: "Graduate School") + + // ---- Büyük harf çevrimi ---- + // upper() Unicode varsayılanını kullanır ve Türkçe "i → İ" eşlemesini yapmaz + // (yanlış "İÇINDEKILER" üretir). Genel çözüm: tek sorunlu harf olan "i"yi + // upper()'dan önce "İ" ile değiştirmek; diğer harfleri (ç, ş, ğ, ö, ü, ı) + // upper() zaten doğru çevirir. İngilizce metinlerde düz upper() kullanılır. + let tr-upper(s) = upper(str(s).replace("i", "İ")) + let en-upper(s) = upper(str(s)) + + let enstitu-ust-tr = tr-upper("İstanbul Teknik Üniversitesi ★ " + enstitu-tr) + let enstitu-ust-en = en-upper("İstanbul Technical University ★ " + enstitu-en) + + // ---- Tez seviyesi ---- + let seviye-tr = if derece == "doktora" { "DOKTORA TEZİ" } else { "YÜKSEK LİSANS TEZİ" } + let seviye-en = if derece == "doktora" { "Ph.D. THESIS" } else { "M.Sc. THESIS" } + + let isim-soyisim = (ad + " " + soyad).trim() + + // ---- Başlık satırlarını birleştiren yardımcı (cas: çevrim fonksiyonu) ---- + let basliklar(satirlar, cas) = { + let temiz = satirlar.filter(s => s != none and str(s).trim() != "") + text(size: 14pt, weight: "bold")[ + #temiz.map(s => cas(s)).join(linebreak()) + ] + } + + // ===================================================================== + // GENEL AYARLAR + // ===================================================================== + set document(title: tez-basligi.at(0, default: ""), author: isim-soyisim) + set text( + font: ("Times New Roman", "Libertinus Serif"), + size: 12pt, + lang: lang-code, + ) + set par(leading: 1.45em, spacing: 0.6em, justify: true) + show math.equation: set block(spacing: 0.65em) + + // ---- Başlık stilleri ---- + // Numarası "none" olan başlıklar = ön/arka materyal (numarasız, "BÖLÜM" yok) + // Numarası olan başlıklar = gövde bölümleri ("BÖLÜM 1. ...") + let bolum-sozu = if ingilizce { "CHAPTER" } else { "BÖLÜM" } + show heading: it => { + let numarali = it.numbering != none + if it.level == 1 { + // Numaralı: gövde bölümü ("BÖLÜM 1. ...") + // Numarasız: ön/arka materyal başlığı (büyük harf, numarasız) + pagebreak(weak: true) + v(18.5mm) + if numarali { + text(weight: "bold", size: 12pt)[#bolum-sozu #counter(heading).display(). #it.body] + } else { + text(weight: "bold", size: 12pt)[#it.body] + } + v(12pt) + } else if it.level == 2 { + v(12pt) + if numarali { + text(weight: "bold", size: 12pt)[#counter(heading).display() #it.body] + } else { + text(weight: "bold", size: 12pt)[#it.body] + } + v(8pt) + } else if it.level == 3 { + v(8pt) + if numarali { + text(weight: "bold", size: 12pt)[#counter(heading).display() #it.body] + } else { + text(weight: "bold", size: 12pt)[#it.body] + } + v(4pt) + } else { + v(6pt) + if numarali { + text(weight: "bold", size: 12pt)[#counter(heading).display() #it.body] + } else { + text(weight: "bold", size: 12pt)[#it.body] + } + } + } + + // ---- Şekil ve çizelge ---- + let sekil-sozu = if ingilizce { "Figure" } else { "Şekil" } + let cizelge-sozu = if ingilizce { "Table" } else { "Çizelge" } + show figure.where(kind: image): set figure(supplement: sekil-sozu) + show figure.where(kind: table): set figure(supplement: cizelge-sozu) + show figure.where(kind: table): set figure.caption(position: top) + show figure.caption: it => { + text(weight: "bold")[#it.supplement #it.counter.display(): #it.body] + } + + // ===================================================================== + // KAPAKLAR (numarasız sayfalar, dar kenar boşluğu) + // ===================================================================== + set page( + paper: "a4", + margin: (left: 2.5cm, right: 2.5cm, top: 2.5cm, bottom: 2.5cm), + numbering: none, + ) + + // ---- Tek bir kapak iskeleti ---- + let kapak(enstitu-ust, baslik-blok, seviye, kimlik, anabilim, program, danisman-satir, tarih) = { + set par(justify: false, leading: 0.65em) + align(center)[ + #v(2mm) + #underline(text(weight: "bold")[#enstitu-ust]) + #v(50mm) + #baslik-blok + #v(50mm) + #text(weight: "bold")[#seviye] + #v(8mm) + #text(weight: "bold")[#kimlik] + #v(22mm) + #text(weight: "bold")[#anabilim] + #v(2mm) + #text(weight: "bold")[#program] + #if danisman-satir != none { + v(12mm) + danisman-satir + } else { + v(12mm) + } + #v(18mm) + #text(weight: "bold")[#tarih] + ] + } + + // (1) DIŞ KAPAK + kapak( + if ingilizce { enstitu-ust-en } else { enstitu-ust-tr }, + if ingilizce { basliklar(thesis-title, en-upper) } else { basliklar(tez-basligi, tr-upper) }, + if ingilizce { seviye-en } else { seviye-tr }, + isim-soyisim, + if ingilizce { anabilim-dali-en } else { anabilim-dali-tr }, + if ingilizce { program-en } else { program-tr }, + // Bez ciltte dış kapakta danışman yok; kartonda var + if cilt == "karton" { + let etiket = if ingilizce { "Thesis Advisor" } else { "Tez Danışmanı" } + text(weight: "bold")[#etiket: #(if ingilizce { danisman-en } else { danisman })] + } else { none }, + if ingilizce { savunma-tarihi-en } else { savunma-tarihi-tr }, + ) + pagebreak(weak: true) + + // (2) TÜRKÇE İÇ KAPAK + let danisman-blok-tr = { + text(weight: "bold")[Tez Danışmanı: #danisman] + if es-danisman.trim() != "" { + linebreak() + text(weight: "bold")[Eş Danışman: #es-danisman] + } + } + kapak( + enstitu-ust-tr, basliklar(tez-basligi, tr-upper), seviye-tr, + [#isim-soyisim (#ogrenci-no)], + anabilim-dali-tr, program-tr, danisman-blok-tr, savunma-tarihi-tr, + ) + pagebreak(weak: true) + + // (3) İNGİLİZCE İÇ KAPAK + let danisman-blok-en = { + text(weight: "bold")[Thesis Advisor: #danisman-en] + if es-danisman-en.trim() != "" { + linebreak() + text(weight: "bold")[Co-Advisor: #es-danisman-en] + } + } + kapak( + enstitu-ust-en, basliklar(thesis-title, en-upper), seviye-en, + [#isim-soyisim (#ogrenci-no)], + anabilim-dali-en, program-en, danisman-blok-en, savunma-tarihi-en, + ) + + // ===================================================================== + // JÜRİ ONAY / İMZA SAYFASI (KABUL VE ONAY) + // ===================================================================== + { + set par(justify: true, leading: 1.1em) + pagebreak(weak: true) + v(18mm) + + // Açıklama paragrafı + let derece-sozu-tr = if derece == "doktora" { "Doktora" } else { "Yüksek Lisans" } + let derece-sozu-en = if derece == "doktora" { "Ph.D." } else { "M.Sc." } + let baslik-tirnak-tr = tez-basligi.filter(s => str(s).trim() != "").map(s => tr-upper(s)).join(" ") + let baslik-tirnak-en = thesis-title.filter(s => str(s).trim() != "").map(s => en-upper(s)).join(" ") + + if ingilizce { + [#isim-soyisim, a #derece-sozu-en student of ITU #enstitu-en student ID #ogrenci-no, successfully defended the thesis entitled "#baslik-tirnak-en", which he/she prepared after fulfilling the requirements specified in the associated legislations, before the jury whose signatures are below.] + } else { + [İTÜ #enstitu-tr'nün #ogrenci-no numaralı #derece-sozu-tr Öğrencisi #isim-soyisim, ilgili yönetmeliklerin belirlediği gerekli tüm şartları yerine getirdikten sonra hazırladığı "#baslik-tirnak-tr" başlıklı tezini aşağıda imzaları olan jüri önünde başarı ile sunmuştur.] + } + + v(14mm) + + // İmza satırları + let dots = "."*30 + let satir(rol, isim, univ) = ( + text(weight: "bold")[#rol], [#text(weight: "bold")[#isim] \ #univ], align(right)[#dots], + ) + let bos = ([], [], []) + + let danisman-rol = if ingilizce { "Thesis Advisor :" } else { "Tez Danışmanı :" } + let es-rol = if ingilizce { "Co-advisor :" } else { "Eş Danışman :" } + let juri-rol = if ingilizce { "Jury Members :" } else { "Jüri Üyeleri :" } + + let rows = () + rows += satir(danisman-rol, + if ingilizce { danisman-en } else { danisman }, + if ingilizce { danisman-univ-en } else { danisman-univ }) + if (if ingilizce { es-danisman-en } else { es-danisman }).trim() != "" { + rows += bos + rows += satir(es-rol, + if ingilizce { es-danisman-en } else { es-danisman }, + if ingilizce { es-danisman-univ-en } else { es-danisman-univ }) + } + // Jüri üyeleri + for (i, uye) in juri.enumerate() { + rows += bos + rows += satir(if i == 0 { juri-rol } else { "" }, uye.ad, uye.at("univ", default: "")) + } + + grid( + columns: (34mm, 1fr, auto), + row-gutter: 10pt, + column-gutter: 4pt, + align: (left + top, left + top, right + bottom), + ..rows, + ) + + v(8mm) + let teslim-etiket = if ingilizce { "Date of Submission :" } else { "Teslim Tarihi :" } + let savunma-etiket = if ingilizce { "Date of Defense :" } else { "Savunma Tarihi :" } + grid( + columns: (auto, auto), + row-gutter: 6pt, + column-gutter: 8pt, + text(weight: "bold")[#teslim-etiket], + text(weight: "bold")[#(if ingilizce { teslim-tarihi-en } else { teslim-tarihi-tr })], + text(weight: "bold")[#savunma-etiket], + text(weight: "bold")[#(if ingilizce { savunma-tarihi-onay-en } else { savunma-tarihi-onay-tr })], + ) + } + + // ===================================================================== + // ÖN MATERYAL (roma rakamı, normal kenar boşluğu) + // ===================================================================== + set page( + margin: (left: 4cm, right: 2.5cm, top: 2.5cm, bottom: 2.5cm), + numbering: "i", + number-align: center + bottom, + ) + counter(page).update(1) + + // Ön/arka materyal başlıklarını numarasız yap + set heading(numbering: none) + + // ---- İTHAF ---- + if ithaf != none and str(ithaf).trim() != "" { + v(1fr) + align(right)[#emph(strong(ithaf))] + v(1fr) + pagebreak(weak: true) + } + + // ---- ÖNSÖZ ---- + if onsoz != none { + heading(level: 1, if ingilizce { "FOREWORD" } else { "ÖNSÖZ" }) + onsoz + } + + // ---- İÇİNDEKİLER ---- + [ + #set heading(outlined: false) + #heading(level: 1, if ingilizce { "TABLE OF CONTENTS" } else { "İÇİNDEKİLER" }) + ] + outline(title: none, depth: 4, indent: auto) + + // ---- KISALTMALAR ---- + if kisaltmalar != none { + heading(level: 1, if ingilizce { "ABBREVIATIONS" } else { "KISALTMALAR" }) + kisaltmalar + } + + // ---- SEMBOLLER ---- + if semboller != none { + heading(level: 1, if ingilizce { "SYMBOLS" } else { "SEMBOLLER" }) + semboller + } + + // ---- ÇİZELGE LİSTESİ ---- + if cizelge-listesi { + heading(level: 1, if ingilizce { "LIST OF TABLES" } else { "ÇİZELGE LİSTESİ" }) + outline(title: none, target: figure.where(kind: table)) + } + + // ---- ŞEKİL LİSTESİ ---- + if sekil-listesi { + heading(level: 1, if ingilizce { "LIST OF FIGURES" } else { "ŞEKİL LİSTESİ" }) + outline(title: none, target: figure.where(kind: image)) + } + + // ---- ÖZET / SUMMARY ---- + // Türkçe tezde önce ÖZET, İngilizce tezde önce SUMMARY + let ozet-blok = if ozet != none { + heading(level: 1, "ÖZET") + ozet + } + let summary-blok = if summary != none { + heading(level: 1, "SUMMARY") + summary + } + if ingilizce { + summary-blok + ozet-blok + } else { + ozet-blok + summary-blok + } + + // ===================================================================== + // GÖVDE (arabik rakam, numaralı bölümler) + // ===================================================================== + pagebreak(weak: true) + set page(numbering: "1") + counter(page).update(1) + counter(heading).update(0) + [ + #set heading(numbering: "1.1.1.1") + #body + ] + + // ===================================================================== + // KAYNAKLAR + // ===================================================================== + if kaynakca != none { + kaynakca + } + + // ===================================================================== + // EKLER + // ===================================================================== + if ekler != none { + heading(level: 1, if ingilizce { "APPENDICES" } else { "EKLER" }) + ekler + } + + // ===================================================================== + // ÖZGEÇMİŞ + // ===================================================================== + if ozgecmis != none { + heading(level: 1, if ingilizce { "CURRICULUM VITAE" } else { "ÖZGEÇMİŞ" }) + ozgecmis + } +} diff --git a/packages/preview/itu-thesis/0.1.0/template/ekler.typ b/packages/preview/itu-thesis/0.1.0/template/ekler.typ new file mode 100644 index 0000000000..eadb9bab28 --- /dev/null +++ b/packages/preview/itu-thesis/0.1.0/template/ekler.typ @@ -0,0 +1,44 @@ +// EKLER içeriği — "EKLER" kapak başlığı şablon tarafından eklenir. +// Her ek bölümü 1. seviye başlık (=) ile başlar; bunlar numarasız basılır. + += EK A: İlave Çalışmalar + +Bu ek bölümde tez içinde detaylı olarak yer alamayan ancak araştırmanın +bütünlüğü için önemli olan ek çalışmalar sunulmuştur. + +== A.1 Ek İstatistikler + +Aşağıdaki tablo, ana metinde sunulandan daha ayrıntılı veriler içermektedir. + +#figure( + table( + columns: (1fr, 1fr, 1fr), + [Deneme], [Ortalama], [Standart Sapma], + [1], [45.2], [2.3], + [2], [47.8], [1.9], + [3], [46.5], [2.1], + [4], [48.1], [1.8], + ), + caption: [Ek istatistikler], +) + +== A.2 Kod Örnekleri + +```python +def calculate_mean(data): + """Veri setinin ortalamasını hesaplar.""" + return sum(data) / len(data) + +result = calculate_mean([1, 2, 3, 4, 5]) +print(f"Ortalama: {result}") +``` + += EK B: Detaylı Formüller + +Işık hızı ile ilgili Einstein formülü: + +$ E = m c^2 $ + +burada $E$ enerji, $m$ kütle ve $c$ ışık hızıdır. Genel görelilik denklemi: + +$ G_(mu nu) + Lambda g_(mu nu) = 8 pi G T_(mu nu) $ diff --git a/packages/preview/itu-thesis/0.1.0/template/fig/example.png b/packages/preview/itu-thesis/0.1.0/template/fig/example.png new file mode 100644 index 0000000000000000000000000000000000000000..79ce851f2fd94d3153a15764e4e1b4d88ef6d935 GIT binary patch literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^DIm6NH3x<`-29#K{72@a$vQ#2Ko2u`y85}Sb4q9e0Oi!Dvj6}9 literal 0 HcmV?d00001 diff --git a/packages/preview/itu-thesis/0.1.0/template/kisaltmalar.typ b/packages/preview/itu-thesis/0.1.0/template/kisaltmalar.typ new file mode 100644 index 0000000000..86c70daf41 --- /dev/null +++ b/packages/preview/itu-thesis/0.1.0/template/kisaltmalar.typ @@ -0,0 +1,20 @@ +// KISALTMALAR içeriği — "KISALTMALAR" başlığı şablon tarafından eklenir. + +#table( + columns: (2cm, 1fr), + align: (center + horizon, left), + inset: 5pt, + stroke: none, + [*KISALTMA*], [*AÇIKLAMA*], + [API], [Application Programming Interface], + [CPU], [Central Processing Unit], + [GPU], [Graphics Processing Unit], + [HTML], [HyperText Markup Language], + [HTTP], [HyperText Transfer Protocol], + [JSON], [JavaScript Object Notation], + [RGB], [Red, Green, Blue], + [SQL], [Structured Query Language], + [UI], [User Interface], + [UX], [User Experience], + [XML], [Extensible Markup Language], +) diff --git a/packages/preview/itu-thesis/0.1.0/template/main-apa.typ b/packages/preview/itu-thesis/0.1.0/template/main-apa.typ new file mode 100644 index 0000000000..1abd22f35b --- /dev/null +++ b/packages/preview/itu-thesis/0.1.0/template/main-apa.typ @@ -0,0 +1,82 @@ +// İTÜ Lisansüstü Tez Şablonu — APA (yazar-yıl atıf) sürümü +// Kaynakça APA stilinde gösterilir. NUM sürümü için main.typ'a bakın. +// +// Derleme: typst compile main-apa.typ tez.pdf + +#import "@preview/itu-thesis:0.1.0": thesis + +#show: thesis.with( + ad: "Öğrenci Adı", + soyad: "SOYADI", + ogrenci-no: "123456789", + + tez-basligi: ( + "TEZ BAŞLIĞININ BİRİNCİ SATIRI", + "GEREKLİYSE İKİNCİ SATIR", + "GEREKLİYSE ÜÇÜNCÜ SATIR", + ), + thesis-title: ( + "FIRST LINE OF THESIS TITLE", + "SECOND LINE IF NECESSARY", + "THIRD LINE IF NECESSARY", + ), + + anabilim-dali-tr: "Bilgisayar Mühendisliği Anabilim Dalı", + anabilim-dali-en: "Department of Computer Engineering", + program-tr: "Bilgisayar Mühendisliği Programı", + program-en: "Computer Engineering Programme", + enstitu: "lisansustu", + + danisman: "Prof. Dr. Adı SOYADI", + danisman-univ: "İstanbul Teknik Üniversitesi", + danisman-en: "Prof. Dr. Name SURNAME", + danisman-univ-en: "Istanbul Technical University", + + juri: ( + (ad: "Prof. Dr. Adı SOYADI", univ: "İstanbul Teknik Üniversitesi"), + (ad: "Prof. Dr. Adı SOYADI", univ: "Yıldız Teknik Üniversitesi"), + (ad: "Prof. Dr. Adı SOYADI", univ: "Boğaziçi Üniversitesi"), + ), + + savunma-tarihi-tr: "Aralık 2024", + savunma-tarihi-en: "December 2024", + teslim-tarihi-tr: "22 Eylül 2024", + teslim-tarihi-en: "22 September 2024", + savunma-tarihi-onay-tr: "21 Aralık 2024", + savunma-tarihi-onay-en: "21 December 2024", + + dil: "tr", + derece: "yukseklisans", + cilt: "bez", + + ithaf: "Aileme,", + onsoz: include "onsoz.typ", + kisaltmalar: include "kisaltmalar.typ", + semboller: include "semboller.typ", + ozet: include "ozet.typ", + summary: include "summary.typ", + // APA stili için "apa" kullanılır: + kaynakca: bibliography("refs.bib", style: "apa", title: "KAYNAKLAR"), + ekler: include "ekler.typ", + ozgecmis: include "ozgecmis.typ", +) + += Giriş + +Bu örnek, APA (yazar-yıl) atıf stilini kullanır. Metin içinde @ornek2024 +biçiminde atıf yaptığınızda kaynak APA formatında listelenir. + +== Tezin Amacı + +Tez yazımında tutarlılığı sağlamak amaçlanmıştır. + += Yöntem + +#figure( + image("fig/example.png", width: 80%), + caption: [Örnek şekil açıklaması], +) + += Sonuç + +Sonuç bölümü ulaşılan ana bulguları içerir. diff --git a/packages/preview/itu-thesis/0.1.0/template/main.typ b/packages/preview/itu-thesis/0.1.0/template/main.typ new file mode 100644 index 0000000000..4c0ea4c1c0 --- /dev/null +++ b/packages/preview/itu-thesis/0.1.0/template/main.typ @@ -0,0 +1,132 @@ +// İTÜ Lisansüstü Tez Şablonu — NUM (sayılı atıf) sürümü +// Kaynakça IEEE/sayılı stilde ([1], [2], …) gösterilir. +// +// Derleme: typst compile main.typ tez.pdf + +#import "@preview/itu-thesis:0.1.0": thesis + +#show: thesis.with( + // ===== KİŞİSEL BİLGİLER ===== + ad: "Öğrenci Adı", + soyad: "SOYADI", + ogrenci-no: "123456789", + unvan: "", + + // ===== TEZ BAŞLIKLARI (en çok 3 satır) ===== + tez-basligi: ( + "TEZ BAŞLIĞININ BİRİNCİ SATIRI", + "GEREKLİYSE İKİNCİ SATIR", + "GEREKLİYSE ÜÇÜNCÜ SATIR", + ), + thesis-title: ( + "FIRST LINE OF THESIS TITLE", + "SECOND LINE IF NECESSARY", + "THIRD LINE IF NECESSARY", + ), + + // ===== AKADEMİK BİLGİLER ===== + anabilim-dali-tr: "Bilgisayar Mühendisliği Anabilim Dalı", + anabilim-dali-en: "Department of Computer Engineering", + program-tr: "Bilgisayar Mühendisliği Programı", + program-en: "Computer Engineering Programme", + // "lisansustu" | "bilisim" | "fenbilimleri" | "sosyalbilimler" | "enerji" | "avrasya" + enstitu: "lisansustu", + + // ===== DANIŞMAN ===== + danisman: "Prof. Dr. Adı SOYADI", + danisman-univ: "İstanbul Teknik Üniversitesi", + danisman-en: "Prof. Dr. Name SURNAME", + danisman-univ-en: "Istanbul Technical University", + es-danisman: "", + es-danisman-univ: "", + es-danisman-en: "", + es-danisman-univ-en: "", + + // ===== JÜRİ ÜYELERİ ===== + juri: ( + (ad: "Prof. Dr. Adı SOYADI", univ: "İstanbul Teknik Üniversitesi"), + (ad: "Prof. Dr. Adı SOYADI", univ: "Yıldız Teknik Üniversitesi"), + (ad: "Prof. Dr. Adı SOYADI", univ: "Boğaziçi Üniversitesi"), + ), + + // ===== TARİHLER ===== + savunma-tarihi-tr: "Aralık 2024", + savunma-tarihi-en: "December 2024", + teslim-tarihi-tr: "22 Eylül 2024", + teslim-tarihi-en: "22 September 2024", + savunma-tarihi-onay-tr: "21 Aralık 2024", + savunma-tarihi-onay-en: "21 December 2024", + + // ===== AYARLAR ===== + dil: "tr", // "tr" / "en" + derece: "yukseklisans", // "yukseklisans" / "doktora" + cilt: "bez", // "bez" / "karton" + + // ===== ÖN/ARKA MATERYAL ===== + ithaf: "Aileme,", + onsoz: include "onsoz.typ", + kisaltmalar: include "kisaltmalar.typ", + semboller: include "semboller.typ", + ozet: include "ozet.typ", + summary: include "summary.typ", + kaynakca: bibliography("refs.bib", style: "ieee", title: "KAYNAKLAR"), + ekler: include "ekler.typ", + ozgecmis: include "ozgecmis.typ", +) + +// ===================================================================== +// BÖLÜMLER (gövde) +// ===================================================================== + += Giriş + +Bu tez şablonu İstanbul Teknik Üniversitesi lisansüstü programları için +hazırlanmış olup, Typst belgeleme sisteminde yazılan tezlerin sunumuna +yönelik standartları belirtmektedir. Kaynak göstermek için @ornek2024 +biçiminde atıf yapabilirsiniz. + +== Tezin Amacı + +Tez yazımında tutarlılığı sağlamak ve kurumsal standartlara uygun belgeler +oluşturmak amaçlanmıştır. + +=== Alt Başlık Örneği + +Üçüncü seviye başlıkları bu şekilde gösterilir. Formüller şöyle yazılır: + +$ E = m c^2 $ + +== Literatür Taraması + +Mevcut araştırmalar incelenerek özet halinde sunulmuştur. + += Yöntem + +Bu bölümde araştırmanın yöntemi açıklanır. Şekil ve çizelge örnekleri aşağıdadır. + +#figure( + image("fig/example.png", width: 80%), + caption: [Örnek şekil açıklaması], +) + +#figure( + table( + columns: (1fr, 1fr, 1fr), + [Başlık 1], [Başlık 2], [Başlık 3], + [Satır 1-1], [Satır 1-2], [Satır 1-3], + [Satır 2-1], [Satır 2-2], [Satır 2-3], + ), + caption: [Örnek çizelge], +) + += Bulgular + +Araştırmanın bulguları bu bölümde sunulmuştur. + += Tartışma + +Bulguların değerlendirilmesi ve literatürle karşılaştırılması yapılmıştır. + += Sonuç + +Sonuç bölümü özet niteliğinde olup, ulaşılan ana bulguları içermektedir. diff --git a/packages/preview/itu-thesis/0.1.0/template/onsoz.typ b/packages/preview/itu-thesis/0.1.0/template/onsoz.typ new file mode 100644 index 0000000000..0f78e1179e --- /dev/null +++ b/packages/preview/itu-thesis/0.1.0/template/onsoz.typ @@ -0,0 +1,13 @@ +// ÖNSÖZ içeriği — "ÖNSÖZ" başlığı şablon tarafından otomatik eklenir. + +Bu tez çalışmasının gerçekleştirilmesinde bana destek sağlayan danışmanım +Prof. Dr. Adı SOYADI'ya, kıymetli görüşleri ve rehberliği için teşekkür ederim. + +Ayrıca araştırma sürecinde bana yardımcı olan ve deneylerini benimle paylaşan +tüm laboratuvar arkadaşlarıma, aileme ve tüm dostlarıma şükranlarımı sunarım. + +#v(30pt) +#align(right)[ + Aralık 2024, İstanbul \ + Öğrenci Adı SOYADI +] diff --git a/packages/preview/itu-thesis/0.1.0/template/ozet.typ b/packages/preview/itu-thesis/0.1.0/template/ozet.typ new file mode 100644 index 0000000000..6d5cf70485 --- /dev/null +++ b/packages/preview/itu-thesis/0.1.0/template/ozet.typ @@ -0,0 +1,15 @@ +// ÖZET içeriği (Türkçe) — "ÖZET" başlığı şablon tarafından eklenir. + +Bu tez çalışması, konunun kapsamlı bir incelemesini sunmaktadır. Araştırma, +mevcut literatürü gözden geçirdikten sonra yeni bir yöntem veya bakış açısı +ortaya koymaktadır. + +İlk bölümde sorunun tanımlanması ve araştırmanın motivasyonu açıklanmıştır. +İkinci bölümde ilgili literatür incelenerek konuyla ilişkili önceki çalışmalar +özetlenmiştir. Üçüncü bölümde önerilen yöntem anlatılmış; dördüncü bölümde +deneysel sonuçlar sunulmuş; beşinci bölümde ise bulgular tartışılmıştır. + +Sonuç olarak bu araştırmanın bulguları alanında önemli bir katkı sağlamaktadır. + +#v(12pt) +*Anahtar Kelimeler:* Anahtar kelime 1, Anahtar kelime 2, Anahtar kelime 3, Anahtar kelime 4 diff --git a/packages/preview/itu-thesis/0.1.0/template/ozgecmis.typ b/packages/preview/itu-thesis/0.1.0/template/ozgecmis.typ new file mode 100644 index 0000000000..011f1b94cf --- /dev/null +++ b/packages/preview/itu-thesis/0.1.0/template/ozgecmis.typ @@ -0,0 +1,38 @@ +// ÖZGEÇMİŞ içeriği — "ÖZGEÇMİŞ" başlığı şablon tarafından eklenir. + +== Kişisel Bilgiler + +*Adı Soyadı:* Öğrenci Adı SOYADI \ +*Doğum Tarihi ve Yeri:* 1 Ocak 1995, İstanbul \ +*E-posta:* ogrenci\@mail.com + +== Eğitim + +=== Lisans + +*İstanbul Teknik Üniversitesi* \ +Bölüm: Bilgisayar Mühendisliği \ +Mezuniyet Tarihi: Haziran 2019 + +=== Yüksek Lisans + +*İstanbul Teknik Üniversitesi, Lisansüstü Eğitim Enstitüsü* \ +Bölüm: Bilgisayar Mühendisliği \ +Tez Başlığı: "Tez Başlığı Buraya Yazılır" \ +Tez Danışmanı: Prof. Dr. Adı SOYADI + +== Çalışma Deneyimi + +=== Araştırma Görevlisi + +*İstanbul Teknik Üniversitesi, Bilgisayar Mühendisliği Bölümü* \ +Tarih: Eylül 2019 - Halen + +== Yayınlar + +1. Yazar, A., Yazar, B., & Yazar, C. (2023). "Makale Başlığı", _Yayın Yeri_, ss. 1-10. + +== Beceriler + +- Programlama: Python, C++, Java +- Diller: Türkçe (Ana dil), İngilizce (C1) diff --git a/packages/preview/itu-thesis/0.1.0/template/refs.bib b/packages/preview/itu-thesis/0.1.0/template/refs.bib new file mode 100644 index 0000000000..d12ccc3736 --- /dev/null +++ b/packages/preview/itu-thesis/0.1.0/template/refs.bib @@ -0,0 +1,204 @@ +@article{ornek2024, + author = {Yazar, Ahmet and Yazar, Bekir}, + title = {Örnek Makale Başlığı}, + journal = {Örnek Dergi}, + year = {2024}, + volume = {10}, + number = {2}, + pages = {1--10}, +} + +@conference {abrahart98, +author = {Abrahart, Robert J. and See, Linda}, +title = {Neural Network vs. ARMA Modelling: Constructing Benchmark Case Studies of River Flow Prediction}, +booktitle = {Proceedings of the Third International Conference on GeoComputation}, +year = {1998}, +month = {September}, +address = {University of Bristol, United Kingdom}, +} + +@conference {acar97, +author = {Acar, M. H. and Yılmaz, P.}, +title = {Effect of tetramethylthiuramdisulfide on the cationic poymerization of cylohexeneoxide}, +booktitle = {The 2nd International Conferences on Advanced Polymers via Macromolecular Engineering}, +year = {1997}, +month = {April}, +address= {Orlando, Florida, USA}, +} + +@techreport {Burke74, +author = {Burke, W. F. and U\u{g}urta\c{s} G.}, +title = {Seismic interpretation of Thrace basin}, +institution = {TPAO international report}, +year = {1974}, +number = {1} +} + +@phdthesis {harper2007, +author = {Harper, E. B.}, +title = {The role of terrestrial habitat in the population dynamics and conservation of pond-breeding amphibians}, +school = {University of Missouri--Columbia}, +year = {2007}, +address = {(Doctoral dissertation). Retrieved from http://edt.missouri.edu}, +} + +@article {unesco, +author = {IOC-UNESCO}, +year = {1981}, +title = {International bathymetric chart of the Mediterranean}, +publisher = {Ministry of Defence}, +address = {Leningrad}, +journal = {some journal}, +} + +@book{mccaffrey88, + title={SYN3, a program for inversion of teleseismic body wave forms on microcomputers}, + author={McCaffrey, Robert}, + year={1988}, + publisher={Force Geophysics Laboratory, Air Force Systems Command, US Air Force} +} + +@book {moore91, +year = {1991}, +author = {Moore, C.}, +title = {Encyclopedia of chemical technology, Mass spectrometry}, +publisher = {Wiley}, +address = {New York}, +edition = {4.}, +} + +@phdthesis{nelson88, +author = {Nelson, M. R.}, +year = {1988}, +title = {Constraints on the seismic velocity structure of the crust and upper mantle beneath the eastern Tien Shan, Central Asia}, +school = {MIT}, +address = {Cambridge, MA}, +} + +@misc {sisaky, +author = {Sisaky A., Golab, F. and Myer, B.}, +year = {1989}, +title = {Rust resistant potatoes}, +howpublished = {United Kingdom Patent, No: 2394783 dated 23.1.1989.}, +} + +@misc {simpsondvd, +author = {Simpson, B.}, +year = {2004}, +title = {{\it The Corporation} [DVD]}, +howpublished = {(Producer) Canada: Big Picture Media Corporation.}, +} + +@misc{startrek, + author = {United Federation of Planets}, + title = {{Star trek planet classifications}}, + howpublished = {\url{http://en.wikipedia.org/wiki/Star_Trek_planet_classifications}}, + note = {\MakeUppercase Retrieved October 14, 2010}, + year = {2010} +} + +@misc{TS-40561, + year = {1985}, + title ={{\it \c{C}elik yap{\i}ların plastik teoriye g\"ore hesap kurallar{\i}}}, + author = {TS-40561}, + note = {{\MakeUppercase T}ürk Standartları Enstitüsü}, + address = {Ankara} +} + +@misc{url-1, +author = {MARETEC}, +howpublished = {\url{http://www.mohid.com}}, +title = {MOHID - Water Modelling System}, +note = {date retrieved: 29.06.2006}, +year = {2006} +} + +@misc{url-2, +author = {Politecnico di Milano}, +title = {Ingegneria Elettrica}, +howpublished = {\url{http://www.elet.polimi.it}}, +note = {date retrieved: 10.01.2007}, +year = {2007} +} + + +@article {HYP:HYP57, +author = {Abrahart, Robert J. and See, Linda}, +title = {Comparing neural network and autoregressive moving average techniques for the provision of continuous river flow forecasts in two contrasting catchments}, +journal = {Hydrological Processes}, +volume = {14}, +number = {11-12}, +publisher = {John Wiley & Sons, Ltd.}, +issn = {1099-1085}, +pages = {2157--2172}, +keywords = {neural network model, ARMA model, hydrological forecasting}, +year = {2000}, +} + +@book{Box:1990:TSA:574978, + author = {Box, George Edward Pelham and Jenkins, Gwilym}, + title = {Time Series Analysis, Forecasting and Control}, + year = {1990}, + isbn = {0816211043}, + publisher = {Holden-Day, Incorporated}, +} + + +@article{17590413, +author = {Burger, Joanna and Gochfeld, Michael and Jeitner, Christian and Burke, Sean and Stamm, Tim and Snigaroff, Ronald and ... and Weston, Jim}, +title = {Mercury levels and potential risk from subsistence foods from the Aleutians}, +journal = {Sci Total Environ}, +volume = {384}, +number = {1-3}, +publisher = {}, +year = {2007}, +pages = {93-105}, +ISSN = {0048-9697}, +} + + +@article{vanden2001, +author = {Vanden G., Knapp, S. and Doe, J.}, +title = {Role of reference elements in the selection of resources by psychology undergraduates}, +journal = {Journal of Bibliographic Research}, +number = {5}, +volume = {some volume}, +pages = {117-123}, +year = {1999}, +} + +@article{Wegener2000629, +title = {Flexible Corrections of Juror Judgments Implications for Jury Instructions}, +journal = {Psychology, Public Policy, and Law}, +volume = {6}, +number = {3}, +pages = {629 - 654}, +year = {2000}, +note = {}, +issn = {1076-8971}, +author = {Duane T. Wegener and Norbert L. Kerr and Monique A. Fleming and Richard E. Petty} +} + +@article{Wolchik2000843, +title = {An Experimental Evaluation of Theory-Based Mother and Mother-Child Programs for Children of Divorce}, +journal = {Journal of Consulting and Clinical Psychology}, +volume = {68}, +number = {5}, +pages = {843 - 856}, +year = {2000}, +note = {}, +issn = {0022-006X}, +author = {Sharlene A. Wolchik and Stephen G. West and Irwin N. Sandler and Jenn-Yun Tein and Douglas Coatsworth and Liliana Lengua and \ldots and William A. Griffin} +} + +@article{Zuckerman199486, +title = {Race Differences in Face-ism: Does Facial Prominence Imply Dominance?}, +journal = {Journal of Personality and Social Psychology}, +volume = {66}, +number = {1}, +pages = {86 - 92}, +year = {1994}, +note = {}, +issn = {0022-3514}, +author = {Miron Zuckerman and Suzanne C. Kieffer} +} \ No newline at end of file diff --git a/packages/preview/itu-thesis/0.1.0/template/semboller.typ b/packages/preview/itu-thesis/0.1.0/template/semboller.typ new file mode 100644 index 0000000000..babd0ed09a --- /dev/null +++ b/packages/preview/itu-thesis/0.1.0/template/semboller.typ @@ -0,0 +1,19 @@ +// SEMBOLLER içeriği — "SEMBOLLER" başlığı şablon tarafından eklenir. + +#table( + columns: (2cm, 1fr), + align: (center + horizon, left), + inset: 5pt, + stroke: none, + [*SEMBOL*], [*AÇIKLAMA*], + [$alpha$], [Açı, alfa açısı], + [$beta$], [Açı, beta açısı], + [$gamma$], [Açı, gama açısı], + [$Delta E$], [Enerji farkı], + [$sigma$], [Standart sapma], + [$theta$], [Sıcaklık], + [$lambda$], [Dalga boyu], + [$mu$], [Ortalama, mikro], + [$pi$], [Pi sayısı], + [$rho$], [Yoğunluk], +) diff --git a/packages/preview/itu-thesis/0.1.0/template/summary.typ b/packages/preview/itu-thesis/0.1.0/template/summary.typ new file mode 100644 index 0000000000..37c75a7572 --- /dev/null +++ b/packages/preview/itu-thesis/0.1.0/template/summary.typ @@ -0,0 +1,17 @@ +// SUMMARY içeriği (İngilizce) — "SUMMARY" başlığı şablon tarafından eklenir. + +This thesis study presents a comprehensive investigation of the subject matter. +After reviewing the existing literature, the research puts forward a new method +or perspective. + +In the first chapter, the definition of the problem and the motivation for the +research are explained. In the second chapter, after reviewing the relevant +literature, previous studies related to the subject are summarized. In the third +chapter, the proposed method is described; in the fourth chapter, experimental +results are presented; and in the fifth chapter, the findings are discussed. + +In conclusion, the findings of this research make an important contribution to +the field. + +#v(12pt) +*Keywords:* Keyword 1, Keyword 2, Keyword 3, Keyword 4 diff --git a/packages/preview/itu-thesis/0.1.0/thumbnail.png b/packages/preview/itu-thesis/0.1.0/thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..2b496aada7e4c24a2ca9770939b392d0ffe30dc2 GIT binary patch literal 188989 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

k0wZ)1Q~>@24rRC*C5TS?J{kD! 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

&)szv>rAK2VZP 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"] +license = "MIT" +description = "İstanbul Teknik Üniversitesi (İTÜ) lisansüstü tez şablonu — Thesis template for Istanbul Technical University graduate theses." +homepage = "https://github.com/hmzsnc96/itu-thesis" +repository = "https://github.com/hmzsnc96/itu-thesis" +keywords = ["thesis", "tez", "itu", "istanbul-technical-university", "turkish", "university"] +categories = ["thesis"] +disciplines = ["education"] +compiler = "0.12.0" +exclude = ["thumbnail.png", ".github", ".gitignore"] + +[template] +path = "template" +entrypoint = "main.typ" +thumbnail = "thumbnail.png" From 87635dbef83179148ffaff20d3a6079849a5ae3a Mon Sep 17 00:00:00 2001 From: hmzsnc96 <130750277+hmzsnc96@users.noreply.github.com> Date: Sat, 6 Jun 2026 00:14:50 +0300 Subject: [PATCH 02/11] =?UTF-8?q?itu-thesis:0.1.0=20=E2=80=94=20fix=20typs?= =?UTF-8?q?t.toml=20(drop=20homepage,=20drop=20auto-excluded=20thumbnail)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/preview/itu-thesis/0.1.0/typst.toml | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/preview/itu-thesis/0.1.0/typst.toml b/packages/preview/itu-thesis/0.1.0/typst.toml index a5f6a7cfa0..75fa2d00d1 100644 --- a/packages/preview/itu-thesis/0.1.0/typst.toml +++ b/packages/preview/itu-thesis/0.1.0/typst.toml @@ -5,13 +5,11 @@ entrypoint = "lib.typ" authors = ["Hamza Sancakdaroğlu "] license = "MIT" description = "İstanbul Teknik Üniversitesi (İTÜ) lisansüstü tez şablonu — Thesis template for Istanbul Technical University graduate theses." -homepage = "https://github.com/hmzsnc96/itu-thesis" repository = "https://github.com/hmzsnc96/itu-thesis" keywords = ["thesis", "tez", "itu", "istanbul-technical-university", "turkish", "university"] categories = ["thesis"] disciplines = ["education"] compiler = "0.12.0" -exclude = ["thumbnail.png", ".github", ".gitignore"] [template] path = "template" From 1afae23fe23a53c208577c5a87d5d2c230f29d9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hamza=20Sancakdaro=C4=9Flu?= Date: Sat, 6 Jun 2026 09:25:27 +0300 Subject: [PATCH 03/11] =?UTF-8?q?itu-thesis:0.1.0=20=E2=80=94=20replace=20?= =?UTF-8?q?example=20image=20with=20drawn=20placeholder=20(remove=20exampl?= =?UTF-8?q?e.png)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../itu-thesis/0.1.0/template/fig/example.png | Bin 286 -> 0 bytes .../itu-thesis/0.1.0/template/main-apa.typ | 8 +++++++- .../preview/itu-thesis/0.1.0/template/main.typ | 9 ++++++++- 3 files changed, 15 insertions(+), 2 deletions(-) delete mode 100644 packages/preview/itu-thesis/0.1.0/template/fig/example.png diff --git a/packages/preview/itu-thesis/0.1.0/template/fig/example.png b/packages/preview/itu-thesis/0.1.0/template/fig/example.png deleted file mode 100644 index 79ce851f2fd94d3153a15764e4e1b4d88ef6d935..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^DIm6NH3x<`-29#K{72@a$vQ#2Ko2u`y85}Sb4q9e0Oi!Dvj6}9 diff --git a/packages/preview/itu-thesis/0.1.0/template/main-apa.typ b/packages/preview/itu-thesis/0.1.0/template/main-apa.typ index 1abd22f35b..718ac48502 100644 --- a/packages/preview/itu-thesis/0.1.0/template/main-apa.typ +++ b/packages/preview/itu-thesis/0.1.0/template/main-apa.typ @@ -72,8 +72,14 @@ Tez yazımında tutarlılığı sağlamak amaçlanmıştır. = Yöntem +// Gerçek görsel eklemek için bir "fig" klasörü oluşturup şöyle kullanın: +// #figure(image("fig/sekil.png", width: 80%), caption: [Açıklama]) #figure( - image("fig/example.png", width: 80%), + rect(width: 80%, height: 5cm, fill: luma(240), stroke: 0.5pt + luma(160))[ + #align(center + horizon)[ + #text(fill: luma(120))[Görsel buraya gelir \ (image("fig/...") ile ekleyin)] + ] + ], caption: [Örnek şekil açıklaması], ) diff --git a/packages/preview/itu-thesis/0.1.0/template/main.typ b/packages/preview/itu-thesis/0.1.0/template/main.typ index 4c0ea4c1c0..c9bb76f060 100644 --- a/packages/preview/itu-thesis/0.1.0/template/main.typ +++ b/packages/preview/itu-thesis/0.1.0/template/main.typ @@ -104,8 +104,15 @@ Mevcut araştırmalar incelenerek özet halinde sunulmuştur. Bu bölümde araştırmanın yöntemi açıklanır. Şekil ve çizelge örnekleri aşağıdadır. +// Gerçek görsel eklemek için bir "fig" klasörü oluşturup şöyle kullanın: +// #figure(image("fig/sekil.png", width: 80%), caption: [Açıklama]) +// Aşağıdaki yer tutucu, görselin nasıl yerleştirileceğini gösterir. #figure( - image("fig/example.png", width: 80%), + rect(width: 80%, height: 5cm, fill: luma(240), stroke: 0.5pt + luma(160))[ + #align(center + horizon)[ + #text(fill: luma(120))[Görsel buraya gelir \ (image("fig/...") ile ekleyin)] + ] + ], caption: [Örnek şekil açıklaması], ) From bca722e18a58d812ce0619ac2e481c134c0235c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hamza=20Sancakdaro=C4=9Flu?= Date: Mon, 8 Jun 2026 12:52:18 +0300 Subject: [PATCH 04/11] Rename package to community-itu-thesis (naming guidelines) --- .../0.1.0/LICENSE | 0 .../0.1.0/README.md | 4 ++-- .../0.1.0/lib.typ | 0 .../0.1.0/template/ekler.typ | 0 .../0.1.0/template/kisaltmalar.typ | 0 .../0.1.0/template/main-apa.typ | 2 +- .../0.1.0/template/main.typ | 2 +- .../0.1.0/template/onsoz.typ | 0 .../0.1.0/template/ozet.typ | 0 .../0.1.0/template/ozgecmis.typ | 0 .../0.1.0/template/refs.bib | 0 .../0.1.0/template/semboller.typ | 0 .../0.1.0/template/summary.typ | 0 .../0.1.0/thumbnail.png | Bin .../0.1.0/typst.toml | 2 +- 15 files changed, 5 insertions(+), 5 deletions(-) rename packages/preview/{itu-thesis => community-itu-thesis}/0.1.0/LICENSE (100%) rename packages/preview/{itu-thesis => community-itu-thesis}/0.1.0/README.md (96%) rename packages/preview/{itu-thesis => community-itu-thesis}/0.1.0/lib.typ (100%) rename packages/preview/{itu-thesis => community-itu-thesis}/0.1.0/template/ekler.typ (100%) rename packages/preview/{itu-thesis => community-itu-thesis}/0.1.0/template/kisaltmalar.typ (100%) rename packages/preview/{itu-thesis => community-itu-thesis}/0.1.0/template/main-apa.typ (97%) rename packages/preview/{itu-thesis => community-itu-thesis}/0.1.0/template/main.typ (98%) rename packages/preview/{itu-thesis => community-itu-thesis}/0.1.0/template/onsoz.typ (100%) rename packages/preview/{itu-thesis => community-itu-thesis}/0.1.0/template/ozet.typ (100%) rename packages/preview/{itu-thesis => community-itu-thesis}/0.1.0/template/ozgecmis.typ (100%) rename packages/preview/{itu-thesis => community-itu-thesis}/0.1.0/template/refs.bib (100%) rename packages/preview/{itu-thesis => community-itu-thesis}/0.1.0/template/semboller.typ (100%) rename packages/preview/{itu-thesis => community-itu-thesis}/0.1.0/template/summary.typ (100%) rename packages/preview/{itu-thesis => community-itu-thesis}/0.1.0/thumbnail.png (100%) rename packages/preview/{itu-thesis => community-itu-thesis}/0.1.0/typst.toml (95%) diff --git a/packages/preview/itu-thesis/0.1.0/LICENSE b/packages/preview/community-itu-thesis/0.1.0/LICENSE similarity index 100% rename from packages/preview/itu-thesis/0.1.0/LICENSE rename to packages/preview/community-itu-thesis/0.1.0/LICENSE diff --git a/packages/preview/itu-thesis/0.1.0/README.md b/packages/preview/community-itu-thesis/0.1.0/README.md similarity index 96% rename from packages/preview/itu-thesis/0.1.0/README.md rename to packages/preview/community-itu-thesis/0.1.0/README.md index 0b19937355..68d1946a3a 100644 --- a/packages/preview/itu-thesis/0.1.0/README.md +++ b/packages/preview/community-itu-thesis/0.1.0/README.md @@ -1,4 +1,4 @@ -# İTÜ Tez Şablonu (Typst) · `itu-thesis` +# İTÜ Tez Şablonu (Typst) · `community-itu-thesis` İstanbul Teknik Üniversitesi (İTÜ) lisansüstü tezleri için Typst şablonu. Resmi LaTeX şablonu (`itutez.cls` v1.7.1, Ocak 2025) temel alınarak yeniden @@ -18,7 +18,7 @@ yazılmıştır. ## Hızlı başlangıç ```bash -typst init @preview/itu-thesis:0.1.0 benim-tezim +typst init @preview/community-itu-thesis:0.1.0 benim-tezim cd benim-tezim typst watch main.typ ``` diff --git a/packages/preview/itu-thesis/0.1.0/lib.typ b/packages/preview/community-itu-thesis/0.1.0/lib.typ similarity index 100% rename from packages/preview/itu-thesis/0.1.0/lib.typ rename to packages/preview/community-itu-thesis/0.1.0/lib.typ diff --git a/packages/preview/itu-thesis/0.1.0/template/ekler.typ b/packages/preview/community-itu-thesis/0.1.0/template/ekler.typ similarity index 100% rename from packages/preview/itu-thesis/0.1.0/template/ekler.typ rename to packages/preview/community-itu-thesis/0.1.0/template/ekler.typ diff --git a/packages/preview/itu-thesis/0.1.0/template/kisaltmalar.typ b/packages/preview/community-itu-thesis/0.1.0/template/kisaltmalar.typ similarity index 100% rename from packages/preview/itu-thesis/0.1.0/template/kisaltmalar.typ rename to packages/preview/community-itu-thesis/0.1.0/template/kisaltmalar.typ diff --git a/packages/preview/itu-thesis/0.1.0/template/main-apa.typ b/packages/preview/community-itu-thesis/0.1.0/template/main-apa.typ similarity index 97% rename from packages/preview/itu-thesis/0.1.0/template/main-apa.typ rename to packages/preview/community-itu-thesis/0.1.0/template/main-apa.typ index 718ac48502..f41dd108f3 100644 --- a/packages/preview/itu-thesis/0.1.0/template/main-apa.typ +++ b/packages/preview/community-itu-thesis/0.1.0/template/main-apa.typ @@ -3,7 +3,7 @@ // // Derleme: typst compile main-apa.typ tez.pdf -#import "@preview/itu-thesis:0.1.0": thesis +#import "@preview/community-itu-thesis:0.1.0": thesis #show: thesis.with( ad: "Öğrenci Adı", diff --git a/packages/preview/itu-thesis/0.1.0/template/main.typ b/packages/preview/community-itu-thesis/0.1.0/template/main.typ similarity index 98% rename from packages/preview/itu-thesis/0.1.0/template/main.typ rename to packages/preview/community-itu-thesis/0.1.0/template/main.typ index c9bb76f060..bb5fcc7fc1 100644 --- a/packages/preview/itu-thesis/0.1.0/template/main.typ +++ b/packages/preview/community-itu-thesis/0.1.0/template/main.typ @@ -3,7 +3,7 @@ // // Derleme: typst compile main.typ tez.pdf -#import "@preview/itu-thesis:0.1.0": thesis +#import "@preview/community-itu-thesis:0.1.0": thesis #show: thesis.with( // ===== KİŞİSEL BİLGİLER ===== diff --git a/packages/preview/itu-thesis/0.1.0/template/onsoz.typ b/packages/preview/community-itu-thesis/0.1.0/template/onsoz.typ similarity index 100% rename from packages/preview/itu-thesis/0.1.0/template/onsoz.typ rename to packages/preview/community-itu-thesis/0.1.0/template/onsoz.typ diff --git a/packages/preview/itu-thesis/0.1.0/template/ozet.typ b/packages/preview/community-itu-thesis/0.1.0/template/ozet.typ similarity index 100% rename from packages/preview/itu-thesis/0.1.0/template/ozet.typ rename to packages/preview/community-itu-thesis/0.1.0/template/ozet.typ diff --git a/packages/preview/itu-thesis/0.1.0/template/ozgecmis.typ b/packages/preview/community-itu-thesis/0.1.0/template/ozgecmis.typ similarity index 100% rename from packages/preview/itu-thesis/0.1.0/template/ozgecmis.typ rename to packages/preview/community-itu-thesis/0.1.0/template/ozgecmis.typ diff --git a/packages/preview/itu-thesis/0.1.0/template/refs.bib b/packages/preview/community-itu-thesis/0.1.0/template/refs.bib similarity index 100% rename from packages/preview/itu-thesis/0.1.0/template/refs.bib rename to packages/preview/community-itu-thesis/0.1.0/template/refs.bib diff --git a/packages/preview/itu-thesis/0.1.0/template/semboller.typ b/packages/preview/community-itu-thesis/0.1.0/template/semboller.typ similarity index 100% rename from packages/preview/itu-thesis/0.1.0/template/semboller.typ rename to packages/preview/community-itu-thesis/0.1.0/template/semboller.typ diff --git a/packages/preview/itu-thesis/0.1.0/template/summary.typ b/packages/preview/community-itu-thesis/0.1.0/template/summary.typ similarity index 100% rename from packages/preview/itu-thesis/0.1.0/template/summary.typ rename to packages/preview/community-itu-thesis/0.1.0/template/summary.typ diff --git a/packages/preview/itu-thesis/0.1.0/thumbnail.png b/packages/preview/community-itu-thesis/0.1.0/thumbnail.png similarity index 100% rename from packages/preview/itu-thesis/0.1.0/thumbnail.png rename to packages/preview/community-itu-thesis/0.1.0/thumbnail.png diff --git a/packages/preview/itu-thesis/0.1.0/typst.toml b/packages/preview/community-itu-thesis/0.1.0/typst.toml similarity index 95% rename from packages/preview/itu-thesis/0.1.0/typst.toml rename to packages/preview/community-itu-thesis/0.1.0/typst.toml index 75fa2d00d1..d03fe93d3a 100644 --- a/packages/preview/itu-thesis/0.1.0/typst.toml +++ b/packages/preview/community-itu-thesis/0.1.0/typst.toml @@ -1,5 +1,5 @@ [package] -name = "itu-thesis" +name = "community-itu-thesis" version = "0.1.0" entrypoint = "lib.typ" authors = ["Hamza Sancakdaroğlu "] From c0a5af1134ed0e62ae42c1ea2b3f565b088ea050 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hamza=20Sancakdaro=C4=9Flu?= Date: Mon, 8 Jun 2026 12:59:22 +0300 Subject: [PATCH 05/11] Disable hyphenation + auto-width symbol/abbreviation column --- packages/preview/community-itu-thesis/0.1.0/lib.typ | 1 + .../preview/community-itu-thesis/0.1.0/template/kisaltmalar.typ | 2 +- .../preview/community-itu-thesis/0.1.0/template/semboller.typ | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/preview/community-itu-thesis/0.1.0/lib.typ b/packages/preview/community-itu-thesis/0.1.0/lib.typ index 289ed62664..8fc00f73a3 100644 --- a/packages/preview/community-itu-thesis/0.1.0/lib.typ +++ b/packages/preview/community-itu-thesis/0.1.0/lib.typ @@ -128,6 +128,7 @@ font: ("Times New Roman", "Libertinus Serif"), size: 12pt, lang: lang-code, + hyphenate: false, // LaTeX şablonundaki gibi (hyphenpenalty=10000) tireleme kapalı ) set par(leading: 1.45em, spacing: 0.6em, justify: true) show math.equation: set block(spacing: 0.65em) diff --git a/packages/preview/community-itu-thesis/0.1.0/template/kisaltmalar.typ b/packages/preview/community-itu-thesis/0.1.0/template/kisaltmalar.typ index 86c70daf41..b6b302beeb 100644 --- a/packages/preview/community-itu-thesis/0.1.0/template/kisaltmalar.typ +++ b/packages/preview/community-itu-thesis/0.1.0/template/kisaltmalar.typ @@ -1,7 +1,7 @@ // KISALTMALAR içeriği — "KISALTMALAR" başlığı şablon tarafından eklenir. #table( - columns: (2cm, 1fr), + columns: (auto, 1fr), align: (center + horizon, left), inset: 5pt, stroke: none, diff --git a/packages/preview/community-itu-thesis/0.1.0/template/semboller.typ b/packages/preview/community-itu-thesis/0.1.0/template/semboller.typ index babd0ed09a..6de4eee072 100644 --- a/packages/preview/community-itu-thesis/0.1.0/template/semboller.typ +++ b/packages/preview/community-itu-thesis/0.1.0/template/semboller.typ @@ -1,7 +1,7 @@ // SEMBOLLER içeriği — "SEMBOLLER" başlığı şablon tarafından eklenir. #table( - columns: (2cm, 1fr), + columns: (auto, 1fr), align: (center + horizon, left), inset: 5pt, stroke: none, From 6baf55e8ebf7baadbd4ee9a07bf65dc4248b583b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hamza=20Sancakdaro=C4=9Flu?= Date: Mon, 8 Jun 2026 13:14:53 +0300 Subject: [PATCH 06/11] =?UTF-8?q?Fidelity=20audit=20vs=20LaTeX=20cls:=20dr?= =?UTF-8?q?op=20'B=C3=96L=C3=9CM'=20chapter=20prefix,=20single=20front-mat?= =?UTF-8?q?ter=20/=201.5=20body=20spacing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../preview/community-itu-thesis/0.1.0/lib.typ | 15 +++++++++------ .../0.1.0/template/main-apa.typ | 6 +++--- .../community-itu-thesis/0.1.0/template/main.typ | 12 ++++++------ 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/packages/preview/community-itu-thesis/0.1.0/lib.typ b/packages/preview/community-itu-thesis/0.1.0/lib.typ index 8fc00f73a3..b28bafd80e 100644 --- a/packages/preview/community-itu-thesis/0.1.0/lib.typ +++ b/packages/preview/community-itu-thesis/0.1.0/lib.typ @@ -134,18 +134,15 @@ show math.equation: set block(spacing: 0.65em) // ---- Başlık stilleri ---- - // Numarası "none" olan başlıklar = ön/arka materyal (numarasız, "BÖLÜM" yok) - // Numarası olan başlıklar = gövde bölümleri ("BÖLÜM 1. ...") - let bolum-sozu = if ingilizce { "CHAPTER" } else { "BÖLÜM" } + // LaTeX itutez.cls'e göre (\@makechapterhead): gövde bölümü "1. BAŞLIK" biçiminde + // (önünde "BÖLÜM" YOK), 12pt kalın, sola dayalı. Ön/arka materyal başlıkları numarasız. show heading: it => { let numarali = it.numbering != none if it.level == 1 { - // Numaralı: gövde bölümü ("BÖLÜM 1. ...") - // Numarasız: ön/arka materyal başlığı (büyük harf, numarasız) pagebreak(weak: true) v(18.5mm) if numarali { - text(weight: "bold", size: 12pt)[#bolum-sozu #counter(heading).display(). #it.body] + text(weight: "bold", size: 12pt)[#counter(heading).display(). #it.body] } else { text(weight: "bold", size: 12pt)[#it.body] } @@ -351,6 +348,8 @@ // Ön/arka materyal başlıklarını numarasız yap set heading(numbering: none) + // LaTeX'te ön materyal tek satır aralığı (\singlespacing); gövde 1.5 (\oneandonehalf) + set par(leading: 0.65em) // ---- İTHAF ---- if ithaf != none and str(ithaf).trim() != "" { @@ -415,6 +414,9 @@ summary-blok } + // Gövde ve sonrası (kaynaklar, ekler, özgeçmiş) 1.5 satır aralığına döner + set par(leading: 1.45em) + // ===================================================================== // GÖVDE (arabik rakam, numaralı bölümler) // ===================================================================== @@ -424,6 +426,7 @@ counter(heading).update(0) [ #set heading(numbering: "1.1.1.1") + #set par(leading: 1.45em) // gövde: 1.5 satır aralığı (\oneandonehalf) #body ] diff --git a/packages/preview/community-itu-thesis/0.1.0/template/main-apa.typ b/packages/preview/community-itu-thesis/0.1.0/template/main-apa.typ index f41dd108f3..48cc701cd9 100644 --- a/packages/preview/community-itu-thesis/0.1.0/template/main-apa.typ +++ b/packages/preview/community-itu-thesis/0.1.0/template/main-apa.typ @@ -61,7 +61,7 @@ ozgecmis: include "ozgecmis.typ", ) -= Giriş += GİRİŞ Bu örnek, APA (yazar-yıl) atıf stilini kullanır. Metin içinde @ornek2024 biçiminde atıf yaptığınızda kaynak APA formatında listelenir. @@ -70,7 +70,7 @@ biçiminde atıf yaptığınızda kaynak APA formatında listelenir. Tez yazımında tutarlılığı sağlamak amaçlanmıştır. -= Yöntem += YÖNTEM // Gerçek görsel eklemek için bir "fig" klasörü oluşturup şöyle kullanın: // #figure(image("fig/sekil.png", width: 80%), caption: [Açıklama]) @@ -83,6 +83,6 @@ Tez yazımında tutarlılığı sağlamak amaçlanmıştır. caption: [Örnek şekil açıklaması], ) -= Sonuç += SONUÇ Sonuç bölümü ulaşılan ana bulguları içerir. diff --git a/packages/preview/community-itu-thesis/0.1.0/template/main.typ b/packages/preview/community-itu-thesis/0.1.0/template/main.typ index bb5fcc7fc1..51ef1bdadb 100644 --- a/packages/preview/community-itu-thesis/0.1.0/template/main.typ +++ b/packages/preview/community-itu-thesis/0.1.0/template/main.typ @@ -78,7 +78,7 @@ // BÖLÜMLER (gövde) // ===================================================================== -= Giriş += GİRİŞ Bu tez şablonu İstanbul Teknik Üniversitesi lisansüstü programları için hazırlanmış olup, Typst belgeleme sisteminde yazılan tezlerin sunumuna @@ -90,7 +90,7 @@ biçiminde atıf yapabilirsiniz. Tez yazımında tutarlılığı sağlamak ve kurumsal standartlara uygun belgeler oluşturmak amaçlanmıştır. -=== Alt Başlık Örneği +=== Alt başlık örneği Üçüncü seviye başlıkları bu şekilde gösterilir. Formüller şöyle yazılır: @@ -100,7 +100,7 @@ $ E = m c^2 $ Mevcut araştırmalar incelenerek özet halinde sunulmuştur. -= Yöntem += YÖNTEM Bu bölümde araştırmanın yöntemi açıklanır. Şekil ve çizelge örnekleri aşağıdadır. @@ -126,14 +126,14 @@ Bu bölümde araştırmanın yöntemi açıklanır. Şekil ve çizelge örnekler caption: [Örnek çizelge], ) -= Bulgular += BULGULAR Araştırmanın bulguları bu bölümde sunulmuştur. -= Tartışma += TARTIŞMA Bulguların değerlendirilmesi ve literatürle karşılaştırılması yapılmıştır. -= Sonuç += SONUÇ Sonuç bölümü özet niteliğinde olup, ulaşılan ana bulguları içermektedir. From fc571e5f44c861307d30dd2553a8a036b1f501ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hamza=20Sancakdaro=C4=9Flu?= Date: Mon, 8 Jun 2026 13:27:22 +0300 Subject: [PATCH 07/11] Fidelity vs LaTeX: bold TOC level-1 + 'Sayfa' header, abbrev/symbol format, dedication/foreword alignment --- .../community-itu-thesis/0.1.0/lib.typ | 17 +++++++--- .../0.1.0/template/kisaltmalar.typ | 33 +++++++++---------- .../0.1.0/template/onsoz.typ | 6 ++-- .../0.1.0/template/semboller.typ | 31 +++++++++-------- 4 files changed, 46 insertions(+), 41 deletions(-) diff --git a/packages/preview/community-itu-thesis/0.1.0/lib.typ b/packages/preview/community-itu-thesis/0.1.0/lib.typ index b28bafd80e..d3705556f6 100644 --- a/packages/preview/community-itu-thesis/0.1.0/lib.typ +++ b/packages/preview/community-itu-thesis/0.1.0/lib.typ @@ -351,11 +351,13 @@ // LaTeX'te ön materyal tek satır aralığı (\singlespacing); gövde 1.5 (\oneandonehalf) set par(leading: 0.65em) - // ---- İTHAF ---- + // "Sayfa" / "Page" sütun başlığı (cls: \cftaftertoctitle ... \bf\underline{Sayfa}) + let sayfa-etiket = if ingilizce { "Page" } else { "Sayfa" } + + // ---- İTHAF ---- (cls: \vspace*{0.4\textheight} sonra sağa dayalı) if ithaf != none and str(ithaf).trim() != "" { - v(1fr) + v(40%) align(right)[#emph(strong(ithaf))] - v(1fr) pagebreak(weak: true) } @@ -370,7 +372,12 @@ #set heading(outlined: false) #heading(level: 1, if ingilizce { "TABLE OF CONTENTS" } else { "İÇİNDEKİLER" }) ] - outline(title: none, depth: 4, indent: auto) + align(right)[#strong(underline(sayfa-etiket))] + [ + // Bölüm ve ön/arka materyal (1. seviye) girdileri kalın — cls'teki gibi + #show outline.entry.where(level: 1): strong + #outline(title: none, depth: 4, indent: auto) + ] // ---- KISALTMALAR ---- if kisaltmalar != none { @@ -387,12 +394,14 @@ // ---- ÇİZELGE LİSTESİ ---- if cizelge-listesi { heading(level: 1, if ingilizce { "LIST OF TABLES" } else { "ÇİZELGE LİSTESİ" }) + align(right)[#strong(underline(sayfa-etiket))] outline(title: none, target: figure.where(kind: table)) } // ---- ŞEKİL LİSTESİ ---- if sekil-listesi { heading(level: 1, if ingilizce { "LIST OF FIGURES" } else { "ŞEKİL LİSTESİ" }) + align(right)[#strong(underline(sayfa-etiket))] outline(title: none, target: figure.where(kind: image)) } diff --git a/packages/preview/community-itu-thesis/0.1.0/template/kisaltmalar.typ b/packages/preview/community-itu-thesis/0.1.0/template/kisaltmalar.typ index b6b302beeb..3e487fff56 100644 --- a/packages/preview/community-itu-thesis/0.1.0/template/kisaltmalar.typ +++ b/packages/preview/community-itu-thesis/0.1.0/template/kisaltmalar.typ @@ -1,20 +1,19 @@ // KISALTMALAR içeriği — "KISALTMALAR" başlığı şablon tarafından eklenir. +// LaTeX şablonundaki gibi: kalın kısaltma, ardından " : " ve açıklama (başlık satırı yok). -#table( - columns: (auto, 1fr), - align: (center + horizon, left), - inset: 5pt, - stroke: none, - [*KISALTMA*], [*AÇIKLAMA*], - [API], [Application Programming Interface], - [CPU], [Central Processing Unit], - [GPU], [Graphics Processing Unit], - [HTML], [HyperText Markup Language], - [HTTP], [HyperText Transfer Protocol], - [JSON], [JavaScript Object Notation], - [RGB], [Red, Green, Blue], - [SQL], [Structured Query Language], - [UI], [User Interface], - [UX], [User Experience], - [XML], [Extensible Markup Language], +#grid( + columns: (auto, auto, 1fr), + column-gutter: (1.5em, 0.6em), + row-gutter: 0.7em, + [*API*], [:], [Application Programming Interface], + [*CPU*], [:], [Central Processing Unit], + [*GPU*], [:], [Graphics Processing Unit], + [*HTML*], [:], [HyperText Markup Language], + [*HTTP*], [:], [HyperText Transfer Protocol], + [*JSON*], [:], [JavaScript Object Notation], + [*RGB*], [:], [Red, Green, Blue], + [*SQL*], [:], [Structured Query Language], + [*UI*], [:], [User Interface], + [*UX*], [:], [User Experience], + [*XML*], [:], [Extensible Markup Language], ) diff --git a/packages/preview/community-itu-thesis/0.1.0/template/onsoz.typ b/packages/preview/community-itu-thesis/0.1.0/template/onsoz.typ index 0f78e1179e..9bde3f8239 100644 --- a/packages/preview/community-itu-thesis/0.1.0/template/onsoz.typ +++ b/packages/preview/community-itu-thesis/0.1.0/template/onsoz.typ @@ -6,8 +6,6 @@ Prof. Dr. Adı SOYADI'ya, kıymetli görüşleri ve rehberliği için teşekkür Ayrıca araştırma sürecinde bana yardımcı olan ve deneylerini benimle paylaşan tüm laboratuvar arkadaşlarıma, aileme ve tüm dostlarıma şükranlarımı sunarım. +// LaTeX'teki gibi: tarih sola, ad-soyad sağa dayalı (aynı satırda) #v(30pt) -#align(right)[ - Aralık 2024, İstanbul \ - Öğrenci Adı SOYADI -] +Aralık 2024, İstanbul #h(1fr) Öğrenci Adı SOYADI diff --git a/packages/preview/community-itu-thesis/0.1.0/template/semboller.typ b/packages/preview/community-itu-thesis/0.1.0/template/semboller.typ index 6de4eee072..a08d6c6616 100644 --- a/packages/preview/community-itu-thesis/0.1.0/template/semboller.typ +++ b/packages/preview/community-itu-thesis/0.1.0/template/semboller.typ @@ -1,19 +1,18 @@ // SEMBOLLER içeriği — "SEMBOLLER" başlığı şablon tarafından eklenir. +// LaTeX şablonundaki gibi: kalın sembol, ardından " : " ve açıklama (başlık satırı yok). -#table( - columns: (auto, 1fr), - align: (center + horizon, left), - inset: 5pt, - stroke: none, - [*SEMBOL*], [*AÇIKLAMA*], - [$alpha$], [Açı, alfa açısı], - [$beta$], [Açı, beta açısı], - [$gamma$], [Açı, gama açısı], - [$Delta E$], [Enerji farkı], - [$sigma$], [Standart sapma], - [$theta$], [Sıcaklık], - [$lambda$], [Dalga boyu], - [$mu$], [Ortalama, mikro], - [$pi$], [Pi sayısı], - [$rho$], [Yoğunluk], +#grid( + columns: (auto, auto, 1fr), + column-gutter: (1.5em, 0.6em), + row-gutter: 0.7em, + [$alpha$], [:], [Açı, alfa açısı], + [$beta$], [:], [Açı, beta açısı], + [$gamma$], [:], [Açı, gama açısı], + [$Delta E$], [:], [Enerji farkı], + [$sigma$], [:], [Standart sapma], + [$theta$], [:], [Sıcaklık], + [$lambda$], [:], [Dalga boyu], + [$mu$], [:], [Ortalama, mikro], + [$pi$], [:], [Pi sayısı], + [$rho$], [:], [Yoğunluk], ) From 13d47770fd637908b0f98c4db809dc38a6357aa2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hamza=20Sancakdaro=C4=9Flu?= Date: Mon, 8 Jun 2026 13:59:47 +0300 Subject: [PATCH 08/11] Full twoside fidelity (blank versos, binding margin, right-page starts, cover spacing) --- .../community-itu-thesis/0.1.0/lib.typ | 52 +++++++++++++------ 1 file changed, 37 insertions(+), 15 deletions(-) diff --git a/packages/preview/community-itu-thesis/0.1.0/lib.typ b/packages/preview/community-itu-thesis/0.1.0/lib.typ index d3705556f6..3032dbfeaa 100644 --- a/packages/preview/community-itu-thesis/0.1.0/lib.typ +++ b/packages/preview/community-itu-thesis/0.1.0/lib.typ @@ -57,6 +57,9 @@ dil: "tr", // "tr" | "turkce" / "en" | "ingilizce" derece: "yukseklisans", // "yukseklisans" | "doktora" cilt: "bez", // "bez" (ciltli) | "karton" + // baski: "onluarkali" (çift taraflı: boş sayfalar + cilt payı kenar, cls varsayılanı) + // "tekyonlu" (tek taraflı: boş sayfa yok, sabit sol kenar) + baski: "onluarkali", // ===== ÖN/ARKA MATERYAL (içerik blokları) ===== ithaf: none, // İthaf metni (ör. "Aileme,") @@ -77,6 +80,14 @@ let ingilizce = dil == "en" or dil == "ingilizce" or dil == "english" let lang-code = if ingilizce { "en" } else { "tr" } + // ---- Baskı (çift/tek taraflı) ---- + // cls onluarkali = twoside: bölüm/kapaklar tek (sağ) sayfadan başlar, araya + // boş sayfa girer ve kenar boşluğu cilt payına göre değişir (\BolumSagdaKalsin). + let twoside = baski != "tekyonlu" + // Bir sonraki sağ (tek) sayfaya geç; gerekiyorsa araya boş verso ekler. + // Tek taraflıda sadece normal sayfa sonu. + let yeni-sag-sayfa = if twoside { pagebreak(to: "odd", weak: true) } else { pagebreak(weak: true) } + // ---- Enstitü adları ---- let enstitu-tr = ( "lisansustu": "Lisansüstü Eğitim Enstitüsü", @@ -139,7 +150,8 @@ show heading: it => { let numarali = it.numbering != none if it.level == 1 { - pagebreak(weak: true) + // cls: birinci derece başlık (bölüm / ön-arka materyal) sağ sayfadan başlar + yeni-sag-sayfa v(18.5mm) if numarali { text(weight: "bold", size: 12pt)[#counter(heading).display(). #it.body] @@ -188,33 +200,34 @@ // ===================================================================== set page( paper: "a4", - margin: (left: 2.5cm, right: 2.5cm, top: 2.5cm, bottom: 2.5cm), + margin: (left: 2cm, right: 2cm, top: 2cm, bottom: 2cm), numbering: none, ) // ---- Tek bir kapak iskeleti ---- + // Dikey boşluklar cls th@DisKapak/IcKapak değerlerine göre (55/55/27/14/22 mm); + // böylece tarih sayfanın altına oturur. let kapak(enstitu-ust, baslik-blok, seviye, kimlik, anabilim, program, danisman-satir, tarih) = { set par(justify: false, leading: 0.65em) align(center)[ - #v(2mm) #underline(text(weight: "bold")[#enstitu-ust]) - #v(50mm) + #v(55mm) #baslik-blok - #v(50mm) + #v(55mm) #text(weight: "bold")[#seviye] #v(8mm) #text(weight: "bold")[#kimlik] - #v(22mm) + #v(27mm) #text(weight: "bold")[#anabilim] #v(2mm) #text(weight: "bold")[#program] #if danisman-satir != none { - v(12mm) + v(14mm) danisman-satir } else { - v(12mm) + v(14mm) } - #v(18mm) + #v(22mm) #text(weight: "bold")[#tarih] ] } @@ -234,7 +247,7 @@ } else { none }, if ingilizce { savunma-tarihi-en } else { savunma-tarihi-tr }, ) - pagebreak(weak: true) + yeni-sag-sayfa // (2) TÜRKÇE İÇ KAPAK let danisman-blok-tr = { @@ -249,7 +262,7 @@ [#isim-soyisim (#ogrenci-no)], anabilim-dali-tr, program-tr, danisman-blok-tr, savunma-tarihi-tr, ) - pagebreak(weak: true) + yeni-sag-sayfa // (3) İNGİLİZCE İÇ KAPAK let danisman-blok-en = { @@ -270,7 +283,7 @@ // ===================================================================== { set par(justify: true, leading: 1.1em) - pagebreak(weak: true) + yeni-sag-sayfa v(18mm) // Açıklama paragrafı @@ -339,8 +352,16 @@ // ===================================================================== // ÖN MATERYAL (roma rakamı, normal kenar boşluğu) // ===================================================================== + // Sayfa sayacını fiziksel TEK (sağ) sayfada sıfırlamak için önce sağ sayfaya geç; + // böylece görünen roma numarası ile fiziksel sayfa pariteleri hizalanır. + yeni-sag-sayfa + // Çift taraflıda iç (ciltleme) 4 cm / dış 2.5 cm cilt payı; tek taraflıda sabit sol 4 cm set page( - margin: (left: 4cm, right: 2.5cm, top: 2.5cm, bottom: 2.5cm), + margin: if twoside { + (inside: 4cm, outside: 2.5cm, top: 2.5cm, bottom: 2.5cm) + } else { + (left: 4cm, right: 2.5cm, top: 2.5cm, bottom: 2.5cm) + }, numbering: "i", number-align: center + bottom, ) @@ -427,9 +448,10 @@ set par(leading: 1.45em) // ===================================================================== - // GÖVDE (arabik rakam, numaralı bölümler) + // GÖVDE (arabik rakam, numaralı bölümler — ilk bölüm sağ sayfadan) // ===================================================================== - pagebreak(weak: true) + // Sayacı fiziksel tek sayfada sıfırla (parite hizası) — ilk bölüm sağ sayfadan başlar + yeni-sag-sayfa set page(numbering: "1") counter(page).update(1) counter(heading).update(0) From cc133b869b2acde88de5d3567a28028bfef98950 Mon Sep 17 00:00:00 2001 From: hmzsnc96 <130750277+hmzsnc96@users.noreply.github.com> Date: Mon, 8 Jun 2026 14:21:49 +0300 Subject: [PATCH 09/11] =?UTF-8?q?ozgecmis:=20cls=20gibi=20d=C3=BCz=20metin?= =?UTF-8?q?=20yap=20(alt=20ba=C5=9Fl=C4=B1klar=C4=B1=20=C4=B0=C3=87=C4=B0N?= =?UTF-8?q?DEK=C4=B0LER'den=20=C3=A7=C4=B1kar)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Özgeçmiş/CV artık başlık (==,===) yerine kalın etiket + madde listesi kullanıyor; lib.typ özgeçmiş içeriğindeki başlıkları outlined:false yapıyor. Böylece içindekiler'de yalnızca tek 'ÖZGEÇMİŞ' satırı görünür (itutez.cls ile birebir). --- .../community-itu-thesis/0.1.0/lib.typ | 6 ++- .../0.1.0/template/ozgecmis.typ | 49 +++++++------------ 2 files changed, 24 insertions(+), 31 deletions(-) diff --git a/packages/preview/community-itu-thesis/0.1.0/lib.typ b/packages/preview/community-itu-thesis/0.1.0/lib.typ index 3032dbfeaa..a8e78eb7f3 100644 --- a/packages/preview/community-itu-thesis/0.1.0/lib.typ +++ b/packages/preview/community-itu-thesis/0.1.0/lib.typ @@ -481,6 +481,10 @@ // ===================================================================== if ozgecmis != none { heading(level: 1, if ingilizce { "CURRICULUM VITAE" } else { "ÖZGEÇMİŞ" }) - ozgecmis + // cls'te özgeçmiş düz metindir; içindeki olası başlıklar İÇİNDEKİLER'e girmesin. + { + set heading(outlined: false) + ozgecmis + } } } diff --git a/packages/preview/community-itu-thesis/0.1.0/template/ozgecmis.typ b/packages/preview/community-itu-thesis/0.1.0/template/ozgecmis.typ index 011f1b94cf..2390b40dea 100644 --- a/packages/preview/community-itu-thesis/0.1.0/template/ozgecmis.typ +++ b/packages/preview/community-itu-thesis/0.1.0/template/ozgecmis.typ @@ -1,38 +1,27 @@ -// ÖZGEÇMİŞ içeriği — "ÖZGEÇMİŞ" başlığı şablon tarafından eklenir. - -== Kişisel Bilgiler +// ÖZGEÇMİŞ içeriği — "ÖZGEÇMİŞ" başlığı şablon tarafından otomatik eklenir. +// +// LaTeX şablonundaki gibi özgeçmiş ALT BAŞLIK İÇERMEZ; bu yüzden içindekiler'de +// yalnızca "ÖZGEÇMİŞ" satırı görünür. Bölümler "kalın etiket + madde listesi" +// (\textbf{...:} + itemize) biçiminde yazılır — başlık (==, ===) KULLANMAYIN. *Adı Soyadı:* Öğrenci Adı SOYADI \ *Doğum Tarihi ve Yeri:* 1 Ocak 1995, İstanbul \ *E-posta:* ogrenci\@mail.com -== Eğitim - -=== Lisans - -*İstanbul Teknik Üniversitesi* \ -Bölüm: Bilgisayar Mühendisliği \ -Mezuniyet Tarihi: Haziran 2019 - -=== Yüksek Lisans - -*İstanbul Teknik Üniversitesi, Lisansüstü Eğitim Enstitüsü* \ -Bölüm: Bilgisayar Mühendisliği \ -Tez Başlığı: "Tez Başlığı Buraya Yazılır" \ -Tez Danışmanı: Prof. Dr. Adı SOYADI - -== Çalışma Deneyimi - -=== Araştırma Görevlisi - -*İstanbul Teknik Üniversitesi, Bilgisayar Mühendisliği Bölümü* \ -Tarih: Eylül 2019 - Halen - -== Yayınlar +#v(3mm) +*ÖĞRENİM DURUMU:* +- *Lisans:* 2019, İstanbul Teknik Üniversitesi, Bilgisayar ve Bilişim Fakültesi, Bilgisayar Mühendisliği +- *Yüksek Lisans:* 2024, İstanbul Teknik Üniversitesi, Lisansüstü Eğitim Enstitüsü, Bilgisayar Mühendisliği -1. Yazar, A., Yazar, B., & Yazar, C. (2023). "Makale Başlığı", _Yayın Yeri_, ss. 1-10. +#v(3mm) +*MESLEKİ DENEYİM VE ÖDÜLLER:* +- 2019 yılından bu yana İstanbul Teknik Üniversitesi Bilgisayar Mühendisliği Bölümü'nde araştırma görevlisi olarak görev yapmaktadır. -== Beceriler +#v(3mm) +*TEZDEN TÜRETİLEN YAYINLAR, SUNUMLAR VE PATENTLER:* +- Yazar, A., Yazar, B., Yazar, C. (2023). Makale Başlığı. _Yayın Yeri_, 12(3), ss. 1-10. -- Programlama: Python, C++, Java -- Diller: Türkçe (Ana dil), İngilizce (C1) +#v(3mm) +*DİĞER YAYINLAR, SUNUMLAR VE PATENTLER:* +- Örnek Yayın 1 +- Örnek Yayın 2 From cb94990ad34d716036cc40a97cfc97f40f11ee66 Mon Sep 17 00:00:00 2001 From: hmzsnc96 <130750277+hmzsnc96@users.noreply.github.com> Date: Thu, 11 Jun 2026 22:16:01 +0300 Subject: [PATCH 10/11] =?UTF-8?q?community-itu-thesis:=20README'yi=20?= =?UTF-8?q?=C4=B0ngilizce'ye=20=C3=A7evir=20(inceleme=20geri=20bildirimi)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../community-itu-thesis/0.1.0/README.md | 123 +++++++++--------- 1 file changed, 60 insertions(+), 63 deletions(-) diff --git a/packages/preview/community-itu-thesis/0.1.0/README.md b/packages/preview/community-itu-thesis/0.1.0/README.md index 68d1946a3a..662126e64d 100644 --- a/packages/preview/community-itu-thesis/0.1.0/README.md +++ b/packages/preview/community-itu-thesis/0.1.0/README.md @@ -1,81 +1,78 @@ -# İTÜ Tez Şablonu (Typst) · `community-itu-thesis` +# ITU Thesis Template (Typst) · `community-itu-thesis` -İstanbul Teknik Üniversitesi (İTÜ) lisansüstü tezleri için Typst şablonu. -Resmi LaTeX şablonu (`itutez.cls` v1.7.1, Ocak 2025) temel alınarak yeniden -yazılmıştır. +A Typst template for graduate (master's and doctoral) theses at Istanbul +Technical University (İTÜ), ported from the official LaTeX class (`itutez.cls` +v1.7.1, January 2025). The thesis output itself is in Turkish (with optional +English language mode), since that is the intended audience. -> Thesis template for graduate theses at Istanbul Technical University, ported -> from the official LaTeX class to Typst. +> ⚠️ **Unofficial community port.** This package is not officially endorsed by +> Istanbul Technical University; it is an independent, volunteer adaptation of +> the official LaTeX class. Always verify the output against the current +> official ITU thesis guidelines before submitting your thesis. -> ⚠️ **Gayriresmî / topluluk uyarlaması.** Bu paket İstanbul Teknik -> Üniversitesi tarafından resmî olarak onaylanmamıştır; resmî LaTeX şablonundan -> bağımsız bir gönüllü uyarlamasıdır. Teziniz teslim edilmeden önce çıktının -> güncel İTÜ tez yazım kurallarına uyduğunu mutlaka kendiniz doğrulayın. -> -> *Unofficial community port — not officially endorsed by ITU. Verify the -> output against the current official thesis guidelines before submission.* - -## Hızlı başlangıç +## Quick start ```bash -typst init @preview/community-itu-thesis:0.1.0 benim-tezim -cd benim-tezim +typst init @preview/community-itu-thesis:0.1.0 my-thesis +cd my-thesis typst watch main.typ ``` -Bu komut çalışan bir örnek proje oluşturur. `main.typ` içindeki bilgileri kendi -tezinize göre düzenleyin. - -## Özellikler - -- Dış kapak + Türkçe iç kapak + İngilizce iç kapak -- Jüri onay / imza sayfası -- İthaf, Önsöz, İçindekiler, Kısaltmalar, Semboller -- Çizelge Listesi ve Şekil Listesi (otomatik) -- Özet / Summary -- Ön materyalde roma (i, ii, …), gövdede arabik (1, 2, …) sayfa numarası -- Numaralı bölümler (“BÖLÜM 1. …”) + numarasız ön/arka materyal başlıkları -- Ekler (EKLER kapağı ile) ve Özgeçmiş -- NUM (sayılı/IEEE) ve APA atıf stilleri — bkz. `main.typ` ve `main-apa.typ` -- Türkçe ve İngilizce dil desteği (`dil: "tr"` / `dil: "en"`) - -## Kullanım - -`#show: thesis.with(...)` çağrısındaki başlıca parametreler: - -| Parametre | Açıklama | -|---|---| -| `ad`, `soyad`, `ogrenci-no` | Öğrenci bilgileri | -| `tez-basligi`, `thesis-title` | TR/EN başlık (en çok 3 satır, dizi) | -| `anabilim-dali-tr/-en`, `program-tr/-en` | Akademik birim | +This creates a working sample project. Edit the information in `main.typ` to +match your own thesis. + +## Features + +- Outer cover + Turkish inner cover + English inner cover +- Jury approval / signature page +- Dedication, Foreword, Table of Contents, Abbreviations, Symbols +- List of Tables and List of Figures (automatic) +- Özet / Summary (Turkish and English abstracts) +- Roman page numbers (i, ii, …) in front matter, Arabic (1, 2, …) in the body +- Numbered chapters (“1. …”, with subheadings “1.1”, “1.1.1”) and unnumbered + front/back-matter headings +- Appendices (with an "EKLER" cover page) and Curriculum Vitae +- NUM (numeric/IEEE) and APA citation styles — see `main.typ` and `main-apa.typ` +- Turkish and English language support (`dil: "tr"` / `dil: "en"`) + +## Usage + +The main parameters of the `#show: thesis.with(...)` call (parameter names are +in Turkish, matching the template API): + +| Parameter | Description | +| --- | --- | +| `ad`, `soyad`, `ogrenci-no` | Student name, surname, and ID | +| `tez-basligi`, `thesis-title` | TR/EN title (up to 3 lines, as an array) | +| `anabilim-dali-tr/-en`, `program-tr/-en` | Academic department / program | | `enstitu` | `"lisansustu"`, `"bilisim"`, `"fenbilimleri"`, `"sosyalbilimler"`, `"enerji"`, `"avrasya"` | -| `danisman`, `danisman-en`, `es-danisman*` | Danışman / eş danışman (TR & EN) | -| `juri` | `(ad: "...", univ: "...")` sözlüklerinden dizi | -| `dil` | `"tr"` veya `"en"` | -| `derece` | `"yukseklisans"` veya `"doktora"` | -| `cilt` | `"bez"` veya `"karton"` | -| `ithaf`, `onsoz`, `kisaltmalar`, `semboller`, `ozet`, `summary`, `ekler`, `ozgecmis` | Ön/arka materyal içerikleri | +| `danisman`, `danisman-en`, `es-danisman*` | Advisor / co-advisor (TR & EN) | +| `juri` | Array of `(ad: "...", univ: "...")` dictionaries | +| `dil` | `"tr"` or `"en"` | +| `derece` | `"yukseklisans"` (master's) or `"doktora"` (doctorate) | +| `cilt` | `"bez"` (hardbound) or `"karton"` (softbound) | +| `ithaf`, `onsoz`, `kisaltmalar`, `semboller`, `ozet`, `summary`, `ekler`, `ozgecmis` | Front/back-matter content | | `kaynakca` | `bibliography("refs.bib", style: "ieee", title: "Kaynaklar")` | -Gövde bölümleri (`= Giriş`, `== Alt başlık`, …) `#show` çağrısından sonra -normal Typst başlıkları olarak yazılır; otomatik olarak numaralanır. +Body chapters (`= Giriş`, `== Alt başlık`, …) are written as ordinary Typst +headings after the `#show` call; they are numbered automatically. -### Atıf ve kaynakça +### Citations and bibliography -`refs.bib` dosyasına BibTeX kayıtları ekleyin, metin içinde `@anahtar` ile atıf -yapın. Stil için `kaynakca` parametresinde `style: "ieee"` (sayılı) veya -`style: "apa"` kullanın. +Add BibTeX records to `refs.bib` and cite them in the text with `@key`. Choose +the style via the `kaynakca` parameter: `style: "ieee"` (numeric) or +`style: "apa"`. -## Notlar +## Notes -- Şablon `Times New Roman` fontunu hedefler; sistemde yoksa `TeX Gyre Termes` / - `Libertinus Serif` gibi alternatiflere düşer. Birebir görünüm için Times New - Roman fontunun kurulu olması önerilir. -- Typst, EPS desteklemez; şekilleri PNG/PDF/SVG olarak ekleyin. +- The template targets the `Times New Roman` font; if it is not installed, it + falls back to alternatives such as `TeX Gyre Termes` / `Libertinus Serif`. + Installing Times New Roman is recommended for a faithful look. +- Typst does not support EPS; add figures as PNG/PDF/SVG. -## Lisans +## License -MIT — bkz. [LICENSE](LICENSE). +MIT — see [LICENSE](LICENSE). -Bu şablon, İTÜ Bilişim Enstitüsü tarafından hazırlanan resmi LaTeX şablonundan -uyarlanmıştır. +Adapted from the official LaTeX thesis class prepared by the ITU Informatics +Institute. From 52c3e4a4bcbe4b38e45bc9bf7c34b0e5b241b039 Mon Sep 17 00:00:00 2001 From: hmzsnc96 Date: Thu, 11 Jun 2026 23:08:17 +0300 Subject: [PATCH 11/11] community-itu-thesis: bump to 0.2.0 with a fully English API Since 0.1.0 was never published, the package is resubmitted as 0.2.0: all parameter names, enum values, template file names, and source comments are now in English (e.g. ad/soyad -> name/surname, derece: "yukseklisans" -> degree: "masters"). The generated thesis output is unchanged. Co-Authored-By: Claude Opus 4.8 --- .../community-itu-thesis/0.1.0/lib.typ | 490 ----------------- .../0.1.0/template/main-apa.typ | 88 ---- .../0.1.0/template/main.typ | 139 ----- .../{0.1.0 => 0.2.0}/LICENSE | 0 .../{0.1.0 => 0.2.0}/README.md | 36 +- .../community-itu-thesis/0.2.0/lib.typ | 496 ++++++++++++++++++ .../template/abbreviations.typ} | 4 +- .../template/abstract-en.typ} | 2 +- .../template/abstract-tr.typ} | 2 +- .../template/appendices.typ} | 4 +- .../ozgecmis.typ => 0.2.0/template/cv.typ} | 8 +- .../onsoz.typ => 0.2.0/template/foreword.typ} | 4 +- .../0.2.0/template/main-apa.typ | 88 ++++ .../0.2.0/template/main.typ | 138 +++++ .../{0.1.0 => 0.2.0}/template/refs.bib | 0 .../template/symbols.typ} | 4 +- .../{0.1.0 => 0.2.0}/thumbnail.png | Bin .../{0.1.0 => 0.2.0}/typst.toml | 2 +- 18 files changed, 757 insertions(+), 748 deletions(-) delete mode 100644 packages/preview/community-itu-thesis/0.1.0/lib.typ delete mode 100644 packages/preview/community-itu-thesis/0.1.0/template/main-apa.typ delete mode 100644 packages/preview/community-itu-thesis/0.1.0/template/main.typ rename packages/preview/community-itu-thesis/{0.1.0 => 0.2.0}/LICENSE (100%) rename packages/preview/community-itu-thesis/{0.1.0 => 0.2.0}/README.md (59%) create mode 100644 packages/preview/community-itu-thesis/0.2.0/lib.typ rename packages/preview/community-itu-thesis/{0.1.0/template/kisaltmalar.typ => 0.2.0/template/abbreviations.typ} (75%) rename packages/preview/community-itu-thesis/{0.1.0/template/summary.typ => 0.2.0/template/abstract-en.typ} (89%) rename packages/preview/community-itu-thesis/{0.1.0/template/ozet.typ => 0.2.0/template/abstract-tr.typ} (89%) rename packages/preview/community-itu-thesis/{0.1.0/template/ekler.typ => 0.2.0/template/appendices.typ} (85%) rename packages/preview/community-itu-thesis/{0.1.0/template/ozgecmis.typ => 0.2.0/template/cv.typ} (69%) rename packages/preview/community-itu-thesis/{0.1.0/template/onsoz.typ => 0.2.0/template/foreword.typ} (72%) create mode 100644 packages/preview/community-itu-thesis/0.2.0/template/main-apa.typ create mode 100644 packages/preview/community-itu-thesis/0.2.0/template/main.typ rename packages/preview/community-itu-thesis/{0.1.0 => 0.2.0}/template/refs.bib (100%) rename packages/preview/community-itu-thesis/{0.1.0/template/semboller.typ => 0.2.0/template/symbols.typ} (71%) rename packages/preview/community-itu-thesis/{0.1.0 => 0.2.0}/thumbnail.png (100%) rename packages/preview/community-itu-thesis/{0.1.0 => 0.2.0}/typst.toml (97%) diff --git a/packages/preview/community-itu-thesis/0.1.0/lib.typ b/packages/preview/community-itu-thesis/0.1.0/lib.typ deleted file mode 100644 index a8e78eb7f3..0000000000 --- a/packages/preview/community-itu-thesis/0.1.0/lib.typ +++ /dev/null @@ -1,490 +0,0 @@ -// İTÜ Lisansüstü Tez Şablonu — Typst sürümü -// İstanbul Teknik Üniversitesi · Lisansüstü Eğitim Enstitüsü -// -// Bu şablon, resmi LaTeX şablonu (itutez.cls v1.7.1, Ocak 2025) temel alınarak -// Typst için yeniden yazılmıştır. Aşağıdaki resmi öğeleri üretir: -// · Dış kapak + Türkçe iç kapak + İngilizce iç kapak -// · Jüri onay/imza sayfası (KABUL VE ONAY) -// · İthaf, Önsöz, İçindekiler, Kısaltmalar, Semboller -// · Çizelge Listesi, Şekil Listesi -// · Özet / Summary -// · Ön materyalde roma (i, ii, …), gövdede arabik (1, 2, …) sayfa numarası -// · Numaralı bölümler ("BÖLÜM 1. ...") ve numarasız ön/arka materyal başlıkları -// · Ekler (+ EKLER kapağı), Kaynaklar, Özgeçmiş - -#let thesis( - // ===== KİŞİSEL BİLGİLER ===== - ad: "", - soyad: "", - ogrenci-no: "", - unvan: "", - - // ===== TEZ BAŞLIKLARI (en çok 3 satır) ===== - tez-basligi: ("", "", ""), // Türkçe (kapak + Türkçe iç kapak) - thesis-title: ("", "", ""), // İngilizce (İngilizce iç kapak + onay) - - // ===== AKADEMİK BİLGİLER ===== - anabilim-dali-tr: "", - anabilim-dali-en: "", - program-tr: "", - program-en: "", - // enstitu: "lisansustu" | "bilisim" | "fenbilimleri" | "sosyalbilimler" | "enerji" | "avrasya" - enstitu: "lisansustu", - - // ===== DANIŞMAN ===== - danisman: "", - danisman-univ: "", - danisman-en: "", - danisman-univ-en: "", - es-danisman: "", - es-danisman-univ: "", - es-danisman-en: "", - es-danisman-univ-en: "", - - // ===== JÜRİ ÜYELERİ ===== - // (ad: "...", univ: "...") sözlüklerinden oluşan dizi - juri: (), - - // ===== TARİHLER ===== - savunma-tarihi-tr: "", // Büyük kapaktaki tarih (ör. "Aralık 2024") - savunma-tarihi-en: "", - teslim-tarihi-tr: "", // Onay sayfası teslim tarihi (ör. "22 Eylül 2024") - teslim-tarihi-en: "", - savunma-tarihi-onay-tr: "", // Onay sayfası savunma tarihi (ör. "21 Aralık 2024") - savunma-tarihi-onay-en: "", - - // ===== AYARLAR ===== - dil: "tr", // "tr" | "turkce" / "en" | "ingilizce" - derece: "yukseklisans", // "yukseklisans" | "doktora" - cilt: "bez", // "bez" (ciltli) | "karton" - // baski: "onluarkali" (çift taraflı: boş sayfalar + cilt payı kenar, cls varsayılanı) - // "tekyonlu" (tek taraflı: boş sayfa yok, sabit sol kenar) - baski: "onluarkali", - - // ===== ÖN/ARKA MATERYAL (içerik blokları) ===== - ithaf: none, // İthaf metni (ör. "Aileme,") - onsoz: none, // Önsöz içeriği - kisaltmalar: none, // Kısaltmalar tablosu/içeriği - semboller: none, // Semboller tablosu/içeriği - ozet: none, // Türkçe özet içeriği (anahtar kelimeler dahil) - summary: none, // İngilizce summary içeriği (keywords dahil) - sekil-listesi: true, // Şekil Listesi üretilsin mi? - cizelge-listesi: true, // Çizelge Listesi üretilsin mi? - kaynakca: none, // bibliography(...) çağrısı buraya geçirilir - ekler: none, // Ekler içeriği - ozgecmis: none, // Özgeçmiş içeriği - - body, -) = { - // ---- Dil ---- - let ingilizce = dil == "en" or dil == "ingilizce" or dil == "english" - let lang-code = if ingilizce { "en" } else { "tr" } - - // ---- Baskı (çift/tek taraflı) ---- - // cls onluarkali = twoside: bölüm/kapaklar tek (sağ) sayfadan başlar, araya - // boş sayfa girer ve kenar boşluğu cilt payına göre değişir (\BolumSagdaKalsin). - let twoside = baski != "tekyonlu" - // Bir sonraki sağ (tek) sayfaya geç; gerekiyorsa araya boş verso ekler. - // Tek taraflıda sadece normal sayfa sonu. - let yeni-sag-sayfa = if twoside { pagebreak(to: "odd", weak: true) } else { pagebreak(weak: true) } - - // ---- Enstitü adları ---- - let enstitu-tr = ( - "lisansustu": "Lisansüstü Eğitim Enstitüsü", - "bilisim": "Bilişim Enstitüsü", - "fenbilimleri": "Fen Bilimleri Enstitüsü", - "sosyalbilimler": "Sosyal Bilimler Enstitüsü", - "enerji": "Enerji Enstitüsü", - "avrasya": "Avrasya Yer Bilimleri Enstitüsü", - ).at(enstitu, default: "Lisansüstü Eğitim Enstitüsü") - let enstitu-en = ( - "lisansustu": "Graduate School", - "bilisim": "Informatics Institute", - "fenbilimleri": "Graduate School of Science Engineering and Technology", - "sosyalbilimler": "Graduate School of Social Sciences", - "enerji": "Energy Institute", - "avrasya": "Eurasia Institute of Earth Sciences", - ).at(enstitu, default: "Graduate School") - - // ---- Büyük harf çevrimi ---- - // upper() Unicode varsayılanını kullanır ve Türkçe "i → İ" eşlemesini yapmaz - // (yanlış "İÇINDEKILER" üretir). Genel çözüm: tek sorunlu harf olan "i"yi - // upper()'dan önce "İ" ile değiştirmek; diğer harfleri (ç, ş, ğ, ö, ü, ı) - // upper() zaten doğru çevirir. İngilizce metinlerde düz upper() kullanılır. - let tr-upper(s) = upper(str(s).replace("i", "İ")) - let en-upper(s) = upper(str(s)) - - let enstitu-ust-tr = tr-upper("İstanbul Teknik Üniversitesi ★ " + enstitu-tr) - let enstitu-ust-en = en-upper("İstanbul Technical University ★ " + enstitu-en) - - // ---- Tez seviyesi ---- - let seviye-tr = if derece == "doktora" { "DOKTORA TEZİ" } else { "YÜKSEK LİSANS TEZİ" } - let seviye-en = if derece == "doktora" { "Ph.D. THESIS" } else { "M.Sc. THESIS" } - - let isim-soyisim = (ad + " " + soyad).trim() - - // ---- Başlık satırlarını birleştiren yardımcı (cas: çevrim fonksiyonu) ---- - let basliklar(satirlar, cas) = { - let temiz = satirlar.filter(s => s != none and str(s).trim() != "") - text(size: 14pt, weight: "bold")[ - #temiz.map(s => cas(s)).join(linebreak()) - ] - } - - // ===================================================================== - // GENEL AYARLAR - // ===================================================================== - set document(title: tez-basligi.at(0, default: ""), author: isim-soyisim) - set text( - font: ("Times New Roman", "Libertinus Serif"), - size: 12pt, - lang: lang-code, - hyphenate: false, // LaTeX şablonundaki gibi (hyphenpenalty=10000) tireleme kapalı - ) - set par(leading: 1.45em, spacing: 0.6em, justify: true) - show math.equation: set block(spacing: 0.65em) - - // ---- Başlık stilleri ---- - // LaTeX itutez.cls'e göre (\@makechapterhead): gövde bölümü "1. BAŞLIK" biçiminde - // (önünde "BÖLÜM" YOK), 12pt kalın, sola dayalı. Ön/arka materyal başlıkları numarasız. - show heading: it => { - let numarali = it.numbering != none - if it.level == 1 { - // cls: birinci derece başlık (bölüm / ön-arka materyal) sağ sayfadan başlar - yeni-sag-sayfa - v(18.5mm) - if numarali { - text(weight: "bold", size: 12pt)[#counter(heading).display(). #it.body] - } else { - text(weight: "bold", size: 12pt)[#it.body] - } - v(12pt) - } else if it.level == 2 { - v(12pt) - if numarali { - text(weight: "bold", size: 12pt)[#counter(heading).display() #it.body] - } else { - text(weight: "bold", size: 12pt)[#it.body] - } - v(8pt) - } else if it.level == 3 { - v(8pt) - if numarali { - text(weight: "bold", size: 12pt)[#counter(heading).display() #it.body] - } else { - text(weight: "bold", size: 12pt)[#it.body] - } - v(4pt) - } else { - v(6pt) - if numarali { - text(weight: "bold", size: 12pt)[#counter(heading).display() #it.body] - } else { - text(weight: "bold", size: 12pt)[#it.body] - } - } - } - - // ---- Şekil ve çizelge ---- - let sekil-sozu = if ingilizce { "Figure" } else { "Şekil" } - let cizelge-sozu = if ingilizce { "Table" } else { "Çizelge" } - show figure.where(kind: image): set figure(supplement: sekil-sozu) - show figure.where(kind: table): set figure(supplement: cizelge-sozu) - show figure.where(kind: table): set figure.caption(position: top) - show figure.caption: it => { - text(weight: "bold")[#it.supplement #it.counter.display(): #it.body] - } - - // ===================================================================== - // KAPAKLAR (numarasız sayfalar, dar kenar boşluğu) - // ===================================================================== - set page( - paper: "a4", - margin: (left: 2cm, right: 2cm, top: 2cm, bottom: 2cm), - numbering: none, - ) - - // ---- Tek bir kapak iskeleti ---- - // Dikey boşluklar cls th@DisKapak/IcKapak değerlerine göre (55/55/27/14/22 mm); - // böylece tarih sayfanın altına oturur. - let kapak(enstitu-ust, baslik-blok, seviye, kimlik, anabilim, program, danisman-satir, tarih) = { - set par(justify: false, leading: 0.65em) - align(center)[ - #underline(text(weight: "bold")[#enstitu-ust]) - #v(55mm) - #baslik-blok - #v(55mm) - #text(weight: "bold")[#seviye] - #v(8mm) - #text(weight: "bold")[#kimlik] - #v(27mm) - #text(weight: "bold")[#anabilim] - #v(2mm) - #text(weight: "bold")[#program] - #if danisman-satir != none { - v(14mm) - danisman-satir - } else { - v(14mm) - } - #v(22mm) - #text(weight: "bold")[#tarih] - ] - } - - // (1) DIŞ KAPAK - kapak( - if ingilizce { enstitu-ust-en } else { enstitu-ust-tr }, - if ingilizce { basliklar(thesis-title, en-upper) } else { basliklar(tez-basligi, tr-upper) }, - if ingilizce { seviye-en } else { seviye-tr }, - isim-soyisim, - if ingilizce { anabilim-dali-en } else { anabilim-dali-tr }, - if ingilizce { program-en } else { program-tr }, - // Bez ciltte dış kapakta danışman yok; kartonda var - if cilt == "karton" { - let etiket = if ingilizce { "Thesis Advisor" } else { "Tez Danışmanı" } - text(weight: "bold")[#etiket: #(if ingilizce { danisman-en } else { danisman })] - } else { none }, - if ingilizce { savunma-tarihi-en } else { savunma-tarihi-tr }, - ) - yeni-sag-sayfa - - // (2) TÜRKÇE İÇ KAPAK - let danisman-blok-tr = { - text(weight: "bold")[Tez Danışmanı: #danisman] - if es-danisman.trim() != "" { - linebreak() - text(weight: "bold")[Eş Danışman: #es-danisman] - } - } - kapak( - enstitu-ust-tr, basliklar(tez-basligi, tr-upper), seviye-tr, - [#isim-soyisim (#ogrenci-no)], - anabilim-dali-tr, program-tr, danisman-blok-tr, savunma-tarihi-tr, - ) - yeni-sag-sayfa - - // (3) İNGİLİZCE İÇ KAPAK - let danisman-blok-en = { - text(weight: "bold")[Thesis Advisor: #danisman-en] - if es-danisman-en.trim() != "" { - linebreak() - text(weight: "bold")[Co-Advisor: #es-danisman-en] - } - } - kapak( - enstitu-ust-en, basliklar(thesis-title, en-upper), seviye-en, - [#isim-soyisim (#ogrenci-no)], - anabilim-dali-en, program-en, danisman-blok-en, savunma-tarihi-en, - ) - - // ===================================================================== - // JÜRİ ONAY / İMZA SAYFASI (KABUL VE ONAY) - // ===================================================================== - { - set par(justify: true, leading: 1.1em) - yeni-sag-sayfa - v(18mm) - - // Açıklama paragrafı - let derece-sozu-tr = if derece == "doktora" { "Doktora" } else { "Yüksek Lisans" } - let derece-sozu-en = if derece == "doktora" { "Ph.D." } else { "M.Sc." } - let baslik-tirnak-tr = tez-basligi.filter(s => str(s).trim() != "").map(s => tr-upper(s)).join(" ") - let baslik-tirnak-en = thesis-title.filter(s => str(s).trim() != "").map(s => en-upper(s)).join(" ") - - if ingilizce { - [#isim-soyisim, a #derece-sozu-en student of ITU #enstitu-en student ID #ogrenci-no, successfully defended the thesis entitled "#baslik-tirnak-en", which he/she prepared after fulfilling the requirements specified in the associated legislations, before the jury whose signatures are below.] - } else { - [İTÜ #enstitu-tr'nün #ogrenci-no numaralı #derece-sozu-tr Öğrencisi #isim-soyisim, ilgili yönetmeliklerin belirlediği gerekli tüm şartları yerine getirdikten sonra hazırladığı "#baslik-tirnak-tr" başlıklı tezini aşağıda imzaları olan jüri önünde başarı ile sunmuştur.] - } - - v(14mm) - - // İmza satırları - let dots = "."*30 - let satir(rol, isim, univ) = ( - text(weight: "bold")[#rol], [#text(weight: "bold")[#isim] \ #univ], align(right)[#dots], - ) - let bos = ([], [], []) - - let danisman-rol = if ingilizce { "Thesis Advisor :" } else { "Tez Danışmanı :" } - let es-rol = if ingilizce { "Co-advisor :" } else { "Eş Danışman :" } - let juri-rol = if ingilizce { "Jury Members :" } else { "Jüri Üyeleri :" } - - let rows = () - rows += satir(danisman-rol, - if ingilizce { danisman-en } else { danisman }, - if ingilizce { danisman-univ-en } else { danisman-univ }) - if (if ingilizce { es-danisman-en } else { es-danisman }).trim() != "" { - rows += bos - rows += satir(es-rol, - if ingilizce { es-danisman-en } else { es-danisman }, - if ingilizce { es-danisman-univ-en } else { es-danisman-univ }) - } - // Jüri üyeleri - for (i, uye) in juri.enumerate() { - rows += bos - rows += satir(if i == 0 { juri-rol } else { "" }, uye.ad, uye.at("univ", default: "")) - } - - grid( - columns: (34mm, 1fr, auto), - row-gutter: 10pt, - column-gutter: 4pt, - align: (left + top, left + top, right + bottom), - ..rows, - ) - - v(8mm) - let teslim-etiket = if ingilizce { "Date of Submission :" } else { "Teslim Tarihi :" } - let savunma-etiket = if ingilizce { "Date of Defense :" } else { "Savunma Tarihi :" } - grid( - columns: (auto, auto), - row-gutter: 6pt, - column-gutter: 8pt, - text(weight: "bold")[#teslim-etiket], - text(weight: "bold")[#(if ingilizce { teslim-tarihi-en } else { teslim-tarihi-tr })], - text(weight: "bold")[#savunma-etiket], - text(weight: "bold")[#(if ingilizce { savunma-tarihi-onay-en } else { savunma-tarihi-onay-tr })], - ) - } - - // ===================================================================== - // ÖN MATERYAL (roma rakamı, normal kenar boşluğu) - // ===================================================================== - // Sayfa sayacını fiziksel TEK (sağ) sayfada sıfırlamak için önce sağ sayfaya geç; - // böylece görünen roma numarası ile fiziksel sayfa pariteleri hizalanır. - yeni-sag-sayfa - // Çift taraflıda iç (ciltleme) 4 cm / dış 2.5 cm cilt payı; tek taraflıda sabit sol 4 cm - set page( - margin: if twoside { - (inside: 4cm, outside: 2.5cm, top: 2.5cm, bottom: 2.5cm) - } else { - (left: 4cm, right: 2.5cm, top: 2.5cm, bottom: 2.5cm) - }, - numbering: "i", - number-align: center + bottom, - ) - counter(page).update(1) - - // Ön/arka materyal başlıklarını numarasız yap - set heading(numbering: none) - // LaTeX'te ön materyal tek satır aralığı (\singlespacing); gövde 1.5 (\oneandonehalf) - set par(leading: 0.65em) - - // "Sayfa" / "Page" sütun başlığı (cls: \cftaftertoctitle ... \bf\underline{Sayfa}) - let sayfa-etiket = if ingilizce { "Page" } else { "Sayfa" } - - // ---- İTHAF ---- (cls: \vspace*{0.4\textheight} sonra sağa dayalı) - if ithaf != none and str(ithaf).trim() != "" { - v(40%) - align(right)[#emph(strong(ithaf))] - pagebreak(weak: true) - } - - // ---- ÖNSÖZ ---- - if onsoz != none { - heading(level: 1, if ingilizce { "FOREWORD" } else { "ÖNSÖZ" }) - onsoz - } - - // ---- İÇİNDEKİLER ---- - [ - #set heading(outlined: false) - #heading(level: 1, if ingilizce { "TABLE OF CONTENTS" } else { "İÇİNDEKİLER" }) - ] - align(right)[#strong(underline(sayfa-etiket))] - [ - // Bölüm ve ön/arka materyal (1. seviye) girdileri kalın — cls'teki gibi - #show outline.entry.where(level: 1): strong - #outline(title: none, depth: 4, indent: auto) - ] - - // ---- KISALTMALAR ---- - if kisaltmalar != none { - heading(level: 1, if ingilizce { "ABBREVIATIONS" } else { "KISALTMALAR" }) - kisaltmalar - } - - // ---- SEMBOLLER ---- - if semboller != none { - heading(level: 1, if ingilizce { "SYMBOLS" } else { "SEMBOLLER" }) - semboller - } - - // ---- ÇİZELGE LİSTESİ ---- - if cizelge-listesi { - heading(level: 1, if ingilizce { "LIST OF TABLES" } else { "ÇİZELGE LİSTESİ" }) - align(right)[#strong(underline(sayfa-etiket))] - outline(title: none, target: figure.where(kind: table)) - } - - // ---- ŞEKİL LİSTESİ ---- - if sekil-listesi { - heading(level: 1, if ingilizce { "LIST OF FIGURES" } else { "ŞEKİL LİSTESİ" }) - align(right)[#strong(underline(sayfa-etiket))] - outline(title: none, target: figure.where(kind: image)) - } - - // ---- ÖZET / SUMMARY ---- - // Türkçe tezde önce ÖZET, İngilizce tezde önce SUMMARY - let ozet-blok = if ozet != none { - heading(level: 1, "ÖZET") - ozet - } - let summary-blok = if summary != none { - heading(level: 1, "SUMMARY") - summary - } - if ingilizce { - summary-blok - ozet-blok - } else { - ozet-blok - summary-blok - } - - // Gövde ve sonrası (kaynaklar, ekler, özgeçmiş) 1.5 satır aralığına döner - set par(leading: 1.45em) - - // ===================================================================== - // GÖVDE (arabik rakam, numaralı bölümler — ilk bölüm sağ sayfadan) - // ===================================================================== - // Sayacı fiziksel tek sayfada sıfırla (parite hizası) — ilk bölüm sağ sayfadan başlar - yeni-sag-sayfa - set page(numbering: "1") - counter(page).update(1) - counter(heading).update(0) - [ - #set heading(numbering: "1.1.1.1") - #set par(leading: 1.45em) // gövde: 1.5 satır aralığı (\oneandonehalf) - #body - ] - - // ===================================================================== - // KAYNAKLAR - // ===================================================================== - if kaynakca != none { - kaynakca - } - - // ===================================================================== - // EKLER - // ===================================================================== - if ekler != none { - heading(level: 1, if ingilizce { "APPENDICES" } else { "EKLER" }) - ekler - } - - // ===================================================================== - // ÖZGEÇMİŞ - // ===================================================================== - if ozgecmis != none { - heading(level: 1, if ingilizce { "CURRICULUM VITAE" } else { "ÖZGEÇMİŞ" }) - // cls'te özgeçmiş düz metindir; içindeki olası başlıklar İÇİNDEKİLER'e girmesin. - { - set heading(outlined: false) - ozgecmis - } - } -} diff --git a/packages/preview/community-itu-thesis/0.1.0/template/main-apa.typ b/packages/preview/community-itu-thesis/0.1.0/template/main-apa.typ deleted file mode 100644 index 48cc701cd9..0000000000 --- a/packages/preview/community-itu-thesis/0.1.0/template/main-apa.typ +++ /dev/null @@ -1,88 +0,0 @@ -// İTÜ Lisansüstü Tez Şablonu — APA (yazar-yıl atıf) sürümü -// Kaynakça APA stilinde gösterilir. NUM sürümü için main.typ'a bakın. -// -// Derleme: typst compile main-apa.typ tez.pdf - -#import "@preview/community-itu-thesis:0.1.0": thesis - -#show: thesis.with( - ad: "Öğrenci Adı", - soyad: "SOYADI", - ogrenci-no: "123456789", - - tez-basligi: ( - "TEZ BAŞLIĞININ BİRİNCİ SATIRI", - "GEREKLİYSE İKİNCİ SATIR", - "GEREKLİYSE ÜÇÜNCÜ SATIR", - ), - thesis-title: ( - "FIRST LINE OF THESIS TITLE", - "SECOND LINE IF NECESSARY", - "THIRD LINE IF NECESSARY", - ), - - anabilim-dali-tr: "Bilgisayar Mühendisliği Anabilim Dalı", - anabilim-dali-en: "Department of Computer Engineering", - program-tr: "Bilgisayar Mühendisliği Programı", - program-en: "Computer Engineering Programme", - enstitu: "lisansustu", - - danisman: "Prof. Dr. Adı SOYADI", - danisman-univ: "İstanbul Teknik Üniversitesi", - danisman-en: "Prof. Dr. Name SURNAME", - danisman-univ-en: "Istanbul Technical University", - - juri: ( - (ad: "Prof. Dr. Adı SOYADI", univ: "İstanbul Teknik Üniversitesi"), - (ad: "Prof. Dr. Adı SOYADI", univ: "Yıldız Teknik Üniversitesi"), - (ad: "Prof. Dr. Adı SOYADI", univ: "Boğaziçi Üniversitesi"), - ), - - savunma-tarihi-tr: "Aralık 2024", - savunma-tarihi-en: "December 2024", - teslim-tarihi-tr: "22 Eylül 2024", - teslim-tarihi-en: "22 September 2024", - savunma-tarihi-onay-tr: "21 Aralık 2024", - savunma-tarihi-onay-en: "21 December 2024", - - dil: "tr", - derece: "yukseklisans", - cilt: "bez", - - ithaf: "Aileme,", - onsoz: include "onsoz.typ", - kisaltmalar: include "kisaltmalar.typ", - semboller: include "semboller.typ", - ozet: include "ozet.typ", - summary: include "summary.typ", - // APA stili için "apa" kullanılır: - kaynakca: bibliography("refs.bib", style: "apa", title: "KAYNAKLAR"), - ekler: include "ekler.typ", - ozgecmis: include "ozgecmis.typ", -) - -= GİRİŞ - -Bu örnek, APA (yazar-yıl) atıf stilini kullanır. Metin içinde @ornek2024 -biçiminde atıf yaptığınızda kaynak APA formatında listelenir. - -== Tezin Amacı - -Tez yazımında tutarlılığı sağlamak amaçlanmıştır. - -= YÖNTEM - -// Gerçek görsel eklemek için bir "fig" klasörü oluşturup şöyle kullanın: -// #figure(image("fig/sekil.png", width: 80%), caption: [Açıklama]) -#figure( - rect(width: 80%, height: 5cm, fill: luma(240), stroke: 0.5pt + luma(160))[ - #align(center + horizon)[ - #text(fill: luma(120))[Görsel buraya gelir \ (image("fig/...") ile ekleyin)] - ] - ], - caption: [Örnek şekil açıklaması], -) - -= SONUÇ - -Sonuç bölümü ulaşılan ana bulguları içerir. diff --git a/packages/preview/community-itu-thesis/0.1.0/template/main.typ b/packages/preview/community-itu-thesis/0.1.0/template/main.typ deleted file mode 100644 index 51ef1bdadb..0000000000 --- a/packages/preview/community-itu-thesis/0.1.0/template/main.typ +++ /dev/null @@ -1,139 +0,0 @@ -// İTÜ Lisansüstü Tez Şablonu — NUM (sayılı atıf) sürümü -// Kaynakça IEEE/sayılı stilde ([1], [2], …) gösterilir. -// -// Derleme: typst compile main.typ tez.pdf - -#import "@preview/community-itu-thesis:0.1.0": thesis - -#show: thesis.with( - // ===== KİŞİSEL BİLGİLER ===== - ad: "Öğrenci Adı", - soyad: "SOYADI", - ogrenci-no: "123456789", - unvan: "", - - // ===== TEZ BAŞLIKLARI (en çok 3 satır) ===== - tez-basligi: ( - "TEZ BAŞLIĞININ BİRİNCİ SATIRI", - "GEREKLİYSE İKİNCİ SATIR", - "GEREKLİYSE ÜÇÜNCÜ SATIR", - ), - thesis-title: ( - "FIRST LINE OF THESIS TITLE", - "SECOND LINE IF NECESSARY", - "THIRD LINE IF NECESSARY", - ), - - // ===== AKADEMİK BİLGİLER ===== - anabilim-dali-tr: "Bilgisayar Mühendisliği Anabilim Dalı", - anabilim-dali-en: "Department of Computer Engineering", - program-tr: "Bilgisayar Mühendisliği Programı", - program-en: "Computer Engineering Programme", - // "lisansustu" | "bilisim" | "fenbilimleri" | "sosyalbilimler" | "enerji" | "avrasya" - enstitu: "lisansustu", - - // ===== DANIŞMAN ===== - danisman: "Prof. Dr. Adı SOYADI", - danisman-univ: "İstanbul Teknik Üniversitesi", - danisman-en: "Prof. Dr. Name SURNAME", - danisman-univ-en: "Istanbul Technical University", - es-danisman: "", - es-danisman-univ: "", - es-danisman-en: "", - es-danisman-univ-en: "", - - // ===== JÜRİ ÜYELERİ ===== - juri: ( - (ad: "Prof. Dr. Adı SOYADI", univ: "İstanbul Teknik Üniversitesi"), - (ad: "Prof. Dr. Adı SOYADI", univ: "Yıldız Teknik Üniversitesi"), - (ad: "Prof. Dr. Adı SOYADI", univ: "Boğaziçi Üniversitesi"), - ), - - // ===== TARİHLER ===== - savunma-tarihi-tr: "Aralık 2024", - savunma-tarihi-en: "December 2024", - teslim-tarihi-tr: "22 Eylül 2024", - teslim-tarihi-en: "22 September 2024", - savunma-tarihi-onay-tr: "21 Aralık 2024", - savunma-tarihi-onay-en: "21 December 2024", - - // ===== AYARLAR ===== - dil: "tr", // "tr" / "en" - derece: "yukseklisans", // "yukseklisans" / "doktora" - cilt: "bez", // "bez" / "karton" - - // ===== ÖN/ARKA MATERYAL ===== - ithaf: "Aileme,", - onsoz: include "onsoz.typ", - kisaltmalar: include "kisaltmalar.typ", - semboller: include "semboller.typ", - ozet: include "ozet.typ", - summary: include "summary.typ", - kaynakca: bibliography("refs.bib", style: "ieee", title: "KAYNAKLAR"), - ekler: include "ekler.typ", - ozgecmis: include "ozgecmis.typ", -) - -// ===================================================================== -// BÖLÜMLER (gövde) -// ===================================================================== - -= GİRİŞ - -Bu tez şablonu İstanbul Teknik Üniversitesi lisansüstü programları için -hazırlanmış olup, Typst belgeleme sisteminde yazılan tezlerin sunumuna -yönelik standartları belirtmektedir. Kaynak göstermek için @ornek2024 -biçiminde atıf yapabilirsiniz. - -== Tezin Amacı - -Tez yazımında tutarlılığı sağlamak ve kurumsal standartlara uygun belgeler -oluşturmak amaçlanmıştır. - -=== Alt başlık örneği - -Üçüncü seviye başlıkları bu şekilde gösterilir. Formüller şöyle yazılır: - -$ E = m c^2 $ - -== Literatür Taraması - -Mevcut araştırmalar incelenerek özet halinde sunulmuştur. - -= YÖNTEM - -Bu bölümde araştırmanın yöntemi açıklanır. Şekil ve çizelge örnekleri aşağıdadır. - -// Gerçek görsel eklemek için bir "fig" klasörü oluşturup şöyle kullanın: -// #figure(image("fig/sekil.png", width: 80%), caption: [Açıklama]) -// Aşağıdaki yer tutucu, görselin nasıl yerleştirileceğini gösterir. -#figure( - rect(width: 80%, height: 5cm, fill: luma(240), stroke: 0.5pt + luma(160))[ - #align(center + horizon)[ - #text(fill: luma(120))[Görsel buraya gelir \ (image("fig/...") ile ekleyin)] - ] - ], - caption: [Örnek şekil açıklaması], -) - -#figure( - table( - columns: (1fr, 1fr, 1fr), - [Başlık 1], [Başlık 2], [Başlık 3], - [Satır 1-1], [Satır 1-2], [Satır 1-3], - [Satır 2-1], [Satır 2-2], [Satır 2-3], - ), - caption: [Örnek çizelge], -) - -= BULGULAR - -Araştırmanın bulguları bu bölümde sunulmuştur. - -= TARTIŞMA - -Bulguların değerlendirilmesi ve literatürle karşılaştırılması yapılmıştır. - -= SONUÇ - -Sonuç bölümü özet niteliğinde olup, ulaşılan ana bulguları içermektedir. diff --git a/packages/preview/community-itu-thesis/0.1.0/LICENSE b/packages/preview/community-itu-thesis/0.2.0/LICENSE similarity index 100% rename from packages/preview/community-itu-thesis/0.1.0/LICENSE rename to packages/preview/community-itu-thesis/0.2.0/LICENSE diff --git a/packages/preview/community-itu-thesis/0.1.0/README.md b/packages/preview/community-itu-thesis/0.2.0/README.md similarity index 59% rename from packages/preview/community-itu-thesis/0.1.0/README.md rename to packages/preview/community-itu-thesis/0.2.0/README.md index 662126e64d..322a77665d 100644 --- a/packages/preview/community-itu-thesis/0.1.0/README.md +++ b/packages/preview/community-itu-thesis/0.2.0/README.md @@ -13,7 +13,7 @@ English language mode), since that is the intended audience. ## Quick start ```bash -typst init @preview/community-itu-thesis:0.1.0 my-thesis +typst init @preview/community-itu-thesis:0.2.0 my-thesis cd my-thesis typst watch main.typ ``` @@ -33,26 +33,30 @@ match your own thesis. front/back-matter headings - Appendices (with an "EKLER" cover page) and Curriculum Vitae - NUM (numeric/IEEE) and APA citation styles — see `main.typ` and `main-apa.typ` -- Turkish and English language support (`dil: "tr"` / `dil: "en"`) +- Turkish and English language support (`lang: "tr"` / `lang: "en"`) ## Usage -The main parameters of the `#show: thesis.with(...)` call (parameter names are -in Turkish, matching the template API): +The main parameters of the `#show: thesis.with(...)` call: | Parameter | Description | | --- | --- | -| `ad`, `soyad`, `ogrenci-no` | Student name, surname, and ID | -| `tez-basligi`, `thesis-title` | TR/EN title (up to 3 lines, as an array) | -| `anabilim-dali-tr/-en`, `program-tr/-en` | Academic department / program | -| `enstitu` | `"lisansustu"`, `"bilisim"`, `"fenbilimleri"`, `"sosyalbilimler"`, `"enerji"`, `"avrasya"` | -| `danisman`, `danisman-en`, `es-danisman*` | Advisor / co-advisor (TR & EN) | -| `juri` | Array of `(ad: "...", univ: "...")` dictionaries | -| `dil` | `"tr"` or `"en"` | -| `derece` | `"yukseklisans"` (master's) or `"doktora"` (doctorate) | -| `cilt` | `"bez"` (hardbound) or `"karton"` (softbound) | -| `ithaf`, `onsoz`, `kisaltmalar`, `semboller`, `ozet`, `summary`, `ekler`, `ozgecmis` | Front/back-matter content | -| `kaynakca` | `bibliography("refs.bib", style: "ieee", title: "Kaynaklar")` | +| `name`, `surname`, `student-id` | Student name, surname, and ID | +| `title-tr`, `title-en` | Turkish/English title (up to 3 lines, as an array) | +| `department-tr/-en`, `program-tr/-en` | Academic department / program | +| `institute` | `"graduate"`, `"informatics"`, `"science"`, `"social-sciences"`, `"energy"`, `"eurasia"` | +| `advisor-tr/-en`, `advisor-univ-tr/-en` | Advisor name and university (TR & EN) | +| `co-advisor-*` | Co-advisor fields, same pattern as `advisor-*` (optional) | +| `jury` | Array of `(name: "...", univ: "...")` dictionaries | +| `cover-date-tr/-en` | Date shown on the covers (e.g. "Aralık 2024") | +| `submission-date-tr/-en`, `defense-date-tr/-en` | Dates on the approval page | +| `lang` | `"tr"` or `"en"` | +| `degree` | `"masters"` or `"phd"` | +| `binding` | `"hardcover"` (cloth/bez) or `"softcover"` (cardboard/karton) | +| `printing` | `"two-sided"` (default) or `"one-sided"` | +| `dedication`, `foreword`, `abbreviations`, `symbols`, `abstract-tr`, `abstract-en`, `appendices`, `cv` | Front/back-matter content | +| `list-of-figures`, `list-of-tables` | Produce the lists? (default `true`) | +| `bibliography` | `bibliography("refs.bib", style: "ieee", title: "KAYNAKLAR")` | Body chapters (`= Giriş`, `== Alt başlık`, …) are written as ordinary Typst headings after the `#show` call; they are numbered automatically. @@ -60,7 +64,7 @@ headings after the `#show` call; they are numbered automatically. ### Citations and bibliography Add BibTeX records to `refs.bib` and cite them in the text with `@key`. Choose -the style via the `kaynakca` parameter: `style: "ieee"` (numeric) or +the style via the `bibliography` parameter: `style: "ieee"` (numeric) or `style: "apa"`. ## Notes diff --git a/packages/preview/community-itu-thesis/0.2.0/lib.typ b/packages/preview/community-itu-thesis/0.2.0/lib.typ new file mode 100644 index 0000000000..2259191e7a --- /dev/null +++ b/packages/preview/community-itu-thesis/0.2.0/lib.typ @@ -0,0 +1,496 @@ +// ITU Graduate Thesis Template — Typst edition +// Istanbul Technical University · Graduate School +// +// This template is a Typst rewrite of the official LaTeX class +// (itutez.cls v1.7.1, January 2025). It produces the official elements: +// · Outer cover + Turkish inner cover + English inner cover +// · Jury approval/signature page ("KABUL VE ONAY") +// · Dedication, Foreword, Table of Contents, Abbreviations, Symbols +// · List of Tables, List of Figures +// · Özet / Summary (Turkish and English abstracts) +// · Roman page numbers (i, ii, …) in front matter, Arabic (1, 2, …) in body +// · Numbered chapters and unnumbered front/back-matter headings +// · Appendices (+ "EKLER" cover), Bibliography, Curriculum Vitae + +#let thesis( + // ===== PERSONAL INFORMATION ===== + name: "", + surname: "", + student-id: "", + + // ===== THESIS TITLES (up to 3 lines) ===== + title-tr: ("", "", ""), // Turkish (outer cover + Turkish inner cover) + title-en: ("", "", ""), // English (English inner cover + approval page) + + // ===== ACADEMIC INFORMATION ===== + department-tr: "", + department-en: "", + program-tr: "", + program-en: "", + // institute: "graduate" | "informatics" | "science" | "social-sciences" | "energy" | "eurasia" + institute: "graduate", + + // ===== ADVISOR ===== + advisor-tr: "", + advisor-univ-tr: "", + advisor-en: "", + advisor-univ-en: "", + co-advisor-tr: "", + co-advisor-univ-tr: "", + co-advisor-en: "", + co-advisor-univ-en: "", + + // ===== JURY MEMBERS ===== + // Array of (name: "...", univ: "...") dictionaries + jury: (), + + // ===== DATES ===== + cover-date-tr: "", // Date on the covers (e.g. "Aralık 2024") + cover-date-en: "", + submission-date-tr: "", // Submission date on the approval page (e.g. "22 Eylül 2024") + submission-date-en: "", + defense-date-tr: "", // Defense date on the approval page (e.g. "21 Aralık 2024") + defense-date-en: "", + + // ===== SETTINGS ===== + lang: "tr", // "tr" | "en" + degree: "masters", // "masters" | "phd" + binding: "hardcover", // "hardcover" (cloth/bez) | "softcover" (cardboard/karton) + // printing: "two-sided" (blank pages + gutter margins, cls default) + // "one-sided" (no blank pages, fixed left margin) + printing: "two-sided", + + // ===== FRONT/BACK MATTER (content blocks) ===== + dedication: none, // Dedication text (e.g. "Aileme,") + foreword: none, // Foreword content + abbreviations: none, // Abbreviations table/content + symbols: none, // Symbols table/content + abstract-tr: none, // Turkish abstract (ÖZET) content, incl. keywords + abstract-en: none, // English abstract (SUMMARY) content, incl. keywords + list-of-figures: true, // Produce the List of Figures? + list-of-tables: true, // Produce the List of Tables? + bibliography: none, // Pass a bibliography(...) call here + appendices: none, // Appendices content + cv: none, // Curriculum vitae content + + body, +) = { + // ---- Language ---- + let is-english = lang == "en" or lang == "english" + let lang-code = if is-english { "en" } else { "tr" } + + // ---- Printing (two-/one-sided) ---- + // cls onluarkali = twoside: chapters/covers start on a recto (right) page, + // blank pages are inserted and margins alternate for binding (\BolumSagdaKalsin). + let twoside = printing != "one-sided" + // Advance to the next recto (odd) page, inserting a blank verso if needed. + // In one-sided printing this is just a regular page break. + let next-recto-page = if twoside { pagebreak(to: "odd", weak: true) } else { pagebreak(weak: true) } + + // ---- Institute names ---- + let institute-tr = ( + "graduate": "Lisansüstü Eğitim Enstitüsü", + "informatics": "Bilişim Enstitüsü", + "science": "Fen Bilimleri Enstitüsü", + "social-sciences": "Sosyal Bilimler Enstitüsü", + "energy": "Enerji Enstitüsü", + "eurasia": "Avrasya Yer Bilimleri Enstitüsü", + ).at(institute, default: "Lisansüstü Eğitim Enstitüsü") + let institute-en = ( + "graduate": "Graduate School", + "informatics": "Informatics Institute", + "science": "Graduate School of Science Engineering and Technology", + "social-sciences": "Graduate School of Social Sciences", + "energy": "Energy Institute", + "eurasia": "Eurasia Institute of Earth Sciences", + ).at(institute, default: "Graduate School") + + // ---- Uppercase conversion ---- + // upper() uses the Unicode default mapping and does not apply the Turkish + // "i → İ" rule (it would produce the wrong "İÇINDEKILER"). General fix: + // replace the only problematic letter "i" with "İ" before upper(); the other + // letters (ç, ş, ğ, ö, ü, ı) are converted correctly by upper() already. + // English text uses plain upper(). + let tr-upper(s) = upper(str(s).replace("i", "İ")) + let en-upper(s) = upper(str(s)) + + let institute-header-tr = tr-upper("İstanbul Teknik Üniversitesi ★ " + institute-tr) + let institute-header-en = en-upper("İstanbul Technical University ★ " + institute-en) + + // ---- Thesis level ---- + let degree-label-tr = if degree == "phd" { "DOKTORA TEZİ" } else { "YÜKSEK LİSANS TEZİ" } + let degree-label-en = if degree == "phd" { "Ph.D. THESIS" } else { "M.Sc. THESIS" } + + let full-name = (name + " " + surname).trim() + + // ---- Helper joining the title lines (case-fn: case-conversion function) ---- + let title-block(lines, case-fn) = { + let cleaned = lines.filter(s => s != none and str(s).trim() != "") + text(size: 14pt, weight: "bold")[ + #cleaned.map(s => case-fn(s)).join(linebreak()) + ] + } + + // ===================================================================== + // GLOBAL SETTINGS + // ===================================================================== + set document(title: title-tr.at(0, default: ""), author: full-name) + set text( + font: ("Times New Roman", "Libertinus Serif"), + size: 12pt, + lang: lang-code, + hyphenate: false, // as in the LaTeX template (hyphenpenalty=10000): no hyphenation + ) + set par(leading: 1.45em, spacing: 0.6em, justify: true) + show math.equation: set block(spacing: 0.65em) + + // ---- Heading styles ---- + // Per LaTeX itutez.cls (\@makechapterhead): body chapters appear as "1. TITLE" + // (NO "BÖLÜM" prefix), 12pt bold, left-aligned. Front/back-matter headings unnumbered. + show heading: it => { + let numbered = it.numbering != none + if it.level == 1 { + // cls: level-1 headings (chapters / front-back matter) start on a recto page + next-recto-page + v(18.5mm) + if numbered { + text(weight: "bold", size: 12pt)[#counter(heading).display() #it.body] + } else { + text(weight: "bold", size: 12pt)[#it.body] + } + v(12pt) + } else if it.level == 2 { + v(12pt) + if numbered { + text(weight: "bold", size: 12pt)[#counter(heading).display() #it.body] + } else { + text(weight: "bold", size: 12pt)[#it.body] + } + v(8pt) + } else if it.level == 3 { + v(8pt) + if numbered { + text(weight: "bold", size: 12pt)[#counter(heading).display() #it.body] + } else { + text(weight: "bold", size: 12pt)[#it.body] + } + v(4pt) + } else { + v(6pt) + if numbered { + text(weight: "bold", size: 12pt)[#counter(heading).display() #it.body] + } else { + text(weight: "bold", size: 12pt)[#it.body] + } + } + } + + // ---- Figures and tables ---- + let figure-supplement = if is-english { "Figure" } else { "Şekil" } + let table-supplement = if is-english { "Table" } else { "Çizelge" } + show figure.where(kind: image): set figure(supplement: figure-supplement) + show figure.where(kind: table): set figure(supplement: table-supplement) + show figure.where(kind: table): set figure.caption(position: top) + show figure.caption: it => { + text(weight: "bold")[#it.supplement #it.counter.display(): #it.body] + } + + // ===================================================================== + // COVERS (unnumbered pages, narrow margins) + // ===================================================================== + set page( + paper: "a4", + margin: (left: 2cm, right: 2cm, top: 2cm, bottom: 2cm), + numbering: none, + ) + + // ---- Skeleton for a single cover page ---- + // Vertical gaps follow the cls th@DisKapak/IcKapak values (55/55/27/14/22 mm) + // so that the date sits at the bottom of the page. + let cover(header, title-content, degree-label, author-line, department, program, advisor-line, date) = { + set par(justify: false, leading: 0.65em) + align(center)[ + #underline(text(weight: "bold")[#header]) + #v(55mm) + #title-content + #v(55mm) + #text(weight: "bold")[#degree-label] + #v(8mm) + #text(weight: "bold")[#author-line] + #v(27mm) + #text(weight: "bold")[#department] + #v(2mm) + #text(weight: "bold")[#program] + #if advisor-line != none { + v(14mm) + advisor-line + } else { + v(14mm) + } + #v(22mm) + #text(weight: "bold")[#date] + ] + } + + // (1) OUTER COVER + cover( + if is-english { institute-header-en } else { institute-header-tr }, + if is-english { title-block(title-en, en-upper) } else { title-block(title-tr, tr-upper) }, + if is-english { degree-label-en } else { degree-label-tr }, + full-name, + if is-english { department-en } else { department-tr }, + if is-english { program-en } else { program-tr }, + // Hardcover has no advisor on the outer cover; softcover does + if binding == "softcover" { + let label = if is-english { "Thesis Advisor" } else { "Tez Danışmanı" } + text(weight: "bold")[#label: #(if is-english { advisor-en } else { advisor-tr })] + } else { none }, + if is-english { cover-date-en } else { cover-date-tr }, + ) + next-recto-page + + // (2) TURKISH INNER COVER + let advisor-block-tr = { + text(weight: "bold")[Tez Danışmanı: #advisor-tr] + if co-advisor-tr.trim() != "" { + linebreak() + text(weight: "bold")[Eş Danışman: #co-advisor-tr] + } + } + cover( + institute-header-tr, title-block(title-tr, tr-upper), degree-label-tr, + [#full-name (#student-id)], + department-tr, program-tr, advisor-block-tr, cover-date-tr, + ) + next-recto-page + + // (3) ENGLISH INNER COVER + let advisor-block-en = { + text(weight: "bold")[Thesis Advisor: #advisor-en] + if co-advisor-en.trim() != "" { + linebreak() + text(weight: "bold")[Co-Advisor: #co-advisor-en] + } + } + cover( + institute-header-en, title-block(title-en, en-upper), degree-label-en, + [#full-name (#student-id)], + department-en, program-en, advisor-block-en, cover-date-en, + ) + + // ===================================================================== + // JURY APPROVAL / SIGNATURE PAGE ("KABUL VE ONAY") + // ===================================================================== + { + set par(justify: true, leading: 1.1em) + next-recto-page + v(18mm) + + // Statement paragraph + let degree-word-tr = if degree == "phd" { "Doktora" } else { "Yüksek Lisans" } + let degree-word-en = if degree == "phd" { "Ph.D." } else { "M.Sc." } + let quoted-title-tr = title-tr.filter(s => str(s).trim() != "").map(s => tr-upper(s)).join(" ") + let quoted-title-en = title-en.filter(s => str(s).trim() != "").map(s => en-upper(s)).join(" ") + + if is-english { + [#full-name, a #degree-word-en student of ITU #institute-en student ID #student-id, successfully defended the thesis entitled "#quoted-title-en", which he/she prepared after fulfilling the requirements specified in the associated legislations, before the jury whose signatures are below.] + } else { + [İTÜ #institute-tr'nün #student-id numaralı #degree-word-tr Öğrencisi #full-name, ilgili yönetmeliklerin belirlediği gerekli tüm şartları yerine getirdikten sonra hazırladığı "#quoted-title-tr" başlıklı tezini aşağıda imzaları olan jüri önünde başarı ile sunmuştur.] + } + + v(14mm) + + // Signature rows + let dots = "."*30 + let signature-row(role, person, univ) = ( + text(weight: "bold")[#role], [#text(weight: "bold")[#person] \ #univ], align(right)[#dots], + ) + let empty-row = ([], [], []) + + let advisor-role = if is-english { "Thesis Advisor :" } else { "Tez Danışmanı :" } + let co-advisor-role = if is-english { "Co-advisor :" } else { "Eş Danışman :" } + let jury-role = if is-english { "Jury Members :" } else { "Jüri Üyeleri :" } + + let rows = () + rows += signature-row(advisor-role, + if is-english { advisor-en } else { advisor-tr }, + if is-english { advisor-univ-en } else { advisor-univ-tr }) + if (if is-english { co-advisor-en } else { co-advisor-tr }).trim() != "" { + rows += empty-row + rows += signature-row(co-advisor-role, + if is-english { co-advisor-en } else { co-advisor-tr }, + if is-english { co-advisor-univ-en } else { co-advisor-univ-tr }) + } + // Jury members + for (i, member) in jury.enumerate() { + rows += empty-row + rows += signature-row(if i == 0 { jury-role } else { "" }, member.name, member.at("univ", default: "")) + } + + grid( + columns: (34mm, 1fr, auto), + row-gutter: 10pt, + column-gutter: 4pt, + align: (left + top, left + top, right + bottom), + ..rows, + ) + + v(8mm) + let submission-label = if is-english { "Date of Submission :" } else { "Teslim Tarihi :" } + let defense-label = if is-english { "Date of Defense :" } else { "Savunma Tarihi :" } + grid( + columns: (auto, auto), + row-gutter: 6pt, + column-gutter: 8pt, + text(weight: "bold")[#submission-label], + text(weight: "bold")[#(if is-english { submission-date-en } else { submission-date-tr })], + text(weight: "bold")[#defense-label], + text(weight: "bold")[#(if is-english { defense-date-en } else { defense-date-tr })], + ) + } + + // ===================================================================== + // FRONT MATTER (roman numerals, regular margins) + // ===================================================================== + // Advance to a recto page BEFORE resetting the page counter so that the + // visible roman numbers stay aligned with the physical page parity. + next-recto-page + // Two-sided: inner (binding) 4 cm / outer 2.5 cm gutter; one-sided: fixed left 4 cm + set page( + margin: if twoside { + (inside: 4cm, outside: 2.5cm, top: 2.5cm, bottom: 2.5cm) + } else { + (left: 4cm, right: 2.5cm, top: 2.5cm, bottom: 2.5cm) + }, + numbering: "i", + number-align: center + bottom, + ) + counter(page).update(1) + + // Front/back-matter headings are unnumbered + set heading(numbering: none) + // LaTeX uses single spacing in front matter (\singlespacing); body is 1.5 (\oneandonehalf) + set par(leading: 0.65em) + // cls uses \leaders with spaced dot fill (TOC + list of tables/figures); + // Typst's default fill is too dense, so add a gap between the dots. + set outline.entry(fill: repeat(gap: 2.5pt)[.]) + + // "Sayfa" / "Page" column header (cls: \cftaftertoctitle ... \bf\underline{Sayfa}) + let page-label = if is-english { "Page" } else { "Sayfa" } + + // ---- DEDICATION ---- (cls: \vspace*{0.4\textheight}, then right-aligned) + if dedication != none and str(dedication).trim() != "" { + v(40%) + align(right)[#emph(strong(dedication))] + pagebreak(weak: true) + } + + // ---- FOREWORD ---- + if foreword != none { + heading(level: 1, if is-english { "FOREWORD" } else { "ÖNSÖZ" }) + foreword + } + + // ---- TABLE OF CONTENTS ---- + // cls adds the TOC to its own list as well (\addcontentsline{toc}{chapter}{...\contentsnameToC}) + heading(level: 1, if is-english { "TABLE OF CONTENTS" } else { "İÇİNDEKİLER" }) + align(right)[#strong(underline(page-label))] + [ + // Chapter and front/back-matter (level-1) entries are bold — as in the cls + #show outline.entry.where(level: 1): strong + #outline(title: none, depth: 4, indent: auto) + ] + + // ---- ABBREVIATIONS ---- + if abbreviations != none { + heading(level: 1, if is-english { "ABBREVIATIONS" } else { "KISALTMALAR" }) + abbreviations + } + + // ---- SYMBOLS ---- + if symbols != none { + heading(level: 1, if is-english { "SYMBOLS" } else { "SEMBOLLER" }) + symbols + } + + // ---- LIST OF TABLES ---- + if list-of-tables { + heading(level: 1, if is-english { "LIST OF TABLES" } else { "ÇİZELGE LİSTESİ" }) + align(right)[#strong(underline(page-label))] + outline(title: none, target: figure.where(kind: table)) + } + + // ---- LIST OF FIGURES ---- + if list-of-figures { + heading(level: 1, if is-english { "LIST OF FIGURES" } else { "ŞEKİL LİSTESİ" }) + align(right)[#strong(underline(page-label))] + outline(title: none, target: figure.where(kind: image)) + } + + // ---- ÖZET / SUMMARY ---- + // Turkish theses put ÖZET first; English theses put SUMMARY first + let abstract-tr-block = if abstract-tr != none { + heading(level: 1, "ÖZET") + abstract-tr + } + let abstract-en-block = if abstract-en != none { + heading(level: 1, "SUMMARY") + abstract-en + } + if is-english { + abstract-en-block + abstract-tr-block + } else { + abstract-tr-block + abstract-en-block + } + + // Body and everything after (bibliography, appendices, CV) return to 1.5 line spacing + set par(leading: 1.45em) + + // ===================================================================== + // BODY (arabic numerals, numbered chapters — first chapter on a recto page) + // ===================================================================== + // Reset the counter on a physical odd page (parity alignment) — first chapter starts recto + next-recto-page + set page(numbering: "1") + counter(page).update(1) + counter(heading).update(0) + [ + // cls: chapters (level 1) are "1.", subheadings "1.1", "1.1.1", ... + // The trailing dot is built into the numbering so body and TOC look the same. + #set heading(numbering: (..n) => { + let p = n.pos() + if p.len() == 1 { numbering("1.", p.at(0)) } else { numbering("1.1.1.1", ..p) } + }) + #set par(leading: 1.45em) // body: 1.5 line spacing (\oneandonehalf) + #body + ] + + // ===================================================================== + // BIBLIOGRAPHY + // ===================================================================== + if bibliography != none { + bibliography + } + + // ===================================================================== + // APPENDICES + // ===================================================================== + if appendices != none { + heading(level: 1, if is-english { "APPENDICES" } else { "EKLER" }) + appendices + } + + // ===================================================================== + // CURRICULUM VITAE + // ===================================================================== + if cv != none { + heading(level: 1, if is-english { "CURRICULUM VITAE" } else { "ÖZGEÇMİŞ" }) + // In the cls the CV is plain text; keep any headings inside it out of the TOC. + { + set heading(outlined: false) + cv + } + } +} diff --git a/packages/preview/community-itu-thesis/0.1.0/template/kisaltmalar.typ b/packages/preview/community-itu-thesis/0.2.0/template/abbreviations.typ similarity index 75% rename from packages/preview/community-itu-thesis/0.1.0/template/kisaltmalar.typ rename to packages/preview/community-itu-thesis/0.2.0/template/abbreviations.typ index 3e487fff56..ffcfeb4c49 100644 --- a/packages/preview/community-itu-thesis/0.1.0/template/kisaltmalar.typ +++ b/packages/preview/community-itu-thesis/0.2.0/template/abbreviations.typ @@ -1,5 +1,5 @@ -// KISALTMALAR içeriği — "KISALTMALAR" başlığı şablon tarafından eklenir. -// LaTeX şablonundaki gibi: kalın kısaltma, ardından " : " ve açıklama (başlık satırı yok). +// ABBREVIATIONS content — the "KISALTMALAR" heading is added by the template. +// As in the LaTeX template: bold abbreviation, then " : " and the description (no header row). #grid( columns: (auto, auto, 1fr), diff --git a/packages/preview/community-itu-thesis/0.1.0/template/summary.typ b/packages/preview/community-itu-thesis/0.2.0/template/abstract-en.typ similarity index 89% rename from packages/preview/community-itu-thesis/0.1.0/template/summary.typ rename to packages/preview/community-itu-thesis/0.2.0/template/abstract-en.typ index 37c75a7572..4f9383151a 100644 --- a/packages/preview/community-itu-thesis/0.1.0/template/summary.typ +++ b/packages/preview/community-itu-thesis/0.2.0/template/abstract-en.typ @@ -1,4 +1,4 @@ -// SUMMARY içeriği (İngilizce) — "SUMMARY" başlığı şablon tarafından eklenir. +// English abstract content — the "SUMMARY" heading is added by the template. This thesis study presents a comprehensive investigation of the subject matter. After reviewing the existing literature, the research puts forward a new method diff --git a/packages/preview/community-itu-thesis/0.1.0/template/ozet.typ b/packages/preview/community-itu-thesis/0.2.0/template/abstract-tr.typ similarity index 89% rename from packages/preview/community-itu-thesis/0.1.0/template/ozet.typ rename to packages/preview/community-itu-thesis/0.2.0/template/abstract-tr.typ index 6d5cf70485..696edf06b1 100644 --- a/packages/preview/community-itu-thesis/0.1.0/template/ozet.typ +++ b/packages/preview/community-itu-thesis/0.2.0/template/abstract-tr.typ @@ -1,4 +1,4 @@ -// ÖZET içeriği (Türkçe) — "ÖZET" başlığı şablon tarafından eklenir. +// Turkish abstract content — the "ÖZET" heading is added by the template. Bu tez çalışması, konunun kapsamlı bir incelemesini sunmaktadır. Araştırma, mevcut literatürü gözden geçirdikten sonra yeni bir yöntem veya bakış açısı diff --git a/packages/preview/community-itu-thesis/0.1.0/template/ekler.typ b/packages/preview/community-itu-thesis/0.2.0/template/appendices.typ similarity index 85% rename from packages/preview/community-itu-thesis/0.1.0/template/ekler.typ rename to packages/preview/community-itu-thesis/0.2.0/template/appendices.typ index eadb9bab28..d55778652d 100644 --- a/packages/preview/community-itu-thesis/0.1.0/template/ekler.typ +++ b/packages/preview/community-itu-thesis/0.2.0/template/appendices.typ @@ -1,5 +1,5 @@ -// EKLER içeriği — "EKLER" kapak başlığı şablon tarafından eklenir. -// Her ek bölümü 1. seviye başlık (=) ile başlar; bunlar numarasız basılır. +// APPENDICES content — the "EKLER" cover heading is added by the template. +// Each appendix starts with a level-1 heading (=); these are printed unnumbered. = EK A: İlave Çalışmalar diff --git a/packages/preview/community-itu-thesis/0.1.0/template/ozgecmis.typ b/packages/preview/community-itu-thesis/0.2.0/template/cv.typ similarity index 69% rename from packages/preview/community-itu-thesis/0.1.0/template/ozgecmis.typ rename to packages/preview/community-itu-thesis/0.2.0/template/cv.typ index 2390b40dea..74971b5d58 100644 --- a/packages/preview/community-itu-thesis/0.1.0/template/ozgecmis.typ +++ b/packages/preview/community-itu-thesis/0.2.0/template/cv.typ @@ -1,8 +1,8 @@ -// ÖZGEÇMİŞ içeriği — "ÖZGEÇMİŞ" başlığı şablon tarafından otomatik eklenir. +// CURRICULUM VITAE content — the "ÖZGEÇMİŞ" heading is added automatically. // -// LaTeX şablonundaki gibi özgeçmiş ALT BAŞLIK İÇERMEZ; bu yüzden içindekiler'de -// yalnızca "ÖZGEÇMİŞ" satırı görünür. Bölümler "kalın etiket + madde listesi" -// (\textbf{...:} + itemize) biçiminde yazılır — başlık (==, ===) KULLANMAYIN. +// As in the LaTeX template the CV contains NO subheadings, so only the single +// "ÖZGEÇMİŞ" line appears in the table of contents. Sections are written as +// "bold label + item list" (\textbf{...:} + itemize) — do NOT use headings (==, ===). *Adı Soyadı:* Öğrenci Adı SOYADI \ *Doğum Tarihi ve Yeri:* 1 Ocak 1995, İstanbul \ diff --git a/packages/preview/community-itu-thesis/0.1.0/template/onsoz.typ b/packages/preview/community-itu-thesis/0.2.0/template/foreword.typ similarity index 72% rename from packages/preview/community-itu-thesis/0.1.0/template/onsoz.typ rename to packages/preview/community-itu-thesis/0.2.0/template/foreword.typ index 9bde3f8239..1abb52cfb2 100644 --- a/packages/preview/community-itu-thesis/0.1.0/template/onsoz.typ +++ b/packages/preview/community-itu-thesis/0.2.0/template/foreword.typ @@ -1,4 +1,4 @@ -// ÖNSÖZ içeriği — "ÖNSÖZ" başlığı şablon tarafından otomatik eklenir. +// FOREWORD content — the "ÖNSÖZ" heading is added automatically by the template. Bu tez çalışmasının gerçekleştirilmesinde bana destek sağlayan danışmanım Prof. Dr. Adı SOYADI'ya, kıymetli görüşleri ve rehberliği için teşekkür ederim. @@ -6,6 +6,6 @@ Prof. Dr. Adı SOYADI'ya, kıymetli görüşleri ve rehberliği için teşekkür Ayrıca araştırma sürecinde bana yardımcı olan ve deneylerini benimle paylaşan tüm laboratuvar arkadaşlarıma, aileme ve tüm dostlarıma şükranlarımı sunarım. -// LaTeX'teki gibi: tarih sola, ad-soyad sağa dayalı (aynı satırda) +// As in LaTeX: date on the left, name on the right (same line) #v(30pt) Aralık 2024, İstanbul #h(1fr) Öğrenci Adı SOYADI diff --git a/packages/preview/community-itu-thesis/0.2.0/template/main-apa.typ b/packages/preview/community-itu-thesis/0.2.0/template/main-apa.typ new file mode 100644 index 0000000000..d7e764c723 --- /dev/null +++ b/packages/preview/community-itu-thesis/0.2.0/template/main-apa.typ @@ -0,0 +1,88 @@ +// ITU Graduate Thesis Template — APA (author-year citation) edition +// References are shown in APA style. See main.typ for the NUM edition. +// +// Compile: typst compile main-apa.typ tez.pdf + +#import "@preview/community-itu-thesis:0.2.0": thesis + +#show: thesis.with( + name: "Öğrenci Adı", + surname: "SOYADI", + student-id: "123456789", + + title-tr: ( + "TEZ BAŞLIĞININ BİRİNCİ SATIRI", + "GEREKLİYSE İKİNCİ SATIR", + "GEREKLİYSE ÜÇÜNCÜ SATIR", + ), + title-en: ( + "FIRST LINE OF THESIS TITLE", + "SECOND LINE IF NECESSARY", + "THIRD LINE IF NECESSARY", + ), + + department-tr: "Bilgisayar Mühendisliği Anabilim Dalı", + department-en: "Department of Computer Engineering", + program-tr: "Bilgisayar Mühendisliği Programı", + program-en: "Computer Engineering Programme", + institute: "graduate", + + advisor-tr: "Prof. Dr. Adı SOYADI", + advisor-univ-tr: "İstanbul Teknik Üniversitesi", + advisor-en: "Prof. Dr. Name SURNAME", + advisor-univ-en: "Istanbul Technical University", + + jury: ( + (name: "Prof. Dr. Adı SOYADI", univ: "İstanbul Teknik Üniversitesi"), + (name: "Prof. Dr. Adı SOYADI", univ: "Yıldız Teknik Üniversitesi"), + (name: "Prof. Dr. Adı SOYADI", univ: "Boğaziçi Üniversitesi"), + ), + + cover-date-tr: "Aralık 2024", + cover-date-en: "December 2024", + submission-date-tr: "22 Eylül 2024", + submission-date-en: "22 September 2024", + defense-date-tr: "21 Aralık 2024", + defense-date-en: "21 December 2024", + + lang: "tr", + degree: "masters", + binding: "hardcover", + + dedication: "Aileme,", + foreword: include "foreword.typ", + abbreviations: include "abbreviations.typ", + symbols: include "symbols.typ", + abstract-tr: include "abstract-tr.typ", + abstract-en: include "abstract-en.typ", + // Use "apa" for APA style: + bibliography: bibliography("refs.bib", style: "apa", title: "KAYNAKLAR"), + appendices: include "appendices.typ", + cv: include "cv.typ", +) + += GİRİŞ + +Bu örnek, APA (yazar-yıl) atıf stilini kullanır. Metin içinde @ornek2024 +biçiminde atıf yaptığınızda kaynak APA formatında listelenir. + +== Tezin Amacı + +Tez yazımında tutarlılığı sağlamak amaçlanmıştır. + += YÖNTEM + +// To add a real image, create a "fig" folder and use: +// #figure(image("fig/sekil.png", width: 80%), caption: [Açıklama]) +#figure( + rect(width: 80%, height: 5cm, fill: luma(240), stroke: 0.5pt + luma(160))[ + #align(center + horizon)[ + #text(fill: luma(120))[Görsel buraya gelir \ (image("fig/...") ile ekleyin)] + ] + ], + caption: [Örnek şekil açıklaması], +) + += SONUÇ + +Sonuç bölümü ulaşılan ana bulguları içerir. diff --git a/packages/preview/community-itu-thesis/0.2.0/template/main.typ b/packages/preview/community-itu-thesis/0.2.0/template/main.typ new file mode 100644 index 0000000000..486e4c11d9 --- /dev/null +++ b/packages/preview/community-itu-thesis/0.2.0/template/main.typ @@ -0,0 +1,138 @@ +// ITU Graduate Thesis Template — NUM (numeric citation) edition +// References are shown in IEEE/numeric style ([1], [2], …). +// +// Compile: typst compile main.typ tez.pdf + +#import "@preview/community-itu-thesis:0.2.0": thesis + +#show: thesis.with( + // ===== PERSONAL INFORMATION ===== + name: "Öğrenci Adı", + surname: "SOYADI", + student-id: "123456789", + + // ===== THESIS TITLES (up to 3 lines) ===== + title-tr: ( + "TEZ BAŞLIĞININ BİRİNCİ SATIRI", + "GEREKLİYSE İKİNCİ SATIR", + "GEREKLİYSE ÜÇÜNCÜ SATIR", + ), + title-en: ( + "FIRST LINE OF THESIS TITLE", + "SECOND LINE IF NECESSARY", + "THIRD LINE IF NECESSARY", + ), + + // ===== ACADEMIC INFORMATION ===== + department-tr: "Bilgisayar Mühendisliği Anabilim Dalı", + department-en: "Department of Computer Engineering", + program-tr: "Bilgisayar Mühendisliği Programı", + program-en: "Computer Engineering Programme", + // "graduate" | "informatics" | "science" | "social-sciences" | "energy" | "eurasia" + institute: "graduate", + + // ===== ADVISOR ===== + advisor-tr: "Prof. Dr. Adı SOYADI", + advisor-univ-tr: "İstanbul Teknik Üniversitesi", + advisor-en: "Prof. Dr. Name SURNAME", + advisor-univ-en: "Istanbul Technical University", + co-advisor-tr: "", + co-advisor-univ-tr: "", + co-advisor-en: "", + co-advisor-univ-en: "", + + // ===== JURY MEMBERS ===== + jury: ( + (name: "Prof. Dr. Adı SOYADI", univ: "İstanbul Teknik Üniversitesi"), + (name: "Prof. Dr. Adı SOYADI", univ: "Yıldız Teknik Üniversitesi"), + (name: "Prof. Dr. Adı SOYADI", univ: "Boğaziçi Üniversitesi"), + ), + + // ===== DATES ===== + cover-date-tr: "Aralık 2024", + cover-date-en: "December 2024", + submission-date-tr: "22 Eylül 2024", + submission-date-en: "22 September 2024", + defense-date-tr: "21 Aralık 2024", + defense-date-en: "21 December 2024", + + // ===== SETTINGS ===== + lang: "tr", // "tr" / "en" + degree: "masters", // "masters" / "phd" + binding: "hardcover", // "hardcover" / "softcover" + + // ===== FRONT/BACK MATTER ===== + dedication: "Aileme,", + foreword: include "foreword.typ", + abbreviations: include "abbreviations.typ", + symbols: include "symbols.typ", + abstract-tr: include "abstract-tr.typ", + abstract-en: include "abstract-en.typ", + bibliography: bibliography("refs.bib", style: "ieee", title: "KAYNAKLAR"), + appendices: include "appendices.typ", + cv: include "cv.typ", +) + +// ===================================================================== +// CHAPTERS (body) +// ===================================================================== + += GİRİŞ + +Bu tez şablonu İstanbul Teknik Üniversitesi lisansüstü programları için +hazırlanmış olup, Typst belgeleme sisteminde yazılan tezlerin sunumuna +yönelik standartları belirtmektedir. Kaynak göstermek için @ornek2024 +biçiminde atıf yapabilirsiniz. + +== Tezin Amacı + +Tez yazımında tutarlılığı sağlamak ve kurumsal standartlara uygun belgeler +oluşturmak amaçlanmıştır. + +=== Alt başlık örneği + +Üçüncü seviye başlıkları bu şekilde gösterilir. Formüller şöyle yazılır: + +$ E = m c^2 $ + +== Literatür Taraması + +Mevcut araştırmalar incelenerek özet halinde sunulmuştur. + += YÖNTEM + +Bu bölümde araştırmanın yöntemi açıklanır. Şekil ve çizelge örnekleri aşağıdadır. + +// To add a real image, create a "fig" folder and use: +// #figure(image("fig/sekil.png", width: 80%), caption: [Açıklama]) +// The placeholder below shows how a figure is laid out. +#figure( + rect(width: 80%, height: 5cm, fill: luma(240), stroke: 0.5pt + luma(160))[ + #align(center + horizon)[ + #text(fill: luma(120))[Görsel buraya gelir \ (image("fig/...") ile ekleyin)] + ] + ], + caption: [Örnek şekil açıklaması], +) + +#figure( + table( + columns: (1fr, 1fr, 1fr), + [Başlık 1], [Başlık 2], [Başlık 3], + [Satır 1-1], [Satır 1-2], [Satır 1-3], + [Satır 2-1], [Satır 2-2], [Satır 2-3], + ), + caption: [Örnek çizelge], +) + += BULGULAR + +Araştırmanın bulguları bu bölümde sunulmuştur. + += TARTIŞMA + +Bulguların değerlendirilmesi ve literatürle karşılaştırılması yapılmıştır. + += SONUÇ + +Sonuç bölümü özet niteliğinde olup, ulaşılan ana bulguları içermektedir. diff --git a/packages/preview/community-itu-thesis/0.1.0/template/refs.bib b/packages/preview/community-itu-thesis/0.2.0/template/refs.bib similarity index 100% rename from packages/preview/community-itu-thesis/0.1.0/template/refs.bib rename to packages/preview/community-itu-thesis/0.2.0/template/refs.bib diff --git a/packages/preview/community-itu-thesis/0.1.0/template/semboller.typ b/packages/preview/community-itu-thesis/0.2.0/template/symbols.typ similarity index 71% rename from packages/preview/community-itu-thesis/0.1.0/template/semboller.typ rename to packages/preview/community-itu-thesis/0.2.0/template/symbols.typ index a08d6c6616..fe5d579f9e 100644 --- a/packages/preview/community-itu-thesis/0.1.0/template/semboller.typ +++ b/packages/preview/community-itu-thesis/0.2.0/template/symbols.typ @@ -1,5 +1,5 @@ -// SEMBOLLER içeriği — "SEMBOLLER" başlığı şablon tarafından eklenir. -// LaTeX şablonundaki gibi: kalın sembol, ardından " : " ve açıklama (başlık satırı yok). +// SYMBOLS content — the "SEMBOLLER" heading is added by the template. +// As in the LaTeX template: bold symbol, then " : " and the description (no header row). #grid( columns: (auto, auto, 1fr), diff --git a/packages/preview/community-itu-thesis/0.1.0/thumbnail.png b/packages/preview/community-itu-thesis/0.2.0/thumbnail.png similarity index 100% rename from packages/preview/community-itu-thesis/0.1.0/thumbnail.png rename to packages/preview/community-itu-thesis/0.2.0/thumbnail.png diff --git a/packages/preview/community-itu-thesis/0.1.0/typst.toml b/packages/preview/community-itu-thesis/0.2.0/typst.toml similarity index 97% rename from packages/preview/community-itu-thesis/0.1.0/typst.toml rename to packages/preview/community-itu-thesis/0.2.0/typst.toml index d03fe93d3a..14b95ba823 100644 --- a/packages/preview/community-itu-thesis/0.1.0/typst.toml +++ b/packages/preview/community-itu-thesis/0.2.0/typst.toml @@ -1,6 +1,6 @@ [package] name = "community-itu-thesis" -version = "0.1.0" +version = "0.2.0" entrypoint = "lib.typ" authors = ["Hamza Sancakdaroğlu "] license = "MIT"