Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

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.

share|improve this question
add comment

2 Answers

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}
share|improve this answer
    
Excellent. This also works too in that if you enclose the hrulefill part in a minipage environment to get the width you want. –  crippledlambda Oct 19 '12 at 19:02
add comment

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.

share|improve this answer
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 '12 at 8:03
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.