5

I am looking for a large equals sign and a small equal sign.

If we use \textdblhyphen we get a small equals signs, but how can I simply "shrink" the usual = in LaTeX and "extend" the usual = just like the picture below?

Thanks!

enter image description here

2 Answers 2

11

You can use leaders, with some care when the required length is small.

\documentclass{article}
\usepackage{graphicx}

\makeatletter
\newcommand{\shorteq}{\mathrel{\mkern0.2mu\mathpalette\shorteq@\relax\mkern0.2mu}}
\newcommand{\shorteq@}[2]{\scalebox{0.5}[1]{$\m@th#1=$}}

\newcommand{\longeq}[1]{\mathrel{\mathpalette\longeq@{#1}}}
\newcommand{\longeq@}[2]{%
  \begingroup
  \sbox\z@{$\m@th#1=$}%
  \ifdim#2<\wd\z@
    \resizebox{#2}{\height}{\box\z@}%
  \else
    \ifdim#2<3\wd\z@
      \hbox to #2{$\m@th#1=\hss=\hss=\hss=$}%
    \else
      \hbox to #2{$\m@th#1=\cleaders\hbox to 0.2\wd\z@{\hss$#1=$\hss}\hfil=$}%
    \fi
  \fi
  \endgroup
}
\makeatother

\begin{document}

$A\shorteq B$ $\scriptstyle A\shorteq B$

$A\longeq{2em}B$ $\scriptstyle A\longeq{1.6em}B$
\sbox0{$\longeq{12pt}$}\the\wd0

$A\longeq{2pt}B$\par
$A\longeq{4pt}B$\par
$A\longeq{6pt}B$\par
$A\longeq{8pt}B$\par
$A\longeq{10pt}B$\par
$A\longeq{12pt}B$\par
$A\longeq{14pt}B$\par
$A\longeq{16pt}B$\par
$A\longeq{18pt}B$\par
$A\longeq{20pt}B$\par
$A\longeq{22pt}B$\par
$A\longeq{24pt}B$\par
$A\longeq{26pt}B$\par
$A\longeq{28pt}B$\par
$A\longeq{30pt}B$\par
$A\longeq{32pt}B$\par
$A\longeq{34pt}B$\par
$A\longeq{36pt}B$\par
$A\longeq{38pt}B$\par
$A\longeq{40pt}B$\par

\end{document}

In case of length reduction, the ends are less curved, with Computer Modern fonts that have rounded caps.

\shorteq reduces the width by half; \longeq requires a length.

enter image description here

8

You can try merging two equal signs:

$A=\joinrel=B$

joinrel equals

Or you can use leaders to extend this:

\def\varequals#1{\mathrel{\leaders\hbox to3pt{$=$\hss}\hskip#1=}}
$A\varequals{10pt}B$

leaders varequals

The use of this macro is \varequals{dimen} where dimen corresponds roughly to how much extra width you'd like your equal sign to have.

But neither of these allow you to shorten the equals sign. One solution to this that I can think of uses my package pdfMsym. This solution also doesn't have the drawback of the \leaders solution where the center may be more bold than the edges of the long equals sign.

% In your preamble
\input pdfmsym
\pdfmsymsetscalefactor{10} % Change 10 to be the font size you're using

\makeatletter
\def\varequals#1{\@Arrow@type\@Linecap\@Linecap{#1}{1}}
\makeatother

$A\varequals{10pt}B$

$A\varequals{3pt}B$

pdfmsym varequals

\@Arrow@type creates a double stroked arrow and its parameters are, in order: its left and right lineheads, its length (this is relative to the current math style), and the height difference between the strokes. \@Linecap is simply a double stroked rounded line cap, whose height difference is 1.

The \@Arrow@type macro is not documented (but it should be).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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