Pandoc og de ukendte vidundere

Sidste gang jeg nævnte Haskell var i en artikel om XMonad. Det er dog ikke den eneste bemærkelsesværdige ting i verden, som jeg præsenterer for dig.

Sikkert ved alle det allerede markdown, og hvis jeg ikke præsenterer dem. Det er et let markup-sprog, der giver os mulighed for at være hurtigere og mere produktive, når vi skriver en tekst. Nok for nu.

Markdown er ikke alene, og der er en lang række sprog derude for at udføre den samme funktion. Normalt går alle med ideen om at tage en almindelig tekst med nogle mærker og videregive den til at forme den som HTML, LaTex og andre. Alt godt deroppe.

Dette bringer flere problemer op. Først og vigtigst er, at nogle implementeringer ikke har det Todas de funktioner, vi ønsker. Eller et markup-sprog, der allerede har implementeret dette, kan vi ikke lide.

Og inden vi bliver fanget i indfaldet, skal du tænke og indse, at der er en bedre løsning. Noget, der gør ethvert markup-sprog til noget andet. Nogen som helst.

Det er her, Haskell kommer ind i billedet. Det vidunder, som jeg taler om, findes, det lever, det har et navn, det virker, og det er forbløffende. Ringer til sig selv pandoc og det kom fra en filosofs hånd ved University of Berkeley, John MacFarlane. Vent, for det gode begynder.

Alt imod alle

Vi kunne forvente, at pandoc ville tilbyde middelmådig dækning af alt ved ikke at koncentrere os. Men nej. Det er fremragende arbejdet og har fantastiske funktioner.

For at holde det simpelt sender du enhver kildefil til pandoc (enten i Markdown eller i reStructuredText eller andre, som pandoc understøtter) og konverterer det til et færdigt format, ligesom - er alle klar? -

LaTex, almindelig HTML, PDF, DocBook, OpenDocument, docx, rtf, mand, almindelig tekst og op til tre forskellige typer HTML-præsentationer; og min liste er kort, meget kort. Her er et diagram, der illustrerer dens styrke:

Og sidst men ikke mindst, det er et Haskell-bibliotek (eller boghandel, kald det, hvad du vil); der kan integreres i koden for andre programmer. hakyll Det er en af ​​dem, der udnytter det mest, dette er en statisk sidegenerator, der, når du bruger pandoc, kan konvertere fra harmløs Markdown og noget LaTex til ren HTML.

Her en webstedsliste der allerede bruger det som et personligt sted i stil med en blog.

Og det er ret hurtigt at afslutte det. Og selv med alle disse fordele ser det ud til, at det kun udvides i de angelsaksiske lande, og her er der næppe nogen information tilgængelig, som -og det gør ondt - præsentationer af denne type. Måske er det fordi brugervejledningen er på engelsk.

Ulemperne

Selvfølgelig skal det være. Bortset fra den relativt korte spredning understøtter de fleste udgivere det ikke fuldt ud.

Vim har syntaksfremhævning para Markdown og lidt andet som standard, så vi går glip af nogle af de sejeste ting ved pandoc: dens udvidede syntaks.

Ting, der aldrig blev rejst i den oprindelige Markdown, og som gør vores liv lettere, såsom tabeller, citater, fodnoter, HTML og LaTex inden for koden, metadata og mere avancerede egenskaber.

Forresten har Emacs en fordel her. Det har en Markdown-tilstand, der giver os syntaksfremhævning og et par nyttige kommandoer, men der er en pandoc-tilstand fuldgyldig, hvis Vim-ækvivalent stadig ikke kan konkurrere med det.

Hvis du stadig er interesseret i at få det ind i Vim, er her syntaksfilen. For emacs skal du installere markdown- og pandoc-tilstande, som allerede nævnt.

Lige til pointen

Jeg opdagede pandoc, da jeg ledte efter pakken text2tags (en anden konverter, men mere begrænset) en crunchbang og nu ved jeg, at den er tilgængelig i Debian stabil med navnet, gæt hvad, pandoc. EN aptitude-installation nok til dette. Men dem, vi bruger ArchLinux vi må først lide et par tilbageslag.

Den afhængighed helvede

Den første ting, vi tænker på, er at lave en pacman -S pandoc. Altså nej. Der er ingen pakke i de officielle arkiver, og AUR fungerer ikke på grund af den enorme mængde afhængigheder, det kræver. Hvis du allerede ved noget om Haskell, vil du nu tro, at cabal vil løse det. Og ja, men med forbehold. For at gøre dette skal du køre følgende:

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

Dette skal fungere, men jeg kan ikke anbefale det. Især hvis du vil ind i Haskells verden, fordi dette vil give dig forfærdelige problemer i fremtiden.

Det lyder helt sikkert underligt at høre en klage over ArchLinux og dens filosofi, men det forekommer mig en komplet vrøvl at have fjernet haskell-platformspakken fra arkiverne, som gav det sidste miljø tilstrækkeligt udviklet og kompatible med hinanden; hvorfor ghc og cabal-install blev opdateret.

Hvis du vil installere andre pakker ved hjælp af cabal, er det bedst at downloade pakkerne Antiguos ghc og kabal-installation fra Arch Rollback maskine.

Vi installerer dem med en simpel pacman -U pakke-sti og vi får pacman til at ignorere dem, når vi opdaterer systemet i filen /etc/pacman.conf; indvendigt afsnit Ignorer kg.

Nu er vi i stand til at bruge cabal til at installere pandoc, og for at den skal fungere som den skal, lægger vi denne linje i vores .bashrc-fil:

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

Og det er det. Noget langt hentet, men vi undgår problemer. Hvis du vil starte med andre pakker, kan du bruge det i stedet for at installere dem lokalt hsenv for at skabe isolerede miljøer og undgå hovedpine ved installation af for eksempel Hakyll.

Og når jeg først advarer dig om, at det er forfærdeligt. Alt dette, fordi Haskell og Cabal endnu ikke har løst det afhængighedshelvede, som andre sprog allerede er sluppet af med, såsom Ruby med dets bundt og ædelstene. Alligevel skyldes denne lille løsning Ian Ross fra Hakylls gruppe.

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

Brug og konklusioner

Du tager en terminal og sender en ordre som denne:

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

Hvor Markdown (* .md, er den udvidelse, jeg bruger) kan erstattes af ethvert andet format og .ext af ethvert andet tilgængeligt i output.

For mig har praktisk talt at gøre dette hver dag hjulpet mig meget, især med at eksportere til OpenDocument.

Og økosystemet er utroligt. MacFarlane selv har udviklet en wiki i Haskell, som Pandoc bruger til at konvertere sine sider, men det er til en anden historie. Forresten blev dette indlæg stolt skrevet med Pandoc, ligesom de fleste af dem, jeg har skrevet indtil videre,


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   gadi sagde han

    Jeg bruger også Markdown. Kate og Gedit kan have et plugin installeret til at fremhæve syntaksen. Så for at konvertere det til ODT vælger jeg MultiMarkdown, det er det, der mest, hvordan man siger det, "respekterer teksten", så når det kopieres til et dokument med afsnitsformater, er det mere behageligt. Pandoc har ikke givet mig de samme resultater, eller i det mindste vidste jeg ikke, hvordan jeg gjorde det 😛

    1.    anti sagde han

      Du kan få Pandoc til kun at tage standard Markdown ved at aktivere indstillingen –strict; hvis det er hvad du mener. Den største fordel er dog alsidigheden mellem formater.
      Anbefal det, med det lille, jeg har set, at de bruger det, gjorde det mig ikke ondt.

  2.   erunamoJAZZ sagde han

    Jeg har brugt det til at gå fra LaTeX til reStructuredText. Han gør det meget godt (det meste af tiden xD)

  3.   MSX sagde han

    Interessant, tak for deling.