.png)
Я пытаюсь написать класс для пакетов вопросов Science Bowl. По какой-то причине \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 ожидает пробел после завершающего аргумента трех макросов. Также будьте осторожны, что конец строки создает пробел.