Horizontal line of custom length like an —
I defined a \threeemdash
macro for use in bibliographies. A more general \xdash
version accepts the dash length as optional argument.
\documentclass{article}
\newcommand*{\threeemdash}{\rule[0.5ex]{3em}{0.55pt}}
\newcommand*{\xdash}[1][3em]{\rule[0.5ex]{#1}{0.55pt}}
\begin{document}
Some text: \threeemdash
Some text: \xdash
Some text: \xdash[6em]
\end{document}
If you're specifically interested in duplicating the en-dash look (which differs from a typical horizontal \rule
), you could use leaders.
\documentclass{article}
\newcommand{\varendash}[1][5pt]{%
\makebox[#1]{\leaders\hbox{--}\hfill\kern0pt}%
}
\begin{document}
Some text: -- \par
Some text: \varendash \par \medskip
Some text: --- \par
Some text: \varendash[10pt] \par \medskip
Some text: {---}{---}{---}{---}{---} \par
Some text: \varendash[50pt]
\end{document}
The above MWE provides \varendash[<len>]
which typesets an en-dash --
within the space <len>
(default is 5pt
). Since the standard en-dash (--
) has width 5pt
, and em-dash (---
) has width 10pt
, using multiples of 5pt
works best.
You could also define \varemdash
in a similar context:
\newcommand{\varemdash}[1][10pt]{%
\makebox[#1]{\leaders\hbox{---}\hfill\kern0pt}%
}
if this is your default usage. However, two en-dashes yield one em-dash.
For more on leaders, see Want to fill line with repeating string. For have a line filled to the end of the text block (like \hrulefill
), consider using the xhfill
package.