Technický základ vykreslení Markdown seznamů
Markdown se etabloval jako standardní značkovací jazyk pro moderní softwarovou dokumentaci, technické specifikace, osobní znalostní báze a vývojářskou komunikaci. Jednoúrovňové odrážkové seznamy (- položka) a číslované seznamy (1. položka) vypadají jednoduše, ale stavba hluboce vnořených, víceúrovňových osnov zavádí významnou složitost formátování. Různé Markdown parsery — CommonMark, GitHub Flavored Markdown (GFM), Python-Markdown a Pandoc — vynucují přísná, jemná pravidla ohledně výběru značek, poměru tabulátorů k mezerám a odsazení podbloků.
Když se seznamy vkládají napříč heterogenními editory (VS Code, Sublime Text, Xcode, Apple Notes nebo Microsoft Word), vznikají tiché chyby odsazení. Jediná chybějící mezera u podpoložky způsobí, že kompilátor interpretuje vnořený uzel jako položku nejvyšší úrovně nebo izolovaný odstavec. Formátovač vnořených seznamů a odsazení Utiliome tyto anomálie odstraňuje parsováním struktury vstupu do AST (Abstract Syntax Tree) a regenerací standardizovaného Markdown vyhovujícího specifikaci.
Pravidla odsazení: 2 mezery vs. 4 mezery
Jednou z nejčastějších debat v technické dokumentaci je, zda vnořené seznamy odsazovat 2 nebo 4 mezerami na hierarchickou úroveň. Volba závisí na cílové specifikaci parseru:
Pravidlo 2 mezer (standard GFM a Prettier): V moderních webových dokumentačních ekosystémech jako GitHub, Docusaurus, Nextra a Obsidian je 2 mezery na úroveň uznávaným standardem. Konvence 2 mezer zarovnává potomky pod začátek textu rodiče:
- Top-level item 1 - Nested child item 1.1 - Nested child item 1.2 - Deeply nested grandchild item 1.2.1 - Top-level item 2Pravidlo 4 mezer (přísný CommonMark a Python-Markdown): Přísné implementace CommonMark vyžadují, aby podbloky, úryvky kódu a vnořené seznamy uvnitř číslovaných seznamů byly odsazeny 4 mezerami (nebo 1 plným tabulátorem) k zaručení správného uzavření rodičovského bloku:
1. First ordered step in workflow - Associated sub-bullet A - Associated sub-bullet B 2. Second ordered step in workflowPasti tabulátor vs. mezera: Míchání fyzických tabulátorů (
\t) s ASCII mezerami (\x20) je hlavní příčinou rozbitého vykreslení Markdown dokumentace. Webové enginy překládají tabulátory nekonzistentně (často jako 4 nebo 8 sloupců), takže vnořené položky vizuálně vyskočí z zarovnání. Utiliome automaticky převede všechny tabulátory na jednotné řetězce mezer podle vaší explicitní konfigurace.
Normalizace značek odrážek a oprava číslovaných sekvencí
Markdown podporuje tři znaky odrážek pro neuspořádané seznamy: pomlčky (-), hvězdičky (*) a plus (+). Všechny tři produkují validní HTML prvky neuspořádaného seznamu (<ul>), ale míchání typů značek ve stejném dokumentu vytváří vizuální nepořádek a selhává automatické linter kontroly (například pravidlo markdownlint MD004).
Číslování uspořádaných seznamů se navíc často rozbije při iterativních úpravách. Autoři často vkládají položky doprostřed číslovaných sekvencí nebo spoléhají na auto-inkrementující syntaxi 1.:
<!-- Unformatted / Broken Input -->
* Feature A
- Feature B
+ Feature C
1. Initial step
1. Second step (copied from draft)
4. Out-of-order step
Formátovač Utiliome normalizuje všechny značky neuspořádaných seznamů na vybraný jednotný znak (např. každou položku na -) a přečísluje uspořádané sekvence postupně (1., 2., 3.) nebo je sjednotí na čisté jednociferné inkrementy (1., 1., 1.) podle stylu code review vašeho týmu.