76 lines
2.4 KiB
Bash
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"
|