行末的 \rule 未正确对齐

行末的 \rule 未正确对齐

我有一个项目清单,需要填补句子末尾的空白。

但有时,如果规则位于最后,则不具有适当的合理性。

\documentclass{article}
\usepackage[utf8]{inputenc}

\begin{document}

\begin{enumerate}
\item The number of people in the poorest half of the world's population: \rule[-0.1mm]{2.5cm}{0.1mm}

\item The decrease in wealth of the poorest half of the world's popu: \rule[-0.1mm]{2.5cm}{0.1mm}\ %
\item The number of people with the same wealth as the poorest half of the population in 2010: \rule[-0.1mm]{2.5cm}{0.1mm}\ %
\end{enumerate}

\end{document}

在此处输入图片描述

有什么办法可以强制纠正它吗?

答案1

Werner 使用位置测量(需要两次 TeX 运行和 pdfTeX 扩展),而 Bernard 则表明可以使用 LaTeX 包。这两种解决方案都在有问题的行中留下了一个空格。好的。如果这是所需的行为(OP 没有指定),那么我会展示基于 TeX 基元的解决方案,这似乎更简单、更直接。

\newdimen \rulewd   \rulewd=2.5cm
\def\myrule{\hskip0pt plus\rulewd\penalty0\hskip0pt plus-\rulewd \hbox to\rulewd{\hrulefill}}

此解决方案的主要核心称为“可丢弃项”。TeX 可以在 处\penalty0(即规则本身之前)断行。如果这样做,则\hskip0pt plus-\rulewd丢弃后面的可丢弃项,而前面的项则\hskip 0pt plus\rulewd在行末留出空格。如果断点不在 处\penalty0,则后面的项\hskip0pt plus-\rulewd将取消前面的项的活动\hskip0pt plus\rulewd,并且仅将规则放在此处。

答案2

\rule[<raise>]{<length>}{<width>}<length>设置长度和粗细的规则<width>,增加<drop>0pt默认值)。它的作用就像单个字符(或框),就像同一行上的其他任何字符一样。因此,将它放在句子的末尾应该可以像往常一样将其断开,除非它太长,并且似乎没有最佳方法将其(整体\rule)断开到下一行。

下面我定义了\answerrule一个\rule长度为 25mm 的线,它位于代码中的同一行,除非规则不适合。然后它插入一个\par图形中断插入\rule

在此处输入图片描述

\documentclass{article}

%\usepackage{showframe}% Just to show the text block boundary

\usepackage[savepos]{zref}
\newcounter{answercnt}
\newcommand{\answerrule}{%
  \stepcounter{answercnt}%
  \zsaveposx{answer-\theanswercnt}%
  \ifdim\dimexpr\hoffset+1in+\oddsidemargin+\leftmargin+\linewidth-\zposx{answer-\theanswercnt}sp<25mm
    \par\nobreak
  \fi
  \rule[-0.1mm]{25mm}{0.1mm}%
}

\begin{document}

\begin{enumerate}
  \item The number of people in the poorest half of the world's population: \answerrule

  \item The decrease in wealth of the poorest half of the world's population: \answerrule

  \item The number of people with the same wealth as the poorest half of the population in 2010: \answerrule
\end{enumerate}

\end{document}

答案3

基于 的解决方案linegoal,借助etoolbox。2.5cm 是可选参数的默认值:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{linegoal}
\newlength{\remain}
\usepackage{etoolbox}

\newcommand{\myrule}[1][2.5cm]{\setlength{\remain}{\linegoal}\ifdimless{\remain}{#1}{\newline}{} \rule[-0.1mm]{#1}{0.1mm}}

\begin{document}

\begin{enumerate}
\item The number of people in the poorest half of the world's population: \myrule
\item The decrease in wealth of the poorest half of the world's popu: \myrule%
\item The number of people with the same wealth as the poorest half of the population in 2010: \myrule
\end{enumerate}

\end{document} 

在此处输入图片描述

相关内容