Eu finalmente descobri algumas maneiras de fazer a tarefa.
O primeiro é usar um filtro pandoc escrito em Python que inclui (funciona da mesma maneira que o filtro Haskell descrito em pandoc docs). No entanto, agora ele é adaptado para uso somente com blocos de código incluídos, não com partes de conteúdo geral.
A segunda maneira é usar o script Perl embutido, que pode ser adicionado ao comando build (visto pela primeira vez aqui ). Esse caminho provou ser útil e eu vou manter isso por algum tempo, porque
- Eu não sou muito bom em Python e
- permite que algumas tarefas úteis de pesquisa e substituição sejam executadas, como em substituição de partes de caminhos das imagens e arquivos incluídos.
Abaixo, o comando que uso para produzir uma apresentação de slides no formato Reveal.js (embora essa tenha sido enviada para alguma hospedagem na Web, há outras variantes de compilação para criar um arquivo de apresentação de slides autossuficiente usando a opção --self-contained
de pandoc ou, por exemplo, "coletar" todos os arquivos relacionados à apresentação de slides em uma pasta no Desktop):
perl -ne 's/^#\((.+)\).*/'cat \"${project_path/\//\\\//g}\$1\"'/e;s/\((\/_common\/img)/(\/presentations\$1/g;print' ${file_base_name}.md > result.md && pandoc -s -t revealjs --variable revealjs-url=http://www.site.com/presentations/_common/resources/revealjs --css=http://www.site.com/presentations/_common/resources/customcss_sky.css -H ${project_path}/_common/resources/customhtml.html --highlight-style haddock result.md -o index.html && trash result.md
Este comando:
- Substitui todas as expressões # (caminho / para / incluir) (os caminhos devem ser relativos à pasta do projeto) com includes 'contents;
- Substitui os caminhos nas imagens (relativas à pasta do projeto) pelo caminho do servidor para o diretório de imagens;
- Gera o Markdown resultante em um arquivo temporário;
- Cria slideshow HTML com pandoc;
- Lixeira de arquivo temporário com o utilitário
trash
de Ali Rantakari.