He definido tres contadores que voy a incrementar dentro de una condición. Esto debería conducir al resultado de que los requisitos funcionales tienen el prefijo FA (y un número posterior) y los requisitos no funcionales tienen el prefijo NFA (y una secuencia numérica diferente independiente de los requisitos funcionales). Esto también debería aplicarse a la historia de usuario general.
Con el código siguiente parece que el contador avanzará independientemente de si se cumple la condición o no. Lamentablemente, no estoy muy seguro de si habría una solución mejor o si me estoy equivocando en algo. ¡Cualquier comentario será muy apreciado!
\documentclass[11pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[scaled]{helvet}
\usepackage[T1]{fontenc}
\usepackage[left=4cm, right=2cm, top=4cm, bottom=2cm]{geometry}
\usepackage[style=long,nonumberlist,toc,acronym]{glossaries}
\newacronym{U}{U}{User Story(s)}
\newacronym{FA}{FA}{Funktionale Anforderung}
\newacronym{NFA}{NFA}{Nicht funktionale Anforderung}
\newcounter{UserStoryCounter}
\setcounter{UserStoryCounter}{1}
\newcounter{UserStoryCounterFA}
\setcounter{UserStoryCounterFA}{1}
\newcounter{UserStoryCounterNFA}
\setcounter{UserStoryCounterNFA}{1}
\newcommand{\userstory}[3]{
\if\equal{#1}{\string FA}
\paragraph{(#1\gls{FA}\arabic{UserStoryCounterFA}) #2}#3
\stepcounter{UserStoryCounterFA}
\else
\if\equal{#1}{NFA}
\paragraph{(#1\gls{NFA}\arabic{UserStoryCounterNFA}) #2}#3
\stepcounter{UserStoryCounterNFA}
\else
\paragraph{(#1\gls{U}\arabic{UserStoryCounter}) #2}#3
\stepcounter{UserStoryCounter}
\fi
\fi
}
\begin{document}
\userstory{FA}{}{}
\userstory{NFA}{}{}
\userstory{U}{}{}
\end{document}
Respuesta1
El ejemplo produce el error.
! Undefined control sequence.
\userstory #1#2#3-> \if \equal
como \equal
no está definido. Si \equal
se definiera \if\equal{
que se expandiría \equal
y luego probaría si las dos primeras fichas de su expansión eran el mismo personaje, o si su expansión era solo una ficha, probaría si eso es{
podrías reemplazar
\if\equal{#1}{\string FA}
por, por ejemplo,
\def\tmpa{#1}\def\tmpb{FA}\ifx\tmpa\tmpb
Respuesta2
No existe \equal
en TeX, a menos que lo definas. Aquí tienes un método mucho más sencillo para definir tu comando.
\documentclass[11pt,a4paper]{article}
%\usepackage[utf8]{inputenc} % no longer needed
\usepackage[scaled]{helvet}
\usepackage[T1]{fontenc}
\usepackage[left=4cm, right=2cm, top=4cm, bottom=2cm]{geometry}
\usepackage[style=long,nonumberlist,toc,acronym]{glossaries}
\newacronym{U}{U}{User Story(s)}
\newacronym{FA}{FA}{Funktionale Anforderung}
\newacronym{NFA}{NFA}{Nicht funktionale Anforderung}
\newcounter{UserStoryCounter}
\setcounter{UserStoryCounter}{1}
\newcounter{UserStoryCounterFA}
\setcounter{UserStoryCounterFA}{1}
\newcounter{UserStoryCounterNFA}
\setcounter{UserStoryCounterNFA}{1}
\ExplSyntaxOn
\NewDocumentCommand{\userstory}{mmm}
{
\str_case:nnF {#1}
{
{FA}{
\paragraph{(#1\gls{FA}\arabic{UserStoryCounterFA})~#2}#3
\stepcounter{UserStoryCounterFA}
}
{NFA}{
\paragraph{(#1\gls{NFA}\arabic{UserStoryCounterNFA})~#2}#3
\stepcounter{UserStoryCounterNFA}
}
%add other cases here
}
{% all other cases
\paragraph{(#1\gls{U}\arabic{UserStoryCounter})~#2}#3
\stepcounter{UserStoryCounter}
}
}
\ExplSyntaxOff
\begin{document}
\userstory{FA}{}{}
\userstory{NFA}{}{}
\userstory{U}{}{}
\end{document}
Esto puede extenderse fácilmente a más de dos casos, en el mismo sentido.