6

I'm trying to typeset a relation. The following should read "< equals {...}", just in the same sense as one would use "x = {...}".

\documentclass{article}
\begin{document}
$< = \{(x, y), (y, z)\}$
\end{document}

However, the spacing seems to be off: there is too little spacing left of the =:

enter image description here

Now, I could play around with \, and its friends to try to get the spacing right, but I guess there has to be some clear way that does not involve explicitly modifying the space. I read something along the lines of $<{} = \{...\}$ somewhere, but that results in the space being too wide.

I guess this has been answered here before, but I couldn't find anything...

3 Answers 3

7

Use \mathord before the < to indicate that it is a symbol.

$\mathord< = \{(x, y), (y, z)\}$

For more information, see the quote in this answer.

3
  • Thanks, your answer works just as well -- sometimes it would really be nice if one could accept two answers here :).
    – rainer
    Commented Jul 26, 2013 at 8:08
  • 1
    @rainer This one is the correct answer; Jagath's one has better explanations of what's going on, though. No space is inserted between consecutive relation symbols, which are treated like a single one.
    – egreg
    Commented Jul 26, 2013 at 8:53
  • just putting braces around the symbol -- {<} -- will have the effect of making it a \mathord without specifying that explicitly. this was pointed out in a comment on another answer, but i thought it useful to put the information closer to an answer with a good explanation, Commented Jul 26, 2013 at 13:51
3

The symbols < and = are both relational operators. You can see their definition in fontmath.ltx as given below:

\DeclareMathSymbol{=}{\mathrel}{operators}{"3D}
\DeclareMathSymbol{<}{\mathrel}{letters}{"3C}

They are declared as \mathrel (relational operators). My understanding is that, if they came adjacent, then the space will be closed up. To make < behave like a normal character, it should be treated as \mathalpha. So:

\documentclass{article}
\begin{document}
$\mathalpha{<} = \{(x, y), (y, z)\}$
\end{document}

In the above example, you will get space between < and = symbols.

3
  • 3
    The diagnosis is correct, but the cure is wrong: \mathalpha is not the correct command, which is \mathord (or just a pair of braces around <).
    – egreg
    Commented Jul 26, 2013 at 8:51
  • @egreg: I thought of considering < as math alphabet.
    – Jagath
    Commented Jul 26, 2013 at 9:16
  • 3
    The normal definition of \mathalpha is \relax; it's actually simply a place holder. Your code works because of the braces around <.
    – egreg
    Commented Jul 26, 2013 at 9:24
1

The easiest way to do this is to simply add a thick space \; after <. See the comparison with Jagath and ChrisS' answers:

enter image description here

3
  • Thanks for this, but I was trying to avoid fiddling around with explicit spacing to get what LaTeX deems correct instead of what looks nice to me.
    – rainer
    Commented Jul 26, 2013 at 9:25
  • Adding \; would still leave < considered as a binary relation symbol; if it comes first in a formula, no problem, but if it's not the first object …
    – egreg
    Commented Jul 26, 2013 at 9:29
  • You type the least stuff using \;, that's my point :)
    – Francis
    Commented Jul 26, 2013 at 9:38

You must log in to answer this question.

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