man/text
man · Metin İşleme

$ mandoc

Bölüm 1 · Metin İşleme

kılavuz sayfalarını biçimlendirir

Özet

mandoc [-ac] [-I os=name] [-K encoding] [-mdoc | -man] [-O options] \
    [-T output] [-W level] [file ...]

Açıklama

mandoc, kılavuz sayfalarını görüntülenmek üzere biçimlendirir.

Varsayılan olarak mandoc, standart girdiden mdoc(7) veya man(7) metnini okur ve -T locale çıktısı üretir.

Seçenekler

  • -a: Standart çıktı bir uçbirim (terminal) cihazıysa ve -c belirtilmemişse, çıktıyı tıpkı man(1) gibi sayfalandırmak için less(1) programını kullanır.

  • -c: Biçimlendirilmiş kılavuz sayfalarını, sayfalandırmak için less(1) kullanmadan standart çıktıya kopyalar. Varsayılan davranış budur. -a seçeneğini geçersiz kılmak için belirtilebilir.

  • -I os=name: mdoc(7) Os makrosu ve man(7) TH makrosu için varsayılan işletim sistemi adını geçersiz kılar.

  • -K encoding: Girdi kodlamasını belirtir. Desteklenen kodlama bağımsız değişkenleri us-ascii, iso-8859-1 ve utf-8'dir. Belirtilmezse, otomatik algılama aşağıdaki listedeki ilk eşleşmeyi kullanır:

  1. Girdi dosyasının ilk üç baytı UTF-8 bayt sırası işareti (BOM, 0xefbbbf) ise, girdi utf-8 olarak yorumlanır.

  2. Girdi dosyasının birinci veya ikinci satırı emacs mod satırı biçimiyle eşleşiyorsa:

.\" -*- [...;] coding: encoding; -*-

Girdi, encoding değerine göre yorumlanır.

  1. Dosyadaki ilk ASCII olmayan bayt geçerli bir UTF-8 dizisi başlatıyorsa, girdi utf-8 olarak yorumlanır.

  2. Aksi takdirde, girdi iso-8859-1 olarak yorumlanır.

  • -mdoc | -man: -mdoc ile tüm girdi dosyaları mdoc(7) olarak yorumlanır. -man ile tüm girdi dosyaları man(7) olarak yorumlanır. Varsayılan olarak, girdi dili her dosya için otomatik olarak algılanır: ilk makro Dd veya Dt ise mdoc(7) ayrıştırıcısı kullanılır; aksi takdirde man(7) ayrıştırıcısı kullanılır. Diğer bağımsız değişkenlerle birlikte -m sessizce yoksayılır.

  • -O options: Virgülle ayrılmış çıktı seçenekleri. Desteklenen seçenekler için ilgili çıktı biçimlerinin açıklamalarına bakın.

  • -T output: Çıktı biçimini seçer. Çıktı bağımsız değişkeni için desteklenen değerler şunlardır: ascii, html, varsayılan olan locale, man, markdown, pdf, ps, tree ve utf8.

Özel -T lint modu yalnızca girdiyi ayrıştırır ve çıktı üretmez. -W all seçeneğini ima eder ve genellikle standart hata çıktısında (stderr) görünen ayrıştırıcı mesajlarını standart çıktıya (stdout) yönlendirir.

  • -W level: Standart hata çıktısında raporlanacak ve çıkış durumunu etkileyecek minimum mesaj seviyesini belirtir. Seviye base, style, warning, error veya unsupp olabilir. base seviyesi, işletim sistemini otomatik olarak Os makrosunun içeriğinden, -Ios komut satırı seçeneğinden veya uname(3) dönüş değerinden türetir. openbsd ve netbsd seviyeleri, otomatik algılamayı atlayan ve belirli bir işletim sistemi için temel sistem kurallarının doğrulanmasını isteyen base seviyesinin türevleridir. all seviyesi base için bir takma addır. Varsayılan olarak mandoc sessizdir. Ayrıntılar için Çıkış Durumu ve Tanılamalar bölümlerine bakın.

Özel -W stop seçeneği, mandoc'a en azından istenen seviyede uyarılara veya hatalara neden olan bir dosyayı ayrıştırdıktan sonra çıkmasını söyler. O dosyadan herhangi bir biçimlendirilmiş çıktı üretilmez. Hem bir seviye hem de stop isteniyorsa, bunlar bir virgülle birleştirilebilir; örneğin -W error,stop.

  • file: Belirtilen girdi dosyasından okur. Birden fazla dosya belirtilirse, verilen sırayla işlenirler. Belirtilmezse, mandoc standart girdiden okur.

-fhklw seçenekleri de desteklenmektedir ve man(1) sayfasında belgelenmiştir. mandoc, -f ve -k modlarında apropos(1) kılavuzunda açıklanan -CMmOSs seçeneklerini de destekler. -fkl seçenekleri birbirini dışlar ve birbirini geçersiz kılar.

ASCII Çıktısı

Ortamda ayarlanan locale(1) değerini yoksayarak, ascii(7) kılavuz sayfasında belgelenen 7-bit ASCII karakter kodlamasında metin çıktısını zorlamak için -T ascii seçeneğini kullanın.

Yazı tipi stilleri, geri tuşlu (back-spaced) kodlama kullanılarak uygulanır; örneğin altı çizili bir c karakteri _\[bs]c olarak işlenir, burada \[bs] 8 numaralı geri tuşu (back-space) karakteridir. Kalınlaştırılmış karakterler ise c\[bs]c olarak işlenir. Bu işaretleme genellikle sayfalayıcı (pager) veya ul(1) tarafından uygun uçbirim dizilerine dönüştürülür. İşaretlemeyi kaldırmak için çıktıyı col(1) -b komutuna yönlendirebilirsiniz.

mandoc_char(7) sayfasında belgelenen özel karakterler, ASCII karşılıklarına en yakın şekilde işlenmeye çalışılır. Özellikle, açılış ve kapanış 'tek tırnakları' sırasıyla 0x60 ve 0x27 numaralı karakterler olarak temsil edilir; bu durum 1965'ten en son revizyona (2012) kadar tüm ASCII standartlarıyla uyumludur ve roff(7) biçimlendiricilerinin ASCII çıktısında tek tırnakları temsil etme konusundaki geleneksel yöntemiyle eşleşir. Bu doğru ASCII gösterimi, modern Unicode uyumlu yazı tipleriyle garip görünebilir; çünkü ASCII'nin aksine Unicode, U+0060 kod noktasını yalnızca aksan işareti (grave accent) için kullanır, hiçbir zaman açılış tırnağı için kullanmaz.

Aşağıdaki -O bağımsız değişkenleri kabul edilir:

  • indent=indent: Normal metin için sol kenar boşluğu, mdoc(7) için varsayılan olan beş ve man(7) için yedi yerine indent kadar boşluk karakterine ayarlanır. Bunun artırılması önerilmez; aşırı dolu satırlar veya çirkin satır kesmeleri gibi kötü biçimlendirmelere neden olabilir. Çıktı, 66 sütundan daha dar bir uçbirimdeki bir sayfalayıcıya yönlendirildiğinde, varsayılan değer üç sütuna düşürülür.

  • mdoc: man(7) girdi dosyalarını mdoc(7) çıktı stilinde biçimlendirir. Bu, altbilgi satırının sağ tarafında sayfa başlığı yerine işletim sistemi adını yazdırır ve -O indent=5 seçeneğini ima eder. Yararlı bir uygulama alanı, -T man çıktısının, üretildiği mdoc(7) kaynağıyla aynı şekilde biçimlendirildiğini kontrol etmektir.

  • tag[=term]: Biçimlendirilmiş kılavuz sayfası bir sayfalayıcıda açılırsa, kılavuz sayfasını başlangıçtan itibaren göstermek yerine belirtilen terimin (term) tanımına gider. Herhangi bir terim belirtilmezse, bölüm numarası olmayan ilk komut satırı bağımsız değişkeni yeniden kullanılır. Bu bağımsız değişken apropos(1) key=val biçimindeyse, bağımsız değişkenin tamamı yerine yalnızca val kısmı kullanılır. Bu, bir anahtar kelimeyi aramak ve eşleşen kılavuz sayfalarında doğrudan tanımına atlamak için man -akO tag Ic=ulimit gibi komutlar için kullanışlıdır.

  • width=width: Çıktı genişliği, varsayılan olan 78 yerine width değerine ayarlanır. Çıktı, 79 sütundan daha dar bir uçbirimdeki bir sayfalayıcıya yönlendirildiğinde varsayılan değer, uçbirim genişliğinin bir eksiğine düşürülür. Her durumda, harfi harfine (literal) modda çıktı olarak verilen satırlar asla kaydırılmaz ve çıktı genişliğini aşabilir.

HTML Çıktısı

-T html tarafından üretilen çıktı, isteğe bağlı kendi kendini kapatan etiketler (self-closing tags) kullanarak HTML5 standardına uygun olur. Varsayılan stiller yalnızca CSS1 kullanır. eqn(7) bloklarından işlenen denklemler MathML kullanır.

/usr/share/misc/mandoc.css dosyası, çıktıyı özelleştirmek için kullanılabilen stil şablonu (style-sheet) sınıflarını belgeler. -O style ile bir stil şablonu belirtilmezse, -T html varsayılan olarak herhangi bir grafiksel veya metin tabanlı web tarayıcısında okunabilen basit bir çıktıya (gömülü bir stil şablonu aracılığıyla) yönelir.

ASCII olmayan karakterler onaltılık (hexadecimal) Unicode karakter başvuruları olarak işlenir.

Aşağıdaki -O bağımsız değişkenleri kabul edilir:

  • fragment: <!DOCTYPE> bildirimini ve <html>, <head> ve <body> öğelerini atlar ve yalnızca <body> öğesinin altındaki alt ağacı yayar. style bağımsız değişkeni yoksayılır. Bu, kılavuz içeriğini mevcut belgelere gömerken kullanışlıdır.

  • includes=fmt: fmt dizesi (örneğin, ../src/%I.html), bağlantılı başlık dosyaları için (genellikle In makrosu aracılığıyla) bir şablon olarak kullanılır. %I örnekleri, dahil edilen (include) dosya adıyla değiştirilir. Varsayılan davranış köprü (hyperlink) sunmamaktır.

  • man=fmt[;fmt]: fmt dizesi (örneğin, ../html%S/%N.%S.html), bağlantılı kılavuzlar için (genellikle Xr makrosu aracılığıyla) bir şablon olarak kullanılır. %N ve %S örnekleri, sırasıyla bağlantılı kılavuzun adı ve bölümüyle değiştirilir. Hiçbir bölüm dahil edilmemişse, bölüm 1 varsayılır. Varsayılan davranış köprü sunmamaktır. İki biçim verilirse ve geçerli dizinde %N.%S dosyası varsa ilk biçim kullanılır; aksi takdirde ikinci biçim kullanılır.

  • style=style.css: style.css dosyası harici bir stil şablonu için kullanılır. Bu, geçerli bir mutlak veya göreli URI olmalıdır.

  • tag[=term]: ASCII Çıktısı ile aynı söz dizimi ve anlama sahiptir. Bu, sayfalayıcıya yalnızca bir dosya adı iletmek yerine, bir bölüm tanımlayıcı (fragment identifier) ile biten bir file:// URI'si iletilerek uygulanır. Bu bağımsız değişkeni kullanırken, bu tür URI'leri destekleyen bir sayfalayıcı kullanın, örneğin:

MANPAGER='lynx -force_html' man -T html -O tag=MANPAGER man
MANPAGER='w3m -T text/html' man -T html -O tag=toc mandoc

Sonuç olarak, HTML çıktısı için bu bağımsız değişken more(1) veya less(1) ile çalışmaz. Örneğin, less(1) programı file:// URI'lerini desteklemediği için MANPAGER=less man -T html -O tag=toc mandoc komutu çalışmaz.

  • toc: Bir girdi dosyası en az iki standart dışı bölüm içeriyorsa, çıktının başına yakın bir yerde bir içindekiler tablosu yazdırır.

Yerel Ayar (Locale) Çıktısı

Varsayılan olarak mandoc, geçerli locale(1) ayarlarına göre otomatik olarak UTF-8 veya ASCII çıktısını seçer. LC_ALL, LC_CTYPE veya LANG ortam değişkenlerinden herhangi biri ayarlanmışsa ve ayarlanan ilk değişken UTF-8 karakter kodlamasını seçiyorsa, UTF-8 Çıktısı üretir; aksi takdirde ASCII Çıktısına geri döner. Bu çıktı modu -T locale ile açıkça da seçilebilir.

Man Çıktısı

mdoc(7) girdisini man(7) çıktı biçimine dönüştürmek için -T man seçeneğini kullanın. Bu, kılavuz kaynaklarını mdoc(7) biçimlendiricisi olmayan eski sistemlere dağıtmak için kullanışlıdır. Gömülü eqn(7) ve tbl(7) kodları desteklenmez.

Bir dosyanın girdi biçimi man(7) ise, girdi çıktıya kopyalanır. Ayrıştırıcı da çalıştırılır ve her zamanki gibi -W level seçeneği, girdi çıktıya kopyalanmadan önce hangi tanılamaların görüntüleneceğini kontrol eder.

Markdown Çıktısı

mdoc(7) girdisini, John Gruber'ın 2004 tarihli belirtimine (http://daringfireball.net/projects/markdown/syntax.text) uygun markdown biçimine dönüştürmek için -T markdown seçeneğini kullanın. Çıktı ayrıca CommonMark (http://commonmark.org/) belirtimine de neredeyse tamamen uyar.

Markdown çıktısı için kullanılan karakter kümesi ASCII'dir. ASCII olmayan karakterler HTML varlıkları (entities) olarak kodlanır. Bu, harfi harfine (literal) yazı tipi bağlamlarında mümkün olmadığından (çünkü bunlar markdown çıktısında kod alanları ve kod blokları olarak işlenir), ASCII olmayan karakterler bu bağlamlarda ASCII yakınsamalarına dönüştürülür.

Markdown çok zayıf bir işaretleme dili olduğundan tüm anlamsal işaretlemeler kaybolur ve hatta sunumsal işaretlemelerin bir kısmı da kaybolabilir. Bunu HTML'e dönüştürmede bir ara adım olarak kullanmayın; bunun yerine doğrudan -T html kullanın.

man(7), tbl(7) ve eqn(7) girdi dilleri -T markdown çıktı modu tarafından desteklenmez.

PDF Çıktısı

PDF-1.1 çıktısı -T pdf ile üretilebilir. -O bağımsız değişkenleri ve varsayılanlar için PostScript Çıktısı bölümüne bakın.

PostScript Çıktısı

PostScript "Adobe-3.0" Seviye-2 sayfaları -T ps ile üretilebilir. Çıktı sayfaları varsayılan olarak letter boyutundadır ve 11 puntoluk Times yazı tipi ailesinde işlenir. Kenar boşlukları, sayfa uzunluğunun ve genişliğinin 1/9'u olarak hesaplanır. Satır yüksekliği 1.4m'dir.

Özel karakterler ASCII Çıktısında olduğu gibi işlenir.

Aşağıdaki -O bağımsız değişkenleri kabul edilir:

  • paper=name: Kağıt boyutu adı a3, a4, a5, legal veya letter değerlerinden biri olabilir. Boyutları milimetre cinsinden genişlik x yükseklik olarak NNxNN şeklinde manuel olarak da belirtebilirsiniz. Bilinmeyen bir değerle karşılaşılırsa letter kullanılır.

UTF-8 Çıktısı

Ortamdaki locale(1) ayarlarını yoksayarak, metin çıktısını UTF-8 çoklu baytlık karakter kodlamasında zorlamak için -T utf8 seçeneğini kullanın. Yazı tipi stilleri ve -O bağımsız değişkenleriyle ilgili olarak ASCII Çıktısı bölümüne bakın.

Yerel ayar (locale) veya geniş karakter (wide character) desteği olmayan ve dahili karakter temsilinin UCS-4 olmadığı işletim sistemlerinde mandoc her zaman ASCII Çıktısına geri döner.

Söz Dizimi Ağacı Çıktısı

Söz dizimi ağacının insan tarafından okunabilir bir temsilini göstermek için -T tree seçeneğini kullanın. Kılavuz sayfalarının kaynak kodunda hata ayıklamak için kullanışlıdır. Kesin biçim değişikliğe tabidir, bu nedenle bunun için ayrıştırıcılar yazmayın.

İlk paragraf mdoc(7) girişinde (prologue), man(7) TH satırında bulunan meta verileri veya kullanılan geri dönüşleri (fallbacks) gösterir.

Ağaç dökümünde, her çıktı satırı bir söz dizimi ağacı düğümünü gösterir. Alt (child) düğümler, üst (parent) düğümlerine göre girintilenir. Sütunlar şunlardır:

  1. Makro düğümleri için makro adı; metin ve tbl(7) düğümleri için içerik. eqn(7) düğümleri için özel bir biçim vardır.
  2. Düğüm türü (text, elem, block, head, body, body-end, tail, tbl, eqn).
  3. Bayraklar (flags). Bunlar şunları içerebilir:
    • Düğüm bir açılış sınırlayıcısıysa açılış parantezi.
    • Düğüm yeni bir girdi satırı başlatıyorsa bir yıldız işareti.
    • Girdi satırı numarası (birden başlayarak).
    • İki nokta üst üste.
    • Girdi sütunu numarası (birden başlayarak).
    • Düğüm bir kapanış sınırlayıcısıysa kapanış parantezi.
    • Düğüm bir cümleyi sonlandırıyorsa nokta işareti.
    • Düğüm başka bir blok tarafından kesilen bir blok ise BROKEN.
    • Düğüm girdi dosyasında yoksa ancak makrolardan otomatik olarak üretilmişse NOSRC.
    • Düğümün herhangi bir çıktı biçimi için çıktı üretmemesi gerekiyorsa NOPRT.

Aşağıdaki -O bağımsız değişkeni kabul edilir:

  • noval: Doğrulamayı atlar ve doğrulanmamış söz dizimi ağacını gösterir. Bu, belirli bir davranışın ayrıştırıcıdan mı yoksa doğrulayıcıdan mı kaynaklandığını anlamaya yardımcı olabilir. Bu durumda meta veriler kullanılamaz.

Ortam

  • LC_CTYPE: Karakter kodlama locale(1) ayarı. Yerel Ayar Çıktısı seçildiğinde, ASCII mi yoksa UTF-8 mi çıktı biçimi kullanılacağına karar verir. Girdi dosyalarının yorumlanmasını asla etkilemez.

  • MANPAGER: Bu ortam değişkeninin boş olmayan herhangi bir değeri, standart sayfalandırma programı olan less(1) yerine kullanılır; ayrıntılar için man(1) sayfasına bakın. Yalnızca -a veya -l belirtildiğinde kullanılır.

  • PAGER: MANPAGER tanımlanmadığında kullanılacak sayfalandırma programını belirtir. Hem PAGER hem de MANPAGER tanımlanmamışsa less(1) kullanılır. Yalnızca -a veya -l belirtildiğinde kullanılır.

Çıkış Durumu

mandoc yardımcı programı, -W seçeneğiyle ilişkili mesaj seviyesi tarafından kontrol edilen aşağıdaki değerlerden biriyle çıkar:

  • 0: Hiçbir temel sistem kuralı ihlali, stil önerisi, uyarı veya hata oluşmadı veya oluşanlar istenen seviyeden daha düşük olduğu için yoksayıldı.
  • 1: En az bir temel sistem kuralı ihlali veya stil önerisi oluştu, ancak hiçbir uyarı veya hata oluşmadı ve -W base veya -W style belirtildi.
  • 2: En az bir uyarı oluştu, ancak hiçbir hata oluşmadı ve -W warning veya daha düşük bir seviye istendi.
  • 3: En az bir ayrıştırma hatası oluştu, ancak desteklenmeyen hiçbir özellikle karşılaşılmadı ve -W error veya daha düşük bir seviye istendi.
  • 4: En az bir desteklenmeyen özellikle karşılaşıldı ve -W unsupp veya daha düşük bir seviye istendi.
  • 5: Geçersiz komut satırı bağımsız değişkenleri belirtildi. Hiçbir girdi dosyası okunmadı.
  • 6: Bir işletim sistemi hatası oluştu, örneğin bellek, dosya tanımlayıcıları veya işlem tablosu girdilerinin tükenmesi. Bu tür hatalar mandoc'un bir dosyanın ayrıştırılması veya biçimlendirilmesinin ortasında bile olsa hemen çıkmasına neden olabilir.

-T lint çıktı modunun seçilmesinin -W all seçeneğini ima ettiğini unutmayın.

Örnekler

Kılavuzları uçbirimde sayfalandırmak için:

mandoc -l mandoc.1 man.1 apropos.1 makewhatis.8

Stil şablonu olarak /usr/share/misc/mandoc.css kullanarak HTML kılavuzları üretmek için:

mandoc -T html -O style=/usr/share/misc/mandoc.css mdoc.7 > mdoc.7.html

Geniş bir kılavuz kümesini gözden geçirmek (kontrol etmek) için:

mandoc -T lint $(find /usr/src -name '*.[1-9]')

A4 kağıdı için bir dizi PostScript kılavuzu üretmek için:

mandoc -T ps -O paper=a4 mdoc.7 man.7 > manuals.ps

Modern bir mdoc(7) kılavuzunu, mdoc(7) ayrıştırıcısı olmayan sistemlerde kullanmak üzere daha eski man(7) biçimine dönüştürmek için:

mandoc -T man foo.mdoc > foo.man

Tanılamalar

mandoc tarafından görüntülenen mesajlar şu biçimi takip eder:

mandoc: file:line:column: level: message: macro arguments (os)

İlk üç alan, mesajın tetiklendiği girdi dosyasının dosya adını, satır numarasını ve sütun numarasını tanımlar. Satır ve sütun numaraları 1'den başlar. Bir girdi dosyasının tamamına atıfta bulunan mesajlar için her ikisi de atlanır. Tüm level (seviye) ve message (mesaj) dizgeleri aşağıda açıklanmıştır. Mesajı tetikleyen makronun adı ve argümanları, anlamsız olduğu durumlarda atlanır. Tüm işletim sistemlerini ilgilendiren mesajlar için os işletim sistemi belirteci atlanır. Geçersiz komut satırı bağımsız değişkenleri veya işletim sistemi hataları hakkındaki ölümcül (fatal) mesajlar (örneğin bellek tükendiğinde) dosya ve seviye alanlarını da atlayabilir.

Mesaj seviyeleri aşağıdaki anlamlara sahiptir:

  • syserr: Bir işletim sistemi hatası oluştu. Girdi dosyalarında mutlaka bir sorun olması gerekmez. Yine de çıktı eksik veya tamamlanmamış olabilir.

  • badarg: Geçersiz komut satırı bağımsız değişkenleri belirtildi. Hiçbir girdi dosyası okunmadı ve çıktı üretilmedi.

  • unsupp: Bir girdi dosyası, desteklenmeyen düşük seviyeli roff(7) özelliklerini kullanıyor. Çıktı eksik ve/veya hatalı biçimlendirilmiş olabilir, bu nedenle dosyayı işlemek için mandoc yerine GNU troff kullanılması tercih edilebilir.

  • error: Çoğu durumda ciddi söz dizimi hatalarının neden olduğu, bilgi kaybı veya ciddi hatalı biçimlendirme riskini belirtir.

  • warning: Gösterilen bilgilerin veya biçimlendirmesinin, yazarın amacından küçük yönlerden sapma gösterebileceğini belirtir. Ayrıca, söz dizimi hataları, genellikle hatalı biçimlendirmeye neden olmasalar bile en azından uyarı (warning) olarak sınıflandırılır.

  • style: Girdi dosyası şüpheli veya önerilmeyen bir stil kullanıyor. Bu, söz dizimiyle ilgili bir şikayet değildir ve muhtemelen ne biçimlendirme ne de taşınabilirlik tehlikededir. Daha yüksek mesaj seviyelerinde yanlış pozitiflerden kaçınmak için büyük özen gösterilse de, style seviyesi sorunların gözden kaçma olasılığını azaltmaya çalışır, bu nedenle zaman zaman asılsız öneriler sunabilir. Lütfen belirli bir stil önerisinin girdi dosyasında gerçekten bir değişikliği haklı gösterip göstermediğine karar vermek için sağduyunuzu kullanın.

  • base: Belirli bir işletim sisteminin temel sisteminde kullanılan bir kurala uyulmamaktadır. Bunlar işaretleme hataları değildir ve ne biçimlendirme kalitesi ne de taşınabilirlik tehlikededir. base seviyesindeki mesajlar, daha sezgisel olan style seviyesi etiketiyle yazdırılır.

base, style, warning, error ve unsupp seviyelerindeki mesajlar, bir -W seçeneği veya -T lint çıktı modu kullanılarak seviyeleri veya daha düşük bir seviye istenmedikçe gizlenir.

Aşağıda belirtildiği gibi, tüm base ve bazı style kontrolleri yalnızca -W komut satırı seçeneğinin bağımsız değişkenlerinde, Os makrosunda, -Ios komut satırı seçeneğinde veya hiçbiri yoksa uname(3) işlevinin dönüş değerinde belirli bir işletim sistemi adı geçiyorsa gerçekleştirilir.

Temel sistem kılavuzları için kurallar

  • Mdocdate bulundu: (mdoc, NetBSD) Dd makrosu, NetBSD temel sistemi tarafından desteklenmeyen CVS Mdocdate anahtar kelime değişimini kullanıyor. Bunun yerine geleneksel “Month dd, yyyy” biçimini kullanmayı düşünün.

  • Mdocdate eksik: (mdoc, OpenBSD) Dd makrosu CVS Mdocdate anahtar kelime değişimini kullanmıyor, ancak OpenBSD temel sisteminde bunun kullanılması geleneksel olarak beklenir.

  • bilinmeyen mimari: (mdoc, OpenBSD, NetBSD) Dt makrosunun üçüncü argümanı, bu işletim sisteminin üzerinde çalıştığı mimarilerden hiçbiriyle eşleşmiyor.

  • işletim sistemi açıkça belirtilmiş: (mdoc, OpenBSD, NetBSD) Os makrosunun bir argümanı var. Temel sistemde geleneksel olarak boş bırakılır.

  • RCS kimliği (id) eksik: (OpenBSD, NetBSD) Kılavuz sayfasında, bu işletim sistemlerinde geleneksel olarak kullanılan CVS OpenBSD veya NetBSD anahtar kelime değişimi tarafından üretilen RCS tanımlayıcısını içeren yorum satırı eksik.

Stil önerileri

  • eski man(7) tarih biçimi: (mdoc) Dd makrosu eski man(7) tarih biçimi olan “yyyy-dd-mm” kullanıyor. Bunun yerine geleneksel mdoc(7) tarih biçimi olan “Month dd, yyyy” kullanmayı düşünün.

  • tarih biçimi normalleştiriliyor: ...: (mdoc, man) Dd veya TH makrosu kısaltılmış bir ay adı veya başında sıfır olan bir gün numarası sağlıyor. Biçimlendirilmiş çıktıda, ay adı tam olarak yazılır ve baştaki sıfır atlanır.

  • belge başlığında küçük harf karakteri: (mdoc, man) Başlık yine de Dt veya TH makrosunda verildiği gibi kullanılır.

  • yinelenen RCS kimliği (id): Tek bir kılavuz sayfası, aynı işletim sistemi için RCS tanımlayıcısının iki kopyasını içeriyor. Sonraki örneği silmeyi ve ilkini sayfanın en üstüne taşımayı düşünün.

  • bölüm adında olası yazım hatası: (mdoc) Bulanık dize eşleme, bir Sh makrosunun argümanının standart bir bölüm adına benzer ancak onunla tamamen aynı olmadığını ortaya çıkardı.

  • kapatılmamış tırnaklı argüman: (roff) Makro argümanları çift tırnak karakterleri içine alınabilir, böylece tırnaklı argüman içindeki boşluk karakterlerinin ve makro adlarının kaçış karakteriyle korunması gerekmez. Bir makronun son argümanının kapanış tırnağı atlanabilir. Ancak kodu okumayı zorlaştırdığı için bunun atlanması önerilmez.

  • yararsız makro: (mdoc) Bir Bt, Tn veya Ud makrosu bulundu. Basitçe silin: hiçbir yararlı amaca hizmet etmez.

  • OS makrosu kullanmayı düşünün: (mdoc) Düz metinde veya bir Bx makrosunda Ox, Nx, Fx veya Dx kullanılarak temsil edilebilecek bir dize bulundu.

  • hata numaraları (errno) sırasız: (mdoc, NetBSD) Bir Bl listesindeki Er öğeleri alfabetik sırada değil.

  • yinelenen hata numarası (errno): (mdoc, NetBSD) Bir Bl listesi, aynı Er numarasını açıklayan iki ardışık It girdisi içeriyor.

  • başvurulan kılavuz bulunamadı: (mdoc) Bir Xr makrosu bulunamayan bir kılavuz sayfasına başvuruyor. -W base ile çalışırken, arama temel sistemle sınırlıdır; varsayılan olarak /usr/share/man:/usr/X11R6/man dizinindedir. Bu yol, derleme zamanında MANPATH_BASE ön işlemci makrosu kullanılarak yapılandırılabilir. -W style ile çalışırken arama, man(1) kılavuz sayfasında açıklandığı gibi, -m ve -M komut satırı seçeneklerine, MANPATH ortam değişkenine, man.conf(5) dosyasına riayet edilerek ve derleme zamanında MANPATH_DEFAULT ön işlemci makrosu kullanılarak da yapılandırılabilen varsayılan /usr/share/man:/usr/X11R6/man:/usr/local/man yoluna geri dönülerek tam arama yolu boyunca gerçekleştirilir.

  • sondaki sınırlayıcı: (mdoc) Bir Ex, Fo, Nd, Nm, Os, Sh, Ss, St veya Sx makrosunun son argümanı sondaki bir sınırlayıcıyla bitiyor. Bu genellikle kötü bir stildir ve genellikle yazım hatalarını gösterir. Büyük olasılıkla, sınırlayıcı kaldırılabilir.

  • sondaki sınırlayıcıdan önce boşluk yok: (mdoc) Sondaki sınırlayıcı argümanlarını destekleyen bir makronun son argümanı bir bayttan uzundur ve sondaki bir sınırlayıçi ile biter. Sınırlayıcının ayrı bir argüman haline gelmesini sağlamak ve böylece makro kapsamının dışına taşımak için bir boşluk eklemeyi düşünün.

  • doldurma (fill) modu zaten etkin, atlanıyor: (man) Belge hala doldurma modunda olmasına veya zaten doldurma moduna geri dönmüş olmasına rağmen bir fi isteği gerçekleşiyor. Hiçbir etkisi yoktur.

  • doldurma (fill) modu zaten devre dışı, atlanıyor: (man) Belge zaten doldurmasız (no-fill) moda geçmiş olmasına ve henüz doldurma moduna geri dönmemiş olmasına rağmen bir nf isteği gerçekleşiyor. Hiçbir etkisi yoktur.

  • girdi metni satırı 80 bayttan uzun: Girdi metni satırını 80. sütundan önceki boşluk karakterlerinden birinde bölmeyi düşünün.

  • doğrudan "--", belki (em kullanmayı düşünün: (mdoc) ASCII çıktı cihazı bir em-dash işaretini "--" olarak işlese bile, girdi dosyasında bunu bu şekilde yazmak iyi bir yöntem değildir çünkü diğer tüm çıktı cihazlarında kötü görünür.

  • işaretlemesiz işlev adı: (mdoc) Bir metin satırında boş bir parantez çiftinin takip ettiği bir kelime bulunuyor. Bir Fn veya Xr makrosu kullanmayı düşünün.

  • girdi satırının sonunda boşluk: (mdoc, man, roff) Girdi satırlarının sonundaki boşluklar neredeyse hiçbir zaman anlamsal olarak önemli değildir — ancak önemli olabileceği nadir durumlarda, belgeleri incelerken ve bakımını yaparken son derece kafa karıştırıcıdır.

  • kötü yorum stili: (roff) Yorum satırları bir nokta, bir ters eğik çizgi ve bir çift tırnak karakteri ile başlar. mandoc yardımcı programı satırı ters eğik çizgi olmasa bile bir yorum satırı olarak ele alır, ancak ters eğik çizgiyi dışarıda bırakmak taşınabilir olmayabilir.

Belge girişi (prologue) ile ilgili uyarılar

  • kılavuz başlığı eksik, UNTITLED kullanılıyor: (mdoc) Bir Dt makrosunun argümanı yok veya ilk giriş dışı makrodan önce bir Dt makrosu bulunuyor.

  • kılavuz başlığı eksik, "" kullanılıyor: (man) TH makrosu yok veya hiçbir argümanı yok.

  • kılavuz bölümü eksik, "" kullanılıyor: (mdoc, man) Dt veya TH makrosunda zorunlu bölüm (section) argümanı eksik.

  • bilinmeyen kılavuz bölümü: (mdoc) Dt satırındaki bölüm numarası geçersiz, ancak yine de kullanılıyor.

  • dosya adı/bölüm uyuşmazlığı: (mdoc, man) İşlenen girdi dosyasının adı biliniyor ve dosya adı uzantısı sıfır olmayan bir rakamla başlıyor, ancak Dt veya TH makrosu farklı bir sıfır olmayan rakamla başlayan bir bölüm argümanı içeriyor. Bölüm argümanı yine de sağlandığı gibi kullanılır. Dosya adının mı yoksa argümanın mı düzeltilmesi gerektiğini kontrol etmeyi düşünün.

  • tarih eksik, "" kullanılıyor: (mdoc, man) Belge mdoc(7) olarak ayrıştırıldı ve Dd makrosu yok ya da Dd makrosunun argümanı yok veya yalnızca boş argümanları var; ya da belge man(7) olarak ayrıştırıldı ve TH makrosu yok ya da TH makrosunun üçten az argümanı var veya üçüncü argümanı boş.

  • tarih ayrıştırılamıyor, olduğu gibi kullanılıyor: (mdoc, man) Dd veya TH makrosunda verilen tarih geleneksel biçimi takip etmiyor.

  • tarih gelecekte, yine de kullanılıyor: (mdoc, man) Dd veya TH makrosunda verilen tarih, geçerli sistem saatinden (time(3)) bir günden daha ileridedir.

  • Os makrosu eksik, "" kullanılıyor: (mdoc) Bu durumda varsayılan veya geçerli sistem gösterilmez.

  • gecikmiş giriş (prologue) makrosu: (mdoc) Dd veya Os makrosu, bazı giriş dışı makrolardan sonra gerçekleşiyor, ancak yine de etkili oluyor.

  • giriş (prologue) makroları sırasız: (mdoc) Giriş makroları geleneksel Dd, Dt, Os sırasıyla verilmemiş. Başka bir sırada verilseler bile her üç makro da kullanılır.

Belge yapısıyla ilgili uyarılar

  • .so kırılgandır, ln(1) kullanılması daha iyidir: (roff) Dosyaları dahil etmek yalnızca ayrıştırıcı programı doğru geçerli çalışma diziniyle çalıştığında işe yarar.

  • belge gövdesi yok: (mdoc, man) Belge gövdesi ne metin ne de makro içeriyor. Yalnızca bir üstbilgi ve bir altbilgi satırından oluşan boş bir belge gösterilir.

  • ilk bölüm başlığından önce içerik var: (mdoc, man) Bazı makrolar veya metinler ilk Sh veya SH bölüm başlığından önce geliyor. Kuralları ihlal eden makrolar ve metinler ayrıştırılır ve herhangi bir bölüm bloğunun dışında, söz dizimi ağacının en üst seviyesine eklenir.

  • ilk bölüm NAME değil: (mdoc) İlk Sh makrosunun argümanı ‘NAME’ değil. Bu durum makwhatis(8) ve apropos(1) komutlarının kafasını karıştırabilir.

  • Nd makrosundan önce Nm içermeyen NAME bölümü: (mdoc) NAME bölümü, ilk Nd makrosundan önce herhangi bir Nm alt makrosu içermiyor.

  • açıklaması olmayan NAME bölümü: (mdoc) NAME bölümünde zorunlu Nd alt makrosu eksik.

  • açıklama NAME bölümünün sonunda değil: (mdoc) NAME bölümü bir Nd alt makrosu içeriyor, ancak bunu başka içerikler takip ediyor.

  • kötü NAME bölümü içeriği: (mdoc) NAME bölümü, Nm ve Nd dışındaki düz metin veya makrolar içeriyor.

  • addan önce virgül eksik: (mdoc) NAME bölümü, ne ilk sırada olan ne de önünde virgül bulunan bir Nm makrosu içeriyor.

  • açıklama satırı eksik, "" kullanılıyor: (mdoc) Nd makrosunda gerekli argüman eksik. Kılavuzun başlık satırı tire işaretinden sonra sona erecektir.

  • açıklama satırı NAME bölümünün dışında: (mdoc) NAME bölümünün dışında bir Nd makrosu görünüyor. Argümanlar yine de yazdırılır ve takip eden metin apropos(1) için kullanılır, ancak bu davranışların hiçbiri taşınabilir değildir.

  • bölümler geleneksel sıranın dışında: (mdoc) Standart bir bölüm, genellikle kendisinden sonra gelmesi gereken başka bir bölümden sonra yer alıyor. Tüm bölüm başlıkları verildikleri gibi kullanılır ve bölümlerin sırası değiştirilmez.

  • yinelenen bölüm başlığı: (mdoc) Aynı standart bölüm başlığı birden fazla kez geçiyor.

  • beklenmedik bölüm: (mdoc) Kılavuzun normalde yararlı olmadığı bir bölümünde standart bir bölüm başlığı yer alıyor.

  • kendine çapraz başvuru: (mdoc) Bir Xr makrosu, mevcut kılavuz sayfasının bölümüyle eşleşen bir adı ve bölüme, NAME veya SYNOPSIS bölümündeki bir Nm makrosunda belirtilen bir adı ya da SYNOPSIS içindeki bir Fn veya Fo makrosuna atıfta bulunuyor. Xr yerine Nm veya Fn kullanmayı düşünün.

  • olağan dışı Xr sırası: (mdoc) SEE ALSO bölümünde, daha düşük bölüm numarasına sahip bir Xr makrosu, daha yüksek numaralı bir makroyu takip ediyor veya aynı bölüme atıfta bulunan iki Xr makrosu alfabetik sıra dışında yer alıyor.

  • olağan dışı Xr noktalaması: (mdoc) SEE ALSO bölümünde, iki Xr makrosu arasındaki noktalama işareti tek bir virgülden farklı veya son Xr makrosundan sonra fazladan bir noktalama işareti var.

  • An makrosu içermeyen AUTHORS bölümü: (mdoc) AUTHORS bölümü hiçbir An makrosu içermiyor veya yalnızca boş olanları içeriyor. Muhtemelen, işaretlemesi (markup) eksik yazar isimleri var.

Makrolar ve iç içe yerleştirmelerle ilgili uyarılar

  • kullanımdan kaldırılmış (obsolete) makro: (mdoc) Alternatifler için mdoc(7) kılavuzuna bakın.

  • makro ne çağrılabilir ne de kaçış karakteriyle korunmuş: (mdoc) Çağrılabilir olmayan bir makronun adı bir makro satırında görünüyor. Olduğu gibi yazdırılır. Amaç bunu çağırmaksa, kendi girdi satırına taşıyın; aksi takdirde önüne ‘&’ ekleyerek kaçış karakteri uygulayın.

  • paragraf makrosu atlanıyor: mdoc(7) belgelerinde bu durum bölümlerin ve alt bölümlerin başında veya sonunda, sıkıştırılmamış (non-compact) listelerin ve ekranların (displays) hemen önünde, sütun olmayan sıkıştırılmamış listelerdeki öğelerin sonunda ve birden fazla ardışık paragraf makrosu için gerçekleşir. man(7) belgelerinde ise boş P, PP ve LP makroları için; ne başlık ne de gövde argümanı olan IP makroları için; ayrıca SH veya SS'den hemen sonraki br veya sp için gerçekleşir.

  • paragraf makrosu liste dışına taşınıyor: (mdoc) Bir Bl listesindeki bir liste öğesi, sonda bir paragraf makrosu içeriyor. Paragraf makrosu listenin sonundan sonraya taşınır.

  • boşluksuz (no-space) makro atlanıyor: (mdoc) Bir girdi satırı bir Ns makrosuyla başlıyor veya bir Ns makrosundan sonraki ilk argüman yalıtılmış bir kapatma sınırlayıcısıdır. Makro yoksayılır.

  • bloklar kötü iç içe yerleştirilmiş: (mdoc) İki blok kesişiyorsa, biri diğerini tamamen içermelidir. Aksi takdirde, oluşturulan çıktı herhangi bir çıktı biçiminde garip görünecektir ve SGML tabanlı çıktı biçimlerindeki görselleştirme tamamen yanlış olacaktır çünkü bu tür diller kötü iç içe yerleştirilmiş blokları hiçbir şekilde desteklemez. Kötü iç içe yerleştirilmiş blokların tipik örnekleri "Ao Bo Ac Bc" ve "Ao Bq Ac" şeklindedir. Bu örneklerde Ac sırasıyla Bo ve Bq bloklarını keser.

  • iç içe ekranlar taşınabilir değildir: (mdoc) Bir Bd, D1 veya Dl ekranı, başka bir Bd ekranının içinde iç içe geçmiş olarak bulunuyor. Bu mandoc ile çalışır, ancak diğer birçok uygulamada başarısız olur.

  • içerik listenin dışına taşınıyor: (mdoc) Bir Bl liste bloğu, ilk It makrosundan önce metin veya makrolar içeriyor. Hatalı alt öğeler listenin başlangıcından öncesine taşınır.

  • satırdaki ilk makro: Bir Bl -column listesi içinde, bir Ta makrosu satırdaki ilk makro olarak geçiyor ki bu taşınabilir değildir.

  • satır kapsamı bozuldu: (man) Bir önceki makronun sonraki satır kapsamı ayrıştırılırken, bir öncekini vaktinden önce sonlandıran başka bir makro bulunuyor. Kesintiye uğrayan önceki makro, ayrıştırma ağacından silinir.

Eksik argümanlarla ilgili uyarılar

  • boş istek atlanıyor: (roff, eqn) Bir makro tanımlama isteğinde makro adı eksik veya bir eqn(7) kontrol ifadesi ya da işlem anahtar kelimesinde gerekli argüman bulunmuyor.

  • koşullu istek boş kapsamı kontrol ediyor: (roff) Koşullu bir istek, yalnızca aynı mantıksal girdi satırında aşağıdakilerden biri onu takip ediyorsa kullanışlıdır:

    • Çok satırlı bir kapsam açmak için \{ anahtar kelimesi.
    • Tek satırlı bir kapsamla sonuçlanan bir istek, makro veya bir metin.
    • Herhangi bir ara boşluk olmaksızın mantıksal satırın hemen sonlanması, bu da sonraki satır kapsamıyla sonuçlanır.

    Burada, koşullu bir isteği yalnızca satır sonu boşluğu takip ediyor ve mantıksal girdi satırında başka hiçbir içerik bulunmuyor. Mantıksal girdi satırının \ satır devam ettirme karakterleri kullanılarak birden fazla fiziksel girdi satırına bölünmüş olmasının bir önemi olmadığını unutmayın. Bu, satır sonu boşluğunun sözdizimsel olarak önemli olduğu nadir durumlardan biridir. Koşullu istek yalnızca boşluk içeren bir kapsamı kontrol eder, bu nedenle sonraki bir el ifadesini kontrol etmesi dışında önemli bir etkiye sahip olması olası değildir.

  • boş makro atlanıyor: (mdoc) Belirtilen makronun hiçbir argümanı yoktur ve bu nedenle hiçbir etkisi yoktur.

  • boş blok: (mdoc, man) Bir Bd, Bk, Bl, D1, Dl, MT, RS veya UR bloğunun gövdesinde hiçbir şey yoktur ve çıktı üretmeyecektir.

  • boş argüman, 0n kullanılıyor: (mdoc) Bd veya Bl -offset ya da -width sonrasında gerekli genişlik eksik.

  • ekran türü eksik, -ragged kullanılıyor: (mdoc) Bd makrosu gerekli ekran türü belirtilmeden çağrılıyor.

  • liste türü ilk argüman değil: (mdoc) Bir Bl makrosunda, tür argümanından önce en az bir başka argüman yer alıyor. mandoc aracı her türlü argüman sırasıyla başa çıkabilir, ancak diğer bazı mdoc(7) uygulamaları bunu yapamaz.

  • -tag listesinde -width eksik, 8n kullanılıyor: (mdoc) -tag argümanına sahip her Bl makrosu -width seçeneğini de gerektirir.

  • yardımcı program adı eksik, "" kullanılıyor: (mdoc) Ex -std makrosu, Nm henüz bir argümanla çağrılmadan önce bir argüman olmadan çağrılıyor.

  • işlev adı eksik, "" kullanılıyor: (mdoc) Fo makrosu bir argüman olmadan çağrılıyor. Hiçbir işlev adı yazdırılmaz.

  • liste öğesinde boş başlık: (mdoc) Bir Bl -diag, -hang, -inset, -ohang veya -tag listesinde, bir It makrosunda gerekli argüman eksik. Öğe başlığı boş bırakılır.

  • boş liste öğesi: (mdoc) Bir Bl -bullet, -dash, -enum veya -hyphen listesinde bir It bloğu boş. Boş bir liste öğesi gösterilir.

  • argüman eksik, sonraki satır kullanılıyor: (mdoc) Bir Bd -column listesindeki bir It makrosunun hiçbir argümanı yok. mandoc, hücre için varsa bir sonraki satırın metnini veya makrolarını kullanırken, diğer biçimlendiriciler listeyi yanlış biçimlendirebilir.

  • yazı tipi türü eksik, \fR kullanılıyor: (mdoc) Bir Bf makrosunun hiçbir argümanı yok. Varsayılan yazı tipine geçiş yapar.

  • bilinmeyen yazı tipi türü, \fR kullanılıyor: (mdoc) Bf argümanı geçersiz. Bunun yerine varsayılan yazı tipi kullanılır.

  • önekten sonra hiçbir şey gelmiyor: (mdoc) Bir Pf makrosunun hiçbir argümanı yok veya yalnızca tek bir argümanı var ve aynı girdi satırında onu takip eden hiçbir makro bulunmuyor. Bu, amacını bozar; özellikle, bir sonraki girdi satırında takip eden metin veya makrolardan önce boşlukların bastırılması gerçekleştirilmez.

  • boş başvuru (reference) bloğu: (mdoc) Bir Rs makrosunu, bir sonraki girdi satırında hemen bir Re makrosu takip ediyor. Böyle boş bir blok herhangi bir çıktı üretmez.

  • bölüm argümanı eksik: (mdoc) Bir Xr makrosunda ikinci, bölüm numarası argümanı eksik. İlk argüman, yani ad yazdırılır, ancak ardından gelen parantezler gösterilmez.

  • -std argümanı eksik, ekleniyor: (mdoc) Bir Ex veya Rv makrosunda gerekli -std argümanı eksik. mandoc aracı belirtilmemiş olsa bile -std olduğunu varsayar, ancak diğer uygulamalar bunu varsaymayabilir.

  • seçenek dizisi eksik, "" kullanılıyor: (man) OP makrosu hiçbir argüman olmadan çağrılıyor. Boş bir köşeli parantez çifti gösterilir.

  • kaynak tanımlayıcı eksik, "" kullanılıyor: (man) MT veya UR makrosu hiçbir argüman olmadan çağrılıyor. Boş bir açılı ayraç çifti gösterilir.

  • eqn kutusu eksik, "" kullanılıyor: (eqn) Bir ayırt edici işaret (diacritic mark) veya ikili işleç bulundu, ancak solunda hiçbir şey yok. Boş bir kutu eklenir.

Hatalı makro argümanlarıyla ilgili uyarılar

  • yinelenen argüman: (mdoc) Bir Bd veya Bl makrosunda birden fazla -compact, birden fazla -offset veya birden fazla -width argümanı var. Bu argümanların sonuncusu hariç tümü yoksayılır.

  • yinelenen argüman atlanıyor: (mdoc) Bir An makrosunda birden fazla -split veya -nosplit argümanı var. Bu argümanların ilki hariç tümü yoksayılır.

  • yinelenen ekran türü atlanıyor: (mdoc) Bir Bd makrosunda birden fazla tür argümanı var; ilki kullanılır.

  • yinelenen liste türü atlanıyor: (mdoc) Bir Bl makrosunda birden fazla tür argümanı var; ilki kullanılır.

  • -width argümanı atlanıyor: (mdoc) Bir Bl -column, -diag, -ohang, -inset veya -item listesinde bir -width argümanı var. Bunun hiçbir etkisi yoktur.

  • yanlış hücre sayısı: Bir Bl -column listesinin bir satırında, sekmelerin veya Ta makrolarının sayısı liste başlığı satırından beklenen sayıdan azdır veya beklenen sayıyı birden fazla aşmaktadır. Eksik hücreler boş kalır ve sütun sayısını aşan tüm hücreler tek bir hücrede birleştirilir.

  • bilinmeyen AT&T UNIX sürümü: (mdoc) Bir At makrosunun geçersiz bir argümanı var. Başına "AT&T UNIX " getirilerek olduğu gibi kullanılır.

  • işlev argümanında virgül: (mdoc) Bir Fa veya Fn makrosunun argümanı virgül içeriyor; muhtemelen iki argümana bölünmesi gerekir.

  • işlev adında parantez: (mdoc) Bir Fc veya Fn makrosunun ilk argümanı bir açılış veya kapanış parantezi içeriyor; bu muhtemelen yanlıştır, parantezler otomatik olarak eklenir.

  • bilinmeyen kitaplık (library) adı: (mdoc, OpenBSD'de değil) Bir Lb makrosunun bilinmeyen bir ad argümanı var ve "library “name”" olarak görselleştirilecektir.

  • Rs bloğunda geçersiz içerik: (mdoc) Bir Rs bloğu düz metin veya % dışındaki makrolar içeriyor. Hatalı içerik sözdizimi ağacında bırakılır. Biçimlendirme zayıf olabilir.

  • geçersiz Boolean argümanı: (mdoc) Bir Sm makrosunun on veya off dışında bir argümanı var. Geçersiz argüman makrodan dışarı taşınır, bu da makroyu boş bırakarak boşluk modunu değiştirmesine (toggle) neden olur.

  • argüman iki yazı tipi kaçış dizisi içeriyor: (roff) Bir char isteğinin ikinci argümanı birden fazla yazı tipi kaçış dizisi içeriyor. Karakter kullanıldıktan sonra yanlış bir yazı tipi aktif kalabilir.

  • bilinmeyen yazı tipi, istek atlanıyor: (man, tbl) Bir roff(7) ft isteği veya bir tbl(7) f düzen değiştiricisi bilinmeyen bir yazı tipi argümanına sahip.

  • istekte tek sayıda karakter: (roff) Bir tr isteği tek sayıda karakter içeriyor. Son karakter boş karakterle eşleştirilir.

Düz metinle ilgili uyarılar

  • doldurma (fill) modunda boş satır, .sp kullanılıyor: (mdoc) Boş girdi satırlarının anlamı yalnızca doldurmasız (non-fill) modda iyi tanımlanmıştır: Doldurma (fill) modunda, metin girdi satırlarının satır sonlarının önemli olmaması gerekir. Ancak groff ile uyumluluk için, doldurma modundaki boş satırlar sp istekleri gibi biçimlendirilir. Paragraf sonu talep etmek için boş satır yerine Pp kullanın.

  • doldurulmuş metinde sekme (tab): (mdoc, man) Sekme (tab) karakterlerinin anlamı yalnızca doldurmasız modda iyi tanımlanmıştır: Doldurma modunda, metin girdi satırlarındaki boşlukların önemli olmaması gerekir. Uygulamaya bağlı bir tercih olarak, metin satırlarındaki sekme karakterleri her durumda biçimlendiricilere iletilir. Sekme karakterinden önceki metnin doldurulacağı göz önüne alındığında, sekmenin hangi sekme durağı konumuna ilerleyeceğini tahmin etmek zordur.

  • yeni cümle, yeni satır: (mdoc) Metin satırının ortasında yeni bir cümle başlıyor. Biçimlendiricilerin doğru boşluk üretmesine yardımcı olmak için yeni bir girdi satırından başlatın.

  • geçersiz kaçış dizisi: (roff) Bir kaçış dizisinin geçersiz bir açılış argüman sınırlayıcısı var, kapanış argüman sınırlayıcısı eksik, argüman geçersiz bir biçimde veya geçersiz bir ada sahip bir karakter kaçış dizisidir. Argüman eksikse, * ve \n boş bir dizgeye, \B ‘0’ rakamına ve \w eksik argümanın uzunluğuna genişletilir. Diğer tüm geçersiz kaçış dizileri yoksayılır.

  • tanımlanmamış kaçış, harfi harfine yazdırılıyor: (roff) Bir kaçış dizisinde, öndeki ters eğik çizgiden hemen sonraki ilk karakter geçersizdir. O karakter olduğu gibi yazdırılır, bu da ters eğik çizgiyi yoksaymakla eşdeğerdir.

  • tanımlanmamış dize (string), "" kullanılıyor: (roff) Bir dizge daha önce tanımlanmadan kullanılırsa, değeri örtük olarak boş dizgeye ayarlanır. Ancak dizgelerin kullanımdan önce açıkça tanımlanması kodun daha okunabilir kalmasını sağlar.

Tablolarla ilgili uyarılar

  • tbl satırı yayılım (span) ile başlıyor: (tbl) Bir tablo düzeni satırındaki ilk hücre yatay bir yayılımdır (‘s’). Bu hücre için sağlanan veriler yoksayılır ve hücreye hiçbir şey yazdırılmaz.

  • tbl sütunu yayılım (span) ile başlıyor: (tbl) Bir tablo düzeni spesifikasyonunun ilk satırı dikey bir yayılım (‘^’) talep ediyor. Bu hücre için sağlanan veriler yoksayılır ve hücreye hiçbir şey yazdırılmaz.

  • tbl düzeninde dikey çubuk atlanıyor: (tbl) Bir tablo düzeni spesifikasyonu ikiden fazla ardışık dikey çubuk içeriyor. Çift çubuk yazdırılır, tüm ek çubuklar atılır.

Tablolarla ilgili hatalar

  • tbl seçeneklerinde alfabetik olmayan karakter: (tbl) Tablo seçenekleri satırı, bir seçenek adının başlangıcının beklendiği yerde harf, boşluk veya virgül dışında bir karakter içeriyor. Karakter yoksayılır.

  • bilinmeyen tbl seçeneği atlanıyor: (tbl) Tablo seçenekleri satırı, bilinen herhangi bir seçenek adıyla eşleşmeyen bir harf dizisi içeriyor. Sözcük yoksayılır.

  • tbl seçeneği argümanı eksik: (tbl) Argüman gerektiren bir tablo seçeneğini bir açılış parantezi takip etmiyor veya açılış parantezini hemen bir kapanış parantezi takip ediyor. Seçenek yoksayılır.

  • yanlış tbl seçeneği argüman boyutu: (tbl) Bir tablo seçeneği argümanı geçersiz sayıda karakter içeriyor. Hem seçenek hem de argüman yoksayılır.

  • boş tbl düzeni: (tbl) Bir tablo düzeni spesifikasyonu tamamen boş, sıfır satır ve sıfır sütun belirtiyor. Geri çekilme planı (fallback) olarak sola yaslı tek bir sütun kullanılır.

  • tbl düzeninde geçersiz karakter: (tbl) Bir tablo düzeni spesifikasyonu, ne bir düzen anahtar karakteri ne de bir düzen değiştirici olarak yorumlanabilen bir karakter içeriyor veya ilk anahtardan önce bir değiştirici geliyor. Geçersiz karakter atılır.

  • tbl düzeninde eşleşmeyen parantez: (tbl) Bir tablo düzeni spesifikasyonu bir açılış parantezi içeriyor, ancak eşleşen bir kapanış parantezi yok. Girdi satırının geri kalanının, parantezden itibaren hiçbir etkisi yoktur.

  • tbl düzeninde aşırı boşluk yoksayılıyor: (tbl) Tablo düzenindeki bir boşluk değiştirici makul olmayacak kadar büyük. Bunun yerine varsayılan olan 3n boşluk kullanılır.

  • veri hücresi olmayan tbl: (tbl) Bir tablo hiçbir veri hücresi içermiyor. Muhtemelen çıktı üretmeyecektir.

  • yayılmış (spanned) tbl hücresindeki veriler yoksayılıyor: (tbl) Bir tablo hücresi, tablo düzeninde yatay bir yayılım (‘s’) veya dikey bir yayılım (‘^’) olarak işaretlenmiş, ancak veri içeriyor. Veri yoksayılır.

  • fazladan tbl veri hücreleri yoksayılıyor: (tbl) Bir veri satırı karşılık gelen düzen satırından daha fazla hücre içeriyor. Fazladan hücrelerdeki veriler yoksayılır.

  • tbl sonunda veri bloğu açık kaldı: (tbl) Bir veri bloğu T{ ile açılmış, ancak hiçbir zaman eşleşen bir T} ile kapatılmamış. Tablonun kalan veri satırlarının tümü tek bir hücreye yerleştirilir ve kalan tüm hücreler boş kalır.

roff, mdoc ve man kodlarıyla ilgili hatalar

  • yinelenen giriş (prologue) makrosu: (mdoc) Giriş (prologue) makrolarından biri birden fazla kez geçiyor. Son örnek öncekilerin hepsini geçersiz kılar.

  • gecikmiş başlık makrosu atlanıyor: (mdoc) Dt makrosu ilk giriş dışı makrodan sonra görünüyor. Geleneksel biçimlendiriciler bununla başa çıkamaz çünkü sayfa başlığını belge gövdesini ayrıştırmadan önce yazarlar. Bu teknik kısıtlama mandoc için geçerli olmasa bile, geleneksel anlambilim korunur. Geç kalan makro argümanlarıyla birlikte atılır.

  • girdi yığını sınırı aşıldı, sonsuz döngü?: (roff) Sonsuz döngüleri önlemek için dizgilerin ve sayı yazmaçlarının (number registers) genişletilmesi dahil iç içe geçmiş kaçış dizileri, iç içe geçmiş kullanıcı tanımlı makrolar ve dosya dahil etme (inclusion) için açık özyineleme (recursion) sınırları uygulanmıştır. Bir sınıra ulaşıldığında çıktı yanlış olur, genellikle bazı içerikler kaybolur, ancak ayrıştırıcı devam edebilir.

  • kötü karakter atlanıyor: (mdoc, man, roff) Girdi dosyası yazdırılabilir bir ascii(7) karakteri olmayan bir bayt içeriyor. Mesaj karakter numarasını belirtir. Hatalı bayt bir soru işareti (‘?’) ile değiştirilir. Baytı hedeflenen karakterin bir ASCII harf çevirisi ile değiştirmek için girdi dosyasını düzenlemeyi düşünün.

  • bilinmeyen makro atlanıyor: (mdoc, man, roff) Bir istek veya makro satırındaki ilk tanımlayıcı ne bir roff(7) isteği, ne kullanıcı tanımlı bir makro ne de sırasıyla bir mdoc(7) veya man(7) makrosu olarak tanınmıyor. Yanlış yazılmış veya desteklenmiyor olabilir. İstek veya makro, argümanlarıyla birlikte atılır.

  • makro dışındaki istek atlanıyor: (roff) Bir shift veya return isteği herhangi bir makro tanımının dışında gerçekleşiyor ve hiçbir etkisi yok.

  • güvensiz istek atlanıyor: (roff) Bir girdi dosyası bir kabuk komutu çalıştırmaya ya da harici bir dosyayı okumaya veya yazmaya çalıştı. Güvenlik nedenleriyle bu tür girişimler reddedilir.

  • liste dışındaki öğe atlanıyor: (mdoc, eqn) Bir It makrosu herhangi bir Bl listesinin dışında gerçekleşiyor veya bir eqn(7) above sınırlayıcısı herhangi bir yığının (pile) dışında gerçekleşiyor. Argümanlarıyla birlikte atılır.

  • sütun listesi dışındaki sütun atlanıyor: (mdoc) Bir Ta makrosu herhangi bir Bl -column bloğunun dışında gerçekleşiyor. Argümanlarıyla birlikte atılır.

  • açık olmayan bloğun sonu atlanıyor: (mdoc, man, eqn, tbl, roff) Çeşitli sözdizimi öğeleri, yalnızca daha önce açılmış olan blokları açıkça kapatmak için kullanılabilir. Bir mdoc(7) blok kapatma makrosu, bir man(7) ME, RE veya UE makrosu, bir eqn(7) sağ sınırlayıcısı veya kapatma süslü parantezi ya da bir denklemin, tablonun veya roff(7) koşullu isteğinin sonu ile karşılaşıldı ancak eşleşen hiçbir blok açık değil. Hatalı istek veya makro atılır.

  • daha az RS bloğu açık, atlanıyor: (man) RE makrosu bir argümanla çağrılıyor, ancak belirtilen sayıdan daha az sayıda RS bloğu açık. RE makrosu atılır.

  • eksik blok sonu ekleniyor: (mdoc, tbl) Çeşitli mdoc(7) makrolarının yanı sıra tablolar, özel makrolarla açıkça kapatılmayı gerektirir. Hatalı iç içe yerleştirmeyi desteklemeyen bir blok, tüm alt öğeleri düzgün bir şekilde kapatılmadan önce sona eriyor. Açık alt düğümler örtük olarak kapatılır.

  • eksik blok sonu sonuna ekleniyor: (mdoc, man, eqn, tbl, roff) Belgenin sonunda, açık bir mdoc(7) bloğu, bir man(7) sonraki satır kapsamı veya MT, RS ya da UR bloğu, bir denklem, tablo ya da roff(7) koşullu veya yoksayma bloğu hala açık. Açık blok örtük olarak kapatılır.

  • isimde kaçış karakterine izin verilmez: (roff) Makro, dizge ve yazmaç (register) tanımlayıcıları yazdırılabilir, boşluk olmayan ASCII karakterlerinden oluşur. Kaçış dizileri ile bunları ifade eden karakter ve dizgeler bir adın parçası olamaz. Bir am, as, de, ds, nr veya rr isteğinin ilk argümanı ya da bir rm isteğinin herhangi bir argümanı ya da çağrılmakta olan bir istek veya kullanıcı tanımlı makronun adı bir kaçış dizisi ile sonlandırılıyor. as, ds ve nr durumlarında isteğin hiçbir etkisi yoktur. am, de, rr ve rm durumlarında bu noktaya kadar ayrıştırılanlar isteğin argümanları olarak kullanılır ve girdi satırının geri kalanı kaçış dizisi dahil olmak üzere atılır. Çağrılacak bir istek veya kullanıcı tanımlı bir makro adı için ayrıştırma yapılırken yalnızca kaçış dizisi atılır. Ondan önceki karakterler istek veya makro adı olarak, onu takip eden karakterler ise istek veya makronun argümanları olarak kullanılır.

  • makro dışında makro argümanı kullanılıyor: (roff) $ kaçış dizisi herhangi bir makro tanımının dışında gerçekleşiyor ve boş dizgeye genişliyor.

  • argüman numarası sayısal değil: (roff) $ kaçış dizisinin argümanı bir rakam değil; kaçış dizisi boş dizgeye genişliyor.

  • UYGULANMADI: Bd -file: (mdoc) Güvenlik nedenleriyle, Bd makrosu -file argümanını desteklemez. Hassas bir dosyanın dahil edilmesini talep ederek, kötü niyetli bir belge, yetkili bir kullanıcıyı farkında olmadan dosyayı ekranda görüntülemesi için kandırabilir ve dosya içeriğini çevredekiler için ifşa edebilir. Argüman, onu takip eden dosya adı dahil olmak üzere yoksayılır.

  • argümansız ekran (display) atlanıyor: (mdoc) Bir Bd blok makrosunun hiçbir argümanı yok. Blok atılır ve blok içeriği, bloktan önce hangi mod aktifse o modda görüntülenir.

  • liste türü eksik, -item kullanılıyor: (mdoc) Bir Bl makrosu liste türünü belirtemiyor.

  • argüman sayısal değil, 1 kullanılıyor: (roff) Bir ce isteğinin argümanı bir sayı değil.

  • argüman bir karakter değil: (roff) Bir char isteğinin ilk argümanı ne tek bir ASCII karakteri ne de tek bir karakter kaçış dizisidir. İstek, tüm argümanları dahil olmak üzere yoksayılır.

  • kılavuz adı eksik, "" kullanılıyor: (mdoc) Nm makrosuna yapılan ilk çağrıda veya NAME bölümündeki herhangi bir çağrıda gerekli argüman eksik.

  • uname(3) sistem çağrısı başarısız oldu, UNKNOWN kullanılıyor: (mdoc) Os makrosu argümansız çağrılıyor ve uname(3) sistem çağrısı başarısız oldu. Geçici bir çözüm olarak, mandoc -DOSNAME=""dizge"" ile derlenebilir.

  • bilinmeyen standart belirteci: (mdoc) Bir St makrosunun bilinmeyen bir argümanı var ve atılıyor.

  • sayısal argümanı olmayan istek atlanıyor: (roff, eqn) Bir it isteği ya da bir eqn(7) size veya gsize ifadesi sayısal olmayan veya negatif bir argümana sahip ya da hiç argümana sahip değil. Geçersiz istek veya ifade yoksayılır.

  • aşırı shift: (roff) Bir shift isteğinin argümanı, şu anda yürütülmekte olan makronun argüman sayısından daha büyüktür. Tüm makro argümanları silinir ve \n(.$ sıfıra ayarlanır.

  • UYGULANMADI: Mutlak yol veya ".." içeren .so: (roff) Güvenlik nedenleriyle, mandoc so dosya dahil etme isteklerine yalnızca göreli yollarla ve yalnızca herhangi bir üst dizine çıkmadan izin verir. Hassas bir dosyanın dahil edilmesini talep ederek, kötü niyetli bir belge, yetkili bir kullanıcıyı farkında olmadan dosyayı ekranda görüntülemesi için kandırabilir ve dosya içeriğini çevredekiler için ifşa edebilir. mandoc yalnızca so arkasında göründüğü şekliyle yolu gösterir.

  • .so isteği başarısız oldu: (roff) Bir so isteğine hizmet vermek harici bir dosyanın okunmasını gerektirir, ancak dosya açılamadı. mandoc yalnızca so arkasında göründüğü şekliyle yolu gösterir.

  • tüm argümanlar atlanıyor: (mdoc, man, eqn, roff) Bir mdoc(7) Bt, Ed, Ef, Ek, El, Lp, Pp, Re, Rs veya Ud makrosu, liste öğesi başlıklarını desteklemeyen bir listedeki bir It makrosu, bir man(7) LP, P veya PP makrosu, bir eqn(7) EQ veya EN makrosu ya da bir roff(7) br, fi veya nf isteği ya da ‘..’ blok kapatma isteği en az bir argümanla çağrılıyor. Tüm argümanlar yoksayılır.

  • fazla argümanlar atlanıyor: (mdoc, man, roff) Bir makro veya istek çok fazla argümanla çağrılıyor:

    • Fo, MT, PD, RS, UR, ft veya sp birden fazla argümanla.
    • An -split veya An -nosplit sonrasında başka bir argümanla.
    • RE birden fazla argümanla veya tamsayı olmayan bir argümanla.
    • OP veya de ailesinden bir istek ikiden fazla argümanla.
    • Dt üçten fazla argümanla.
    • TH beşten fazla argümanla.
    • Bd, Bk veya Bl geçersiz argümanlarla.

    Fazla argümanlar yoksayılır.

Desteklenmeyen özellikler

  • girdi çok büyük: (mdoc, man) Şu anda mandoc, keyfi boyut sınırı olan 2^31 bayttan (2 Gigabayt) daha büyük girdi dosyalarıyla başa çıkamaz. Yararlı kılavuzlar her zaman küçük olduğundan, bu pratikte bir sorun değildir. Koşul tespit edilir edilmez ayrıştırma iptal edilir.

  • desteklenmeyen kontrol karakteri: (roff) Diğer roff(7) uygulamaları tarafından desteklenen ancak mandoc tarafından desteklenmeyen bir ASCII kontrol karakteri bir girdi dosyasında bulundu. Soru işareti ile değiştirilir.

  • desteklenmeyen kaçış dizisi: (roff) Bir girdi dosyası, GNU troff veya Heirloom troff tarafından desteklenen ancak mandoc tarafından desteklenmeyen bir kaçış dizisi içeriyor ve bunun bilgi kaybına veya önemli ölçüde yanlış biçimlendirmeye neden olması muhtemeldir.

  • desteklenmeyen roff isteği: (roff) Bir girdi dosyası, GNU troff veya Heirloom troff tarafından desteklenen ancak mandoc tarafından desteklenmeyen bir roff(7) isteği içeriyor ve bunun bilgi kaybına veya önemli ölçüde yanlış biçimlendirmeye neden olması muhtemeldir.

  • tbl içinde eqn delim seçeneği: (eqn, tbl) Bir tablonun seçenekler satırı denklem sınırlayıcılarını tanımlıyor. Tabloda yer alan herhangi bir denklem kaynak kodu biçimlendirilmeden yazdırılacaktır.

  • desteklenmeyen tablo düzeni değiştiricisi: (tbl) Bir tablo düzeni spesifikasyonu bir ‘m’ değiştiricisi içeriyor. Değiştirici atılır.

  • tablodaki makro yoksayılıyor: (tbl, mdoc, man) Bir tablo, bir mdoc(7) veya man(7) makrosunun ya da tanımlanmamış bir makronun çağrısını içeriyor. Makro yoksayılır ve argümanları bir metin satırıymış gibi ele alınır.

  • -Tman modunda tbl atlanıyor: (mdoc, tbl) Bir girdi dosyası TS makrosunu içeriyor. Bu mesaj yalnızca tbl(7) girdisinin desteklenmediği -T man çıktı modunda üretilir.

  • -Tman modunda eqn atlanıyor: (mdoc, eqn) Bir girdi dosyası EQ makrosunu içeriyor. Bu mesaj yalnızca eqn(7) girdisinin desteklenmediği -T man çıktı modunda üretilir.

Hatalı komut satırı argümanları

  • hatalı komut satırı argümanı: -I, -K, -M, -m, -O, -T veya -W komut satırı seçeneklerinden birini takip eden argüman geçersiz veya komut satırı argümanı olarak verilen bir dosya açılamıyor.

  • yinelenen komut satırı argümanı: -I komut satırı seçeneği iki kez belirtildi.

  • seçeneğin gereksiz bir değeri var: -O seçeneğinin bir argümanı bir değere sahip ancak değer kabul etmiyor.

  • eksik seçenek değeri: -O seçeneğinin bir argümanı hiçbir argümana sahip değil ancak bir argüman gerektiriyor.

  • hatalı seçenek değeri: -O indent veya -O width seçeneğinin bir argümanı geçersiz bir değere sahip.

  • yinelenen seçenek değeri: Aynı -O seçeneği birden fazla kez belirtilmiş.

  • böyle bir etiket yok: -O tag seçeneği belirtildi ancak etiket, görüntülenen kılavuz sayfalarının hiçbirinde bulunamadı.

  • man(7) girdisi için -Tmarkdown desteklenmiyor: (man) -T markdown seçeneği belirtildi ancak bir girdi dosyası man(7) dilini kullanıyor. Bu girdi dosyası için hiçbir çıktı üretilmez.

Ayrıca Bakınız

apropos(1), man(1), eqn(7), man(7), mandoc_char(7), mdoc(7), roff(7), tbl(7)

Tarihçe

mandoc yardımcı programı ilk olarak OpenBSD 4.8'de yer almıştır. -I seçeneği OpenBSD 5.2'de ve -aCcfhKklMSsw ise OpenBSD 5.7'de yer almıştır.

Yazarlar

mandoc yardımcı programı Kristaps Dzonsons kristaps@bsd.lv tarafından yazılmıştır ve Ingo Schwarze schwarze@openbsd.org tarafından sürdürülmektedir.