1 % config: use-template-toolkit=1
2 % config: tag-style=$( )$
5 \documentclass{scrartcl}
7 \usepackage[reqspeclogo,$( IF !rspec.version )$draftlogo$( ELSE )$secondpagelogo$( END )$]{kivitendo}
11 \setlength{\LTpre}{0pt}
12 \setlength{\LTpost}{0pt}
14 \renewcommand{\kivitendosecondfoot}{%
16 \defaultfont\scriptsize%
17 $( KiviLatex.filter(rspec.displayable_name) )$\\
18 $( !rspec.version ? "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}{$( KiviLatex.filter(rspec.type.description) )$}
41 $( KiviLatex.filter(rspec.customer.name) )$
45 $( KiviLatex.filter(rspec.title) )$
47 %$( IF rspec.version )$
49 Version $( KiviLatex.filter(rspec.version.version_number) )$
68 %$( SET working_copy = rspec.working_copy_id ? rspec.working_copy : rspec )$
69 %$( SET versioned_copies = rspec.version ? 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 $( KiviLatex.filter(versioned_copy.version.version_number) )$} &
81 \multicolumn{1}{|r|}{\small $( KiviLatex.filter(versioned_copy.version.itime.to_kivitendo(precision='minute')) )$} &
82 \small $( KiviLatex.filter(versioned_copy.version.description) )$\\
88 %$( BLOCK picture_outputter )$
89 % $( SET width_cm = (picture.picture_width / 150.0) * 2.54 )$
90 % $( SET width_cm = width_cm < 16.4 ? width_cm : 16.4 )$
93 \includegraphics[width=$( width_cm )$cm,keepaspectratio]{$( picture.print_file_name )$}
95 \mbox{Abbildung $( picture.number )$: $( KiviLatex.filter(picture.description ? picture.description : picture.picture_file_name) )$}
99 %$( BLOCK text_block_outputter )$
100 % $( SET text_blocks = rspec.text_blocks_sorted(output_position=output_position) )$
101 % $( IF text_blocks.size )$
105 \section{$( heading )$}
107 % $( FOREACH text_block = text_blocks )$
109 \subsection{$( KiviLatex.filter(text_block.title) )$}
111 $( KiviLatex.filter_html(text_block.text_as_restricted_html) )$
113 % $( FOREACH picture = text_block.pictures_sorted.as_list )$
114 $( PROCESS picture_outputter picture=picture )$
122 $( PROCESS text_block_outputter output_position=0 heading='Allgemeines' )$
124 %% Abschnitte und Funktionsblöcke
127 \section{Spezifikation}
129 \setlength{\LTpre}{-0.3cm}
132 %$( FOREACH top_item = rspec.sections_sorted )$
134 \subsection{Abschnitt $( KiviLatex.filter(top_item.fb_number) )$: $( KiviLatex.filter(top_item.title) )$}
136 % $( IF top_item.description )$
137 $( KiviLatex.filter_html(top_item.description_as_restricted_html.replace('\r', '').replace('\n+\Z', '')) )$
141 % $( FOREACH item = top_item.children_sorted )$
142 \parbox[t]{1.0cm}{\textcolor{kivitendodarkred}{$>>>$}}%
144 \begin{longtable}{p{2.8cm}p{11.7cm}}
145 Funktionsblock & $( KiviLatex.filter(item.fb_number) )$\\
146 Beschreibung & $( KiviLatex.filter_html(item.description_as_restricted_html) )$\\
147 Abhängigkeiten & $( KiviLatex.filter(P.requirement_spec_item_dependency_list(item)) )$
150 % $( FOREACH sub_item = item.children_sorted )$
151 \hspace*{1.15cm}\rule{15.2cm}{0.2pt}\\
154 \begin{longtable}{p{2.8cm}p{11.7cm}}
155 Unterfunktionsblock & $( KiviLatex.filter(sub_item.fb_number) )$\\
156 Beschreibung & $( KiviLatex.filter_html(sub_item.description_as_restricted_html) )$\\
157 Abhängigkeiten & $( KiviLatex.filter(P.requirement_spec_item_dependency_list(sub_item)) )$
162 % $( UNLESS loop.last )$
173 %% Textblöcke dahinter
174 $( PROCESS text_block_outputter output_position=1 heading='Weitere Punkte' )$