조건이 충족되지 않더라도 \if 내부에서 카운터가 증가합니다.

조건이 충족되지 않더라도 \if 내부에서 카운터가 증가합니다.

조건 내에서 증가시킬 세 개의 카운터를 정의했습니다. 이로 인해 기능적 요구사항에는 FA(및 후속 번호)가 접두어로 붙고, 비기능적 요구사항에는 NFA(및 기능적 요구사항과 독립적인 다른 번호 순서)가 붙는 결과가 발생합니다. 이는 일반 사용자 스토리에도 적용되어야 합니다.

아래 코드를 사용하면 조건 충족 여부에 관계없이 카운터가 진행되는 것으로 보입니다. 불행하게도 더 나은 해결책이 있을지, 아니면 제가 뭔가 착각하고 있는지 잘 모르겠습니다. 어떤 의견이라도 높이 평가하겠습니다!

\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}

답변1

예제에서는 오류가 발생합니다.

! Undefined control sequence.
\userstory #1#2#3-> \if \equal 

정의되지 않은 것처럼 \equal. \equal정의된 경우 \if\equal{확장한 \equal다음 확장의 처음 두 토큰이 동일한 문자인지 테스트하거나 확장이 단 하나의 토큰인 경우 테스트합니다.{

당신은 대체할 수 있습니다

\if\equal{#1}{\string FA}

예를 들어,

\def\tmpa{#1}\def\tmpb{FA}\ifx\tmpa\tmpb

답변2

\equal정의하지 않는 한 TeX에는 없습니다 . 명령을 정의하는 훨씬 간단한 방법은 다음과 같습니다.

\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}

이는 동일한 라인을 따라 두 개 이상의 사례로 쉽게 확장될 수 있습니다.

여기에 이미지 설명을 입력하세요

관련 정보