Pandoc og de ukjente underverkene

Sist jeg nevnte Haskell var i en artikkel om XMonad. Det er imidlertid ikke det eneste bemerkelsesverdige i verden som jeg presenterer for deg.

Sikkert alle vet det allerede Markdown, og hvis jeg ikke presenterer dem. Det er et lett markeringsspråk som lar oss være raskere og mer produktive når vi skriver en tekst. Nok for nå.

Markdown er ikke alene, og det er mange språk der ute for å utføre den samme funksjonen. Normalt går alle med ideen om å ta en ren tekst med noen merker og sende den for å danne den som HTML, LaTex og andre. Alt bra der oppe.

Dette gir flere problemer. Først og fremst har noen implementeringer ikke todas funksjonene vi ønsker. Eller et markeringsspråk som allerede har implementert dette, liker vi ikke.

Og før vi blir fanget i innfallene, må du tenke og innse at det finnes en bedre løsning. Noe som gjør noe markeringsspråk til noe annet. Hvem som helst.

Det er her Haskell kommer inn i bildet. Underet som jeg snakker om eksisterer, det lever, det har et navn, det fungerer og det er utrolig. Ringer seg selv pandoc og den kom fra en filosof fra University of Berkeley, John MacFarlane. Vent, for det gode begynner.

Alt mot alle

Vi kunne forvente at pandoc ville tilby middelmådig dekning av alt, ved ikke å konsentrere oss. Men nei. Det er utmerket arbeidet og har fantastiske funksjoner.

For å holde det enkelt, sender du hvilken som helst kildefil til pandoc (enten i Markdown eller i reStructuredText eller andre som pandoc støtter) og konverterer det til et ferdig format, som - er alle klare? -

LaTex, vanlig HTML, PDF, DocBook, OpenDocument, docx, rtf, man, ren tekst og opptil tre forskjellige typer HTML-presentasjoner; og listen min er kort, veldig kort. Her er et diagram som illustrerer kraften:

Og sist men ikke minst, det er et Haskell-bibliotek (eller bokhandel, kaller det hva du vil); som kan integreres i koden til andre programmer. hakyll Det er en av de mest utnyttede, dette er en statisk sidegenerator som bruker pandoc kan konvertere fra ufarlig Markdown og noe LaTex til ren HTML.

Her en nettstedsliste som allerede bruker det som et personlig nettsted, i stil med en blogg.

Og det er ganske raskt å fullføre det. Og selv med alle disse fordelene, ser det ut til at den bare utvides i de angelsaksiske landene, og her er det knapt noen informasjon tilgjengelig, for eksempel - og det gjør vondt - presentasjoner av denne typen. Kanskje det er fordi brukerhåndboken er på engelsk.

Ulempene

Selvfølgelig må det være. Bortsett fra den relativt korte spredningen, støtter de fleste utgivere det ikke fullt ut.

Vim har syntaks fremheving til Markdown og lite annet som standard, så vi savner noen av de kuleste tingene med pandoc: den utvidede syntaksen.

Ting som aldri ble reist i den opprinnelige Markdown, og som gjør livet vårt enklere, for eksempel tabeller, sitater, fotnoter, HTML og LaTex i koden, metadata og mer avanserte egenskaper.

Forresten, Emacs har en fordel her. Den har en Markdown-modus som gir oss syntaksutheving og noen nyttige kommandoer, men det er en pandoc-modus fullverdig, hvis Vim-ekvivalent fortsatt ikke kan konkurrere med det.

Hvis du fortsatt er interessert i å få den inn i Vim, er her syntaksfilen. For emacs må du installere markdown- og pandoc-modus, som allerede nevnt.

Rett til poenget

Jeg oppdaget pandoc da jeg lette etter text2tags-pakken (en annen omformer, men mer begrenset) en crunchbang og nå vet jeg at den er tilgjengelig i Debian stabil med navnet, gjett hva, pandoc. EN aptitude installere nok til dette. Men de vi bruker Arch Linux vi må lide et par tilbakeslag først.

Den avhengigheten helvete

Det første vi tenker på er å lage en pacman -S pandoc. Vel nei. Det er ingen pakke i de offisielle depotene, og AUR fungerer ikke på grunn av den enorme mengden avhengigheter det krever. Hvis du allerede vet noe om Haskell, vil du nå tro at cabal vil løse det. Og ja, men med forbehold. For å gjøre dette må du kjøre følgende:

sudo pacman -S ghc cabal-install cabal update cabal install pandoc

Dette skal fungere, men jeg anbefaler det ikke. Spesielt hvis du vil fordype deg i Haskells verden, fordi dette vil gi deg forferdelige problemer i fremtiden.

Det høres sikkert rart å høre en klage på ArchLinux og filosofien, men det virker for meg som et tull å ha fjernet haskell-plattformspakken fra repositoriene, som ga det siste miljøet tilstrekkelig utviklet og kompatible med hverandre; hvorfor ghc og cabal-install ble oppdatert.

Hvis du vil installere andre pakker ved hjelp av cabal, er det best å laste ned pakkene antiguos ghc og cabal-install fra Arch Rollback Machine.

Vi installerer dem med en enkel pacman -U pakke-sti og vi får pacman til å ignorere dem når du oppdaterer systemet, i filen /etc/pacman.conf; innvendig seksjon IgnorerPkg.

Nå kan vi bruke cabal til å installere pandoc, og for at den skal fungere som den skal, legger vi denne linjen i .bashrc-filen:

eksporter PATH = ~ / .cabal / bin: $ PATH

Og det er det. Noe langt hentet, men vi unngår problemer. Hvis du vil starte med andre pakker, kan du bruke det i stedet for å installere dem lokalt hsenv for å skape isolerte miljøer og unngå hodepine ved å installere for eksempel Hakyll.

Og en gang advarer jeg deg om at det er fryktelig. Alt dette fordi Haskell og Cabal ennå ikke har løst det avhengighetshelvetet som andre språk allerede har blitt kvitt, som Ruby med sin pakke og perler. Uansett, denne lille løsningen skyldes Ian Ross av Hakylls gruppe.

Vær tålmodig. Det er en lang installasjon, fordi det kompilerer det for oss.

Bruk og konklusjoner

Du tar en terminal og sender en ordre som denne:

pandoc -o output-file.ext -i original-fil.md

Hvor Markdown (* .md, er utvidelsen jeg bruker) kan erstattes av hvilket som helst annet format og .ext av andre tilgjengelige i utdataene.

For meg, at jeg gjør dette praktisk talt hver dag, har det hjulpet meg mye, spesielt å eksportere til OpenDocument.

Og økosystemet er utrolig. MacFarlane selv har utviklet en wiki i Haskell, som Pandoc bruker for å konvertere sidene, men det er for en annen historie. Dette innlegget ble forresten stolt skrevet med Pandoc, som de fleste av de jeg har skrevet så langt,


Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.

  1.   gadi sa

    Jeg bruker også Markdown. Kate og Gedit kan ha et plugin installert for å markere syntaksen. For å konvertere den til ODT velger jeg MultiMarkdown, det er den som respekterer teksten mest, hvordan man sier den, slik at når den kopieres til et dokument med avsnittstiler, er det mer behagelig. Pandoc har ikke gitt meg de samme resultatene, eller i det minste visste jeg ikke hvordan jeg skulle gjøre det 😛

    1.    anti sa

      Du kan få Pandoc til å ta bare standard Markdown ved å aktivere alternativet –strict; hvis det er det du mener. Den viktigste fordelen er imidlertid allsidigheten mellom formatene.
      Anbefaler det, med det lille jeg har sett at de bruker det, gjorde det ikke vondt for meg.

  2.   erunamoJAZZ sa

    Jeg har brukt den til å gå fra LaTeX til reStructuredText. Han gjør det veldig bra (mesteparten av tiden xD)

  3.   MSX sa

    Interessant, takk for at du delte.