创建一条与文本长度相同的水平线

创建一条与文本长度相同的水平线

我将在这里插入两条水平线作为示例:

  -------
    Foo
  -------

我已经使用过hrulefill但是该行的长度与页面的长度相同。

答案1

你可以使用

\begin{tabular}{c}
  \hline
  Foo \\
  \hline
\end{tabular}

\tabcolsep这应该会在 的两边留下长度的水平规则的重叠Foo。其他可能更粗略的获取此类输出的方法包括

$\overline{\mbox{\underline{\ Foo\ }}}$

当然,无论选择哪种方式,如果这是经常使用的东西,请考虑制作一个宏:

\newcommand{\ouline}[1]{%
  \begin{tabular}{c}
    \hline
    #1 \\
    \hline
  \end{tabular}}

答案2

您可以length为您的栏创建一个,然后将其宽度设置为与文本相同的宽度,例如:

\newlength{\foorulewidth}
\settowidth{\foorulewidth}{Foo}

稍后你可以创建一个命令来完成整个操作。例如:

\makeatletter
\newcommand{\ruledtext}[1]{
    \newlength{\ruledtextwidth}
    \settowidth{\ruledtextwidth}{#1}
  \rule[.2\baselineskip]{\ruledtextwidth}{.3pt}\par
  #1\par
  \rule[.2\baselineskip]{\ruledtextwidth}{.3pt}
  \let\ruledtextwidth\@undefined  % This is needed to be able to use the same length later
  }
\makeatother

以下是 MWE:

\documentclass[12pt]{article}
\makeatletter
\newcommand{\ruledtext}[1]{
    \newlength{\ruledtextwidth}
    \settowidth{\ruledtextwidth}{#1}
  \rule[.2\baselineskip]{\ruledtextwidth}{.3pt}\par
  #1\par
  \rule[.2\baselineskip]{\ruledtextwidth}{.3pt}
  \let\ruledtextwidth\@undefined  % This is needed to be able to use the same length later
  }
\makeatother

\begin{document}

\ruledtext{Foo}

\ruledtext{Bar}

\ruledtext{create a horizonal line having the length of the text}

\end{document}

相关内容