Posljednji put sam spomenuo Haskella u članku o XMonad. Međutim, nije jedina izvanredna stvar na svijetu koju vam predstavljam.
Sigurno svi već znaju Markdown, i ako ih ne predstavim. To je lagani označni jezik koji nam omogućava da budemo brži i produktivniji prilikom pisanja teksta. Za sada dosta.
Pa, Markdown nije sam i postoji mnoštvo jezika koji obavljaju istu funkciju. Obično svi idu s idejom da uzmu običan tekst s nekim oznakama i proslijede ga tako da ga oblikuju u HTML, LaTex i druge. Sve dobro tamo.
To dovodi do nekoliko problema. Prvo, i što je najvažnije, neke implementacije nemaju sve karakteristike koje želimo. Ili označni jezik koji je to već implementirao i koji nam se ne sviđa.
I prije nego što se uhvatimo za hirove, morate razmisliti i shvatiti da postoji bolje rješenje. Nešto što bilo koji označni jezik pretvara u nešto drugo. Bilo ko.
Tu Haskell dolazi na scenu. Čudo o kojem pričam postoji, živo je, ima ime, djeluje i nevjerovatno je. Poziva se pandoc a potekao je iz ruke filozofa sa Univerziteta Berkeley, Johna MacFarlanea. Sačekajte, jer dobro počinje.
Svi protiv svih
Mogli bismo očekivati da pandoc ponudi osrednje pokriće svega, ne koncentrirajući se. Ali ne. Izvrsno je obrađen i ima nevjerojatne funkcionalnosti.
Da bude jednostavnije, proslijedite bilo koju izvornu datoteku pandoc-u (bilo u Markdown-u ili u reStructuredText-u ili drugima koje pandoc podržava) i pretvara ga u gotov format, poput -Da li su svi spremni? -
LaTex, obični HTML, PDF, DocBook, OpenDocument, docx, rtf, man, običan tekst i do tri različite vrste HTML prezentacija; i moj popis je kratak, vrlo kratak. Evo dijagrama koji ilustrira njegovu snagu:
A ako to nije bilo dovoljno, to je Haskell biblioteka (ili knjižara, nazovite je kako želite); koji se mogu integrirati u kod drugih programa. hakyll To je jedan od onih koji ga najviše iskorištava, a to je statički generator stranica koji pomoću pandoca može pretvoriti iz bezopasnog Markdowna i nekih LaTexa u čisti HTML.
Evo a popis lokacija koji je već koriste kao ličnu stranicu, u stilu bloga.
I to je prilično brzo, da ga završite. Pa čak i uz sve ove prednosti, čini se da se širi samo u anglosaksonskim zemljama i ovdje jedva da postoje dostupne informacije, poput - i šteti - prezentacijama ove vrste. Možda je to zato što je korisnički vodič na Njemačkom.
Protiv
Naravno da mora biti. Osim relativno kratkog širenja, većina izdavača to ne podržava u potpunosti.
Vim ima isticanje sintakse para Markdown i malo toga po defaultu, tako da propuštamo neke od najboljih stvari o pandocu: njegovu proširenu sintaksu.
Stvari koje nikada nisu pokrenute u originalnom Markdown-u i koje nam olakšavaju život, poput tablica, citata, fusnota, HTML-a i LaTex-a unutar koda, metapodataka i naprednijih karakteristika.
Inače, Emacs u tome ima prednost. Ima način Markdown koji nam daje isticanje sintakse i nekoliko korisnih naredbi, ali postoji pandoc-način punopravni, čiji Vim ekvivalent još uvijek ne može konkurirati s njim.
Ako ste i dalje zainteresirani za ulazak u Vim, evo datoteke sintakse. Za emacs morate instalirati načine umanjivanja i pandoc, kao što je već spomenuto.
Pravo na stvar
Otkrio sam pandoc kada sam tražio paket text2tags (još jedan pretvarač, ali ograničeniji) en crunchbang i sada znam da je dostupan u Debian stabilno s imenom, pogodi, pandoc. A aptitude install dovoljno za ovo. Ali one koje koristimo ArchLinux prvo moramo pretrpjeti nekoliko neuspjeha.
Taj pakao zavisnosti
Prvo o čemu razmišljamo je stvaranje pacman -S pandoca. Pa, ne. U službenim spremištima nema paketa i AUR ne radi, zbog velike količine zavisnosti koje su mu potrebne. Ako već znate nešto o Haskellu, sad ćete misliti da će to riješiti kabale. I da, ali s rezervom. Da biste to učinili, morate pokrenuti sljedeće:
sudo pacman -S ghc cabal-install cabal update cabal install pandoc
Ovo bi trebalo uspjeti, ali ne preporučujem. Pogotovo ako želite ući u svijet Haskella, jer će vam ovo donijeti užasne probleme u budućnosti.
Sigurno zvuči neobično čuti žalbu na ArchLinux i njegovu filozofiju, ali čini mi se potpunom glupošću ukloniti paket haskell-platforme iz spremišta, koji je posljednje okruženje pružio dovoljno razvijeno i međusobno kompatibilni; zašto su ažurirani ghc i cabal-install.
Ako želite instalirati druge pakete koristeći cabal, najbolje je preuzeti pakete drevni ghc i cabal-install iz Arch Rollback mašina.
Instaliramo ih jednostavnim pacman -U put paketa i tjeramo da ih pacman ignorira prilikom ažuriranja sistema, u datoteci /etc/pacman.conf; unutarnji dio ignorePkg.
Sada smo u mogućnosti da koristimo cabal za instalaciju pandoca i da bi on radio kako treba, stavili smo ovu liniju u našu .bashrc datoteku:
izvoz PATH = ~ / .cabal / bin: $ PATH
I to je to. Nešto daleko, ali izbjegavamo probleme. Ako želite započeti s drugim paketima, umjesto da ih instalirate lokalno, možete koristiti hsenv stvoriti izolirana okruženja i izbjeći glavobolju instaliranja, na primjer, Hakyll-a.
I jednom vas upozoravam da je užasno. Sve to zato što Haskell i Cabal još nisu riješili pakao ovisnosti kojeg su se drugi jezici već riješili, poput Rubyja sa svojim paketom i draguljima. U svakom slučaju, ovo malo rješenje kojem dugujem ian ross iz Hakyll-ove grupe.
Budi strpljiv. Duga je instalacija, jer je kompajlira za nas.
Upotreba i zaključci
Uzmete terminal i pošaljete narudžbu poput ove:
pandoc -o output-file.ext -i original-file.md
Gdje Markdown (* .md, proširenje koje ja koristim) može biti zamijenjen bilo kojim drugim formatom, a .ext bilo kojim drugim dostupnim u izlazu.
Meni je praktično svakodnevno bavljenje ovim mnogo pomoglo, posebno za izvoz u OpenDocument.
A ekosistem je nevjerovatan. MacFarlane je sam razvio wiki u Haskell-u, koji Pandoc koristi za pretvaranje njegovih stranica, ali to je za drugu priču. Inače, ovaj je post s ponosom napisan s Pandocom, kao i većina onih koje sam do sada napisao,
Takođe koristim Markdown. Kate i Gedit mogu instalirati dodatak za isticanje sintakse. Zatim se za njegovo pretvaranje u ODT odlučujem za MultiMarkdown, to je onaj koji većina, kako to reći, "poštuje tekst" tako da je prilikom kopiranja u dokument sa stilovima pasusa ugodnije. Pandoc mi nije dao iste rezultate, ili barem nisam znao kako to učiniti 😛
Aktiviranjem opcije –strict možete natjerati Pandoc da uzima samo standardni Markdown; ako na to mislite. Međutim, njegova glavna prednost je svestranost između formata.
Preporučite, s malo onoga što sam vidio da ga koriste, nije me povrijedilo.
Koristio sam ga za prelazak iz LaTeX-a u reStructuredText. Čini to vrlo dobro (većinom xD)
Zanimljivo, hvala na podjeli.