rpg-westreiche/tools/md2odt.sh

43 lines
971 B
Bash
Raw Normal View History

2026-10-25 16:09:59 +01:00
#!/usr/bin/env bash
#
# Markdown (Obsidian) -> editierbares LibreOffice-ODT (A5)
#
# Aufruf:
# ./tools/md2odt.sh <datei.md> [ausgabename-ohne-endung]
#
# Ausgabe (Standard): Druckmaterial/<name>.odt
#
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
VAULT="$ROOT/RPG"
TOOLS="$ROOT/tools"
OUTDIR="${OUTDIR:-$ROOT/Druckmaterial/autogen_inbox}"
if [ "$#" -lt 1 ]; then
echo "Aufruf: $0 <datei.md> [ausgabename]" >&2
exit 1
fi
SRC="$(realpath "$1")"
NAME="${2:-$(basename "$SRC" .md)}"
OUT="$OUTDIR/${NAME}.odt"
mkdir -p "$OUTDIR"
TMP="$(mktemp -d)"
trap 'rm -rf "$TMP"' EXIT
# 1) Obsidian-Syntax vorverarbeiten
python3 "$TOOLS/obsidian_preprocess.py" "$VAULT" < "$SRC" > "$TMP/in.md"
# 2) Markdown -> ODT (A5-Referenzvorlage; H1 bleibt als "Heading 1" erhalten)
pandoc "$TMP/in.md" \
-f markdown+raw_html \
-t odt \
--reference-doc="$TOOLS/a5-reference.odt" \
--lua-filter="$TOOLS/autowidth.lua" \
-o "$OUT"
echo "OK: $OUT"