diff options
Diffstat (limited to 'src/wrappers/markdown2pdf.in')
-rw-r--r-- | src/wrappers/markdown2pdf.in | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/src/wrappers/markdown2pdf.in b/src/wrappers/markdown2pdf.in new file mode 100644 index 000000000..838767224 --- /dev/null +++ b/src/wrappers/markdown2pdf.in @@ -0,0 +1,64 @@ +#!/bin/sh -e +# converts markdown to latex, then uses latex to make a PDF + +REQUIRED=pdflatex + +### common.sh + +outfile= +while getopts o:h opt; do + case $opt in + o) outfile="$OPTARG" ;; + h|?) usage "[-o output_file] [-h] [input_file]..."; exit 2 ;; + esac +done + +shift $(($OPTIND - 1)) + +### postopts.sh + +### checkin.sh + +if [ -z "$outfile" ]; then + if [ -n "$1" ]; then + outfile="${1%.*}" + else + outfile="stdin" # input is STDIN, since no argument given + fi +fi +case "$outfile" in +*.*) ;; # skip appending extension if one is already present +*) outfile="${outfile%.*}.pdf";; +esac + +### tempdir.sh + +# We should use a filename without white spaces for pdflatex. +TEXNAME=$THIS + +to_utf8 "$@" | runpandoc -w latex -s >$THIS_TEMPDIR/$TEXNAME.tex +( + cd $THIS_TEMPDIR + if ! pdflatex -interaction=batchmode $TEXNAME.tex >/dev/null 2>&1; then + err "LaTeX errors:" + from_utf8 $TEXNAME.log | sed -ne '/^!/,/^ *$/p' >&2 + if grep -q "File \`ucs.sty' not found" $TEXNAME.log; then + err "Please install the 'unicode' package from ctan.org." + fi + exit 1 + fi +) + +is_target_exists= +if [ -f "$outfile" ]; then + is_target_exists=1 + mv -f "$outfile" "$outfile~" +fi + +mv -f $THIS_TEMPDIR/$TEXNAME.pdf "$outfile" + +errn "Created '$outfile'" +[ -z "$is_target_exists" ] || { + errn " (previous file has been backed up as '$outfile~')" +} +err . |