Como compilar uma seleção de documentos Markdown

7

Processando um único arquivo Markdown para HTML:

pandoc -f markdown -t html inputfile.md

Embora eu possa usar o Pandoc assim para processar arquivos Markdown individuais, eu quero compilar uma lista de arquivos Markdown selecionados e processá-los em um único arquivo.

Se eu tiver alguns arquivos do Markdown:

inputfile1.md, inputfile2.md, inputfile3.md

Como posso compilá-los e processá-los usando o Pandoc para um único arquivo de saída?

    
por johntait.org 27.05.2013 / 03:17

2 respostas

8

O pandoc pode receber vários arquivos de entrada. Apenas use:

pandoc -s -o output.html input1.md input2.md input3.md

-s diz ao pandoc para criar um arquivo independente (assim ele conterá <html></html> tags etc, ao invés de apenas gerar um fragmento). -o output.html especifica que output.html será o arquivo de saída. Com o arquivo de saída terminando em .html , -t html é desnecessário - se você deseja enviar para STDOUT, obviamente, mantenha-o.

Após um pouco de teste, parece que -f markdown não é necessário mesmo quando se usam entradas sem uma extensão de arquivo - seja porque é a marcação padrão que o pandoc espera, ou o pandoc pode detectar qual linguagem de marcação está sendo usada.

Você pode, claro, usar globs para digitar menos:

pandoc -s -o output.html input*.md
    
por 27.05.2013 / 12:17
8

Você fala muito sobre o assunto, mas é difícil dizer o que você realmente quer em um nível funcional, por isso estou principalmente adivinhando como seus arquivos estão estruturados aqui. No futuro, forneça menos informações básicas e mais relevantes para a pergunta, para que você possa ser ajudado com mais eficiência.

Se você deseja compilar todos os arquivos *.md no diretório atual em seus próprios arquivos:

for file in *.md; do
    pandoc -f markdown -t html "$file"
done

Se você quiser compilar todos os arquivos *.md no diretório atual em seus próprios arquivos, recursivamente:

find . -name '*.md' -exec pandoc -f markdown -t html {} \;

Se você quiser compilar todos os arquivos *.md no diretório atual em um arquivo:

pandoc -f markdown -t html -o foo.html *.md 

Se você quiser compilar todos os arquivos *.md no diretório atual em um arquivo, recursivamente (não POSIX):

pandoc -f markdown -t html <(find . -name '*.md' -exec cat {} +) -o foo.html

Ou (bash4 +):

shopt -s globstar
pandoc -f markdown -t html -o foo.html **/*.md
    
por 27.05.2013 / 03:47