feat: Fortna-Extraktion nach chapters/ + Sphinx-PDF-Build

Skripte zum Befuellen der Kapitelstruktur aus dem Fortna-Rohmaterial und
Aufbau eines vollstaendigen Sphinx/LaTeX-Builds (nur Code/Config/Doku,
generierte RST/Bilder/PDFs und Rohmaterial via .gitignore ausgeschlossen).

- lib/fortna_inventory.py: Rohmaterial scannen, Sprache+Zielkapitel+Aktion
  zuordnen, results/fortna_inventory.json schreiben
- lib/fortna_convert_chapters.py: 5 Hauptanleitungen volltextig (Text+Bilder)
  konvertieren, Verzeichnislisten (index.de.rst) fuer uebrige Kapitel
- lib/fortna_init_project.py: projekte/fortna/ (anlage.json, overrides, images)
- lib/build_index.py: index.rst mit toctrees aus chapters/**/*.de.rst generieren
- lib/extract_products.py: Symbolfont-Zeichen (PUA) auf Unicode mappen (clean_pua)
- conf.py: Sphinx-Build (lualatex, babel statt polyglossia, iconpackage=none)
- bin/: .bat/.sh-Wrapper fuer alle Skripte + build_pdf
- doc/: Konzept-Plan (plan_fortna_extraktion.md) und lib-Skript-Uebersicht
- requirements.txt: Sphinx + myst-parser ergaenzt

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Michael Stangl
2026-09-23 13:23:32 +02:00
co-authored by Claude Opus 4.8
parent eb9237217e
commit e7aa3b4e4b
30 changed files with 2095 additions and 1 deletions
+38
View File
@@ -0,0 +1,38 @@
@echo off
REM ================================================================
REM Vollstaendiger PDF-Build der Fortna-Dokumentation (DE)
REM
REM Ablauf:
REM 1. index.rst aus vorhandenen chapters/**/*.de.rst generieren
REM 2. sphinx-build -b latex -> _build/latex/*.tex
REM 3. lualatex (via latexmk) -> _build/latex/Fortna_Dokumentation_DE.pdf
REM
REM Voraussetzung: chapters/ ist befuellt (fortna_convert_chapters.bat --apply)
REM ================================================================
call "%~dp0setenv.bat"
if not exist "%PROJECT%\.venv" (
echo FEHLER: .venv nicht gefunden. Bitte zuerst install_py.bat ausfuehren.
exit /b 1
)
call "%PROJECT%\.venv\Scripts\activate.bat"
echo.
echo [1/3] index.rst generieren ...
python "%PV_LIB%\build_index.py"
echo.
echo [2/3] LaTeX-Quellen erzeugen (sphinx-build -b latex) ...
python -m sphinx -b latex "%PROJECT%" "%PROJECT%\_build\latex"
echo.
echo [3/3] PDF erzeugen (lualatex) ...
pushd "%PROJECT%\_build\latex"
latexmk -lualatex -interaction=nonstopmode Fortna_Dokumentation_DE.tex
popd
echo.
echo Fertig. PDF: %PROJECT%\_build\latex\Fortna_Dokumentation_DE.pdf
deactivate
+34
View File
@@ -0,0 +1,34 @@
#!/usr/bin/env bash
# ================================================================
# Vollstaendiger PDF-Build der Fortna-Dokumentation (DE)
# 1. index.rst generieren
# 2. sphinx-build -b latex
# 3. lualatex (via latexmk)
# Voraussetzung: chapters/ ist befuellt (fortna_convert_chapters.sh --apply)
# ================================================================
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/setenv.sh"
if [ ! -d "$PROJECT/.venv" ]; then
echo "FEHLER: .venv nicht gefunden. Bitte zuerst install_py.sh ausfuehren."
exit 1
fi
source "$PROJECT/.venv/bin/activate" 2>/dev/null || source "$PROJECT/.venv/Scripts/activate"
echo ""
echo "[1/3] index.rst generieren ..."
python "$PV_LIB/build_index.py"
echo ""
echo "[2/3] LaTeX-Quellen erzeugen (sphinx-build -b latex) ..."
python -m sphinx -b latex "$PROJECT" "$PROJECT/_build/latex"
echo ""
echo "[3/3] PDF erzeugen (lualatex) ..."
( cd "$PROJECT/_build/latex" && latexmk -lualatex -interaction=nonstopmode Fortna_Dokumentation_DE.tex )
echo ""
echo "Fertig. PDF: $PROJECT/_build/latex/Fortna_Dokumentation_DE.pdf"
deactivate
+26
View File
@@ -0,0 +1,26 @@
@echo off
REM ================================================================
REM Sivas-IDs aus JSON-Baeumen extrahieren
REM
REM Liest JSON-Dateien aus results/ und extrahiert 9-stellige
REM Sivas-Nummern eine Ebene ueber den Blaettern.
REM
REM Verwendung:
REM extractids.bat --filename KA135776
REM extractids.bat --filename KA135776 --tab soll
REM extractids.bat --all
REM ================================================================
call "%~dp0setenv.bat"
REM Pruefe ob venv existiert
if not exist "%PROJECT%\.venv" (
echo FEHLER: .venv nicht gefunden. Bitte zuerst install_py.bat ausfuehren.
exit /b 1
)
call "%PROJECT%\.venv\Scripts\activate.bat"
python "%PV_LIB%\extract_ids.py" %*
deactivate
+22
View File
@@ -0,0 +1,22 @@
@echo off
REM ================================================================
REM chapters/ aus dem Fortna-Inventar befuellen
REM (5 Hauptanleitungen Volltext + Verzeichnislisten)
REM
REM Verwendung:
REM fortna_convert_chapters.bat (Dry-Run)
REM fortna_convert_chapters.bat --apply
REM ================================================================
call "%~dp0setenv.bat"
if not exist "%PROJECT%\.venv" (
echo FEHLER: .venv nicht gefunden. Bitte zuerst install_py.bat ausfuehren.
exit /b 1
)
if "%PV_FORTNA_SOURCE%"=="" set "PV_FORTNA_SOURCE=C:\10-Develop\projekte\Fortna"
call "%PROJECT%\.venv\Scripts\activate.bat"
python "%PV_LIB%\fortna_convert_chapters.py" %*
deactivate
+22
View File
@@ -0,0 +1,22 @@
#!/usr/bin/env bash
# ================================================================
# chapters/ aus dem Fortna-Inventar befuellen
# (5 Hauptanleitungen Volltext + Verzeichnislisten)
# Verwendung:
# bash bin/fortna_convert_chapters.sh (Dry-Run)
# bash bin/fortna_convert_chapters.sh --apply
# ================================================================
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/setenv.sh"
if [ ! -d "$PROJECT/.venv" ]; then
echo "FEHLER: .venv nicht gefunden. Bitte zuerst install_py.sh ausfuehren."
exit 1
fi
export PV_FORTNA_SOURCE="${PV_FORTNA_SOURCE:-C:/10-Develop/projekte/Fortna}"
source "$PROJECT/.venv/bin/activate" 2>/dev/null || source "$PROJECT/.venv/Scripts/activate"
python "$PV_LIB/fortna_convert_chapters.py" "$@"
deactivate
+19
View File
@@ -0,0 +1,19 @@
@echo off
REM ================================================================
REM Projektspezifischen Ordner projekte/fortna/ anlegen
REM
REM Verwendung:
REM fortna_init_project.bat
REM fortna_init_project.bat --force
REM ================================================================
call "%~dp0setenv.bat"
if not exist "%PROJECT%\.venv" (
echo FEHLER: .venv nicht gefunden. Bitte zuerst install_py.bat ausfuehren.
exit /b 1
)
call "%PROJECT%\.venv\Scripts\activate.bat"
python "%PV_LIB%\fortna_init_project.py" %*
deactivate
+19
View File
@@ -0,0 +1,19 @@
#!/usr/bin/env bash
# ================================================================
# Projektspezifischen Ordner projekte/fortna/ anlegen
# Verwendung:
# bash bin/fortna_init_project.sh
# bash bin/fortna_init_project.sh --force
# ================================================================
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/setenv.sh"
if [ ! -d "$PROJECT/.venv" ]; then
echo "FEHLER: .venv nicht gefunden. Bitte zuerst install_py.sh ausfuehren."
exit 1
fi
source "$PROJECT/.venv/bin/activate" 2>/dev/null || source "$PROJECT/.venv/Scripts/activate"
python "$PV_LIB/fortna_init_project.py" "$@"
deactivate
+21
View File
@@ -0,0 +1,21 @@
@echo off
REM ================================================================
REM Fortna-Rohmaterial inventarisieren + Kapitel-Mapping pruefen
REM
REM Verwendung:
REM fortna_inventory.bat
REM fortna_inventory.bat --lang de
REM ================================================================
call "%~dp0setenv.bat"
if not exist "%PROJECT%\.venv" (
echo FEHLER: .venv nicht gefunden. Bitte zuerst install_py.bat ausfuehren.
exit /b 1
)
if "%PV_FORTNA_SOURCE%"=="" set "PV_FORTNA_SOURCE=C:\10-Develop\projekte\Fortna"
call "%PROJECT%\.venv\Scripts\activate.bat"
python "%PV_LIB%\fortna_inventory.py" %*
deactivate
+19
View File
@@ -0,0 +1,19 @@
#!/usr/bin/env bash
# ================================================================
# Fortna-Rohmaterial inventarisieren + Kapitel-Mapping pruefen
# Verwendung: bash bin/fortna_inventory.sh [--lang de]
# ================================================================
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/setenv.sh"
if [ ! -d "$PROJECT/.venv" ]; then
echo "FEHLER: .venv nicht gefunden. Bitte zuerst install_py.sh ausfuehren."
exit 1
fi
export PV_FORTNA_SOURCE="${PV_FORTNA_SOURCE:-C:/10-Develop/projekte/Fortna}"
source "$PROJECT/.venv/bin/activate" 2>/dev/null || source "$PROJECT/.venv/Scripts/activate"
python "$PV_LIB/fortna_inventory.py" "$@"
deactivate
+20
View File
@@ -0,0 +1,20 @@
@echo off
REM ================================================================
REM DOCU_BUILD - Projektdaten aus Excel-Stuecklisten extrahieren
REM ================================================================
call "%~dp0setenv.bat"
if not exist "%PROJECT%\.venv" (
echo FEHLER: Virtual environment nicht gefunden.
echo Bitte zuerst bin\install_py.bat ausfuehren.
exit /b 1
)
call "%PROJECT%\.venv\Scripts\activate.bat"
echo.
echo Extrahiere Projektdaten aus Excel-Stuecklisten ...
echo.
python "%PV_LIB%\project_from_xlsx.py" %*