Har du funderat på alla dessa *.md filer som finns på exempelvis GitHub? De kan finnas även på andra platser, men vad är det, och hur fungerar de?
Det handlar om vanliga textfiler med en väldigt förenklad syntax, för att generera formaterad text. Exempelvis med rubriker, länkar, fet och kursiv text. Detta kan man åstadkomma med html, men markdown (md) är betydligt mera kompakt. Ett exempel:
Skillnaden i exemplet är kanske inte så stor, men när man väl skall skriva in mycket text så är det en enorm tidsvinst att endast behöva definiera en rubrik med ett eller ett par ”#”, jämfört med kompletta inledande och avslutande html-taggar. I markup så har även den vanliga text formateringen betydelse. En ny rad, eller upprepade blanktecken betyder just det, vilket det inte gör i html.
En nackdel med markup är att det inte är så jättevanligt med läsare som förstår att tillämpa stilen när filen öppnas. Det finns dock flera verktyg som ”tar” markdown och renderar detta till flera andra format, men från början framför allt för html.
pandoc -s -o resultat.htm källa.md
Exemplet ovan tar markdownfilen (med koden från tidigare) och gör om den till html. Den genererade html-filen är ganska mycket mer omfattande än det jag skrev själv tidigare, men resultatet är det samma.
Hur ser då syntaxen för markdown ut?
Rubriker föregås av #. Ju fler tecken desto ”mindre” är rubriken. Fet och kursiv stil omsluts av * eller _ tecken. Ett tecken ger kursiv stil och två fet.
Sedan blir det lite kinkigare. Olika tillämpningar har tyvärr lite olika syntax. GitHub har en syntax som skiljer sig något från Jupyter Notebook exempelvis.
Det är dock på grund av Jupyter Notebook som jag har blivit intresserad av markdown, så det är framför allt denna syntax som jag beskriver här.
I Notebooks så skriver man ofta formler, vilket omsluts med $. Ett exempel kommer längre ner. ”Kod” kan anges med `-tecken (tecknet jämte ”?” på mitt tangentbord). Vill man göra indrag så inleder man raden med ”>”.
Vill man skapa numrerade listor så inleder man raden med en siffra (vilken som) och en punkt. Om man vill ha en onumrerad lista så inleder man med ett ”-” tecken (med flera alternativ).
För länkar anges länktexten mellan [text] och länken mellan (länk).
Det går att göra betydligt mera som tabeller, men om detta inte räcker så kan man kombinera med viss html notation också.
Men vad är det där Jupyter Notebook?
Jag går inte in på detaljer nu, men kortfattat är det ett webbläsarbaserat verktyg för att skriva och dokumentera kod, i framför allt Python. Notebooks används väldigt ofta om man exempelvis vill laborera med data på ett strukturerat (och sekventiellt) sätt. Kod kan dokumenteras och exekveras i valfri ordning. Det går att gå tillbaka och ändra för att testa igen. Resultatet kan sparas i Notebooks, eller exporteras till html eller pdf (med flera format).
När jag har jobbat med Pythonbiblioteket Bokeh för att titta på statistik i diagram så har jag använt Jupyter Notebook. Väldigt användbart för att koda och visualisera koden successivt, när man inte riktigt vet vad man är ute efter.
Vill du veta mer om Jupyther Notebook så kan du gå till http://jupyter.org/ och om du vill använda Notebooks för att testa Bokeh så finns det tutorials i Notebooks, exempelvis här: länk.