Markdown - proste formatowanie dokumentów

 

W mojej pracy piszę bardzo dużo tekstów, w tym dosyć obszernych, posiadających pewną strukturę. Nadawanie struktury dokumentom jest zresztą zawsze korzystne. Dokumenty takie mają podział na części, którym nadawane są śródtytuły, zawierają listy numerowane i punktowane oraz inne elementy. Przez lata teksty takie pisałem za pomocą edytora Word, ale w pewnym momencie uznałem, że nie jest to narzędzie zbyt wygodne dla osoby niewidomej. Co prawda czytniki ekranu pozwalają na zachowanie kontroli nad formatowaniem, ale bezwzrokowa kontrola wyglądu i struktury dokumentu była dosyć uciążliwa. Zacząłem szukać i wreszcie odkryłem to, czego potrzebowałem – język prostych znaczników o nazwie Markdown.

Struktura budowana w prosty sposób

Markdown został zaprojektowany przez Johna Grubera i Aarona Swartza jako język znaczników upraszczający formatowanie dokumentów. Idea wzięła się stąd, że języki formatowania jak HTML, XML, SGML i inne opisujące strukturę dokumentów są mało czytelne dla człowieka i można w nich łatwo popełnić błąd. Za wzór prostoty autorzy przyjęli formatowanie listów elektronicznych i na nich oparli główne założenia składni.

Przygotowany dokument, sformatowany w Markdown, można przekonwertować do innych formatów. Początkowo robiono to skryptem napisanym w języku PERL, a wynikiem był plik HTML. Jednak Markdown tak się przyjął, że powstało o wiele więcej konwerterów, a sam język włączono do wielu systemów CMS jako ich element podstawowy lub rozszerzenie. Rozszerzenia takie powstały dla Wordpressa, Drupala i innych systemów zarządzania treścią. Istnieje też wtyczka do klienta poczty Thunderbird, która potrafi przekształcić kod Markdown w HTML w edytowanym właśnie emailu. Zastosowań dla Markdown jest sporo i wciąż pojawiają się nowe.

Składnia Markdown

W składni Markdown stosowane są elementy, które są oczywiste dla człowieka, gdy je tylko zobaczy. Na przykład listę punktowaną buduje się przez poprzedzanie każdego elementu znakiem "-" lub "*":

- pierwszy element,
- drugi element,
- trzeci element.

Listę numerowaną tworzy się zaś pisząc po prostu kolejne numery przed elementami:

1. Pierwszy element.
2. Drugi element.
3. Trzeci element.

Wprost z poczty elektronicznej pochodzi oznaczanie cytatów, do których używany jest znaczek ">":

> Tutaj znajduje się cytat, który będzie odpowiednio oznaczony w kodzie i sformatowany inaczej, niż zwykły tekst.

Poszczególne akapity oddziela się od siebie pustą linią, a nagłówki tworzy poprzedzając tytuł odpowiednią liczbą znaczków "#". Pojedynczy krzyżyk oznacza poziom pierwszy nagłówka, dwa krzyżyki - drugi i tak dalej.

#Tytuł pierwszego poziomu
##Tytuł drugiego poziomu

W treści można umieszczać także łącza i dostępne są tutaj dwie metody. Pierwsza z nich pozwala na wstawienia łącza w bardzo prosty sposób poprzez umieszczenie go w nawiasach ostrych:

<http://informaton.pl>
<jacek.zadrozny@post.pl>

Drugi sposób pozwala na utworzenie łącza z dowolnym tekstem do kliknięcia. Tekst, który należy kliknąć, umieszcza się w nawiasach kwadratowych, a adres zasobu w nawiasach okrągłych, bezpośrednio po zamykającym kwadratowym.

[Link do serwisu Informaton](http://informaton.pl)

Wreszcie warto wspomnieć o możliwości tworzenia linii rozdzielających fragmenty tekstu przez wstawienie kilku znaków "-" lub "*". Jeżeli chcemy jakiś fragment tekstu wyróżnić, to wystarczy otoczyć go gwiazdkami: pojedynczymi dla zwykłego wyróżnienia i podwójnymi dla silnego. Zazwyczaj zwykłe wyróżnienie formatowane jest kursywą, a silne - czcionką pogrubioną.

Tutaj mamy *fragment wyróżniony* w tekście.
A tutaj **fragment silnie wyróżniony** w tekście.

W tekście można osadzać także grafiki w sposób analogiczny do tworzenia linków. Informację o grafice poprzedza się znakiem wykrzyknika "!", a następnie w nawiasach kwadratowych wpisywany jest tekst alternatywny, a w okrągłych - adres do grafiki. Adres może być względny i jeżeli plik znajduje się w tym samym folderze, to wystarczy podać jego nazwę.

![Biało-czerwona flaga Polski](flaga_pl.jpg)

Specyfikacja Markdown zawiera jeszcze kilka elementów, na przykład inny sposób tworzenia nagłówków, ale te zaproponowane przeze mnie są wygodniejsze dla osób niewidomych.

Edytowanie pliku źródłowego

Do edycji pliku źródłowego w Markdown można użyć notatnika systemowego lub każdego innego, który pozwala na zapisanie zwykłego tekstu. Rozszerzenie pliku nie ma specjalnego znaczenia, jednak warto nadawać mu rozszerzenie *.md, gdyż upraszcza to późniejsze wpisywanie komend konwertujących. Ja najczęściej korzystam z edytora EdSharp, który doskonale sprawdza się w różnych sytuacjach. Czasem, zwłaszcza wtedy, gdy pojawiają się problemy z kodowaniem znaków, korzystam także z programu Notepad++.

Podczas pisania warto oddzielać poszczególne bloki tekstu pustą linią, na przykład tytuł rozdziału od pierwszego akapitu, czy akapit od listy numerowanej. Teoretycznie Markdown tego nie wymaga, ale zdarzają się problemy z rozpoznawaniem, gdzie zaczyna się i kończy dany obiekt tekstowy. Ta dodatkowa linia rozwiązuje ten problem.

Najbezpieczniejszym kodowaniem znaków w Markdown jest UTF-8 bez BOM. Część konwerterów radzi sobie z niemal dowolnym kodowaniem, ale inne mogą mieć problemy. Do tych ostatnich należy mój ulubiony Pandoc, o którym napiszę w kolejnym tekście. UTF-8 bez BOM jest standardowo obsługiwane przez edytory pod systemem Windows, w tym systemowy notatnik. W razie problemów z kodowaniem polecam przekodowanie tekstu za pomocą edytora Notepad++, który jest w tym niezawodny.

Wypróbuj Markdown

Jednym ze sposobów na wypróbowanie Markdown jest zainstalowanie rozszerzenia do programu pocztowego Thunderbird o nazwie Markdown Here. Po jego instalacji możesz w treści emaila pisać kodami Markdown, a potem szybko skonwertować całość do formatu HTML. W dowolnym momencie otwierasz w treści emaila menu kontekstowe i wybierasz polecenie "Markdown toggle". Treść zamieniana jest na format HTML, w którym można wysłać list. Jeżeli trzeba coś jeszcze poprawić lub dodać, to wystarczy wybrać to samo polecenie i wracamy do kodu Markdown.

Do testowania można użyć także edytorów dostępnych online, na przykład Markdown Editor, StackEdit i wielu innych. Dla osób zarządzających stroną na Wordpress interesującą może być wtyczka WP-Markdown. Pozwala ona na edycję postów za pomocą znaczników Markdown zamiast w kodzie HTML lub edytora wizualnego. Pisanie w HTML jest uciążliwe i można łatwo popełnić błąd, a korzystanie z wizualnego edytora - pomimo że jest on dostępny - nie jest jednak szczytem wygody. WP-Markdown może wybitnie w tym pomóc. Dużą zaletą tej wtyczki jest fakt, że w bazie nie jest zapisywany kod Markdown, ale właśnie HTML, więc wtyczkę można bez problemu i w każdym momencie odinstalować. Konwersja dokonywana jest w locie i nie pozostawia śladów w systemie.

Można też wypróbować Write Monkey - wyspecjalizowany edytor tekstowy, którego głównym zadaniem jest obsługa Markdown. Po napisaniu tekstu wystarczy uruchomić polecenie "Markdown export" i wybrać eksportowanie do edytora Word, by to właśnie w nim otworzył się gotowy plik. Sam edytor też jest wart polecenia, szczególnie że jest darmowy i nie wymaga instalowania.

Czy warto?

Stosowanie Markdown może być dobrym rozwiązaniem dla tych, którzy tworzą regularnie i dużo treści. Zapanowanie nad formatowaniem bez wzroku jest trudne, chociaż możliwe. Jednak różnorodne narzędzia pozwalają na konwersję kodu Markdown do ogromnej liczby formatów: HTML, DOCX, ODT, RTF, LaTeX, Wiki, Docbook, a nawet prezentacji w postaci slajdów. Od użytkownika wymaga zaś niewiele – nauczenia się kilkunastu elementów składni języka i używania edytora tekstu zamiast Worda. Niewidomy użytkownik może poświęcić swój czas pisaniu i nadawaniu struktury dokumentowi, zamiast toczyć boje ze stylami. Po pewnym czasie i nabraniu wprawy okazuje się, że pisanie Markdownem jest szybsze i wygodniejsze od edycji wizualnej. Dokumentu wynikowego nie trzeba się wstydzić, bo zawsze wygląda on przynajmniej przyzwoicie, a czasem wręcz dobrze.

Jacek Zadrożny

 

Projekt współfinansowany ze środków Państwowego Funduszu Rehabilitacji Osób Niepełnosprawnych oraz Gminy Miejskiej Kraków