1 % config: use-template-toolkit=1
2 % config: tag-style=$( )$
5 \documentclass{scrartcl}
7 \usepackage[reqspeclogo,$( IF !rspec.version_id )$draftlogo$( ELSE )$secondpagelogo$( END )$]{kivitendo}
11 \setlength{\LTpre}{0pt}
12 \setlength{\LTpost}{0pt}
14 \renewcommand{\kivitendosecondfoot}{%
16 \defaultfont\scriptsize%
17 $( LxLatex.filter(rspec.displayable_name) )$\\
18 $( !rspec.version_id ? "Arbeitskopie ohne Version" : "Version " _ rspec.version.version_number _ " vom " _ rspec.version.itime.to_kivitendo(precision='minute') )$
36 \begin{minipage}[t][6cm]{12cm}
38 \textcolor{kivitendodarkred}{$( LxLatex.filter(rspec.type.description) )$}
41 $( LxLatex.filter(rspec.customer.name) )$
45 $( LxLatex.filter(rspec.title) )$
47 %$( IF rspec.version_id )$
49 Version $( LxLatex.filter(rspec.version.version_number) )$
68 %$( SET working_copy = rspec.working_copy_id ? rspec.working_copy : rspec )$
69 %$( SET versioned_copies = rspec.version_id ? working_copy.versioned_copies_sorted(max_version_number = rspec.version.version_number) : working_copy.versioned_copies_sorted )$
70 %$( IF !versioned_copies.size )$
71 Bisher wurden noch keine Versionen angelegt.
73 \begin{longtable}{|p{2cm}|p{2cm}|p{12cm}|}
75 \multicolumn{1}{|r}{\small Version} &
76 \multicolumn{1}{|r|}{\small Datum} &
79 %$( FOREACH versioned_copy = versioned_copies )$
80 \multicolumn{1}{|r}{\small $( LxLatex.filter(versioned_copy.version.version_number) )$} &
81 \multicolumn{1}{|r|}{\small $( LxLatex.filter(versioned_copy.version.itime.to_kivitendo(precision='minute')) )$} &
82 \small $( LxLatex.filter(versioned_copy.version.description) )$\\
88 %$( BLOCK text_block_outputter )$
89 % $( SET text_blocks = rspec.text_blocks_sorted(output_position=output_position) )$
90 % $( IF text_blocks.size )$
94 \section{$( heading )$}
96 % $( FOREACH text_block = text_blocks )$
98 \subsection{$( LxLatex.filter(text_block.title) )$}
100 $( LxLatex.filter(text_block.text) )$
107 $( PROCESS text_block_outputter output_position=0 heading='Allgemeines' )$
109 %% Abschnitte und Funktionsblöcke
112 \section{Spezifikation}
114 \setlength{\LTpre}{-0.3cm}
117 %$( FOREACH top_item = rspec.sections_sorted )$
119 \subsection{Abschnitt $( LxLatex.filter(top_item.fb_number) )$: $( LxLatex.filter(top_item.title) )$}
121 % $( IF top_item.description )$
122 $( LxLatex.filter(top_item.description.replace('\r', '').replace('\n+\Z', '')) )$
126 % $( FOREACH item = top_item.children_sorted )$
127 \parbox[t]{1.0cm}{\textcolor{kivitendodarkred}{$>>>$}}%
129 \begin{longtable}{p{2.8cm}p{11.7cm}}
130 Funktionsblock & $( LxLatex.filter(item.fb_number) )$\\
131 Beschreibung & $( LxLatex.filter(item.description) )$\\
132 Abhängigkeiten & $( LxLatex.filter(P.requirement_spec_item_dependency_list(item)) )$
135 % $( FOREACH sub_item = item.children_sorted )$
136 \hspace*{1.15cm}\rule{15.2cm}{0.2pt}\\
139 \begin{longtable}{p{2.8cm}p{11.7cm}}
140 Unterfunktionsblock & $( LxLatex.filter(sub_item.fb_number) )$\\
141 Beschreibung & $( LxLatex.filter(sub_item.description) )$\\
142 Abhängigkeiten & $( LxLatex.filter(P.requirement_spec_item_dependency_list(sub_item)) )$
147 % $( UNLESS loop.last )$
158 %% Textblöcke dahinter
159 $( PROCESS text_block_outputter output_position=1 heading='Weitere Punkte' )$