9

Is there a simple way to have text that looks like this?

--- text ---

where the --- fills a certain width? I've tried

\centerline{\rule{2cm}{.4pt}text\rule{2cm}{.4pt}}

but here if "text" is "text_1" in one case and "text_123" in another, then the total width of the text plus rule varies in each case.

2 Answers 2

10

You can use \leaders to specify the style of your rules:

enter image description here

\documentclass{article}
\usepackage{xcolor}% http://ctan.org/pkg/xcolor
\newcommand*{\myrulefill}[3][]{%
  \makebox[#2]{#1%
    \leaders\hrule height \dimexpr.5ex+.2pt\relax depth \dimexpr -.5ex+.2pt\relax \hfill% Left rule
    \enskip{#3}\enskip% Text (and surrounding spaces)
    \leaders\hrule height \dimexpr.5ex+.2pt\relax depth \dimexpr -.5ex+.2pt\relax \hfill\kern0pt}% Right rule
}
\begin{document}
\myrulefill{10em}{text} \par
\myrulefill{.5\linewidth}{Here is some more text} \par
\myrulefill[\color{olive}]{150pt}{\color{black}SoMe MoRe TeXT}
\end{document}

The provided \myrulefill[<stuff>]{<len>}{<text>} inserts <text> in the middle of a box of length <len> with rules added on either side. <stuff> is an optional argument that can be specified if you want to (say) change the colour.

1
  • 1
    Leaders built with \leaders\hrule will use a single rule, rather than repeating small boxes containing a rule. You can use \leaders\hrule height \dimexpr.5ex+.2pt\relax depth \dimexpr -.5ex+.2pt\relax \hfill to have it centered at mid x-height.
    – egreg
    Oct 16, 2012 at 8:03
6

You could just use \noindent\hrulefill text\hrulefill.

Here is a comparison of the outputs:

enter image description here

References:

Code:

\documentclass{article}
\usepackage{showframe}

\begin{document}

\centerline{\rule{2cm}{.4pt}text\rule{2cm}{.4pt}}

\noindent\hrulefill text\hrulefill
\end{document}
1
  • Excellent. This also works too in that if you enclose the hrulefill part in a minipage environment to get the width you want.
    – hatmatrix
    Oct 19, 2012 at 19:02

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .