我正在创建一个命令来在表中定义一个功能需求和许多非功能需求。我写了以下代码:
\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}
}
因此,我将始终使用以下命令重复使用此表格格式
\TabelaRequisito{Functional Requirement Name}{X}{
Functional Requirement description
}{Name}{}{Security}{X}
但我只能添加一个非功能性需求,我想知道一个解决方案,可以添加我想要的任意数量的非功能性需求。一、二、三、四……
答案1
您可以像这样枚举非功能性需求(完整 MWE 重复):
\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}{}%
}
答案2
这是有可能的,但是最好不要这么做。LaTeX绝不{}
对于不同的参数使用不同数量的组,它要么使用,
分离列表,要么使用额外的命令。在这里我将使用额外的命令:
\TabelaRequisito{Functional Requirement Name}{X}{
Functional Requirement description
}{
\nunfuncreq{Name}{}{Security}{X}
\nunfuncreq{zzz}{}{kjahxaxa}{Y}
\nunfuncreq{jjj}{}{llll}{Y}
}
因此,命令的最后一个参数可以接受任意数量的\nunfuncreq
命令,然后可以将其简单定义为构成表格一行的四参数命令。