Arquivo

Posts Tagged ‘Emacs’

Org2Blog – integrando o org-mode do emacs ao seu blog do wordpress.

quinta-feira, 21 abr 2011; \16\America/New_York\America/New_York\k 16 13 comentários

Este é um teste do sistema de postagem org2blog, que transforma textos do org-mode do emacs para posts de blog do wordpress. Esse é o melhor sistema de postagem para wordpress que eu encontrei até agora. O org-mode é um modo de edição de arquivos de texto estruturados no editor de texto emacs. Uma das grandes vantagens do org-mode é a possibilidade de exportar seus textos para diversos formatos – como um documento em latex ou html, uma apresentação do beamer, um livro em docbook,… e agora, com o add-in org2blog, posts de blogs para o wordpress.

As vantagens são inúmeras:

  • EDITAR NO EMACS!!!
  • o org-mode tem uma sintaxe muito simples para estruturar textos com seções, subseções, incluir links, listas, tabelas e etc.
  • editar no emacs te permite usar macros e scripts para fazer geração dinâmica de textos,
  • o org-mode permite adicionar equações em latex, como se fosse em um documento latex normal, e traduz isso para a sintaxe do wordpress – \int e^{ikx} dk = 2\pi\delta(x).
  • o org-mode-babel permite adicionar código em diversas linguagens de programação e editá-las usando seu modo natural no emacs. O código é automaticamente colorido com syntax-highlighting (para a linguagem correta!) e postado usando as tags adequadas no wordpress. Veja por exemplo esse código em Haskell:
    sort :: (Ord a) => [a] -> [a]
    sort (x:xs) = (filter (<x) foo) ++ [x] ++ (filter (>=x) foo)
      where foo = quicksort xs

    O org-mode também pode executar o código, compilar e testar.

  • o org-mode possui dezenas e dezenas de ferramentas para lidar com texto,
  • exportar não apenas para wordpress mas para dezenas de outros formatos.

Enfim, essas são apenas algumas das vantagens. Eu comecei a usar o org-mode para editar apresentações de slides em beamer. Por muito tempo eu reclamei que não existia uma forma fácil de se fazer isso, e o org-mode foi a saída perfeita para mim. Agora o org2blog vem sanar uma outra séria deficiência de ferramentas na minha opinião: como editar de forma fácil posts de blog com código-fonte e latex simultaneamente.

Instalação do org-mode

Instalar o org-mode é muito fácil. Primeiro de tudo você precisa do emacs, claro. Vou assumir que você está no linux (sinceramente, se você está no windows eu recomendaria que instalasse o linux primeiro, porque eu nem sei fuçar no win-emacs 😛 ). Você deve baixar e descompactar o org-mode no site e colocá-lo na sua pasta de add-ons do emacs (tipicamente na pasta ‘~/.emacs.d/’). Abra então o terminal na pasta e dar os comandos típicos:

make
make doc
sudo make install

Depois adicione no seu arquivo de configuração do emacs (tipicamente ‘~/.emacs’ ou ‘~/.emacs.d/init.el’, o que você preferir) as seguintes linhas (ajustando para os diretórios adequados):

(setq load-path (cons "~/.emacs.d/org-mode/lisp" load-path))
(setq load-path (cons "~/.emacs.d/org-mode/contrib/lisp" load-path))
(require 'org-install)
(org-babel-do-load-languages
 'org-babel-load-languages
 '((R . t)
   (emacs-lisp . t)
   (haskell . t)
   (gnuplot . t)
   (latex   . t)
   )) ;; adicione aqui as linguagens que quiser que o org-mode reconheça. 

Para manter atualizado você pode baixar os arquivos do repositório git do org-mode, conforme as instruções no site. Veja o manual do org-mode para todas as instruções de como usá-lo. Para configurar o org-babel, a parte do org-mode que lida com códigos, veja essa página e essa pagina.

Instalação do org2blog

O org2blog, com instruções de instalação, pode ser encontrado no github do punchagan. Baixe os arquivos usando o git, conforme indicado no README, no seu diretório ‘~/.emacs.d’ do emacs. Siga o README para saber como configurar o seu emacs para logar automaticamente no seu blog e colocar o seu post.

Enfim. Não tem mais muito o que dizer. Eu fiquei muito empolgado com a possibilidade de editar meus posts no emacs com calma e só postar depois de pronto. O org-mode tem diversas ferramentas para lidar com texto que o tornam de longe a melhor ferramenta de editoração eletrônica para emacs – para textos em latex e apresentações particularmente. Além disso ele tem coisas como o record-mode e outras ferramentas para lidar com todo-lists e agendas. Vale a pena dar uma olhada.

Boa sorte.

Categorias:org2blog Tags:, , ,

Edição colaborativa em TeX…

domingo, 12 out 2008; \41\America/New_York\America/New_York\k 41 8 comentários

Muita gente, mais cedo ou mais tarde, acaba trombando nesse problema: como editar colaborativamente um artigo científico, em geral editado em \TeX e \LaTeX?

Imagine a seguinte situação: vc numa sala, no seu depto preferido, e seu colaborador na sala ao lado! Como é que vcs podem se coordenar para escrever um artigo juntos? Agora, imaginem uma situação mais idealizada, só pra facilitar o argumento a seguir: vc e seu colaborador estão a meio planeta de distância. 😈

No meio científico, essa situação é razoavelmente comum: vários autores colaborando num mesmo artigo, um em cada canto desse nosso mundo redondo.

Praqueles que não têm uma necessidade tipográfica muito grande, algo como Google Docs dá conta do recado: vc simplesmente transfere sua ferramenta editorial para “the cloud“. 😉

Agora, pra quem tem necessidades tipográficas mais agudas — e.g., TeX, LaTeX, DocBook ou HTML —, a colaboração é certamente mais complicada e delicada.

As primeiras alternativas que surgiram foram as seguintes:

Quem usa Emacs pode utilizar AUCTeX e psvn.el para integrar tudo de modo suficientemente transparente.

Uma alternativa um pouco mais moderna, que integra e faz o papel de agregar as funcionalidades de “editor de textos” e “controle de versões”, é a seguinte:

  • Gobby (roda em qualquer plataforma: Microsoft Windows, Mac OS X, GNU/Linux e *NIX afins);
  • SubEthaEdit (só para Mac OS X).

Essencialmente, ambos são equivalentes: O Gobby é uma implementação “software livre” do SubEthaEdit. Para usuários menos experientes em lidar com o controle de versões, delegar essa tarefa diretamente para o editor pode ser uma saída viável. Para maiores informações sobre esse tipo de editores, é só dar uma olhada em Collaborative real-time editor. Infelizmente, eu não sei quantos desses têm suporte para TeX ou LaTeX.

Isso tudo posto… aautgora é hora de falar no Git: o Git é um dos softwares para controle de versão mais rápidos disponível atualmente. Aliás, mais do que isso, o paradigma descentralizado e distribuído do git o torna um candidato natural para um sistema de arquivos com as mesmas propriedades: o jeito mais fácil de entender o conceito do git é imaginar que vc pode, e.g., ter uma pasta no seu computador ‘replicada’ em outros computadores (que vc explicitamente permitiu acessar a pasta original): ou seja, todos os seus colaboradores vão ter acesso à mesma pasta, de tal forma que quando qualquer arquivo (formatos ASCII ou binários, i.e., TeX, LaTeX, DOC(X), PDF, JPEG, TXT, HTML, RTF, etc) dentro dessa pasta for atualizado, todos os colaboradores recebem essa mesma atualização!

Fora isso, o git tem algumas outras propriedades bem interessantes para quem está desenvolvendo uma colaboração científica, que tende a ser um processo altamente emaranhado e não-linear: suporte para desenvolvimento não-linear (resolução de conflitos de edição), desenvolvimento distribuído, é possível usar subversion através de comandos de compatibilidade, velocidade e escalabilidade (eficiência para grandes projetos), autenticação criptografada, entre outras.

Ou seja, através do uso do git o controle de versões é extremamente mais poderoso e flexível, isso pra não falar na resolução de conflitos, i.e., quando dois ou mais dos seus colaboradores estiver trabalhando no artigo (ou gráfico, imagem, etc — qualquer tipo de arquivo), ao mesmo tempo, qual modificação tem maior prioridade? O git é excelente nesse departamento… além de permitir que vc compartilhe toda uma pasta com seus colaboradores, uma vez que qualquer tipo de arquivo é monitorado e atualizado automaticamente.

É, a meu ver, a saída mais sofisticada e robusta para o problema de colaboração e acesso de várias pessoas a um mesmo conjunto de arquivos (e tudo pode funcionar de modo encriptado, o que torna todo o processo ainda mais confortável). Porém, infelizmente, ainda não há nenhum suporte para git no Emacs nem em nenhum outro editor que eu conheço. Mas, dado que o AUCTeX é uma ferramenta tão poderosa, vale a pena se ajustar ao meio termo: “Emacs + AUCTeX” e Git no console. Pode ser meio confuso no começo, mas uma vez que se acostuma com esse arranjo… é puro zen! 😎

O que me traz à terceira opção: Dropbox (leiam mais no link Tour).

Essencialmente, o Dropbox é uma versão mais “user-friendly”, amigável, de softwares de controle de versões: o processo de instalação cria uma pasta no seu computador que fica arquivada no cloud deles… e, dessa forma, toda vez que qualquer arquivo denro dessa pasta for modificado, as diferenças são propagadas para o cloud, onde ficam arquivadas também. E é agora que vem o pulo-do-gato: uma das sub-pastas (dentro da pasta-mãe, compartilhada via o serviço do Dropbox) é chamada Public, de modo que qualquer arquivo dentro dessa pasta pode ser acessado por quem tiver o respectivo acesso permitido.

Até aqui, tudo soa exatamente como no git, acima… a diferença crucial é que o Dropbox não usa o git como ‘backend’, i.e., o Dropbox tem seu próprio método de atualização dos arquivos — que, até agora, não é muito bem conhecido publicamente.

Portanto, nesse sentido, o Dropbox é uma espécie de git light, i.e., é uma versão mais levinha e com menos recursos do que o git — não tão robusto, mas que satisfaz as necessidades da grande maioria dos usuários.

A grande vantagem é que não é preciso que “alguém” instale um servidor rodando git, o que torna tudo muito mais acessível a qualquer nível de usuários. 😉

Então, no final das contas, essa não é uma saída tão ruim assim… perde-se uns recursos dum lado, mas ganha-se em manutenção do outro — em geral, é um bom meio termo. E, de quebra, ainda é possível se usar TrueCrypt para se encriptar o conteúdo de toda a pasta, tornando tudo muito mais seguro (mesmo que o conteúdo da pasta esteja na ‘cloud’, ele estará encriptado 😉 ).


Pessoalmente, meu sonho de consumo seria um servidor rodando uma combinação dos seguintes:

juntamente com todo o indexamento feito pelo SPIRES! E, a essa mistura, adicionaria-se um servidor git, para que todos os usuários pudessem colaborar livremente e, de modo completamente transparente, publicar o artigo assim que acabado!

Dessa forma, numa mesma e única plataforma estariam centralizadas as melhores e mais robustas funcionalidades disponíveis no momento — seria o paraíso! 🙂

Bom… é isso aí: a diversão é mais-do-que-garantida, []’s! 😈

%d blogueiros gostam disto: