숫자가 누락되어 0으로 처리됩니다. (사용자 정의 클래스)

숫자가 누락되어 0으로 처리됩니다. (사용자 정의 클래스)

저는 과학 그릇 질문 패킷에 대한 수업을 작성하려고 합니다. 어떤 이유에서든 \switchletter의도한 대로 작동하지만 내부에서 효과적으로 동일하게 사용하면 \printmc그렇지 않습니다.

에러 메시지:

/testing.tex:9: Missing number, treated as zero.
<to be read again> 
                   {
l.9 ...{Choice W}{Choice X}{Choice Y}{Choice Z}{2}

testing.tex:

\documentclass{scibowlset}
\usepackage[utf8]{inputenc}
\usepackage[letterpaper, portrait, margin=1in]{geometry}


\begin{document}
\newcounter{qnumber}\stepcounter{qnumber}
\switchletter{Choice W}{Choice X}{Choice Y}{Choice Z}{1}
\printmc{Choice W}{Choice X}{Choice Y}{Choice Z}{2}
\end{document}

scibowlset.cls:

\ProvidesClass{scibowlset}

\LoadClass[11pt,letterpaper]{article}

\usepackage[letterpaper, portrait, margin=1in]{geometry}
\usepackage[overload]{textcase}
\usepackage{enumitem}
\nofiles

\def \numtoletter #1 {
    \ifcase #1
        \or W
        \or X
        \or Y
        \or Z
    \fi
}

\def \switchletter #1#2#3#4#5 {
    \ifcase #5
        \or #1
        \or #2
        \or #3
        \or #4
    \fi
}

\def \printmc #1#2#3#4#5 {
    % \printmc {<choice w text>}{<choice x text>}{<choice y text>}{<choice z text>}{<correct choice index from 1>}
    \begingroup
        \begin{enumerate}[label=\Alph*),start=23]
            \item #1
            \item #2
            \item #3
            \item #4
        \end{enumerate}
    \endgroup
    ANSWER: \numtoletter{#5}) \switchletter{#1}{#2}{#3}{#4}{#5}
}

답변1

TeX은 "자유 형식"이 아닙니다.

%%% file scibowlset.cls
\ProvidesClass{scibowlset}

\LoadClass[11pt,letterpaper]{article}

\usepackage[letterpaper, portrait, margin=1in]{geometry}
\usepackage[overload]{textcase}
\usepackage{enumitem}
\nofiles

\def\numtoletter#1{%
    \ifcase #1
        \or W%
        \or X%
        \or Y%
        \or Z%
    \fi
}

\def\switchletter#1#2#3#4#5{%
    \ifcase #5
        \or #1%
        \or #2%
        \or #3%
        \or #4%
    \fi
}

\def\printmc#1#2#3#4#5{%
    % \printmc {<choice w text>}{<choice x text>}{<choice y text>}{<choice z text>}{<correct choice index from 1>}
    \begingroup
        \begin{enumerate}[label=\Alph*),start=23]
            \item #1
            \item #2
            \item #3
            \item #4
        \end{enumerate}
    \endgroup
    ANSWER: \numtoletter{#5}) \switchletter{#1}{#2}{#3}{#4}{#5}
}

반면에 당신은해야합니다

\newcommand{\numtoletter}[1]{%
  ...
}
\newcommand{\switchletter}[5]{%
  ...
}
\newcommand{\printmc}[5]{%
  ...
}

코드에서 TeX는 세 개의 매크로에 대한 후행 인수 뒤에 공백이 있을 것으로 예상합니다. 줄 끝이 공백을 생성한다는 점도 주의하세요.

관련 정보