How to make a \big-type command for “normal” size
You can use amsmath
's way of creating \big
commands:
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\newcommand{\normalscaling}{\bBigg@{0.8}}
\newcommand{\normalscalingl}{\mathopen\normalscaling}
\newcommand{\normalscalingr}{\mathclose\normalscaling}
\newcommand{\normalscalingm}{\mathrel\normalscaling}
\makeatother
\begin{document}
\begin{equation*}
\Bigl( w + \bigl( x + \normalscalingl( y + z \normalscalingr) \bigr)
\Bigr)
\end{equation*}
\begin{equation*}
\bigl\langle \psi \bigm| \bigr.
\end{equation*}
\begin{equation*}
\normalscalingl\langle \psi \normalscalingm| \normalscalingr.
\end{equation*}
\end{document}
However, you might want to choose a shorter command name...
Why the argument 0.8
to \bBigg@
? This factor is multiplied on to \big@size
which is 1.2
times the height of a mathstrut. 1/1.2 = 0.83333...
but I just used 0.8
.
Edit: if you need to preserve the placement of subscripts etc. then you can instead use the following definition
\def\newnormalscaling#1{\bBigg@{0.8}#1{}}
\bBigg@
produces a group that ends with a \right.
and this results in lower than standard placement of the subscript. Adding a following \mathord
fixes that. I am not 100% sure it won't have undesired side effects, but placed inside a \mathopen
, \mathclose
or \mathrel
in l
, r
or m
variants, it should work fine:
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\newcommand{\normalscaling}{\bBigg@{0.8}}
\newcommand{\normalscalingl}{\mathopen\normalscaling}
\newcommand{\normalscalingr}{\mathclose\normalscaling}
\newcommand{\normalscalingm}{\mathrel\normalscaling}
\def\newnormalscaling#1{\bBigg@{0.8}#1{}}
\newcommand{\newnormalscalingl}{\mathopen\newnormalscaling}
\newcommand{\newnormalscalingr}{\mathclose\newnormalscaling}
\newcommand{\newnormalscalingm}{\mathrel\newnormalscaling}
\makeatother
\begin{document}
\begin{equation*}
\Bigl( w + \bigl( x + \normalscalingl( y + z \normalscalingr) \bigr)
\Bigr)
\end{equation*}
\begin{equation*}
\bigl\langle \psi \bigm| \bigr.
\end{equation*}
\begin{equation*}
\normalscalingl\langle \psi \normalscalingm| \normalscalingr.
\end{equation*}
\begin{equation*}
(a)_{b} \normalscalingl(a\normalscalingr)_{b}
\left.\right)_{b}
\end{equation*}
\begin{equation*}
\Bigl( w + \bigl( x + \newnormalscalingl( y + z \newnormalscalingr) \bigr)
\Bigr)
\end{equation*}
\begin{equation*}
\bigl\langle \psi \bigm| \bigr.
\end{equation*}
\begin{equation*}
\newnormalscalingl\langle \psi \newnormalscalingm| \newnormalscalingr.
\end{equation*}
\begin{equation*}
(a)_{b} \newnormalscalingl(a\newnormalscalingr)_{b}
\left.\right)_{b}
\end{equation*}
\end{document}
Here, i just intercept the special arguments, such as .
, <
, >
, and |
, and substitute the appropriate non-scaled command. Otherwise, I just pass through the argument.
As you can see from the last two lines, the \normalscalingl
and \normalscalingr
implementation works as desired, even though \normalscaling
itself has to work through an \ifx
chain (for example, compare last line to output of $\normalscaling)x\normalscaling( \rightarrow y$
, where \mathopen
and \mathclose
are not invoked... spacing around \rightarrow
becomes incorrect).
\documentclass{article}
\usepackage{newtxmath}
\newcommand\normalscaling[1]{%
\ifx.#1\else
\ifx<#1\langle\else
\ifx>#1\rangle\else
\ifx|#1\vert\else
#1
\fi\fi\fi\fi
}
\newcommand\normalscalingl{\mathopen\normalscaling}
\newcommand\normalscalingr{\mathclose\normalscaling}
\begin{document}
$< \langle \Big< \Big\langle \Big. \Big/ \Big|$
$< \langle \normalscaling< \normalscaling\langle \normalscaling.
\normalscaling/ \normalscaling|$
$\normalscalingl(x\normalscalingr) \rightarrow y$
$\normalscalingl)x\normalscalingr( \rightarrow y$
\end{document}