Markdown-bestanden: platte tekst met afspraken, en daarvan bestaat er meer dan één
Wat een .md-bestand is, waarom geen twee renderers het eens zijn en hoe koppen en lijsten ontstaan uit een PDF die ze nooit vastlegde. Converteer in je browser.
In één oogopslag
- Type
- Documenten
- Extensies
- .md, .markdown
- MIME-type
- text/markdown
- Ook bekend als
- MD
Een .md-bestand is een tekstbestand. Er is geen container, geen compressie en niets binairs — open er een in Kladblok en je ziet precies wat erin staat. De opmaak is een afspraak en geen opmaaktaal: een # aan het begin van een regel betekent een kop, een streepje betekent een lijstitem, en een renderer die de afspraak kent, maakt er HTML van. Dat is het hele idee, en daarom heeft het formaat elke teksteditor met opmaak van zijn generatie overleefd: het bestand is leesbaar voordat iets het rendert, en het blijft leesbaar als het programma waarin je het schreef allang weg is.
Lees meer
De complicatie is dat er niet één Markdown bestaat. De oorspronkelijke uitvoering uit 2004 liet veel gevallen open, dus elke renderer loste ze anders op; CommonMark bestaat om die dubbelzinnigheden vast te leggen, en GitHub Flavored Markdown bouwt daar tabellen, takenlijsten en doorhalen bovenop. De situatie is formeel erkend: toen text/markdown in maart 2016 in RFC 7763 als mediatype werd geregistreerd, bevatte de registratie een parameter variant, juist omdat zeggen dat een bestand Markdown is niet zegt welke Markdown. Deze site levert text/markdown in UTF-8 en gebruikt alleen constructies waar elk dialect het over eens is — koppen met een hekje, alinea’s gescheiden door een lege regel, opsommingen met een streepje en horizontale lijnen.
Een PDF naar Markdown converteren betekent structuur maken die de PDF nooit had. Een PDF legt lettergroottes vast, geen koppen, dus de groottes op de pagina worden gerangschikt en de zes grootste worden de zes kopniveaus; een regel die alleen groter is dan de lopende tekst, wordt een kop, of de auteur hem nu zo zag of niet. Lijsten zijn erger: PDF kent helemaal geen lijstconstructie, en het opsommingsteken dat je ziet, is letterlijk een teken in de tekst, dus een lijst overleeft alleen als dat teken wordt herkend en vervangen door een streepje. Genummerde items hebben die hulp niet nodig — “1. ” en “1) ” zijn al Markdown, en al als lijst bedoeld.
Twee details zijn goed om te weten, omdat ze de tekst zelf veranderen. Een regel die eindigt op een koppelteken, wordt behandeld als een woord dat over het regeleinde is afgebroken, en zonder koppelteken weer samengevoegd; en opeenvolgende regels Chinees of Japans worden zonder spatie samengevoegd, omdat die schriften er geen zetten. Pagina’s worden gescheiden door een horizontale lijn, dus een document van dertien pagina’s komt aan met twaalf ervan. Is de PDF een scan zonder tekstlaag, dan leest hetzelfde herkenningsmodel dat PDF naar Word gebruikt eerst de tekens van de pagina-afbeeldingen, op je eigen computer.
Andere formaten naar Markdown converteren
Markdown — veelgestelde vragen
Is een .md-bestand gewoon een tekstbestand?
Ja. Geen container, geen compressie, niets binairs. Elke teksteditor opent het, en de markeringen — #, -, ** — zijn gewone tekens die je kunt lezen zoals ze zijn.
Welke variant van Markdown krijg ik?
Alleen de delen waar elk dialect het over eens is: koppen met een hekje, alinea’s gescheiden door lege regels, opsommingen met een streepje en horizontale lijnen. Niets hier hangt af van een uitbreiding van GitHub of CommonMark, dus het wordt overal hetzelfde weergegeven waar je het plakt.
Waarom lopen er lijnen met streepjes door mijn document?
Dat zijn pagina-einden. Elke lijn is een horizontale lijn die aangeeft waar de ene PDF-pagina ophield en de volgende begon, dus een document van dertien pagina’s komt terug met twaalf ervan.
Een kop kwam op het verkeerde niveau uit. Waarom?
Niveaus worden gerangschikt op lettergrootte, omdat een PDF groottes opslaat en geen koppen. Gebruikt een document grootte voor nadruk in plaats van hiërarchie — een citaat in een kader, een grote eerste regel — dan volgt de rangschikking de grootte en zit het niveau ernaast.
Blijven tabellen behouden?
Tabellen die met lijnen zijn getekend wel — die komen eruit als Markdown-tabellen, met de eerste rij als koprij. Tabellen op een gescande pagina komen eruit als gewone regels, omdat een scan geen lijnen heeft om te lezen. Zijn de tabellen de hele reden dat je converteert, dan zet PDF naar Excel ze in rijen en kolommen waarmee je kunt werken.
Werkt het op gescande PDF’s?
Ja. Is er geen tekstlaag, dan draait er in je browser een AI-herkenningsmodel dat de tekens van de pagina-afbeeldingen leest. Koppen worden dan gerangschikt op gemeten regelhoogte in plaats van lettergrootte, en er wordt niets geüpload.