Pandoc e as maravilhas desconhecidas

A última vez que mencionei Haskell foi em um artigo sobre Xmonad. No entanto, não é a única coisa notável no mundo que apresento a vocês.

Certamente todo mundo já sabe Redução de preço, e se eu não os apresentar. É uma linguagem de marcação leve que nos permite ser mais rápidos e mais produtivos ao escrever um texto. Chega por enquanto.

Bem, o Markdown não está sozinho e há uma infinidade de linguagens para executar a mesma função. Normalmente todo mundo vai com a ideia de pegar um texto simples com algumas marcas e passá-lo para formatá-lo como HTML, LaTex e outros. Tudo bem até lá.

Isso traz vários problemas. Em primeiro lugar, e mais importante, algumas implementações não têm TODAS os recursos que queremos. Ou uma linguagem de marcação que já implementou isso que não gostamos.

E antes de sermos apanhados pelos caprichos, é preciso pensar e perceber que existe uma solução melhor. Algo que transforma qualquer linguagem de marcação em outra coisa. Qualquer um.

É aqui que Haskell entra em cena. A maravilha de que falo existe, está viva, tem um nome, funciona e é incrível. Chamando a si mesmo Pandoc e veio das mãos de um filósofo da Universidade de Berkeley, John MacFarlane. Espere, porque o bem começa.

Todos contra todos

Podemos esperar que o pandoc ofereça uma cobertura medíocre de tudo, sem se concentrar. Mas não. É muito bem trabalhado e tem funcionalidades incríveis.

Para mantê-lo simples, você passa qualquer arquivo de origem para o pandoc (em Markdown ou em reStructuredText ou outros que o pandoc suporta) e o converte para um formato acabado, como - estão todos prontos? -

LaTex, HTML simples, PDF, DocBook, OpenDocument, docx, rtf, man, texto simples e até três tipos diferentes de apresentações HTML; e minha lista é curta, muito curta. Aqui está um diagrama que ilustra seu poder:

E por último, mas não menos importante, é uma biblioteca Haskell (ou livraria, chame do que quiser); que podem ser integrados no código de outros programas. hakyll É um dos mais explorados, sendo um gerador de páginas estáticas que usando o pandoc pode converter de Markdown inofensivo e alguns LaTex para HTML puro.

Aqui um lista de sites que já o utilizam como site pessoal, no estilo de um blog.

E é bem rápido, para terminar. E mesmo com todas essas vantagens, parece que só se expande em países anglo-saxões e aqui quase não há informações disponíveis, como -e dói- apresentações desse tipo. Talvez seja porque o guia do usuário está em inglês.

Os contras

Claro que tem que haver. Além de sua distribuição relativamente curta, a maioria dos editores não o apóia totalmente.

Vim tem destaque de sintaxe para Markdown e pouco mais por padrão, então perdemos algumas das coisas mais legais sobre o pandoc: sua sintaxe estendida.

Coisas que nunca surgiram no Markdown original e que facilitam nossa vida, como tabelas, citações, notas de rodapé, HTML e LaTex dentro do código, metadados e características mais avançadas.

A propósito, o Emacs tem uma vantagem aqui. Ele tem um modo Markdown que nos dá destaque de sintaxe e alguns comandos úteis, mas há um modo pandoc de pleno direito, cujo equivalente Vim ainda não pode competir com ele.

Se você ainda estiver interessado em colocá-lo no Vim, aqui está o arquivo de sintaxe. Para emacs, você deve instalar os modos markdown e pandoc, como já mencionado.

Ao grão

Eu descobri o pandoc ao procurar o pacote text2tags (outro conversor, mas mais limitado) en crunchbang e agora sei que está disponível em Debian estável com o nome, adivinhe, pandoc. UMA instalação do aptitude o suficiente para isso. Mas os que usamos ArchLinux temos que sofrer alguns contratempos primeiro.

Aquele inferno de dependências

A primeira coisa em que pensamos é em fazer um pacman -S pandoc. Pois não. Não há pacote nos repositórios oficiais e o do AUR não funciona, devido à enorme quantidade de dependências que requer. Se você já sabe algo sobre Haskell, agora você pensará que a cabala vai resolver isso. E sim, mas com reservas. Para fazer isso, você deve executar o seguinte:

sudo pacman -S ghc cabal-install cabal atualização cabal install pandoc

Isso deve funcionar, mas eu não recomendo. Especialmente se você quiser entrar no mundo de Haskell, porque isso lhe trará problemas horríveis no futuro.

Certamente parece estranho ouvir uma reclamação sobre o ArchLinux e sua filosofia, mas me parece um absurdo completo ter removido o pacote haskell-platform dos repositórios, que forneceu o último ambiente suficientemente desenvolvido e compatíveis um com o outro; por que ghc e cabal-install foram atualizados.

Se você quiser instalar outros pacotes usando cabal, é melhor baixar os pacotes antigo ghc e cabal-install de Máquina de Rollback de Arco.

Nós os instalamos com um simples pacman -U caminho do pacote e fazemos com que o pacman os ignore ao atualizar o sistema, no arquivo /etc/pacman.conf; seção interna IgnorarPacote.

Agora podemos usar o cabal para instalar o pandoc e para que funcione como deveria, colocamos esta linha em nosso arquivo .bashrc:

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

E já. Algo rebuscado, mas evitamos problemas. Se você quiser começar com outros pacotes, em vez de instalá-los localmente, você pode usar Hsenv para criar ambientes isolados e evitar a dor de cabeça de instalar, por exemplo, Hakyll.

E uma vez eu te aviso que é horrível. Tudo isso porque Haskell e Cabal ainda não resolveram o inferno de dependência de que outras linguagens já se livraram, como Ruby com seu Bundle e gems. Enfim, esta pequena solução se deve a ian ross do grupo de Hakyll.

Seja paciente. É uma instalação longa, porque compila para nós.

Uso e conclusões

Você pega um terminal e envia um pedido como este:

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

Onde Markdown (* .md, é a extensão que uso) pode ser substituído por qualquer outro formato e .ext por qualquer outro disponível na saída.

Para mim, fazer isso praticamente todos os dias, me ajudou muito, principalmente para exportar para OpenDocument.

E o ecossistema é incrível. O próprio MacFarlane desenvolveu um wiki em Haskell, que o Pandoc usa para converter suas páginas, mas isso é para outra história. A propósito, este post foi orgulhosamente escrito com Pandoc, como a maioria dos que escrevi até agora,


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   gadi dito

    Eu também uso Markdown. Kate e Gedit podem ter um plugin instalado para realçar a sintaxe. Então para convertê-lo para ODT opto pelo MultiMarkdown, é o que mais, digamos, "respeita o texto" para que ao copiá-lo para um documento com estilos de parágrafo seja mais confortável. Pandoc não me deu os mesmos resultados, ou pelo menos eu não sabia como fazer 😛

    1.    anti dito

      Você pode fazer o Pandoc usar apenas o Markdown padrão, ativando a opção –strict; se é isso que você quer dizer. Porém, sua principal vantagem é a versatilidade entre os formatos.
      Recomendo, com o pouco que tenho visto que usam, não me machucou.

  2.   Erunamo JAZZ dito

    Eu usei para ir de LaTeX para reStructuredText. Ele faz isso muito bem (na maioria das vezes xD)

  3.   msx dito

    Interessante, obrigado por compartilhar.