Я учитель средней школы, который хочет воспроизвести форматирование обычного экзамена с помощью TeX — чтобы попытаться облегчить себе задачу, я пытаюсь написать команды, которые позволят мне имитировать обычные вопросы. В настоящее время у меня возникли некоторые проблемы со средой doublespace — форматирование использует двойной интервал для создания строк вопросов. Вот рабочий пример моей реализации этого:
\newcounter{qnumber}
\newcounter{partnumber}[qnumber]
\newcommand{\writeq}[3][0]{ %simple written question command
\stepcounter{qnumber}
\textbf{Question \arabic{qnumber}\hfill (#2 marks)}\\
#3\\
\begin{doublespace}
\foreach \n in {1,...,#1}{\rule{\linewidth}{0.5pt}\\}
\end{doublespace}
}
\writeq[3]{4}{My question is this one.}
Итак, теперь я хочу создать «многокомпонентные вопросы» и составил следующую команду:
%Multi-part question commands
\newcommand{\mpqstem}[2]{
\stepcounter{qnumber}
\setcounter{partnumber}{0} % Reset part number
\noindent \textbf{Question \arabic{qnumber}\hfill (#1 marks)}\\ \\
#2 \vspace{0.2cm}
}
\newcommand{\mpq}[3][0]{ %simple written question command
\stepcounter{partnumber}
\alph{partnumber}) \hangindent=1.27cm \hangafter=0 #3\\
\rule{0pt}{1pt}\hfill(#2 marks)\vspace{0.5cm}
\begin{doublespace}
\foreach \n in {1,...,#1}{\rule{\linewidth-1.27cm}{0.5pt}\\}
\end{doublespace}
}
Основа используется для задания контекста, а команда mpq затем является фактическим вопросом, связанным с этой частью. Однако, используя эту комбинацию, я получаю текст с двойным интервалом, но не строки - и я не могу понять, почему. Смотрите ниже, как я пытаюсь использовать команду и что я получаю:
\mpqstem{4}{This is the scary question, and thankfully this bit is showing up okay without any double-spacing. But that also makes sense, since this command doesn't touch the spacing.}
\mpq[2]{2}{This is part 1, and it's going to be very long to show what is happening with the spacing and make it clear that this is double-spaced.}
\mpq[2]{2}{This is part 2, and it's also going to be very long to show what is happening with the spacing and make it clear that this is double-spaced.}
решение1
Ваш фрагмент кода не компилируется, поскольку в нем отсутствует много важной информации. Однако, конечно, примите во внимание предложение @UlrikeFischer и прекратите использовать \\
вместо \par
. Например, для трех команд следующий код может быть полезен с точки зрения достижения ваших конечных целей форматирования.
\newcounter{qnumber}
\newcounter{partnumber}[qnumber] tie 'partnumber' counter to 'qnumber' counter
\newcommand{\writeq}[3][0]{ %simple written question command
\refstepcounter{qnumber} % use \refstepcounter, not \stepcounter
\par\noindent
\textbf{Question \arabic{qnumber}\hfill(#2 marks)}
\par
#3
\par
\begin{doublespace}
\foreach \n in {1,\dots,#1}{\rule{\linewidth}{0.5pt}}
\par
\end{doublespace}
}
\newcommand{\mpqstem}[2]{
\refstepcounter{qnumber}
%%\setcounter{partnumber}{0} % not needed
\par\noindent
\textbf{Question \arabic{qnumber}\hfill(#1 marks)}
\par
\vspace{1\baselineskip}
#2
\par
\vspace{2mm}
}
\newcommand{\mpq}[3][0]{ %simple written question command
\refstepcounter{partnumber}
\par\noindent \hangindent=1.27cm \hangafter=0
\alph{partnumber}) #3
\par\noindent
\rule{0pt}{1pt}\hfill(#2 marks)
\par
\vspace{5mm}
\begin{doublespace}
\foreach \n in {1,\dots,#1}{\rule{\linewidth-1.27cm}{0.5pt}}
\par
\end{doublespace}
}