diff options
-rw-r--r-- | man/man1/markdown2pdf.1 | 8 | ||||
-rw-r--r-- | markdown2pdf | 62 |
2 files changed, 54 insertions, 16 deletions
diff --git a/man/man1/markdown2pdf.1 b/man/man1/markdown2pdf.1 index 685f0af81..894d05ec3 100644 --- a/man/man1/markdown2pdf.1 +++ b/man/man1/markdown2pdf.1 @@ -2,14 +2,14 @@ .SH NAME markdown2pdf \- converts markdown-formatted text to PDF, using pdflatex .SH SYNOPSIS -.B markdown2pdf [input-file] +.B markdown2pdf [-o|--output output-file] [input-file] .SH DESCRIPTION .B markdown2pdf converts input-file (or text from STDIN) from markdown-formatted plain text to PDF, using pdflatex. The name of the output file is derived -from the input file; thus, for example, if the input file is 'hello.txt', -the output file will be 'hello.pdf'. If the input is read from STDIN, the -output file will be named 'stdin.pdf'. +from the input file, if it is not specified; thus, for example, if the input +file is 'hello.txt', the output file will be 'hello.pdf'. If the input is +read from STDIN, the output file will be named 'stdin.pdf'. .SH AUTHOR John MacFarlane <jgm at berkeley.edu> .SH "SEE ALSO" diff --git a/markdown2pdf b/markdown2pdf index 6a76aab7d..bea336a07 100644 --- a/markdown2pdf +++ b/markdown2pdf @@ -1,4 +1,4 @@ -#!/bin/sh -e +#!/bin/sh # converts markdown to latex, then uses latex to make a PDF [ -n "$(which pandoc)" ] || { @@ -10,17 +10,55 @@ exit 1 } -TEMP=${TMPDIR-/tmp}/markdown2pdf.$$ -trap "status=$?; rm -rf $TEMP; exit $status" 0 INT +outfile= +for option; do + if [ -n "$prev" ]; then + eval "$prev=\$option" + prev= + shift + continue + fi + optarg=$(expr "x$option" : 'x[^=]*=\(.*\)') + case $option in + -h | --h | --help ) + help=yes + shift ;; + -o | --o | --output ) + prev=outfile + shift ;; + -o=* | --o=* | --output=* ) + outfile=$optarg + shift ;; + -* ) echo >&2 "$0: unknown option: $option; aborting" + exit 1 ;; + * ) break ;; + esac +done -if [ -z "$1" ]; then - BASE='stdin' # input is STDIN, since no argument given -else - filename=${1##*/} - BASE=${filename%\.*} +if [ "$help" = "yes" ]; then + echo "Usage: $0 [-o|--output output-file] [input-file]" + exit 0 +fi + +infile=$1 +if [ -z "$outfile" ]; then + if [ -n "$infile" ]; then + outfile=${infile%.*}.pdf + else + outfile='stdin.pdf' # input is STDIN, since no argument given + fi fi -mkdir -p $TEMP && iconv -t utf-8 $* | pandoc -w latex -s > $TEMP/$BASE.tex +BASE=${outfile##*/} +BASE=${BASE%.*} + +set -e + +TEMP=${TMPDIR-/tmp}/markdown2pdf.$$ +trap "status=$?; rm -rf $TEMP; exit $status" 0 INT +mkdir -p $TEMP + +iconv -t utf-8 $infile | pandoc -w latex -s > $TEMP/$BASE.tex ( cd $TEMP if ! pdflatex -interaction=batchmode $BASE.tex >/dev/null 2>&1; then @@ -35,10 +73,10 @@ if [ -f $BASE.pdf ]; then is_target_exists=1 fi -cp --suffix=~ --backup $TEMP/$BASE.pdf . +mv --suffix=~ --backup $TEMP/$BASE.pdf $outfile -echo -n >&2 "Created $BASE.pdf" +echo -n >&2 "Created $outfile" [ -z "$is_target_exists" ] || { - echo -n >&2 " (previous file has been backed up as '$BASE.pdf~')" + echo -n >&2 " (previous file has been backed up as '$outfile~')" } echo >&2 . |