v0.3.0
This commit is contained in:
parent
b4b06cd7e0
commit
415446e688
1
.gitignore
vendored
1
.gitignore
vendored
@ -5,6 +5,7 @@
|
||||
INHALT.md
|
||||
.gitkeep
|
||||
desktop.ini
|
||||
#NOTES.md
|
||||
|
||||
# Pandoc
|
||||
missfont.log
|
||||
|
1
.vscode/cspell.json
vendored
1
.vscode/cspell.json
vendored
@ -43,6 +43,7 @@
|
||||
"realAscot",
|
||||
"Schottky",
|
||||
"Skotarczak",
|
||||
"texlive",
|
||||
"tocgen"
|
||||
]
|
||||
}
|
||||
|
@ -1,10 +1,14 @@
|
||||
# Changelog - Elektrotechnik Handbuch
|
||||
|
||||
- **2025-06-25**
|
||||
- **Hinzugefügt:**
|
||||
- [x] Variablen aus Makefile in config.mk ausgelagert
|
||||
|
||||
- **2025-05-19**
|
||||
- **Hinzugefügt:**
|
||||
- basis Konfiguration
|
||||
- [x] Basis Konfiguration
|
||||
- **Geändert:**
|
||||
- [X] Verzeichnistiefe über Makefile nun einstellbar (TOCDEPTH)
|
||||
- [X] Verzeichnistiefe über Makefile nun einstellbar (TOCDEPTH)
|
||||
|
||||
- **2025-05-18**
|
||||
- initial commit
|
||||
|
53
Makefile
53
Makefile
@ -1,46 +1,12 @@
|
||||
# Makefile für Markdown-eBook-Projekt Rust Handbuch mit Pandoc
|
||||
# (C) 2025 - Adam Skotarczak - 19/06/2025
|
||||
|
||||
# === Allgemeine Konfiguration ===
|
||||
# === load Configfile ===
|
||||
include config.mk
|
||||
|
||||
# === Titel des eBooks ===
|
||||
TITLE := Vorlage_eBook
|
||||
|
||||
# === Verzeichnis mit Markdown-Dateien ===
|
||||
MANUSCRIPT := manuscript
|
||||
|
||||
# === Ausgabeordner für Builds ===
|
||||
OUTPUT := build
|
||||
|
||||
# === Metadaten für das eBook ===
|
||||
METADATA := metadata/ebook.yaml
|
||||
|
||||
# === CSS-Datei für das eBook ===
|
||||
CSS := styles/ebook.css
|
||||
|
||||
# === LaTeX-Vorlage für das eBook ===
|
||||
TEX_EBOOK := styles/ebook-template.tex
|
||||
|
||||
# === LaTeX-Vorlage für den Druck ===
|
||||
TEX_PRINT := styles/print-template.tex
|
||||
|
||||
# === Logo für das eBook ===
|
||||
LOGO := media/logo/logo.png
|
||||
|
||||
# === Pfad zu Hilfswerkzeugen ===
|
||||
TOOLPATH := tools
|
||||
|
||||
# === LaTeX Geometrie-Einstellungen (z.B. A5-Papier) ===
|
||||
GEOMETRY := geometry:a4paper
|
||||
|
||||
# === Schriftart für LaTeX ===
|
||||
FONT := Noto Sans CJK SC
|
||||
|
||||
# === Python Index für make toc ===
|
||||
INDEXFILE := INHALT
|
||||
|
||||
# === Verzeichnistiefe im eBook ===
|
||||
TOCDEPTH := 3
|
||||
ifndef OUTPUT
|
||||
$(error Bitte config.mk definieren!)
|
||||
endif
|
||||
|
||||
# === Automatische Konfiguration ===
|
||||
VERSION := $(shell cat VERSION)
|
||||
@ -60,13 +26,6 @@ endif
|
||||
MODE ?= prod
|
||||
|
||||
MD_ALL = $(wildcard $(MANUSCRIPT)/*.md)
|
||||
|
||||
# Dateien auslassen im MODE prod
|
||||
EXCLUDE_prod := \
|
||||
$(MANUSCRIPT)/00_deckblatt.md \
|
||||
$(MANUSCRIPT)/00_Deckblatt.md \
|
||||
$(MANUSCRIPT)/99_test.md
|
||||
|
||||
MD_FILES_prod := $(filter-out $(EXCLUDE_prod), $(MD_ALL))
|
||||
MD_FILES_dev = $(MD_ALL)
|
||||
|
||||
@ -205,7 +164,7 @@ toc:
|
||||
# === Bereinigen der Ausgaben ===
|
||||
clean:
|
||||
@rm -rf $(OUTPUT)/*
|
||||
@echo "🧹 alle Builds unter $(OUTPUT)\ gelöscht."
|
||||
@echo "🧹 alle Builds unter $(OUTPUT)/ gelöscht."
|
||||
@rm -f $(INDEXFILE).md
|
||||
@echo "🧹 $(INDEXFILE).md gelöscht."
|
||||
|
||||
|
67
README.md
67
README.md
@ -16,6 +16,16 @@
|
||||
- [eBook (epub)](#ebook-epub)
|
||||
- [DOCX (Office/ Word)](#docx-office-word)
|
||||
- [Build](#build)
|
||||
- [=== CSS-Datei für das eBook ===](#-css-datei-für-das-ebook-)
|
||||
- [=== LaTeX-Vorlage für das eBook ===](#-latex-vorlage-für-das-ebook-)
|
||||
- [=== LaTeX-Vorlage für den Druck ===](#-latex-vorlage-für-den-druck-)
|
||||
- [=== Logo für das eBook ===](#-logo-für-das-ebook-)
|
||||
- [=== Pfad zu Hilfswerkzeugen ===](#-pfad-zu-hilfswerkzeugen-)
|
||||
- [=== LaTeX Geometrie-Einstellungen (z.B. A5-Papier) ===](#-latex-geometrie-einstellungen-zb-a5-papier-)
|
||||
- [=== Schriftart für LaTeX ===](#-schriftart-für-latex-)
|
||||
- [=== Python Index für make toc ===](#-python-index-für-make-toc-)
|
||||
- [=== Verzeichnistiefe im eBook ===](#-verzeichnistiefe-im-ebook-)
|
||||
- [](#)
|
||||
- [Erklärung zum Makefile](#erklärung-zum-makefile)
|
||||
- [Struktur beim schreiben des Buchs](#struktur-beim-schreiben-des-buchs)
|
||||
- [Schreiben mit VS-Code](#schreiben-mit-vs-code)
|
||||
@ -106,14 +116,14 @@ Falls der Build trotzdem scheitert oder du dir den Aufwand sparen möchtest, lad
|
||||
- Zusätzlich deutsche Sprache (falls babel fehlt):
|
||||
|
||||
```bash
|
||||
sudo apt install texlive-lang-german
|
||||
sudo apt install Texlive-lang-german
|
||||
```
|
||||
|
||||
Ich empfehle aber dringend `texlive-full` zu installieren da man erfahrungsgemäss am Anfang auf viele Fehler mit fehlenden Abhängigkeiten stößt wenn man Templates testet.
|
||||
|
||||
- **✅ Make installieren:**
|
||||
|
||||
Make oder besser die Anwendung `make` wird benötigt um die Erstellung der Ziele wie PDF zu automatisiern.
|
||||
Make oder besser die Anwendung `make` wird benötigt um die Erstellung der Ziele wie PDF zu automatisieren.
|
||||
Dafür liegt auch das vorbereitete Skript `Makefile` im Hauptverzeichnis. Die ist nur optional und man kann es selbstverständlich auch manuell durchführen.
|
||||
|
||||
```sh
|
||||
@ -145,7 +155,8 @@ sudo apt install fonts-symbola
|
||||
|
||||
### Build
|
||||
|
||||
Schau mal ins [`Makefile`](./Makefile), dort findest Du einige Kandidaten um aus dem vorliegenden Markdown Manuskript eine entsprechende Version zu konvertieren. Es stehen zum aktuellen Zeitpunkt folgende zur Verfügung:
|
||||
Schau mal ins [`Makefile`](./Makefile), dort findest Du einige Kandidaten, um aus dem vorliegenden Markdown Manuskript eine entsprechende Version zu konvertieren.
|
||||
Es stehen zum aktuellen Zeitpunkt folgende zur Verfügung:
|
||||
|
||||
```sh
|
||||
make pdf
|
||||
@ -153,20 +164,44 @@ Schau mal ins [`Makefile`](./Makefile), dort findest Du einige Kandidaten um aus
|
||||
make docx
|
||||
```
|
||||
|
||||
Du musst im Kopfbereich der Datei zwingend ein paar Einstellungen vornehmen:
|
||||
Du musst in der config.mk zwingend ein paar Einstellungen vornehmen:
|
||||
|
||||
: Table with multiline cells
|
||||
:--------------------------:
|
||||
| **Variable** | **Funktion** |
|
||||
|--------------------------------------------|-------------------------------------------|
|
||||
| `TITLE := Vorlage_eBook` | Titel des eBooks |
|
||||
| `MANUSCRIPT := manuscript` | Verzeichnis mit den Markdown-Dateien |
|
||||
| `OUTPUT := build` | Ausgabeordner für Builds |
|
||||
| `METADATA := metadata/ebook.yaml` | Metadaten für das eBook |
|
||||
| `EXCLUDE_prod := \`
|
||||
`$(MANUSCRIPT)/00_deckblatt.md \` | Dateien auslassen im MODE prod |
|
||||
|
||||
|
||||
$(MANUSCRIPT)/00_Deckblatt.md \
|
||||
$(MANUSCRIPT)/99_test.md
|
||||
|
||||
|
||||
# === CSS-Datei für das eBook ===
|
||||
CSS := styles/ebook.css
|
||||
# === LaTeX-Vorlage für das eBook ===
|
||||
TEX_EBOOK := styles/ebook-template.tex
|
||||
# === LaTeX-Vorlage für den Druck ===
|
||||
TEX_PRINT := styles/print-template.tex
|
||||
# === Logo für das eBook ===
|
||||
LOGO := media/logo/logo.png
|
||||
# === Pfad zu Hilfswerkzeugen ===
|
||||
TOOLPATH := tools
|
||||
# === LaTeX Geometrie-Einstellungen (z.B. A5-Papier) ===
|
||||
GEOMETRY := geometry:a4paper
|
||||
# === Schriftart für LaTeX ===
|
||||
FONT := Noto Sans CJK SC
|
||||
# === Python Index für make toc ===
|
||||
INDEXFILE := INHALT
|
||||
# === Verzeichnistiefe im eBook ===
|
||||
TOCDEPTH := 3
|
||||
#
|
||||
|
||||
| Parameter | Beschreibung |
|
||||
|-------------------------------------------|-------------------------------------------------------------|
|
||||
| `# === Allgemeine Konfiguration ===` | |
|
||||
| `TITLE := rust-tutorial` | Dateiname ohne Erweiterung für die Ausgabe nach dem Build |
|
||||
| `MANUSCRIPT := manuscript` | |
|
||||
| `MANUSCRIPT := manuscript` | |
|
||||
| `OUTPUT := build` | |
|
||||
| `METADATA := metadata/ebook.yaml` | |
|
||||
| `CSS := styles/ebook.css` | |
|
||||
| `TEX_EBOOK := styles/ebook-template.tex` | |
|
||||
| `TEX_PRINT := styles/print-template.tex` | |
|
||||
| `LOGO := media/logo/logo.png` | Logo für den epub Build |
|
||||
|
||||
---
|
||||
|
||||
|
33
config.mk
Normal file
33
config.mk
Normal file
@ -0,0 +1,33 @@
|
||||
# === Allgemeine Konfiguration ===
|
||||
|
||||
# === Titel des eBooks ===
|
||||
TITLE := Vorlage_eBook
|
||||
# === Verzeichnis mit Markdown-Dateien ===
|
||||
MANUSCRIPT := manuscript
|
||||
# === Ausgabeordner für Builds ===
|
||||
OUTPUT := build
|
||||
# === Metadaten für das eBook ===
|
||||
METADATA := metadata/ebook.yaml
|
||||
# === CSS-Datei für das eBook ===
|
||||
CSS := styles/ebook.css
|
||||
# === LaTeX-Vorlage für das eBook ===
|
||||
TEX_EBOOK := styles/ebook-template.tex
|
||||
# === LaTeX-Vorlage für den Druck ===
|
||||
TEX_PRINT := styles/print-template.tex
|
||||
# === Logo für das eBook ===
|
||||
LOGO := media/logo/logo.png
|
||||
# === Pfad zu Hilfswerkzeugen ===
|
||||
TOOLPATH := tools
|
||||
# === LaTeX Geometrie-Einstellungen (z.B. A5-Papier) ===
|
||||
GEOMETRY := geometry:a4paper
|
||||
# === Schriftart für LaTeX ===
|
||||
FONT := Noto Sans CJK SC
|
||||
# === Python Index für make toc ===
|
||||
INDEXFILE := INHALT
|
||||
# === Verzeichnistiefe im eBook ===
|
||||
TOCDEPTH := 3
|
||||
# Dateien auslassen im MODE prod
|
||||
EXCLUDE_prod := \
|
||||
$(MANUSCRIPT)/00_deckblatt.md \
|
||||
$(MANUSCRIPT)/00_Deckblatt.md \
|
||||
$(MANUSCRIPT)/99_test.md
|
@ -1,6 +0,0 @@
|
||||
[.ShellClassInfo]
|
||||
IconResource=.\media\favicon.ico,0
|
||||
[ViewState]
|
||||
Mode=
|
||||
Vid=
|
||||
FolderType=Documents
|
160
gitcopy.bat
160
gitcopy.bat
@ -1,160 +0,0 @@
|
||||
@echo off
|
||||
setlocal enabledelayedexpansion
|
||||
chcp 65001 >nul
|
||||
|
||||
REM Skript, um aus einem Projekt mit git-repo, ein portables .zip zu erstellen
|
||||
REM
|
||||
REM (C) 2025 MIT Adam Skotarczak
|
||||
REM
|
||||
REM Version: v1.1.2
|
||||
REM Github: https://github.com/realAscot/gitcopy
|
||||
REM -------------------------------------------------------------------
|
||||
|
||||
|
||||
rem --- Git-Verfügbarkeit prüfen ---
|
||||
where git >nul 2>nul
|
||||
if errorlevel 1 (
|
||||
echo.
|
||||
echo [⚠️] Git ist nicht installiert oder nicht im PATH.
|
||||
echo [📦] Bitte installiere Git von https://git-scm.com/download/win
|
||||
call :show_help
|
||||
echo.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
rem --- Git-Version anzeigen ---
|
||||
for /f "tokens=*" %%i in ('git --version') do set "GIT_VERSION=%%i"
|
||||
|
||||
if defined GIT_VERSION (
|
||||
echo.
|
||||
echo [✅] Gefundene Git-Version: %GIT_VERSION%
|
||||
) else (
|
||||
echo([⚠️] Konnte Git-Version nicht ermitteln.
|
||||
)
|
||||
|
||||
rem Prüfe auf optionalen Parameter "--debug"
|
||||
set DEBUG=0
|
||||
|
||||
if NOT "%~1"=="" (
|
||||
if "%~1"=="--debug" (
|
||||
set DEBUG=1
|
||||
echo [⚠️] Debug-Modus aktiv: Ignoriere offene Commits.
|
||||
exit /b 0
|
||||
) else if "%~1"=="-d" (
|
||||
set DEBUG=1
|
||||
echo [⚠️] Debug-Modus aktiv: Ignoriere offene Commits.
|
||||
exit /b 0
|
||||
) else if "%~1"=="-h" (
|
||||
call :show_help
|
||||
exit /b 0
|
||||
) else if "%~1"=="--help" (
|
||||
call :show_help
|
||||
exit /b 0
|
||||
) else (
|
||||
rem Parameter vorhanden aber nicht erkannt.
|
||||
call :kein_Parameter "%~1"
|
||||
exit /b 1
|
||||
)
|
||||
) else (
|
||||
call :go "%~1"
|
||||
)
|
||||
|
||||
exit /b 0
|
||||
|
||||
:go
|
||||
|
||||
call :generate_timestamp
|
||||
set ZIP_NAME=projektarchiv-%TIMESTAMP%.zip
|
||||
|
||||
rem -------------------------------------------------------------------
|
||||
|
||||
pushd %~dp0
|
||||
|
||||
if %DEBUG%==0 (
|
||||
echo [🔍] Prüfe auf uncommitted oder ungetrackte Änderungen...
|
||||
set "hasChanges="
|
||||
for /f "delims=" %%i in ('git status --porcelain') do (
|
||||
set "hasChanges=1"
|
||||
goto :has_changes
|
||||
)
|
||||
echo [✅] Arbeitsverzeichnis ist sauber.
|
||||
) else (
|
||||
echo [⚠️] Prüfschritt übersprungen.
|
||||
)
|
||||
|
||||
goto :create_zip
|
||||
|
||||
:has_changes
|
||||
echo.
|
||||
echo [⚠️] Es sind uncommitted oder ungetrackte Änderungen vorhanden:
|
||||
echo.
|
||||
git status --short
|
||||
echo.
|
||||
echo [❌] Bitte committe oder stash diese Änderungen, bevor du ein ZIP erstellst.
|
||||
echo [⚠️] versuche --debug um diese Prüfung zu umgehen aber dann wird das Archiv unvollständig.
|
||||
echo.
|
||||
endlocal
|
||||
pause
|
||||
exit /b 1
|
||||
|
||||
:create_zip
|
||||
echo [💾] Erstelle ZIP-Archiv von HEAD...
|
||||
git archive --format=zip --output="%ZIP_NAME%" HEAD
|
||||
if errorlevel 1 (
|
||||
echo [⚠️] Fehler beim Erstellen des Archivs.
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
echo [✅] Archiv erfolgreich erstellt: %CD%\%ZIP_NAME%
|
||||
popd
|
||||
endlocal
|
||||
pause
|
||||
exit /b 0
|
||||
|
||||
:generate_timestamp
|
||||
rem Erzeugt einen Zeitstempel TTMMJJHHMM sicher und universell
|
||||
for /f "tokens=1-4 delims=. " %%d in ('echo %DATE%') do (
|
||||
set "TAG=0%%d"
|
||||
set "MONAT=0%%e"
|
||||
set "JAHR=%%f"
|
||||
)
|
||||
|
||||
for /f "tokens=1-2 delims=: " %%g in ('echo %TIME%') do (
|
||||
set "STUNDE=0%%g"
|
||||
set "MINUTE=0%%h"
|
||||
)
|
||||
|
||||
set "TAG=!TAG:~-2!"
|
||||
set "MONAT=!MONAT:~-2!"
|
||||
set "JAHR=!JAHR:~-2!"
|
||||
set "STUNDE=!STUNDE:~-2!"
|
||||
set "MINUTE=!MINUTE:~-2!"
|
||||
|
||||
set "TIMESTAMP=!TAG!!MONAT!!JAHR!!STUNDE!!MINUTE!"
|
||||
goto :eof
|
||||
|
||||
:kein_Parameter
|
||||
echo.
|
||||
echo [⚠️] Unbekannter Parameter: "%~1" abbruch ...
|
||||
echo.
|
||||
call :show_help
|
||||
exit /b 1
|
||||
|
||||
:show_help
|
||||
echo.
|
||||
echo ℹ️ GitCopy – Hilfe
|
||||
echo =====================
|
||||
echo Erstellt ein ZIP-Archiv vom aktuellen HEAD-Stand des Git-Repositories.
|
||||
echo.
|
||||
echo Verwendung:
|
||||
echo gitcopy.bat [Option]
|
||||
echo.
|
||||
echo Optionen:
|
||||
echo --debug / -d Überspringt die Prüfung auf uncommitted oder ungetrackte Änderungen.
|
||||
echo -h / --help Zeigt diese Hilfe an.
|
||||
echo.
|
||||
endlocal
|
||||
pause
|
||||
goto :eof
|
||||
|
||||
endlocal
|
Loading…
x
Reference in New Issue
Block a user