76 lines
2.4 KiB
Bash

#!/usr/bin/env bash
MD_FILE="$1"
set -e
BASE_DIR="$(pwd)"
PDF_FILE="${BASE_DIR}/pdf/$(basename "$MD_FILE" | sed -e 's/\.md$/.pdf/')"
BUILD_DIR="${BASE_DIR}/build/$(basename "$MD_FILE" | sed -e 's/\.md$//')"
TEMP_MD_FILE="$BUILD_DIR/$(basename "$MD_FILE")"
mkdir -p "$(dirname "$TEMP_MD_FILE")"
cp "$MD_FILE" "$TEMP_MD_FILE"
function download_images() {
echo "download images for $1"
for line in $(grep '!\[.*\](https://.*\.png)' "$1" | sed -e 's/ /%20;/g')
do
src=$(echo "$line" | sed -e 's/^.*(//' -e 's/).*$//' -e 's/%20;/ /g')
echo "download remote image: $src"
mkdir -p "${BASE_DIR}/pdf/images"
name=$(echo "$src" | sed -e 's|^.*/\([^/]*\)$|\1|')
if [[ ! -f "${BASE_DIR}/pdf/images/$name" ]]
then
curl "$src" >"${BASE_DIR}/pdf/images/$name"
else
echo " image already exists"
fi
sed -i "$1" -e "s|$src|${BASE_DIR}/pdf/images/$name|"
done
echo "download done"
}
for line in $(grep '^!\[.*\](.*\.md)$' "$TEMP_MD_FILE" | sed -e 's/ /%20;/g')
do
md_src=$(echo "$line" | sed -e 's/^.*(//' -e 's/).*$//' -e 's/%20;/ /g')
echo "include found: $md_src"
cp "$(pwd)/markdown/$md_src" "$BUILD_DIR/$(basename "$md_src")"
download_images "$BUILD_DIR/$(basename "$md_src")"
sed -i "$BUILD_DIR/$(basename "$md_src")" \
-e 's|\[toc\]||' \
-e 's|^\[parent\].*$||' \
-e 's|^> \[!todo\]|> \\textcolor{cyan}{TODO:}|' \
-e 's|^> \[!warn\]|> \\textcolor{orange}{WARNING:}|' \
-e "s|\`\`\`mermaid|\`\`\`{.mermaid loc=${BASE_DIR}/pdf/images/$(basename "$md_src")}|"
sed -i "$TEMP_MD_FILE" \
-e "s|^\!\[.*\]($md_src)\$|\`\`\`\\{.include shift-heading-level-by=1\\}\n$(basename "$md_src")\n\`\`\`|"
done
download_images "$TEMP_MD_FILE"
sed -i "$TEMP_MD_FILE" \
-e 's|^> \[!todo\]|> \\textcolor{cyan}{TODO:}|' \
-e 's|^> \[!warn\]|> \\textcolor{orange}{WARNING:}|' \
-e "s|\`\`\`mermaid|\`\`\`{.mermaid loc=${BASE_DIR}/pdf/images/$(basename "$MD_FILE")}|"
mkdir -p ${BASE_DIR}/pdf/images/$(basename "$MD_FILE")
cd "$BUILD_DIR"
pandoc --standalone \
--lua-filter=../../converters/include-files.lua \
--lua-filter=../../converters/headers.lua \
-t latex --pdf-engine=xelatex \
--from=markdown+abbreviations \
--template "${BASE_DIR}/converters/template.latex" \
-F "${XDG_DATA_HOME}/npm/bin/mermaid-filter" \
-o "$PDF_FILE" \
"$(basename "$TEMP_MD_FILE")"
cd "$BASE_DIR"