Typst şablonları için formlar
Kendi Typst işlevlerinize bir form verin; böylece bir rapor dolduran kişiler Görsel kipte işlev çağrısı sözdizimi yerine etiketli alanlar görsün.
Bir Typst şablonu çoğu zaman kendi işlevleriyle gelir: bir kapak sayfası, bir bilgi kutusu, bir onay bloğu. Raporu yazan kişi bunları #info-box(title: "Supply risk", tone: "risk")[...] gibi çağırır. Şablonu siz sürdürüyorsanız her işlevin bağımsız değişkenlerini bir kez tanımlayabilirsiniz. Görsel kip de o işlevin her çağrısını bir form olarak gösterir: etiketli alanlar, sabit seçenekler için bir liste, evet ya da hayır için bir anahtar. Bir alanı düzenlemek .typ dosyasında yalnızca o tek bağımsız değişkeni yeniden yazar; böylece rapor, aynı şekilde derlenen sıradan Typst kaynağı olarak kalır.
Okuyucunun gördüğü
Bölüm başlığı “Okuyucunun gördüğü”Kendi satırlarında duran bir çağrı bir kart olur. Kartın başlığı formun adını ve, seçerseniz, kutunun başlığı gibi kısa bir özeti gösterir. Her bağımsız değişkenin etiketi ve bir denetimi olan bir satırı vardır.
Bir cümlenin içindeki bir çağrı, örneğin #badge("review"), metin satırında bir kutucuk olur. Kutucuğa tıklamak aynı alanları küçük bir açılır pencerede açar.
Metin alanları ve işaretleme alanları Enter tuşuna bastığınızda (çok satırlı bir alanda ⌘ Enter ya da Ctrl Enter) ya da alandan çıktığınızda kaydedilir. Esc eski değeri geri koyar. Listeler ve anahtarlar anında kaydedilir. Her değişiklik tek bir geri alma adımıdır.
İmleci bir çağrının içine götürmek, Görsel kipteki diğer öğeler gibi kaynağını gösterir. Kart üzerindeki Kaynakta düzenle de aynısını yapar.
Formlar nerede tanımlanır
Bölüm başlığı “Formlar nerede tanımlanır”İkisi de aynı biçimi kullanan iki yer vardır:
- Bir pakette. Paketin
typst.tomldosyasına bir[tool.oleafly]bölümü ekleyin. Typst,[tool.*]bölümlerini başka araçlara ayırır; bu yüzden paket her yerde yine kurulur ve derlenir. Bu,@localpaketleri için ve Typst Universe’teki@previewpaketleri için çalışır. - Projede. Proje içinde düz
.typdosyaları olarak tutulan şablonlar için projenin kök dizinindeoleafly-forms.tomloluşturun. Her form ayrıca işlevi tanımlayan dosyayımoduleile belirtir.
Bir paket formu:
[tool.oleafly]schema = 1
[[tool.oleafly.forms]]function = "info-box"label = "Info box"summary = "title"
[[tool.oleafly.forms.fields]] arg = "title" kind = "text" label = "Heading" placeholder = "Short heading" required = true
[[tool.oleafly.forms.fields]] arg = "tone" kind = "choice" label = "Tone" default = "note" options = [{ value = "note", label = "Note" }, { value = "risk", label = "Risk" }, "neutral"]
[[tool.oleafly.forms.fields]] arg = 0 kind = "content" label = "Text"oleafly-forms.toml içinde bir proje formu:
[tool.oleafly]schema = 1
[[tool.oleafly.forms]]module = "template/memo.typ"function = "memo-header"label = "Memo header"fields = [ { arg = "to", kind = "text", label = "To" }, { arg = "subject", kind = "text", label = "Subject" },]Anahtarlar
Bölüm başlığı “Anahtarlar”schema = 1 zorunludur. Bu satırı içermeyen ya da başka bir sayı içeren bir dosya yok sayılır.
Her [[tool.oleafly.forms]] girdisi şunlara sahiptir:
| Anahtar | Zorunlu | Anlamı |
|---|---|---|
function | Evet | İşlevin adı, tek bir Typst tanımlayıcısı olarak. Tireler sorun değildir. |
module | Yalnızca oleafly-forms.toml içinde | İşlevi tanımlayan proje dosyası, proje köküne göre, klasörler arasında / ile. |
label | Hayır | Formun kartlardaki ve kutucuklardaki adı. Varsayılan olarak işlevin adıdır. |
summary | Hayır | Değeri etiketin yanında görünen bağımsız değişken; bir alanın arg değeri gibi yazılır. |
fields | Evet | Bir ya da daha fazla alan. |
Her alanın şunları vardır:
| Anahtar | Zorunlu | Anlamı |
|---|---|---|
arg | Evet | Adlandırılmış bir bağımsız değişken için bir ad ("title") ya da konumsal olan için bir sayı (0 ilkidir). Sondaki bir [...] bloğu, parantez içindekilerden sonra gelen konumsal bir bağımsız değişken sayılır. |
kind | Evet | text, content, choice, number veya toggle. |
label | Evet | Alanın etiketi. |
help | Hayır | Alanın altında kısa bir not. |
placeholder | Hayır | Boş bir alandaki gri metin. |
required | Hayır | true, boş bir alanı eksik olarak işaretler ve Temizle düğmesini gizler. Oleafly bağımsız değişkeni kendiliğinden asla eklemez. |
default | Hayır | İşlevinizin bağımsız değişken atlandığında kullandığı değer. Gösterilir, hiçbir zaman yazılmaz. |
Türler ve ek anahtarları:
textbir Typst dizgisi yazar. Daha büyük bir kutu içinmultiline = trueekleyin.contentTypst işaretlemesini düzenler ve bunu bir[...]bloğu olarak yazar. Dizgi olan bir bağımsız değişken dizgi olarak kalır.choiceiçinoptionsgerekir: dizgilerden oluşan bir liste ya da etiket değerden farklıysa{ value, label }tabloları. Değerler dizgi olarak yazılır.numberinteger,min,maxvestepalır. Sayıların birimi yoktur.toggletrueya dafalseyazar.
Hangi çağrılar form alır
Bölüm başlığı “Hangi çağrılar form alır”Oleafly, raporun kendi #import ve #let satırlarını dosyanın üst düzeyinde izler:
#import "@local/acme-report:0.1.0" as acme,#acme.info-box(...)çağrısını bir form yapar.#import "@local/acme-report:0.1.0": info-box, status-badge as badge,#info-box(...)ve#badge(...)çağrılarını form yapar.#import "@local/acme-report:0.1.0": *, paketin form tanımladığı her işlevi bir form yapar.#import "template/memo.typ": memo-header,moduledeğeritemplate/memo.typolan bir proje formuyla eşleşir. Yollar raporun kendi klasöründen,/ile başlıyorsa proje kökünden okunur.
Paket sürümü tam olarak eşleşmelidir. Dosyada daha aşağıda aynı adla yazılan bir #let, o noktadan itibaren formun yerini alır. Paketi yeniden içe aktaran başka bir dosya üzerinden ulaşılan çağrılar kaynak metinlerini korur.
table ya da figure gibi Görsel kipin zaten çizdiği bir Typst öğesi gibi adlandırılmış bir işlev, yalın adıyla çağrıldığında yerleşik görünümünü korur. #acme.table(...) ya da yeniden adlandırılmış bir içe aktarma yine formu alır.
Salt okunur gösterilen alanlar
Bölüm başlığı “Salt okunur gösterilen alanlar”Bazı bağımsız değişkenler bir formdan güvenle düzenlenemez. Satırları kaynağı nedeniyle birlikte gösterir ve Kaynakta düzenle oraya atlar:
- Kaynakta hesaplanıyor: değer,
title: data.titlegibi bir ifadedir. - Farklı türde bir değer olarak yazılmış: örneğin formun metin beklediği yerde bir sayı.
- Seçeneklerden biri değil:
optionsiçinde olmayan bir değer. - Yayma bağımsız değişkeniyle ayarlanmış:
..argsiçeren bir çağrı, formun göremediği değerleri geçirir; bu yüzden her alan salt okunurdur.
Bir alan eklenmesi gereken yere eklenemediğinde, örneğin eksik olan bir bağımsız değişkenden sonraki konumsal bir bağımsız değişken, form bunu söyler ve Kaynağa ekle önerir.
Bir tanımdaki hatalar
Bölüm başlığı “Bir tanımdaki hatalar”oleafly-forms.toml dosyasını ya da kopyalanmış bir paketin typst.toml dosyasını Oleafly’de açın; her sorun kendi satırında bir işaret olarak görünür: bilinmeyen bir tür, eksik bir etiket, yinelenen bir form, projenin dışındaki bir module. Bozuk bir form dışarıda bırakılır ve diğerleri çalışmaya devam eder. 256 KB’tan büyük bir dosya okunmaz.
Şablonları paylaşma
Bölüm başlığı “Şablonları paylaşma”Oleafly paket formlarını derleyicinin kullandığı klasörlerden okur. @local pakete sahip olmayan bir iş birlikçi düz kaynak görür ve hata görmez. Formları bir projedeki herkesle paylaşmak için Typst paketleri iletişim kutusunu açın, Proje klasöründeki paketleri kullan’ı açın ve Paketleri projeye kopyala’yı seçin. Paket ve formları o zaman projenin typst-packages klasöründe birlikte taşınır (bkz. Typst projeleri).