Quotes & dashes

The em dash — is called an em dash because it is exactly one em wide: the width of the type size itself. Ask LaTeX to measure it in a 10pt document and it reports 9.99756pt, not one scaled point different from \quad. The hyphen -, the en dash --, the em dash --- and the mathematical minus $-$ are four separate characters that merely look alike; they differ in width and even in which font they come from. This page measures all four side by side and settles when to type --, when to type --- and when you have to enter math mode. (The quotation marks themselves are covered on the Quotations page.)

-, --, --- and $-$ are four different characters: the measured widths

All four are distinct glyphs, and they measure 3.33252pt, 4.99878pt, 7.7778pt and 9.99756pt. Those numbers come from a 10pt article with T1 encoding, measuring each one with \sbox0{-}\typeout{\the\wd0}. The surprise is the order. Hyphen shorter than en, en shorter than em — that much is expected; but the mathematical minus falls between the en dash and the em dash. A minus is not a short stroke at all: it is a fairly long sign, designed to balance against = and + inside a formula.

InputNameWidth (10pt, T1)Character in the PDF
-hyphen3.33252pt (1/3 em)U+002D
--en dash4.99878pt (1/2 em)U+2013
$-$minus sign (math)7.7778ptU+2212
---em dash9.99756pt (1 em = \quad)U+2014

The names “en” and “em” are often explained by the widths of the letters N and M, but that is not the modern definition. Measure M in the same 10pt face and you get 9.16443pt; N gives 7.49817pt. The em dash (9.99756pt) is wider than an M, and the en dash (4.99878pt) is much narrower than an N. An em is not a letter width at all: it is the width of the type body, that is, the type size itself, and an en is half of it. Only the names survived from metal type. The mathematical minus, meanwhile, is not in the text font at all. As fontmath.ltx declares with \DeclareMathSymbol{-}{\mathbin}{symbols}{"00}, the minus comes from slot 0 of the math symbol font — cmsy in Computer Modern. So the “minus” you type as -3 in running text is a different glyph from the start.

latex
% measure them yourself: put this in the preamble-less body
\sbox0{-}\typeout{hyphen  = \the\wd0}
\sbox0{--}\typeout{en dash = \the\wd0}
\sbox0{$-$}\typeout{minus   = \the\wd0}
\sbox0{---}\typeout{em dash = \the\wd0}
\sbox0{\quad}\typeout{one em  = \the\wd0}

Which one to use: -- for ranges, --- for asides, - for compounds

The rule is: an en dash -- for ranges and pairings, an em dash --- for a phrase that interrupts the sentence, and a single hyphen - for joining words. pages 5--10, 1939--1945 and the Einstein--Podolsky--Rosen paradox all mean “from A to B” or “A paired with B”, so they take an en dash. Compounds such as well-known or state-of-the-art, by contrast, keep the hyphen; never “fix” those to --. A blanket search-and-replace of - into -- will wreck every compound in the manuscript, so always constrain the pattern — digit-digit, for instance.

How you space an em dash is the opposite in different languages. American English (Chicago style) closes it up with no spaces at all: a break---an aside---fits here. Many British publishers, and German (the Gedankenstrich) and French (the tiret), do the reverse and use a spaced en dash: ein Einschub -- so wie hier --. So “tight ---” versus “spaced --” is not a matter of taste but of the typographic custom of the language. Pick one for the document and keep it throughout; a manuscript with both looks like a half-finished translation. The mathematical minus is the exception that is not a language question at all — it is always $-$, in math mode.

latex
See pages 5--10 and the 1939--1945 volumes.
A break---an aside---fits here in US English.
Ein Einschub -- so wie hier -- steht mit Spatien.
The value is $-3$, and $a - b$ uses the same minus.

\textendash and \textemdash: when the command form is the one you need

The output is identical. \textendash measures 4.99878pt and \textemdash 9.99756pt — not one scaled point away from what -- and --- produce. So why do the commands exist? Because -- and --- are implemented as font ligatures. In T1 the dashes are real characters at slots 21 and 22 (t1enc.def), and the commands are the route that fetches those characters directly, bypassing the ligature machinery. Where ligatures are switched off, or where you are handing a dash to a macro as an argument, the command form is the reliable one.

The place where the ligature machinery bites is \texttt. The T1 typewriter face (in TeX Live 2024 the default is cm-super’s sftt1000) carries a -- ligature, so \texttt{5--10} silently comes out as 5–10, with an en dash. Worse, \texttt{a---b} yields a–-b — an en dash followed by a hyphen — because the typewriter face has no em-dash ligature. Under OT1 the cmtt10 face has no such ligatures and the input survives, but code whose output changes when you switch encodings is a hazard. Set file names, command lines and option names with \verb, not \texttt, or break the ligature with an empty group: \texttt{5-{}-10}. The verbatim environment and \verb both print 5--10 literally even under T1.

latex
% T1: this silently becomes an en dash
\texttt{ls --color}          % prints: ls –color
% either break the ligature ...
\texttt{ls -{}-color}
% ... or use verbatim, which never applies ligatures
\verb|ls --color|

Lines break after a dash: \exhyphenpenalty and how to stop it

TeX considers it legal to break a line right after an explicit hyphen or dash. The penalty it charges is \exhyphenpenalty, whose default is 50 (check it with \the\exhyphenpenalty). Since \hyphenpenalty, the charge for breaking inside a hyphenated word, is also 50, breaks in the middle of 5--10 or well-known happen routinely. A range whose 10 has fallen to the start of the next line makes the reader pause for a beat to work out “ten what?”. The simplest fix is to box it: \mbox{5--10}. If amsmath is loaded you can also write \nobreakdash- to forbid a break after that one dash only.

latex
\usepackage{amsmath}   % provides \nobreakdash
% ...
See pages \mbox{5--10} for the proof.
The X\nobreakdash-ray results are attached.

\slash and \-: telling TeX where a break is allowed

\slash prints the same glyph as / and additionally allows a line break right after it. Its definition in latex.ltx is a single line — \def\slash{/\penalty\exhyphenpenalty} — a slash carrying the same penalty a dash does. Measured, a\slash b and a/b are both 15.55176pt: the width does not change at all. When a long pairing such as input\slash output overruns the end of a line, a raw / gives TeX nowhere to break and you get an Overfull \hbox warning. \slash puts a fold in exactly that one place.

The other tool is the discretionary hyphen \-: a mark meaning “if you break here, print a hyphen”, which produces nothing when no break happens. Dropping one into a proper noun or a compound that TeX’s hyphenation patterns cannot split often clears an Overfull \hbox in a single stroke. There is one side effect. Measured, man\-uscript is 48.96027pt against 48.68256pt for plain manuscript — 0.27771pt wider, because the kern at that position is cancelled. So do not sprinkle \- through a word; put one in the one word that needs it. For registering hyphenation patterns with \hyphenation, and for line-break tuning in general, see the page on tuning line breaks.

latex
The input\slash output layer is documented separately.
This manu\-script uses a discretionary hyphen once.

Telling the four apart in the PDF: check with pdftotext

Rather than comparing shapes by eye, it is more reliable to pull the text out of the PDF and check the code points. Running pdftotext file.pdf - sends the body text to standard output, where the four strokes appear as four separate Unicode characters: - (U+002D), (U+2013), (U+2014) and (U+2212). Put a line reading - -- --- $-$ through pdftotext and you get back exactly - – — −. From there, grep over that output finds every range still set with a plain hyphen and every stray minus sign in running text, mechanically. It is faster than reading the source, and the result can be handed to a reviewer.

terminal
# ranges still set with a plain hyphen
pdftotext paper.pdf - | grep -nE "[0-9]-[0-9]"

# a minus sign that leaked into running text
pdftotext paper.pdf - | grep -n "−"
  • Sweep the ranges. Search the source for digit-digit (years, pages, figure numbers) and turn genuine ranges into --. Leave compounds such as well-known alone.
  • Sweep the minus signs. In running text, -3 and -0.5 should become $-3$ and $-0.5$ when they are numbers. In the PDF, check that none survives as U+002D.
  • Look inside \texttt. Under T1, \texttt{--} turns into an en dash. Replace command lines and file names with \verb.
  • Settle the spacing. Tight --- or spaced --: choose one to match the document language and leave no mixture behind.

Its sibling topic, the quotation marks — the two-backtick convention that produces curly “ ”, why typing " goes wrong, \enquote from csquotes, and the language-specific „ “ and « » — is handled in full on the Quotations page. Cleaning up pasted prose almost always means looking at quotes and dashes at the same time, so keep the two pages side by side.