Softwaretechnik/Studienprojekte/Vorlagen/LaTeX

Aus StudiWiki

Wechseln zu: Navigation, Suche

spec.sty - Benutzungsbeispiel folgt:

% ==============================================================================
%  $Id$
%
%  Description:
%    Latex-.sty-File für Spezifikationen
%    Basierend auf spec.sty von Hans-Malte Kern
%    Geändert von Oliver Kopp
% ==============================================================================

%===============================================================================
% TODO:
%   Bei leeren Vorbedinungen keine TeX-Fehlermeldung
%   Also dass
%     \begin{precond}
%     \end{precond}
%   ohne was dazwischen funktioniert.

%===============================================================================
% Begriffslexikon
%
\newenvironment{nomenclature}
{\begin{itemize}}
{\end{itemize}}

% Begriff
%
%  Parameter
%
%   1 Name
%   2 Englische Uebersetzung
%   3 Erklaerung
%   n/a Synonyme, die in der Spezifikation nicht verwendet werden sollen.
%       Diese werden durch ein (noch zu schreibendes) Skript
%       in saemtlichen Texfiles gesucht und angemeckert.
\newcommand{\term}[3]{\item \textbf{#1} (#2)\\#3}


%===============================================================================
% Use-Cases
%
% Reihenfolge der Environments:
%   * precond
%   * postsuccess
%   * [postfail]
%   * proc
%   * [eproc]
%   * [aproc]

% used to avoid double references
\newcounter{uccount}
\newcommand\uclabel[1]{\theuccount :#1}
\newcommand\refstep[1]{\ref{\uclabel{#1}%
}} %used to reference steps

% Wenn keine alternativen Ablaeufe vorgesehen sind, werden diese eingesetzt
\newcommand\aprocdefault{
\begin{aproc}
  \ageneral Es sind keine alternativen Abl\"aufe vorgesehen.
\end{aproc}
}
\newcounter{aprocexists} %0=keine aproc definiert, 1 sonst

% Wenn keine Fehlerfaelle definiert wruden, werden diese eingesetzt
\newcommand\postfaildefault{
\begin{postfail}
    \cond Es sind keine Fehlerf\"alle vorgesehen.
\end{postfail}
}
\newcounter{postfailexists} %0=keine aproc definiert, 1 sonst

%  Parameter
%
%   1 label
%   2 name
%
\newenvironment{uc}[2][]
{
\stepcounter{uccount}
\setcounter{aprocexists}{0}
\setcounter{postfailexists}{0}
\ifnum\value{section}=0\else\clearpage\fi
\section{#2}\ifx#1\undefined\else\label{#1}\fi
}
{
\ifnum\value{aprocexists}=0\aprocdefault\fi
}

% Vor- und Nachbedingungen als enumeration
\newenvironment{precond}
{\subsection{Vorbedingung}\begin{enumerate}}
{\end{enumerate}}

\newenvironment{postsuccess}
{\subsection{Nachbedingung Erfolg}\begin{enumerate}}
{\end{enumerate}}

\newenvironment{postfail}{
\setcounter{postfailexists}{1}
\subsection{Nachbedingung Fehlschlag}
\begin{enumerate}
}
{
\end{enumerate}
}

% Bedingung
\newcommand{\cond}{\item }

% Beschreibung
\newenvironment{proc}
{
%insert default postfail, if no postfail specified
\ifnum\value{postfailexists}=0\postfaildefault\fi

%begin real Beschreibung
\subsection{Beschreibung}\begin{enumerate}
}
{
\end{enumerate}
}

% Unterpunkte für die Beschreibung
\newenvironment{subproc}
{\begin{enumerate}
    \setlength{\itemsep}{0ex plus 0.2ex}     
    \renewcommand{\labelenumii}{\arabic{enumi}.\alph{enumii}%
}}
{\end{enumerate}}

\newcommand{\step}[1][]{\item \ifx#1\undefined\else\label{\uclabel{#1}}\fi}

% Erweiterungen
\newenvironment{eproc}
{\subsection{Erweiterungen}\begin{itemize}}
{\end{itemize}}

\newcommand{\estep}[1]{\item Bei Punkt \ref{\uclabel{#1}}:\\}

% Alternativen
\newenvironment{aproc}{
\setcounter{aprocexists}{1}
\subsection{Alternativen}
\begin{itemize}
}
{
\end{itemize}
}

\newcommand{\astep}[1]{\item Bei Punkt \refstep{#1}:\\}

\newcommand{\ageneral}{\item Generell: \\}

%%% Local Variables: 
%%% TeX-master: "spec"
%%% End: 

Persönliche Werkzeuge