#!/bin/bash set -e # Bricht bei Fehlern sofort ab # spell:ignore tlmgr texhash texliveonfly beamer biblatex ieee booktabs bigdelim ccicons circuitikz # spell:ignore Ghostscript biber cleveref concmath csquotes currfile enumitem everypage extdash # spell:ignore filehook fmtcount fontawesome fontaxes fontmfizz fontspec fontsrecommended ghostscript # spell:ignore gitea imakeidx infraonly isbn koma latexmk ltablex luatexbase marginnote mathtools # spell:ignore microtype ncctools newpx newtx newunicodechar nextpage parskip pdfcol pdflscape pdfpages # spell:ignore pgfplots pict setspace sidecap siunitx stix subfigure tcolorbox tikzfill titlesec # spell:ignore trimspaces unicode upquote vmargin wrapfig xcharter xltabular xpatch xstring TLMGR=$(which tlmgr) TEXHASH=$(which texhash) echo "=== Starte optimierte LaTeX-Konfiguration ===" # 1. Optionale Updates (NUR aktivieren wenn zwingend nötig, sonst auskommentieren) echo "Aktualisiere tlmgr und alle installierten Pakete..." $TLMGR update --self --all # 2. Nur deinstallieren, falls überhaupt vorhanden if $TLMGR info texliveonfly | grep -q "installed: Yes"; then echo "Deinstalliere veraltetes texliveonfly..." $TLMGR remove texliveonfly fi # 3. ALLE Pakete gebündelt in EINEM Rutsch installieren (only scheme-minimal installed) # Hinweis: scheme-basic beinhaltet bereits scheme-infraonly sowie scheme-minimal echo "Installiere alle benötigten LaTeX-Pakete parallel/gebündelt..." $TLMGR install \ background \ beamer \ biblatex \ biblatex-ieee \ booktabs \ cancel \ caption \ ccicons \ circuitikz \ cleveref \ cm-unicode \ collection-fontsrecommended \ concmath-otf \ contour \ csquotes \ currfile \ datetime2 \ datetime2-english \ datetime2-german \ ean \ ean13isbn \ enumitem \ epigraph \ everypage \ filehook \ fmtcount \ fontawesome5 \ fontaxes \ fontmfizz \ fontspec \ imakeidx \ koma-script \ latexmk \ lastpage \ lineno \ listings \ ltablex \ luatexbase \ marginnote \ mathtools \ microtype \ minted \ multirow \ ncctools \ newpx \ newtx \ newunicodechar \ nextpage \ ocr-b \ parskip \ pdfcol \ pdflscape \ pdfpages \ pgf \ pgfplots \ physics \ pict2e \ ragged2e \ scheme-basic \ setspace \ sidecap \ siunitx \ steinmetz \ stix2-otf \ subfigure \ tcolorbox \ tikzfill \ titlesec \ translations \ trimspaces \ unicode-math \ upquote \ vmargin \ wrapfig \ xcharter \ xltabular \ xpatch \ xstring echo "Deinstalliere unerwünschte LaTeX-Pakete..." # 'ae' und 't1enc' wurden entfernt, da sie geschützte Systempakete sind. # Liste der Pakete, die deinstalliert werden sollen (einfach mit Leerzeichen trennen) PACKETS=("truncate") for packet in "${PACKETS[@]}"; do if tlmgr info "$packet" --only-installed >/dev/null 2>&1; then echo "Lösche Paket: $packet..." tlmgr remove "$packet" || true else echo "Paket '$packet' ist nicht installiert oder wurde bereits gelöscht." fi done # extdash (in ncctools) \ # 4. Datenbank-Refresh (tlmgr install macht das oft automatisch, sicherheitshalber am Ende einmal) echo "Aktualisiere LaTeX-Dateidatenbank..." $TEXHASH # 5. System-Abhängigkeiten prüfen und installieren (Biber & Ghostscript) echo "Überprüfe Linux-Systemkomponenten..." # Liste der zu installierenden Apt-Pakete SYSTEM_PACKAGES="" INSTALLED_PACKAGES="" if ! command -v biber >/dev/null 2>&1; then echo " -> biber fehlt und wird vorgemerkt." SYSTEM_PACKAGES="$SYSTEM_PACKAGES biber" else echo " -> biber ist bereits installiert ($(biber --version | head -n 1))." INSTALLED_PACKAGES="$INSTALLED_PACKAGES biber" fi if ! command -v gs >/dev/null 2>&1; then echo " -> ghostscript (gs) fehlt und wird vorgemerkt." SYSTEM_PACKAGES="$SYSTEM_PACKAGES ghostscript" else echo " -> ghostscript (gs) ist bereits installiert ($(gs --version | head -n 1))." INSTALLED_PACKAGES="$INSTALLED_PACKAGES ghostscript" fi # Paket-Installation basierend auf dem verfügbaren Paketmanager if [ -n "$SYSTEM_PACKAGES" ]; then if command -v apt-get >/dev/null 2>&1; then echo "Debian/Ubuntu-System erkannt. Installiere:$SYSTEM_PACKAGES..." sudo apt-get update && sudo apt-get install -y $SYSTEM_PACKAGES elif command -v pacman >/dev/null 2>&1; then echo "Arch Linux erkannt. Installiere:$SYSTEM_PACKAGES..." # Arch nutzt andere Paketnamen für ghostscript (ghostscript) und biber (biber) sudo pacman -Sy --noconfirm $SYSTEM_PACKAGES else echo "⚠️ Unbekanntes System (kein apt oder pacman gefunden)." echo "Bitte installiere die folgenden Pakete manuell: $SYSTEM_PACKAGES" fi else # Formatierung: Entfernt führende Leerzeichen und ersetzt verbleibende durch Kommata CLEAN_LIST=$(echo $INSTALLED_PACKAGES | sed 's/ /, /g') echo " -> Alle notwendigen Systemkomponenten ($CLEAN_LIST) sind bereits installiert!" fi echo "" echo "=== Speicherplatz-Optimierung ===" read -p "Möchtest du alle alten tlmgr-Paktebackups unwiderruflich löschen? (j/N): " response if [[ "$response" =~ ^[jJ][aA]?$ || "$response" = "j" ]]; then echo "Lösche alte Backups..." $TLMGR backup --clean=0 --all else echo "Backups wurden beibehalten." fi echo "=== Fertig! ===" echo "Reminder: Please update pull/push the ~/gitea/scripts : scripts.git repository!"