#!/usr/bin/env bash set -e # LaTeX Docker Builder Entrypoint # Unterstützt Befehle: # build [datei.tex] (Standard: baut seminararbeit.tex oder main.tex) # clean (Führt latexmk -C aus) # watch [datei.tex] (Kontinuierlicher Rebuild mit latexmk -pvc) # Beliebiger Befehl (z.B. latexmk -pdf ...) resolve_target() { # 1. Wenn explizit als Argument übergeben if [ -n "$1" ]; then echo "$1" return fi # 2. Bekannte typische Hauptdateinamen prüfen for name in seminararbeit.tex main.tex thesis.tex bachelorarbeit.tex masterarbeit.tex arbeit.tex document.tex index.tex; do if [ -f "$name" ]; then echo "$name" return fi done # 3. Automatische Suche nach einer .tex-Datei mit \documentclass im Verzeichnis candidates=$(grep -l "\\\\documentclass" *.tex 2>/dev/null || true) count=$(echo "$candidates" | grep -v '^$' | wc -l) if [ "$count" -eq 1 ]; then echo "$candidates" return fi # Fallback: latexmk entscheidet selbst anhand von .latexmkrc oder allen tex-Dateien echo "" } COMMAND="${1:-build}" case "$COMMAND" in build) shift || true TARGET=$(resolve_target "$1") echo "==> Starte LaTeX Build..." if [ -n "$TARGET" ]; then echo "==> Kompiliere: $TARGET" exec latexmk -pdf "$TARGET" else echo "==> Keine Hauptdatei angegeben, führe latexmk -pdf aus..." exec latexmk -pdf fi ;; clean) shift || true echo "==> Bereinige Ausgabedateien (latexmk -C)..." exec latexmk -C "$@" ;; watch) shift || true TARGET=$(resolve_target "$1") echo "==> Starte kontinuierlichen Watch-Modus (latexmk -pvc -view=none)..." if [ -n "$TARGET" ]; then exec latexmk -pvc -view=none -e '$sleep_time=1;' -pdf "$TARGET" else exec latexmk -pvc -view=none -e '$sleep_time=1;' -pdf fi ;; *) exec "$@" ;; esac