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?
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It only takes a minute to sign up.
Sign up to join this communityI 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.
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:
\documentclass[border=2pt]{standalone}
\usepackage{amsmath}%
\usepackage{graphicx}% needed for \resizebox
\usepackage{calc}% needed for the width/height calculations
\newcommand*{\MyDef}{\mathrm{def}}
\newcommand*{\eqdefU}{\ensuremath{\mathop{\overset{\MyDef}{=}}}}% Unscaled version
\newcommand*{\eqdef}{\mathop{\overset{\MyDef}{\resizebox{\widthof{\eqdefU}}{\heightof{=}}{=}}}}
\begin{document}
\begin{alignat*}{2}
f(x) &\eqdefU g(x) = h(x) \quad\text{Unscaled}\\
f(x) &\eqdef g(x) = h(x) \quad\text{Scaled}
\end{alignat*}
\end{document}
\usepackage{pgf}
why do you need it? There are only basic box calculations.
\height
instead of \heightof{=}
should also work, because you can take the natural height.
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`.
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}
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?
$\equiv$
symbol or the macro$\overset{!}{=}$
?