我是一名讲师,在编写测试和考试题目时遇到了一个问题。题目将出现在枚举环境中,看起来类似这样,括号中显示的标记在题目的最后一行右对齐:
- 确定反作用力并绘制剪切力和弯矩图。从而确定部件承受的最大弯曲应力。
\hfill(10 marks)
当行上有足够的空间时,使用\hfill
效果很好。如果行上没有足够的空间容纳标记括号,文本将换行到下一行的开头。为了在下一行右对齐,我使用相当粗糙的代码\\ \hfill\makebox{\hspace{13.3cm}(10 marks)}
使标记括号在下一行右对齐,但必须调整长度hspace
才能使其看起来正确。
有没有办法测量一行的剩余空间并同时测量标记括号的长度,然后,在标记括号长度大于剩余空间的情况下,让标记括号在下一行右对齐?请注意,标记括号的确切长度会有所不同(考虑“(1 分)”和“(20 分)”的长度,最后一行的确切文本在文本编译之前是不知道的。
提前感谢!
答案1
......component.\hspace*{1em plus 1\fill}(10~marks)
使用*
形式可避免在换行符处丢失空格。请勿在 之前或之后放置空格字符,\hspace
因为这样会引入额外的空格。 可~
避免在数字 和 之间换行marks
。
答案2
\documentclass[12pt,a4paper]{article}
\usepackage{calc}
\newlength\marklength
\newcommand\showmarks[1]{ %
\setlength\marklength{\widthof{(#1~marks)}}%
\makebox[\the\marklength]{}%
\hfill%
\llap{(#1~marks)}%
}
\begin{document}
\begin{enumerate}
\item Determine the reactions and draw the shear force and bending moment
diagrams. Hence determine the maximum bending stress experienced by the
component. \showmarks{10}
\item Determine reactions; draw the shear force \& bending moment
diagrams. determine maximum bending stress experienced by
component.\showmarks{10}
\item Determine reactions; draw the shear force \& bending moment
diagrams. determine maximum bending experienced by
component.\showmarks{10}
\end{enumerate}
\end{document}