diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/stex/reqdoc/reqdoc.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/stex/reqdoc/reqdoc.dtx | 387 |
1 files changed, 0 insertions, 387 deletions
diff --git a/Master/texmf-dist/source/latex/stex/reqdoc/reqdoc.dtx b/Master/texmf-dist/source/latex/stex/reqdoc/reqdoc.dtx deleted file mode 100644 index 422fa674dcc..00000000000 --- a/Master/texmf-dist/source/latex/stex/reqdoc/reqdoc.dtx +++ /dev/null @@ -1,387 +0,0 @@ -% \iffalse meta-comment -% Semantic Markup for Requirement Specification Documents -% Copyright (c) 2008 Michael Kohlhase, all rights reserved -% -% This file is distributed under the terms of the LaTeX Project Public -% License from CTAN archives in directory macros/latex/base/lppl.txt. -% Either version 1.0 or, at your option, any later version. -% -% The development version of this file can be found at -% $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/reqdoc/reqdoc.dtx $ -% \fi -% -% \iffalse -%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01] -%<package>\ProvidesPackage{reqdoc}[2010/06/25 v0.3 Semantic Requirement Documents] -% -%<*driver> -\documentclass[twoside]{ltxdoc} -\EnableCrossrefs -%\CodelineIndex -%\OnlyDescription -\RecordChanges -\usepackage{reqdoc} -\usepackage{textcomp,url,a4wide} -\usepackage[show]{ed} -\usepackage[hyperref=auto,style=alphabetic]{biblatex} -\bibliography{kwarc} -\usepackage[eso-foot,today,draft]{svninfo} -\svnInfo $Id: reqdoc.dtx 1671 2010-11-06 07:05:15Z kohlhase $ -\svnKeyword $HeadURL: https://svn.kwarc.info/repos/stex/trunk/sty/reqdoc/reqdoc.dtx $ -\usepackage{stex-logo} -\usepackage{../ctansvn} -\usepackage{hyperref} -\makeindex -\def\tracissue#1{\cite{sTeX:online}, \hyperlink{http://trac.kwarc.info/sTeX/ticket/#1}{issue #1}} -\begin{document}\DocInput{reqdoc.dtx}\end{document} -%</driver> -% \fi -% -%\iffalse\CheckSum{195}\fi -% -% \changes{v0.3}{2008/06/26}{Integrated LaTeXML bindings} -% \changes{v0.2}{2008/02/04}{First Version with Documentation} -% \changes{v0.1}{2008/01/18}{First Version} -% -% \GetFileInfo{reqdoc.sty} -% -% \MakeShortVerb{\|} -% \def\latexml{{\LaTeX}ML} -% -% \title{{\texttt{reqdoc.sty}}: Semantic Markup for Requirements Specification Documents\thanks{Version -% {\fileversion} (last revised {\filedate})}} -% \author{Michael Kohlhase\\ -% Computer Science, Jacobs University\\ -% \url{http://kwarc.info/kohlhase}} -% \maketitle -% -% \begin{abstract} -% This package provides an infrastructure for semantically enhanced requirements -% specifications used in software engineering. This allows to embed structural -% information into documents that can be used by semantic document management systems -% e.g. for management of change and requirements tracing. -% \end{abstract} -% -% \newpage\tableofcontents\newpage -% -% \section{Introduction}\label{sec:intro} -% -% In software engineering, the development process is accompanied with a trail of -% structured documents, user specifications, architecture specifications, test reports, -% etc. All of these documents\ednote{continue} -% -% For an example of a requirement document see the file |requirements.tex| provided in -% this package. \ednote{need to bring this in line with the \texttt{sref} package} -% -% \section{The User Interface}\label{sec:interface} -% -% \subsection{Package Options} -% -% The |reqdoc| package takes the package option \DescribeMacro{recorddeps}|recorddeps|. If -% this is given, then the package generates an external file with dependencies that can be -% used by external systems like the {\texttt{locutor}} system\ednote{add citation here}, -% see Section~\ref{sec:moc-deps}. If the \DescribeMacro{showmeta}|showmeta| is set, then -% the metadata keys are shown (see~\cite{Kohlhase:metakeys:ctan} for details and customization -% options). -% -% \subsection{Requirements} -% The |reqdoc| package supplies two forms of writing down requirements that mainly differ -% in their presentation. We can have requirement lists and requirement tables. -% -% \DescribeEnv{requirements} The |requirements| environment marks up a list of -% requirements. It takes an optional key/value list as an argument: if |numbering| is set -% to |yes| (the default), then the requirements are numbered for referencing it visually; -% the label is created using the prefix specified in the key |prefix|. -% -% \DescribeEnv{requirement} The individual requirements are specified by the |requirement| -% environment, which takes an optional key/value list as an argument: the |id| key allows -% to specify a symbolic label for cross-referencing, the |prio| key allows to specify a -% priority of the requirement, the |reqs| key allows to specify a comma-separated list of -% labels of requibments this one depends on or refines. Finally, the visual label of the -% requirement can be fixed by the |num| key\ednote{this is not implemented yet}. -% -% \DescribeEnv{reqtable} The |reqtable| environment is a varian of the |\requirements| -% environment that shows the requirements in a tabular form that gives a better overview; -% its optional key/value argument works the same. \DescribeMacro{\reqline}The respective -% requirements are marked up with the |\reqline| macro, which takes three arguments. The -% first one is an optional key/value specification and corresponds to be one on the -% |requirement| environment. The second one contains the actual text of the requirements -% and the third one a comment. -% -% \DescribeMacro{\importreqs}Note that if we want to refer to requirements from a document -% \meta{doc}, then we will need to know about their representations and can import the -% necessary information via |\importreqs{|\meta{doc}|}|. -% -% -% \section{Limitations}\label{sec:limitations} -% -% In this section we document known limitations. If you want to help alleviate them, -% please feel free to contact the package author. Some of them are currently discussed in -% the \sTeX TRAC~\cite{sTeX:online}. -% \begin{compactenum} -% \item none reported yet -% \end{compactenum} -% -% \StopEventually{\newpage\PrintIndex\newpage\PrintChanges\printbibliography} -% \newpage -% -% \section{The Implementation}\label{sec.impl} -% -% The |reqdoc| package generates to files: the {\LaTeX} package (all the code between -% {\textsf{$\langle$*package$\rangle$}} and {\textsf{$\langle$/package$\rangle$}}) and the -% {\latexml} bindings (between {\textsf{$\langle$*ltxml$\rangle$}} and -% {\textsf{$\langle$/ltxml$\rangle$}}). We keep the corresponding code fragments together, -% since the documentation applies to both of them and to prevent them from getting out of -% sync. -% -% \subsection{Package Options}\label{sec.impl.options} -% -% We declare some switches which will modify the behavior according to the package -% options. Generally, an option |xxx| will just set the appropriate switches to true -% (otherwise they stay false).\ednote{need an implementation for {\latexml}} -% -% \begin{macrocode} -%<*package> -\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}} -\newif\if@deps\@depsfalse -\DeclareOption{recorddeps}{\@depstrue} -\ProcessOptions -% \end{macrocode} -% Then we load a couple of packages -% \begin{macrocode} -\RequirePackage{sref} -\RequirePackage{longtable} -%</package> -%<*ltxml> -package LaTeXML::Package::Pool; -use strict; -use LaTeXML::Package; -%</ltxml> -% \end{macrocode} -% -% Then we register the namespace of the requirements ontology -% \begin{macrocode} -%<*ltxml> -RegisterNamespace('r'=>"http://omdoc.org/ontology/requirements#"); -RegisterDocumentNamespace('r'=>"http://omdoc.org/ontology/requirements#"); -%</ltxml> -% \end{macrocode} -% -% \subsection{Requirements}\label{sec.impl.requirements} -% -% \begin{environment}{requirements} -% and now the |requirements| environment, it is empty at the moment\ednote{think about -% this again!} -% \begin{macrocode} -%<*package> -\newif\ifreqsnum\reqsnumfalse -\addmetakey{reqs}{numbering} -\addmetakey[R]{reqs}{prefix} -\def\reqs@no{no} -\newenvironment{requirements}[1][]% -{\metasetkeys{reqs}{#1}\ifx\reqs@numbering\reqs@no\reqsnumfalse\else\reqsnumtrue\fi}{} -%</package> -%<*ltxml> -DefEnvironment('{requirements} OptionalKeyVals:reqs', - "<omdoc:omgroup type='itemize'>#body</omdoc:omgroup>"); -%</ltxml> -% \end{macrocode} -% \end{environment} -% -% We define a group of keywords using the |\addmetakey| command from the |metakeys| -% package~\ctancite{Kohlhase:metakeys}. The group below, named as |req|, consists of three -% keywords |id|, |prio| and |refs|. -% \begin{macrocode} -%<*package> -\addmetakey{req}{id} -\addmetakey{req}{prio} -\addmetakey{req}{refs} -\addmetakey{req}{num} -\newcounter{reqnum}[section] -% \end{macrocode} -% This function cycles over a comma-separated list and does the references -% \begin{macrocode} -\def\req@do@refs#1#2{\let\@tmpop=\relax\@for\@I:=#1\do{\@tmpop\req@do@ref{\@I}\let\@tmpop=#2}} -% \end{macrocode} -% The |\req@do@ref| command creates a hyperlink from \ednote{What is req at ref? It has -% appeared for the first time.} -% \begin{macrocode} -\def\req@do@ref#1{\sref@hlink@ifh{#1}{\req@ref{#1}{number}}} -% \end{macrocode} -% this function defines a requirement aspect -% the first arg is the label, the second one the aspect to be defined and the third one the value -% expand |csname| before |xdef| -% -% The command |\req@def@aux| creates the name of a command, -% which is determined by the text given between |\csname| and |\endcsname|, -% and defines this command globally to function as |#3|. -% We use the command |\expandafter| in the definition of |\req@def@aux| -% to execute the command |\xdef| after |\csname| is executed. -% \begin{macrocode} -\def\req@def@aux#1#2#3{\expandafter\xdef\csname req@#1@#2\endcsname{#3}} -% \end{macrocode} -% this function takes the same arguments and writes the command to the aux file -% \begin{macrocode} -\def\req@write@aux#1#2#3{\protected@write\@auxout{}{\string\req@def@aux{#1}{#2}{\thesection.#3}}} -% \end{macrocode} -% and finally this function does both -% \begin{macrocode} -\def\req@def#1#2#3{\req@def@aux{#1}{#2}{#3}\req@write@aux{#1}{#2}{#3}} -% \end{macrocode} -% this function references an aspect of a requirement. -% \begin{macrocode} -\def\req@ref#1#2{\csname req@#1@#2\endcsname} -% \end{macrocode} -% these functions print the priority, label, and references (if specified) -% \begin{macrocode} -\def\print@req@prio{\ifx\req@prio\@empty\else(Priority: \req@prio)\fi} -\def\print@req@label{\sref@target@ifh\req@id{\reqs@prefix\arabic{reqnum}: }} -\def\print@req@refs{\ifx\req@refs\@empty\else\hfill [from~\req@do@refs{\req@refs}{,}]\fi} -% \end{macrocode} -% \ednote{What are |number| and |\thereqnum|?} -% First argument is a list of key-value pairs which are assigned to req. -% Increase the counter reqnum, i.e., increase the requirement number. -% Remember the number for reference. -% Print the requirement label (with the requirement number) -% Print the priority? -% Print the requirement (given as arg 2) -% Print the references -% We define a new command |\reqnote| to annotate the notes given for a requirement. -% The command |\reqnote| simply prints the note, which is given by the user as a text, -% in the form |Note: <text>|. -% \begin{environment}{requirement} -% \begin{macrocode} -\newenvironment{requirement}[1][]% -{\metasetkeys{req}{#1}\stepcounter{reqnum} -\ifreqsnum\ifx\req@id\@empty\else\req@def\req@id{number}\thereqnum\fi -\noindent\textbf{\print@req@label}\fi -\newcommand{\reqnote}[1]{\par\noindent Note: ##1} -\print@req@prio} -{\medskip\print@req@refs} -%</package> -%<*ltxml> -DefCMPEnvironment('{requirement} OptionalKeyVals:req', - "<omdoc:omtext ?&KeyVal(#1,'id')(xml:id='&KeyVal(#1,'id')')() r:dummy='to ensure the namespace'>" - . "<omdoc:meta property='texttype' content='r:requirement'/>" - . "?&KeyVal(#1,'refs')(<omdoc:link rel='r:dependsOn' href='#&KeyVal(#1,'refs')'/>)()" - . "#body" - ."</omdoc:omtext>"); -DefConstructor('\reqnote{}', - "<omdoc:note type='requirement'>#1</omdoc:note>"); -%</ltxml> -% \end{macrocode} -% \end{environment} -% -% \begin{environment}{reqtable} -% \begin{macrocode} -%<*package> -\newenvironment{reqtable}[1][]{\metasetkeys{reqs}{#1} -\begin{center}\begin{longtable}{|l|l|p{6cm}|p{5cm}|l|}\hline -\# & Prio & Requirement & Notes & Refs\\\hline\hline} -{\end{longtable}\end{center}} -%</package> -%<*ltxml> -DefEnvironment('{reqtable} OptionalKeyVals:reqs', - "<omdoc:omgroup type='itemize'>#body</omdoc:omgroup>"); -%</ltxml> -% \end{macrocode} -% \end{environment} -% -% \begin{macro}{\reqline} -% \begin{macrocode} -%<*package> -\newcommand{\reqline}[3][]% -{\metasetkeys{req}{#1}\stepcounter{reqnum} -\req@def\req@id{number}\thereqnum% remember the number for reference -\textbf{\sref@target@ifh\req@id{\reqs@prefix\arabic{reqnum}}}& -\req@prio &\req@do@refs\req@refs{,}\tabularnewline\hline} -%</package> -%<*ltxml> -DefCMPConstructor('\reqline OptionalKeyVals:req{}{}', - "<omdoc:omtext type='requirement'><omdoc:CMP>#2</omdoc:CMP></omdoc:omtext>" - ."<omdoc:omtext type='note'><omdoc:CMP>#3</omdoc:CMP></omdoc:omtext>"); -%</ltxml> -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\importreqs} -% The |\importreqs| macro reports a dependency to the dependencies file. and then reads -% the |aux| file specified in the argument. -% \begin{macrocode} -%<*package> -\newcommand{\importreqs}[1]{\req@dep@write{"#1.tex"}{IMPORTREQS}\makeatletter\input{#1.aux}\makeatother} -%</package> -%<*ltxml> -DefConstructor('\importreqs {}',"<omdoc:imports from='#1'/>"); -%</ltxml> -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\rinput} -% The |\rinput| macro\ednote{this should go somewhere up; probably merge with sinput; -% which should also go into the stex package.} inputs the file and protocols this in -% the dependencies file. Note that this only takes place on the top level; i.e. the -% |\@ifdeps| switch is set to false. -% \begin{macrocode} -%<*package> -\newcommand{\rinput}[1]{\req@dep@write{"#1.tex"}{[dt="input"]}\bgroup\@depsfalse\input{#1}\egroup} -%</package> -%<*ltxml> -DefMacro('\rinput','\input'); -%</ltxml> -% \end{macrocode} -% \end{macro} -% -% \subsection{Recording the dependencies for Change Management}\label{sec:moc-deps} -% -% The macros in this section record dependencies in a special file to be used in change -% management by the {\texttt{locutor}} system. This is still not optimal, since we do not -% know the actual path. -% -% \begin{macrocode} -%<*package> -\if@deps\newwrite\req@depfile -\immediate\openout\req@depfile=\jobname.deps -\AtEndDocument{\closeout\req@depfile} -%</package> -% \end{macrocode} -% we redefine the |\importmodule| command, so that it does the reporting. -% \begin{macrocode} -%<*package> -\renewcommand{\importmodule}[2][]{\req@dep@write{"#1.tex"}{[dt="importmodule"]}\def\@test{#1}% -\ifx\@test\@empty\else\requiremodules{#1}\fi -\expandafter\gdef\csname#2@cd@file@base\endcsname{#1} -\activate@defs{#2}\export@defs{#2}} -\fi -%</package> -% \end{macrocode} -% -% \begin{macrocode} -%<*package> -\def\req@dep@write#1#2{\if@deps\protected@write\req@depfile{}{#1 #2}\fi} -%</package> -% \end{macrocode} -% \subsection{Finale} -% -% Finally, we need to terminate the file with a success mark for perl. -% \begin{macrocode} -%<ltxml>1; -% \end{macrocode} -% \Finale -\endinput - - - -% LocalWords: iffalse reqdoc reqdoc.dtx kohlhase latexml texttt fileversion -% LocalWords: maketitle newpage tableofcontents newpage ednote sref recorddeps -% LocalWords: recorddeps moc-deps DescribeEnv prio reqs reqtable reqtable deps -% LocalWords: reqline importreqs printbibliography sec.impl textsf langle ifx -% LocalWords: textsf langle ltxml newif depsfalse depstrue longtable ifreqsnum -% LocalWords: reqsnumfalse newenvironment reqsnumtrue omd -% LocalWords: OptionalKeyVals omdoc omgroup ctancite req newcounter reqnum -% LocalWords: tmpop tmpop csname xdef endcsname expandafter auxout thesection -% LocalWords: hfill thereqnum reqnote stepcounter noindent textbf newcommand -% LocalWords: medskip omtext texttype hline tabularnewline makeatletter rinput -% LocalWords: makeatother sinput stex ifdeps bgroup egroup newwrite depfile -% LocalWords: openout jobname.deps renewcommand requiremodules gdef defs defs -% LocalWords: showmeta showmeta metakeys addmetakey metasetkeys |