考试科目:制作 \fillin 画框代替线条

考试科目:制作 \fillin 画框代替线条

我正在使用考试文档类来创建填空题的工作表。默认情况下,该\fillin命令会生成带下划线的空白区域,学生可以在其中写下答案。是否可以修改此行为,以便\fillin创建一个框?理想情况下,我可以指定框的高度和线宽。我希望保留为命令指定正确解决方案的能力\fillin

最小工作示例:

\documentclass{exam}
\begin{document}

\begin{questions}
\question How many grams are in one kilogram?

\vspace{1in}
1 kg = \fillin[1000] g.
\end{questions}

\end{document}

生成

在此处输入图片描述

但我想得到类似的东西

在此处输入图片描述

答案1

不修改类:

\documentclass{exam}
\usepackage{xpatch}

\makeatletter
\xpatchcmd{\@fillin@relay}
  {\hbox to #1{\hrulefill}\fi}
  {\hbox{\framebox[#1]{\rule{0pt}{2ex}}}\fi}
  {}{}
\makeatother

\begin{document}

\begin{questions}
\question How many grams are in one kilogram?

1 kg = \fillin[1000] g.
\end{questions}

\end{document}

在此处输入图片描述

答案2

解决此问题的一个可行方法是复制文件exam.cls,然后替换表达式

\raise -\answerclearance \hbox to #1{\hrulefill}

(在从第 4482 行开始的部分中出现了两次\def\@fillin@relay

\raisebox{\dimexpr 0.5em -0.5\height}{\framebox[#1]{{\rule{0pt}{0.5in}}}}

这将生成一个 0.5 英寸高的框,学生可以在其中写下答案。该框与周围的文本垂直居中。

相关内容