测量行长,使用 \hfill 对齐文本,如果空间太小则换行并右对齐

测量行长,使用 \hfill 对齐文本,如果空间太小则换行并右对齐

我是一名讲师,在编写测试和考试题目时遇到了一个问题。题目将出现在枚举环境中,看起来类似这样,括号中显示的标记在题目的最后一行右对齐:

  1. 确定反作用力并绘制剪切力和弯矩图。从而确定部件承受的最大弯曲应力。\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}

在此处输入图片描述

相关内容