I have defined the equal by definition sign:
with this code: \newcommand{\eqdef}{\overset{def}{=}}
.
However, "def" extends over the edges of the equal sign. Is there a wider equal sign to use?
Just put two equals signs, backing up slightly:
\newcommand{\eqdef}{\overset{\mathrm{def}}{=\joinrel=}}
This is how TeX builds extensible arrows.
The magic macro \joinrel
is defined as
\mathrel{\mkern-3mu}
and the magic is done by the fact that TeX doesn't put spaces between consecutive relation symbols:
=\mathrel{\mkern-3mu}=
will thus result in two equals signs slightly superimposed to each other.
\xlongequal
adapts to the text length
The extarrows
package provides \xlongequal{<stuff>}
:
\documentclass{article}
\usepackage{extarrows}% http://ctan.org/pkg/extarrows
\newcommand{\eqdef}{\xlongequal{\text{def}}}%
\begin{document}
\[ f(x) \eqdef g(x) = ax^2+bx+c \]
\end{document}
extarrows
requires amsmath
(so it is loaded by default). As such, I've used \text
which scales to the appropriate text font in the given math size.
If you want the boundary of the overset def
to be tighter, use
\newcommand{\eqdef}{\xlongequal{\!\text{def}\!}}%
which removes some space around def
.
If you want the size to math exactly, you can use \resizebox
from the graphicx
package and scale the width to the desired size (width of the unscaled version), and leave the height to be the same as the height of the =
sign. Here is a comparison of the regular, and re sized versions:
Note that the manual tweak of \kern1.25pt
may need to be adjusted based on the font being used.
\documentclass{article}
\usepackage{amsmath}%
\usepackage{graphicx}% needed for \resizebox
\usepackage{calc}% needed for the width/height calculations
\newcommand*{\MyDef}{\mathrm{def}}
\newcommand*{\MyEqdefU}{\ensuremath{\mathrel{\overset{\MyDef}{=}}}}% Unscaled version
\newcommand*{\MyEqdef}{\mathrel{\overset{\MyDef}{\resizebox{\widthof{\kern1.25pt\MyEqdefU}}{\heightof{$=$}}{$=$}}}}
\begin{document}
\begin{alignat*}{2}
f(x) &\MyEqdefU g(x) = h(x) \quad\text{Unscaled}\\
f(x) &\MyEqdef g(x) = h(x) \quad\text{Scaled}
\end{alignat*}
\end{document}
\height
instead of \heightof{=}
should also work, because you can take the natural height.
\kern
as \newcommand*{\eqdef}{\mathop{\overset{\MyDef}{\resizebox{\widthof{\kern1.25pt\eqdefU}}
then you should get better alignment (at least with the default font). Here is the result of that.
Commented
Feb 9, 2023 at 21:42
It doesn't strictly answer the question but if you only want the "def" to be about the same size as the equal sign you could also resize the text, i.e.
\documentclass{scrartcl}
\usepackage{amsmath}
\usepackage{mathtools}
\def\Tiny{\fontsize{4pt}{4pt}\selectfont}
\newcommand*{\eqdef}{\ensuremath{\overset{\mathclap{\text{\Tiny def}}}{=}}}
\begin{document}
\begin{align}
A &\eqdef B \\
&= C
\end{align}
\end{document}
This way it looks better (in my opinion) when used together with normal equal signs.
Font shape
OT1/cmr/m/n' in size <4> not available ... size <5> substituted`.
Just the plain horizontal extension of the equation mark is possible with the graphicx package:
\usepackage{graphicx}
...
{\scalebox{3}[1]{=}}
You can also define a command for this and use it lateron
\newcommand{\longeq}{\scalebox{3}[1]{=}}
like this:
\longeq
\mathrel
. How would you replicate the output requested by the OP?
Here is one adaptation of the Philipp's proposition so as to take care of the different math modes.
% Source : http://tex.stackexchange.com/questions/35404/is-there-a-wider-equal-sign
\documentclass{scrartcl}
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{graphicx}
\makeatletter
\newcommand{\@@eqDef}[1]{%
\ensuremath{\overset{\mathclap{\text{\scalebox{#1}{def}}}}{=}}%
}
\newcommand*{\eqDef}{
\mathchoice
{% \displaystyle
\@@eqDef{0.7}
}
{% \textstyle
\@@eqDef{0.7}
}
{% \scriptstyle
\@@eqDef{0.6}
}
{% \scriptscriptstyle
\@@eqDef{0.5}
}
}
\makeatother
\begin{document}
\begin{align}
A &\eqDef B \\
A &= C
\end{align}
\[
\renewcommand{\arraystretch}{1.2}%
\begin{array}{llll}
\textbf{Style} & \verb!\eqDef!
\\ \hline
\verb!\displaystyle! & \displaystyle A \eqDef B
\\
\verb!\textstyle! & \textstyle A \eqDef B
\\
\verb!\scriptstyle! & \scriptstyle A \eqDef B
\\
\verb!\scriptscriptstyle! & \scriptscriptstyle A \eqDef B
\end{array}
\]
\end{document}
$\equiv$
symbol or the macro$\overset{!}{=}$
?