LEXGROG(1) | Utilități de pager de manual | LEXGROG(1) |
lexgrog - parsează informații de antet în paginile manualului
lexgrog [-m|-c] [-dfw?V] [-E encoding] file ...
lexgrog este o implementare a utilității tradiționale “groff în lex. Aceasta citește lista de fișiere din linia de comandă ori ca fișiere sursă a paginilor de manual ori ca pagini preformatate “cat”, și afișează numele și descrierea așa cum sunt utilizate de apropos și whatis, lista de filtre de preprocesare necesară de pagina de manual înainte să fie pasată la nroff sau troff, sau amândouă.
Dacă intrarea acesteia este formatată greșit, lexgrog va tipări “parse failed”; aceasta poate fi utilă pentru programe externe care au nevoie să verifice paginile de manual pentru corectitudine. Dacă unul dintre fișierele de intrare ale lexgrog este “-”, va citi de la intrarea standard; dacă orice fișier de intrare este comprimat, o versiune decomprimată va fi citită automat.
$ lexgrog man.1
man.1: "man - o interfață la manualele de referință a sistemului"
$ lexgrog -fw man.1
man.1 (t): "man - o interfață la manualele de referință a sistemului"
$ lexgrog -c whatis.cat1
whatis.cat1: "whatis - afișează descrieri de pagină de manual"
$ lexgrog defect.1
broken.1: parsarea a eșuat
mandb (care utilizează același cod ca lexgrog) parsează secțiunea NAME la începutul fiecărei pagini de manual căutând după nume și descrieri ale funcționalităților documentate în fiecare. În timp ce parsatorul este chiar tolerant, pentru că trebuie să se descurce cu un număr de forme diferite care au fost utilizate istoric, acesta poate câteodată să eșueze să extragă informațiile necesare.
Când se utilizează setul de macro tradițional man, o secțiune corectă NAME arată cam așa:
.SH NAME foo \- programul pentru a face ceva
Unele pagere de manual necesită ‘\-’ să fie exact așa cum este arătat; mandb este mai tolerant, dar pentru compatibilitatea cu alte sisteme este totuși o idee bună să se rețină linia oblică inversă.
În partea din stânga, este posibil să fie mai multe nume, separate prin virgule. Numele care conțin spații albe vor fi ignorate pentru a evita comportamentul patologic la anumite secțiuni NAME malformate. Textul din partea dreaptă este în formă liberă, și poate fi extins peste linii multiple. Dacă mai multe funcționalități cu descrieri diferite sunt documentate în aceeași pagină de manual, următorul formular este, prin urmare, utilizat:
.SH NAME foo, bar \- programe pentru a face ceva .br baz \- program pentru a nu face nimic
(Un macro care începe un paragraf nou, precum .PP, poate fi utilizat în locul macro-ului de întrerupere .br.)
Când se utilizează setul macro mdoc derivat BSD, o secțiune NAME corectă arată cam așa:
.Sh NAME .Nm foo .Nd program pentru a face ceva
Există mai multe motive comune pentru care parsarea whatis eșuează. Câteodată autorii paginilor de manual înlocuiesc ‘.SH NAME’ cu ‘.SH MYPROGRAM’ și apoi mandb nu poate găsi secțiunea de la care să extragă informațiile de care are nevoie. Câteodată autorii includ o secțiune NUME, dar plasează text în formă liberă acolo în locul ‘name \- description’. Totuși, orice sintaxă care se aseamănă cu cea de deasupra ar trebui să fie acceptată.
lexgrog încearcă să parseze fișiere care conțin cereri .so, dar va putea să facă acest lucru corect doar dacă fișierele sunt instalate cum trebuie într-o ierarhie de pagină de manual.
Codul utilizat de lexgrog pentru a scana paginile de manual a fost scris de:
Wilf. (G.Wilford@ee.surrey.ac.uk). Fabrizio Polacco (fpolacco@debian.org). Colin Watson (cjwatson@debian.org).
Colin Watson a scris încarnarea curentă a interfeței liniei de comandă, precum și această pagină de manual.
https://savannah.nongnu.org/bugs/?group=man-db
2021-02-08 | 2.9.4 |