如何抑制练习题中的换行符?

如何抑制练习题中的换行符?

我试图在一行中显示练习中不同问题的答案,因为问题的答案通常很短。这里提供了一种解决方法,但针对的是子问题,而不是问题。我天真地尝试用“问题”替换每个“子问题”,但(毫不奇怪)它没有奏效。但此外,我还希望将所有答案与练习编号放在同一行:我希望的输出是:

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假定该组(尽管您可能没有意识到这一点)。最后,有一个\unskipafter \QuestionNB,因为 的默认定义\QuestionNB在那里有一个空格,但由于它是一个可拆分的空格,我们希望将其删除。

现在,如果您的所有答案都采用这种单行格式,并且您不想编辑文档来将命令更改\Question\MyQuestion,则可以在文档序言中添加:

\renewcommand{\AtBeginAnswer}{\let\Question\MyQuestion}

这将重新定义在环境中的\Question使用。\MyQuestionAnswer

我没有在\Question解决方案中添加对可选参数的支持,也没有处理\subQuestion\subsubQuestion。这些留给读者练习。

相关内容