From d73c922e3d1cc0085aab0488d1b8d2c7ff4f09d9 Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Wed, 22 Aug 2018 21:20:03 +0000
Subject: restore schule, tikz symbols and all

git-svn-id: svn://tug.org/texlive/trunk@48453 c570f23f-e606-0410-a88d-b1316a301751
---
 Master/texmf-dist/doc/latex/schule/devModule.tex | 184 +++++++++++++++++++++++
 1 file changed, 184 insertions(+)
 create mode 100644 Master/texmf-dist/doc/latex/schule/devModule.tex

(limited to 'Master/texmf-dist/doc/latex/schule/devModule.tex')

diff --git a/Master/texmf-dist/doc/latex/schule/devModule.tex b/Master/texmf-dist/doc/latex/schule/devModule.tex
new file mode 100644
index 00000000000..981950a01be
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/schule/devModule.tex
@@ -0,0 +1,184 @@
+\section{Modularität}
+	\label{sec:devmodule}
+	\subsection{Erläuterungen zum Modulsystem}
+	Ein zentrales Problem des alten Schule-Pakets bis Version 0.6 
+	war, dass es sehr monolithisch aufgebaut und alles integrierte, 
+	was im Schulalltag und in der Lehrerausbildung nützlich sein 
+	könnte. So wurden die Weiterentwicklung und Übergabe an neue 
+	Maintainer schwierig, da stets eine Einarbeitung in alle Bereiche 
+	erforderlich war.
+	
+	Die grundlegende Entscheidung für das neue Schule-Paket ist es 
+	also, eine Modularisierung zu etablieren, die, zusätzlich zu 
+	einem stabilen Kern, verschiedene Funktionen und Fachspezifika 
+	entsprechend kapselt und von diesem Kern trennt.
+	
+	Ein eindeutiger Aufbau dieser Module soll dafür sorgen, dass es 
+	leichter wird, neue Funktionen zu ergänzen, ohne den gesamten 
+	Quelltext des Pakets kennen und verstehen zu müssen.
+	
+	Grundsätzlich gibt es drei verschiedene Arten von Modulen im
+	Schule-Paket: \textbf{Module}, \textbf{Fachmodule} und
+	\textbf{Zusatzpakete}, \vgl\space \prettyref{sec:begriffe}.
+	
+	Erweiterungen ohne direkten Bezug (also alles, das auch ohne das
+	Schule-Paket sinnvoll genutzt werden kann) zum Paket sollten in
+	Form unabhängiger Zusatzmodule implementiert werden. 
+	
+	\subsection{Aufbau eines Moduls}
+
+	\label{sec:devmoduleModul}
+	
+	Ein Modul für das Schule-Paket besteht aus einem Unterverzeichnis
+	mit dem Namen des Moduls, das im Unterverzeichnis \enquote{Module}
+	des	Pakets liegt.
+	
+	Ist ein solches Verzeichnis vorhanden, kann das Modul direkt über
+	seinen Namen eingebunden werden, \vgl\space\prettyref{sec:module}.
+	Der Modulmechanismus sorgt dafür, dass die entsprechenden
+	Abschnitte des Moduls an den richtigen Stellen des Quelltextes
+	eingebunden werden. Es sind die folgenden drei Abschnitte
+	definiert:
+	
+	\begin{description}
+		\item[\texttt{optionen.tex}] $\rightarrow$ Paketoptionen des
+		 	Moduls, \vgl\space Paket \pkg{pgfopts}
+		\item[\texttt{pakete.tex}] $\rightarrow$ Paketabhängigkeiten
+			des Moduls
+		\item[\texttt{code.tex}] $\rightarrow$ Implementierung des
+			Moduls
+	\end{description}
+	
+	All diese Abschnitte sind optional und werden geladen, wenn sie
+	vorhanden sind. Ein Modul kann also beispielsweise nur aus einer
+	\texttt{code.tex}-Datei bestehen, wenn es nur einige Makros
+	definiert.
+	
+	\subsubsection{Beispiel}
+	\label{sec:devmoduleModulBeispiel}
+	\paragraph{HalloWelt/optionen.tex}
+\begin{sourcecode}[gobble=0]
+% ********************************************************************
+% * Paketoptionen                                                    *
+% ********************************************************************
+
+% Boolesche Optionen
+% ********************************************************************
+\newboolean{schule@nutzeGoodbye}
+
+% Standardwerte
+% ********************************************************************
+\newcommand{\schule@weltname}{Welt}
+
+% Definition der Paketoptionen
+% ********************************************************************
+\pgfkeys{
+  /schule/.cd,
+  weltname/.store in=\schule@weltname,
+  nutzeGoodbye/.value forbidden,
+  nutzeGoodbye/.code=\setboolean{schule@datumAnzeigen}{true},
+}
+\end{sourcecode}
+
+	\paragraph{HalloWelt/pakete.tex}
+\begin{sourcecode}[gobble=0]
+% ********************************************************************
+% * Paketabhängigkeiten                                              *
+% ********************************************************************
+
+\RequirePackage{ifthenelse}
+\end{sourcecode}
+
+	\paragraph{HalloWelt/code.tex}
+\begin{sourcecode}[gobble=0]
+% ********************************************************************
+% * Hallo Welt!                                                      *
+% ********************************************************************
+
+\newcommand{\halloWelt}{
+  \ifthenelse{\boolean{schule@nutzeGoodbye}}{
+    Goodbye \schule@weltname!
+  }{
+    Hallo \schule@weltname!
+  }
+}
+\end{sourcecode}
+	
+	
+	\subsection{Aufbau eines Fachmoduls}
+	
+	\label{sec:devmoduleFachmodul}
+		
+	Ein Fachmodul für das Schule-Paket besteht aus einem
+	Unterverzeichnis mit dem Namen des Fachmoduls, das im
+	Unterverzeichnis \enquote{Faecher} des Pakets liegt.
+	
+	Ist ein solches Verzeichnis vorhanden, kann das Fachmodul direkt
+	über seinen Namen eingebunden werden,
+	\vgl\space\prettyref{sec:faecher}.
+	Der Modulmechanismus sorgt dafür, dass die entsprechenden
+	Abschnitte des Fachmoduls an den richtigen Stellen des Quelltextes
+	eingebunden werden. Es sind die folgenden vier Abschnitte
+	definiert:
+	
+	\begin{description}
+		\item[\texttt{optionen.tex}] $\rightarrow$ Paketoptionen des
+		 	Moduls, \vgl\space Paket \pkg{pgfopts}
+		\item[\texttt{pakete.tex}] $\rightarrow$ Paketabhängigkeiten
+			des Moduls
+		\item[\texttt{code.tex}] $\rightarrow$ Implementierung des
+			Moduls, die unabhängig von der Art der Einbindung des
+			Faches geladen wird.
+		\item[\texttt{standalone.tex}] $\rightarrow$ Implementierung,
+			die nur geladen wird, wenn das Fach als Hauptfach 
+			angegeben wird, \dsh\space wenn das Fach mit der 
+			Paketoption \keyis{fach}{Fach} geladen wurde, jedoch 
+			nicht, wenn das Fach mit \keyis{weitereFaecher}{\dots 
+			Fach,\dots} geladen wurde. 
+	\end{description}
+	
+	All diese Abschnitte sind optional und werden geladen, wenn sie
+	vorhanden sind. Ein Modul kann also beispielsweise nur aus einer
+	\texttt{code.tex}-Datei bestehen, wenn es nur einige Makros
+	definiert.
+	
+	Siehe auch das Beispiel für die Implementierung eines Moduls in 
+	\prettyref{sec:devmoduleModulBeispiel}.
+	
+	\subsection{Aufbau eines Dokumenttyps}
+	
+	\label{sec:devDokumenttyp}
+		
+	Ein Dokumenttyp für das Schule-Paket besteht aus einem
+	Unterverzeichnis mit dem Namen des Dokumenttyps, das im
+	Unterverzeichnis \enquote{Dokumenttypen} des Pakets liegt.
+	
+	Ist ein solches Verzeichnis vorhanden, kann der Dokumenttyp 
+	direkt über seinen Namen eingebunden werden,
+	\vgl\space\prettyref{sec:typen}.
+	Der Modulmechanismus sorgt dafür, dass die entsprechenden
+	Abschnitte des Dokumenttyps an den richtigen Stellen des 
+	Quelltextes eingebunden werden. Es sind die folgenden drei
+	Abschnitte definiert:
+	
+	\begin{description}
+		\item[\texttt{optionen.tex}] $\rightarrow$ Paketoptionen des
+		 	Dokumenttyps, \vgl\space Paket \pkg{pgfopts}
+		\item[\texttt{pakete.tex}] $\rightarrow$ Paketabhängigkeiten
+			des Dokumenttyps
+		\item[\texttt{code.tex}] $\rightarrow$ Implementierung des
+			Dokumenttyps.
+	\end{description}
+	
+	All diese Abschnitte sind optional und werden geladen, wenn sie
+	vorhanden sind. Ein Modul kann also beispielsweise nur aus einer
+	\texttt{code.tex}-Datei bestehen, wenn es nur einige Makros
+	definiert.
+	
+	Sind die Abschnitte nicht vorhanden, so wird in jedem Fall der
+	entsprechende Abschnitt des Dokumenttyps \enquote{Arbeitsblatt}
+	(ab) geladen. Soll dies unterbleiben, muss der Abschnitt also
+	auf jeden Fall angelegt werden.
+	
+	Siehe auch das Beispiel für die Implementierung eines Moduls in 
+	\prettyref{sec:devmoduleModulBeispiel}.
\ No newline at end of file
-- 
cgit v1.2.3

