如何使用纯 TeX 命令将 hrule 向右移动(或在 hrule 前插入水平空格)?

如何使用纯 TeX 命令将 hrule 向右移动(或在 hrule 前插入水平空格)?

我似乎无法将其\hrule向右移动,以便它从左边距后的某个距离开始。

\documentclass[margin=1mm,varwidth]{standalone}
\begin{document}
  \hrule width5pt
  hello
\end{document}

输出

所需输出(红色部分代表规则前面的水平空间)

答案1

您可以按如下方式进行操作;请注意,这样varwidth做会导致该功能在该上下文中无法使用。

\moveright0.2cm\vbox{\hrule width5pt}\nointerlineskip
\noindent hello

\bye

为了欺骗varwidth,你可以做

\documentclass[margin=1mm,varwidth]{standalone}
\begin{document}

\vbox{\moveright0.2cm\vbox{\hrule width5pt}}\nointerlineskip
  hello

\end{document}

在此处输入图片描述

答案2

这是可能的,但你必须使用\vrule,而且你需要更多的盒子和一个明确的dimen,至少据我所知。

这里,我假设您希望规则水平移动字母“h”的宽度;因此,我明确定义了一个\newbox名为 的\hhbox,它是\hbox仅包含字母“h”的 。然后我定义了一个dimen\hwid,它是 的宽度\hhbox

\vbox然后我们把一个包含两个es 的放在一起\hbox,其中一个 es 的规则向右移动了 的宽度\hwid,另一个 es 包含单词“hello”。我为\vboxes 使用了明确的高度,以使所有内容保持紧密;如何使其更加灵活留给读者练习。

\documentclass[varwidth]{standalone}
\begin{document}
    \newdimen\hwid
    \newbox\hhbox\setbox\hhbox\hbox{h}
    \hwid=\wd\hhbox
    \vbox to10pt{%
        \vbox to0pt{\hbox{\hskip\hwid\vrule height0.5pt width5pt depth0pt}}%
        \vbox to10pt{\hbox{hello}}%
    }%
\end{document}

据我所知,这也适用于不太奇特的文档类选择,例如article

结果

这至少是您所寻找的东西吗?

相关内容