Fundația tehnică a randării listelor
Markdown este standardul pentru documentație software, specificații, baze de cunoștințe și comunicare între dezvoltatori. Listele pe un nivel (- item) și cele numerotate (1. item) par simple, dar schițele adânc imbricate aduc complexitate. Parserele — CommonMark, GitHub Flavored Markdown (GFM), Python-Markdown și Pandoc — impun reguli stricte pentru marcaj, raportul tab-spațiu și indentarea sub-blocurilor.
Când lipești între editoare (VS Code, Sublime Text, Xcode, Apple Notes sau Microsoft Word), apar erori tăcute de indentare. Un spațiu lipsă face compilatorul să citească un copil imbricat ca element de top sau ca paragraf izolat. Formatorul de liste imbricate și indentare de la Utiliome parsează structura ca AST (Abstract Syntax Tree) și regenerează Markdown conform specificației.
Reguli de indentare: 2 spații față de 4 spații
Regula de 2 spații (GFM standard și Prettier): Pe GitHub, Docusaurus, Nextra și Obsidian, 2 spații pe nivel sunt standardul. Conținutul copil se aliniază sub începutul textului părinte:
- Top-level item 1 - Nested child item 1.1 - Nested child item 1.2 - Deeply nested grandchild item 1.2.1 - Top-level item 2Regula de 4 spații (CommonMark strict și Python-Markdown): Implementările stricte cer ca blocurile copil, snippet-urile de cod și listele imbricate din liste ordonate să fie indentate cu 4 spații (sau un tab) ca să rămână în blocul părinte:
1. First ordered step in workflow - Associated sub-bullet A - Associated sub-bullet B 2. Second ordered step in workflowCapcana tab față de spațiu: Amestecul de tab-uri fizice (
\t) cu spații ASCII (\x20) este cauza principală a randării stricate. Motoarele web traduc tab-urile inconsistent (adesea 4 sau 8 coloane). Utiliome convertește toate tab-urile în spații uniforme, după configurația ta.
Normalizarea marcajelor și repararea secvențelor ordonate
Markdown suportă trei caractere pentru liste neordonate: cratimă (-), asterisc (*) și plus (+). Toate produc elemente HTML (<ul>), dar amestecul în același document creează zgomot vizual și pică lintere (regula markdownlint MD004).
Numerotarea se strică la editare iterativă. Autorii lipesc elemente la mijloc sau se bazează pe auto-increment 1.:
<!-- Unformatted / Broken Input -->
* Feature A
- Feature B
+ Feature C
1. Initial step
1. Second step (copied from draft)
4. Out-of-order step
Formatorul normalizează marcajele neordonate la caracterul ales (de exemplu totul devine -) și renumerotează secvențele (1., 2., 3.) sau le standardizează la incremente de o cifră (1., 1., 1.), după ghidul echipei.