问题右侧的 \answerline,答案行和问题之间有虚线

问题右侧的 \answerline,答案行和问题之间有虚线

我看到了一个不错的功能问题右侧的 \answerline。答案放在问题的右边。我想要的是:

  1. 答案行前的数字应该删除,因为我认为答案行前的数字是多余的。
  2. 问题结尾和答案之间的虚线。

那可能吗?

答案1

使用来自的代码沃纳的解决方案对于另一个问题,您可以\leaders在替换文本中放置一个删除垂直跳过的命令。

\leaders取一些盒子并多次复制以填充一些指定的水平空间。因此这里有一个版本:我们制作一个包含一个点的盒子,周围有一些空间,我们要求盒子序列填充一个可大幅拉伸的水平空间0pt plus 1filll。这将挤出答案材料之前行上的其他可拉伸空间,将其推向右侧并用一行点填充中间的空间。

为了删除数字,我们只需注意到 Werner 的代码已经提供了一个命令\answerline*,因此当我们希望抑制数字时我们可以使用它。

示例输出

\documentclass[a4paper]{exam}

\usepackage{letltxmacro,xpatch}
\xpatchcmd{\answerline}% <cmd>
  {\par\nobreak\vskip\answerskip}% <search>
  {\leaders\hbox{\hskip0.2em .\hskip0.2em}\hskip 0pt plus 1filll}% <replace>
  {}{}% <success><failure>
\xpatchcmd{\answerline}{\fi \par}{\fi}{}{}% Remove line break after \answerline
\makeatletter
\LetLtxMacro{\oldanswerline}{\answerline}
\RenewDocumentCommand{\answerline}{s o}{%
  \begingroup
  \IfBooleanTF{#1}
    {\def\@queslevel{\relax}}% \answerline*
    {}% \answerline
  \IfNoValueTF{#2}
    {\oldanswerline[{}]}% \answerline
    {\oldanswerline[#2]}% \answerline[..]
  \endgroup
}
\makeatother

\begin{document}
\begin{questions}
  \question Write hello \answerline*[hello] to your mother
  \question Write hello \answerline[hello] to your mother
\end{questions}
\end{document}

相关内容