Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I am creating one command to define a functional requirement and many non functional requeriment in a table. I wrote the following code:

  \newcounter{Number}
  \newcommand{\Item}{\stepcounter{Number}\theNumber}
  \newcounter{NumberReqF}
  \newcommand{\ReqF}{F\stepcounter{NumberReqF}\theNumberReqF ~- }
  \newcounter{NumberReqNF}[NumberReqF]
  \newcommand{\ReqNF}{NF \stepcounter{NumberReqNF}\theNumberReqF .\theNumberReqNF ~- }

  \usepackage{tabularx,calc}
  \newcolumntype{Y}[1]{>{\setlength\hsize{#1\hsize}%
                   \raggedright\arraybackslash}X}
  \newcolumntype{F}{|p{\columnwidth-2\tabcolsep-2\arrayrulewidth}|}
  \setlength\extrarowheight{2pt}

  \newcommand{\TabelaRequisito}[8]{
\setcounter{NumberReqNF}{0}
\begin{table}[h]
    \noindent\begin{tabularx}{\columnwidth}{|Y{0.5}|Y{0.25}|Y{0.25}|c|c|}
        \hline
        \multicolumn{3}{|l|}{\ReqF #1} & \multicolumn{2}{l|}{Hidden (#2)}\tabularnewline
        \hline
        \multicolumn{5}{F}{#3}\tabularnewline
        \hline
        \multicolumn{5}{|c|}{Non-Functional Requirements}\tabularnewline
        \hline
        Name & Restriction & Category & Desirable & Permanent\tabularnewline
        \hline
        \ReqNF #4 & #5 & #6 & (#7) & (#8)\tabularnewline
        \hline
        \ReqNF New Non-Functional Requirement Name &  &  &  &\tabularnewline
        \hline
        % more and more requirements here...
    \end{tabularx}
\end{table}
  }

So I would reuse this table format all the time with the command

 \TabelaRequisito{Functional Requirement Name}{X}{
        Functional Requirement description
        }{Name}{}{Security}{X}

enter image description here

But I am limited to add just one non-functional requirement, I would like to know a solution that I could add as many as non-functional requirement I want. One, two, three, four,...

share|improve this question
    
Could you add an example of how you want to use this for several "non-functional requirements". –  Peter Grill Mar 28 '12 at 20:15
add comment

2 Answers

up vote 2 down vote accepted

You can enumerate non-functional requirements like this (full MWE repeated):

\documentclass{article}

\newcounter{Number}
\newcommand{\Item}{\stepcounter{Number}\theNumber}
\newcounter{NumberReqF}
\newcommand{\ReqF}{F\stepcounter{NumberReqF}\theNumberReqF ~- }
\newcounter{NumberReqNF}[NumberReqF]
\newcommand{\ReqNF}{NF \stepcounter{NumberReqNF}\theNumberReqF .\theNumberReqNF ~- }

\usepackage{tabularx,calc}
\newcolumntype{Y}[1]{>{\setlength\hsize{#1\hsize}%
    \raggedright\arraybackslash}X}
\newcolumntype{F}{|p{\columnwidth-2\tabcolsep-2\arrayrulewidth}|}
\setlength\extrarowheight{2pt}

\newcommand\NFReq[5]{%
  \ReqNF #1 & #2 & #3 & (#4) & (#5)\tabularnewline
  \hline
}

\newcommand{\TabelaRequisito}[4]{
  \setcounter{NumberReqNF}{0}
  \begin{table}[h]
    \noindent\begin{tabularx}{\columnwidth}{|Y{0.5}|Y{0.25}|Y{0.25}|c|c|}
      \hline
      \multicolumn{3}{|l|}{\ReqF #1} & \multicolumn{2}{l|}{Hidden (#2)}\tabularnewline
      \hline
      \multicolumn{5}{F}{#3}\tabularnewline
      \hline
      \multicolumn{5}{|c|}{Non-Functional Requirements}\tabularnewline
      \hline
      Name & Restriction & Category & Desirable & Permanent\tabularnewline
      \hline
      #4%
      \ReqNF New Non-Functional Requirement Name &  &  &  &\tabularnewline
      \hline
      % more and more requirements here...
    \end{tabularx}
  \end{table}
}

\begin{document}
\TabelaRequisito{Functional Requirement Name}{X}
{Functional Requirement description}
{%
  \NFReq{Name}{}{Security}{X}{}%
  \NFReq{foo}{}{bar}{X}{}%
}
share|improve this answer
add comment

It is possible, but it is best not to do it. LaTeX never uses different numbers of {} groups for varying arguments, it either uses , separated lists or extra commands. Here I would use extra commands:

 \TabelaRequisito{Functional Requirement Name}{X}{
        Functional Requirement description
        }{
   \nunfuncreq{Name}{}{Security}{X}
   \nunfuncreq{zzz}{}{kjahxaxa}{Y}
   \nunfuncreq{jjj}{}{llll}{Y}
   }

so the last argument of your command takes any number of \nunfuncreq commands, and that can then have a simple definition as a four-argument command making a row of the table.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.