如何扩展 ExSheets 问题环境以显示用户定义的解答空白空间?

如何扩展 ExSheets 问题环境以显示用户定义的解答空白空间?

这是我的最小的不起作用的例子:

\documentclass[a4paper,10pt]{book}

\usepackage{mdframed}
\usepackage{exsheets}

\newenvironment{exerciseWithSpace}[1]{\begin{question}}{\end{question} \mdframed \vspace{#1} \endmdframed }

\begin{document}

  \begin{exerciseWithSpace}[3cm]
     Bla bla bla.
  \end{exercicioWithSpace}

\end{document}

这是我收到的错误:

Illegal parameter number in definition of \endexerciseWithSpace.

加倍##1导致另一个错误:

LaTeX Error: \begin{question} on input line 10 ended by \end{exe rciseWithSpace}.

这是我尝试创建的新环境,所以我想我仍然不明白如何正确创建它们。

答案1

您的代码中存在一些错误:

  1. 你不能使用#1在环境定义的“结束部分”中使用;
  2. 您将该参数定义为强制参数,但将其用作可选参数;
  3. \begin{question}并且\end{question}应该是\question\endquestion,因为这个环境是如何定义的exsheets

由于环境是exerciseWithSpace,该论点似乎是强制性的,因此

\documentclass[a4paper,10pt]{book}

\usepackage{mdframed}
\usepackage{exsheets}

\newlength{\exercisespace}
\newenvironment{exerciseWithSpace}[1]
  {\setlength{\exercisespace}{#1}\question}
  {\endquestion\mdframed\vspace{\exercisespace}\endmdframed}

\begin{document}

\begin{exerciseWithSpace}{3cm}
Bla bla bla.
\end{exerciseWithSpace}

\end{document}

我们不需要传递明确的参数\vspace,而是将其保存在寄存器中。

在此处输入图片描述

您可能需要一个通用exercise环境,带有一个可选参数,如果存在,则会触发离开所需的空间。

\documentclass[a4paper,10pt]{book}

\usepackage{mdframed}
\usepackage{exsheets}

\newlength{\exercisespace}
\newenvironment{exercise}[1][0pt]
  {\setlength{\exercisespace}{#1}\question}
  {\endquestion
   \ifdim\exercisespace>0pt
     \mdframed\vspace{\exercisespace}\endmdframed
   \fi}

\begin{document}

\begin{exercise}[3cm]
Bla bla bla.
\end{exercise}

\end{document}

输出是相同的(但请注意方括号)。使用

\begin{exercise}
Bla bla bla.
\end{exercise}

您不会得到任何盒子。

答案2

我不太熟悉exsheets,但问题并不真正相关,exsheets但事实上,#1在用传统方式定义的环境的最终代码中,不可能\newenvironment

可以使用\NewDocumentEnvironment来自xparse包(此处显示)或\NewEnviron

\documentclass[a4paper,10pt]{book}

\usepackage{mdframed}
\usepackage{exsheets}
\usepackage{xparse}

\NewDocumentEnvironment{exerciseWithSpace}{oD<>{3cm}}{%
  \IfValueTF{#1}{%
    \question{#1}%
  }{%
    \question%
  } 
}{%
  \endquestion% 
  \begin{mdframed} 
    \vspace{#2} 
  \end{mdframed}
}

\begin{document}

\begin{exerciseWithSpace}[8]<5cm>
  Bla bla bla.
\end{exerciseWithSpace}


\begin{exerciseWithSpace}<3cm>
  Bla bla bla.
\end{exerciseWithSpace}

\end{document}

相关内容