我试图在一行中显示练习中不同问题的答案,因为问题的答案通常很短。这里提供了一种解决方法,但针对的是子问题,而不是问题。我天真地尝试用“问题”替换每个“子问题”,但(毫不奇怪)它没有奏效。但此外,我还希望将所有答案与练习编号放在同一行:我希望的输出是:
1.1 (A)第一个答案。(二)第二个答案。 (C)第三个答案。
梅威瑟:
\documentclass[]{book}
\usepackage[lastexercise, answerdelayed]{exercise}
\renewcommand{\ExerciseHeader}{\vspace{-0.3cm} \hrule \vspace{0.2cm} \noindent \bfseries \thesection.\arabic{Exercise} }
\renewcommand{\AnswerHeader}{\vspace{-0.4cm} \hrule \vspace{0.1cm} \noindent \bfseries \thesection.\arabic{Exercise} \ }
\renewcommand{\QuestionNB}{(\bfseries \alph{Question})}
\counterwithout{section}{chapter}
\counterwithin*{Exercise}{section}
\begin{document}
\section{First Section}
\begin{Exercise}
Guideline
\Question First question blabla
\Question Second question blabla
\Question Third question blabla
\end{Exercise}
\vspace{3pt} $\vdots$ \vspace{10pt}
\begin{Answer}
\Question 1st ans.
\Question 2nd ans.
\Question 3rd ans.
\end{Answer}
\shipoutAnswer
\end{document}
输出结果为四行:一行1.1,另一个(A),(二), 和(C)。
以下是我自己尝试做的失败的事情:
\makeatletter
\let \@QuestionHeader@original=\@QuestionHeader
\newcommand{\@QuestionHeader@noItem}{%
\hspace{1cm}%
\begingroup
\@getQuestionInfo
\QuestionHeaderDifficulty
\QuestionNB
\endgroup
\begingroup
\@getQuestionInfo
\QuestionHeaderTitle
\endgroup%
\ignorespaces
}%
\newcommand{\QuestionOnSameLine}{%
\let \@QuestionHeader=\@QuestionHeader@noItem
\subQuestion
}
\newcommand{\QuestionOnNewLine}{%
\let \@QuestionHeader=\@QuestionHeader@original
\Question
}
\makeatother
答案1
有时最好的解决方案是最简单的。该exercise
包在幕后做了一些巧妙的准备工作,使\Question
命令开始(并随后结束)隐式列表环境(对于 和 也是如此\subQuestion
。\subsubsQuestion
但由于我们只想在一行上编译答案项,我们可以定义\MyQuestion
为:
\newcommand{\MyQuestion}{\refstepcounter{Question}%
\ifnum\value{Question}=1\else
\quad\fi{\QuestionNB\unskip}~%
}
这使用包Question
中定义的计数器exercise
对答案进行编号,就像之前一样,并在第一个问题之后的所有问题的问题编号前插入一个四边形空格,并在数字后插入一个不可拆分的空格。我还将问题编号括在一个组中,因为现有\Question
命令执行相同的操作,并且您的 定义\QuestionNB
假定该组(尽管您可能没有意识到这一点)。最后,有一个\unskip
after \QuestionNB
,因为 的默认定义\QuestionNB
在那里有一个空格,但由于它是一个可拆分的空格,我们希望将其删除。
现在,如果您的所有答案都采用这种单行格式,并且您不想编辑文档来将命令更改\Question
为\MyQuestion
,则可以在文档序言中添加:
\renewcommand{\AtBeginAnswer}{\let\Question\MyQuestion}
这将重新定义在环境中的\Question
使用。\MyQuestion
Answer
我没有在\Question
解决方案中添加对可选参数的支持,也没有处理\subQuestion
或\subsubQuestion
。这些留给读者练习。