How to make a \big-type command for “normal” size

You can use amsmath's way of creating \big commands:

Sample output

\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:

Second sample

\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}

enter image description here

Tags:

Scaling