md-to-pdf/alternatives.sh
2021-09-13 20:52:32 +02:00

66 lines
1.7 KiB
Bash

#!/usr/bin/env bash
function convert1(){
md="${1}"
out="${md}".pdf
sudo pacman -S --needed pandoc
# kpathsea requires mktexfmt which is provided by texlive-core
sudo pacman -S --needed texlive-core
# Does not support images with relative paths
pandoc "${md}" -o "${out}" \
--from=gfm \
--table-of-contents \
--pdf-engine=xelatex \
--highlight-style=monochrome \
--number-sections \
-V 'fontsize: 12pt' \
-V 'papersize: A4' \
-V 'urlcolor: blue' \
-V 'date: \today{}' \
-V 'documentclass:article' \
-V 'geometry:margin=1.5cm'
}
function convert2(){
md="${1}"
# * https://www.npmjs.com/package/markdown-pdf
# * https://www.npmjs.com/package/remarkable
# * https://www.npmjs.com/package/markdown-toc
#
# > By default, remarkable is configured to be similar to GFM,
# > but with HTML disabled. This is easy to change if you prefer
# > different settings.
sudo pacman -S --needed nodejs-markdown-pdf
sudo pacman -S --needed nodejs-markdown-toc # optional for TOC
# Optional: Insert TOC
add-toc "${md}"
md="${md}".TOC
# Supports relative image paths and HTML images
markdown-pdf \
--paper-format=A4 \
--paper-orientation=portrait \
--paper-border=15mm \
--remarkable-options='{ "html": "false" }' \
"${md}"
}
function add-toc(){
md="${1}"
out="${1}".TOC
# If there is a TOC anchor, the TOC can be inserted in place.
# This is a workaround if no such anchor is present.
head --lines 1 "${md}" > "${out}"
printf '\n\n**Table of Contents**\n\n' >> "${out}"
markdown-toc "${md}" >> "${out}"
printf '\n\n---\n\n' >> "${out}"
tail --lines +2 "${md}" >> "${out}"
}