我正在使用exam
文档类,并尝试了各种点放置选项。本质上,我想要像 这样的功能\pointsdroppedatright
。唯一的问题是它会产生边距。我希望完全避免边距,这样文本的显示方式就与使用 将其向右推的方式非常相似\hfill
。我相信这可以用 来实现qformat
,但我不知道如何对部分、子部分等做到这一点。
这是我现在拥有的最低限度的工作示例:
\documentclass{exam}
\pointsdroppedatright
\marksnotpoints
\begin{document}
\begin{questions}
\question Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
\begin{parts}
\part[4] Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. \droppoints
\end{parts}
\end{questions}
\end{document}
这是我想要的:
答案1
一个简单的解决方案:
\documentclass{exam}
\usepackage{xpatch}
\pointsdroppedatright
\marksnotpoints
\makeatletter
\def\mydroppoints{%
\leavevmode\unskip\nobreak\hfill
(\@points~marks)
\par
}
% show marks automatically
% \xpretocmd{\endparts}{\mydroppoints}{}{}
\makeatother
\begin{document}
\begin{questions}
\question Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
\begin{parts}
\part[4] Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. \mydroppoints
\end{parts}
\end{questions}
\end{document}
编辑
据 @David Purton 称,更好的解决方案如果空间不够,则允许换行。
\def\mydroppoints{%
{\unskip\nobreak\hfil\penalty50
\hskip2em\hbox{}\nobreak\hfil(\@points~marks)
\parfillskip=0pt \finalhyphendemerits=0 \par}}
回复评论
当点为1时,显示1 mark
而不是1 marks
。
\def\mydroppoints{%
{\unskip\nobreak\hfil\penalty50
\hskip2em\hbox{}\nobreak\hfil
(\@points~mark\expandafter\ifx\@points1\else s\fi)
\parfillskip=0pt \finalhyphendemerits=0 \par}
}