-
-
Save kristopherjohnson/7466917 to your computer and use it in GitHub Desktop.
# Makefile | |
# | |
# Converts Markdown to other formats (HTML, PDF, DOCX, RTF, ODT, EPUB) using Pandoc | |
# <http://johnmacfarlane.net/pandoc/> | |
# | |
# Run "make" (or "make all") to convert to all other formats | |
# | |
# Run "make clean" to delete converted files | |
# Convert all files in this directory that have a .md suffix | |
SOURCE_DOCS := $(wildcard *.md) | |
EXPORTED_DOCS=\ | |
$(SOURCE_DOCS:.md=.html) \ | |
$(SOURCE_DOCS:.md=.pdf) \ | |
$(SOURCE_DOCS:.md=.docx) \ | |
$(SOURCE_DOCS:.md=.rtf) \ | |
$(SOURCE_DOCS:.md=.odt) \ | |
$(SOURCE_DOCS:.md=.epub) | |
RM=/bin/rm | |
PANDOC=/usr/local/bin/pandoc | |
PANDOC_OPTIONS=--smart --standalone | |
PANDOC_HTML_OPTIONS=--to html5 | |
PANDOC_PDF_OPTIONS= | |
PANDOC_DOCX_OPTIONS= | |
PANDOC_RTF_OPTIONS= | |
PANDOC_ODT_OPTIONS= | |
PANDOC_EPUB_OPTIONS=--to epub3 | |
# Pattern-matching Rules | |
%.html : %.md | |
$(PANDOC) $(PANDOC_OPTIONS) $(PANDOC_HTML_OPTIONS) -o $@ $< | |
%.pdf : %.md | |
$(PANDOC) $(PANDOC_OPTIONS) $(PANDOC_PDF_OPTIONS) -o $@ $< | |
%.docx : %.md | |
$(PANDOC) $(PANDOC_OPTIONS) $(PANDOC_DOCX_OPTIONS) -o $@ $< | |
%.rtf : %.md | |
$(PANDOC) $(PANDOC_OPTIONS) $(PANDOC_RTF_OPTIONS) -o $@ $< | |
%.odt : %.md | |
$(PANDOC) $(PANDOC_OPTIONS) $(PANDOC_ODT_OPTIONS) -o $@ $< | |
%.epub : %.md | |
$(PANDOC) $(PANDOC_OPTIONS) $(PANDOC_EPUB_OPTIONS) -o $@ $< | |
# Targets and dependencies | |
.PHONY: all clean | |
all : $(EXPORTED_DOCS) | |
clean: | |
- $(RM) $(EXPORTED_DOCS) |
I also really like this! Is this under an open source license?
hmm?
Thanks, i have been using this for some time now, works really nice! In the meantime I was wondering if somebody could help out to make the makefile convert only a specific '.md'-file in a folder by typing something like make name-of-the-article
. Is this possible?
I am sure that you, @floriandierickx, have already figured this out in the mean time, but for others with the same request:
make
understands the %.pdf : %.md
as a target itself ("generate whatever.pdf from whatever.md") , so if you have foo.md
and want foo.pdf
, all you'd have to type is make foo.pdf
and make
will understand what to do (check if the PDF is fresh enough, and if not, generate it).
It just won't show up in your tab completions in your shell, since whoever made the bash autocompletions didn't anticipate this need.
Hi, sorry for a noob question. Where do I store this makefile so it is available in any directories? In my root directory? Or does it have to be in the same folder that I am making the file?
Sorry that I never noticed this comments before.
Re: Licensing: Consider it public-domain
Re: File location: Typically people put the makefile in the directory where you run make
from. But you could do something like make -f ~/util/pandoc/Makefile
Really like this makefile and would like to use it. What license is it under?