从左边距到居中文本末尾绘制一条水平线

从左边距到居中文本末尾绘制一条水平线

我想从当前页面的左边距到居中文本的末尾绘制一条水平线。例如,如果我将“Hello, world!”写为居中文本,我希望一条线延伸到“!”符号,就像下划线一样。

我想避免使用tikz。此外,这应该适用于不同的文本(而不仅仅是“Hello, world!”),所以我想避免对长度进行硬编码或将其作为参数传递。

我怎样才能做到这一点?

提前感谢您的回答!

答案1

调用\ulcenterline会产生一个新段落。这样可以吗?或者如果左边距已经有文本,则在同一行上发生?该行\usepackage[showframe,pass]{geometry}只是为了显示页面文本区域的框架。

\documentclass{article}
\usepackage[showframe,pass]{geometry}
\newcommand\ulcenterline[1]{%
  \par\noindent
  \rlap{\underline{\vphantom{#1}\rule{.5\linewidth}{0pt}}}%
  \centerline{\underline{#1}}%
}
\begin{document}
\ulcenterline{Hello World!}

\ulcenterline{This is a bigger test!!}
\end{document}

在此处输入图片描述

如果您需要它在不添加的情况下工作\par,即使在行的左端已经有文本,那么在我的 MWE 中,用 替换\par\tabto*{0pt}确保\usepackage{tabto}

\documentclass{article}
\usepackage{tabto}
\newcommand\ulcenterline[1]{%
  \tabto*{0pt}\noindent
  \rlap{\underline{\vphantom{#1}\rule{.5\linewidth}{0pt}}}%
  \centerline{\underline{#1}}%
}
\begin{document}
xxx\ulcenterline{Hello World!}

text already on line\ulcenterline{This is a bigger test!!}
\end{document}

在此处输入图片描述

相关内容