From d73c922e3d1cc0085aab0488d1b8d2c7ff4f09d9 Mon Sep 17 00:00:00 2001 From: Karl Berry 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