我正在使用考试文档类来创建填空题的工作表。默认情况下,该\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 英寸高的框,学生可以在其中写下答案。该框与周围的文本垂直居中。