8

When typesetting expressions with multiple adjacent parentheses, I like to use \bigl and \bigr on the outermost parentheses to make it easier to read, especially with 3 or more parentheses in a row. Unfortunately, this doesn't work in sub/superscripts: the resulting parentheses are huge (relative to the enclosed text) instead of slightly bigger than normal. Is there a substitute for \bigl and \bigr which can be used in this case?

The simplest example of the kind of thing I use this for is \bigl(f(x) + g(x)\bigr). In particular, \left and \right aren't really what I'm looking for.

  • 1
    Please provide an example of a formula that features \big fences. – Mico Mar 24 '15 at 23:59
  • 2
    That's something I commented a few days ago, I think those commands should be defined with \mathpalette to use a \scriptstyle font when necessary (the benefit is not great in this case, though). – Manuel Mar 25 '15 at 0:14
  • 1
    Personally, I wouldn't bother; to be honest, I wouldn't use \bigl and \bigr for that formula even at text size. With three fences in sequence, I'd probably have the outermost slightly bigger; but having three consecutive fences in a superscript is a “don't do it”. – egreg Mar 25 '15 at 8:08
  • Anyway, the question is interesting, but the answer would require big surgery on amsmath. – egreg Mar 25 '15 at 8:14
  • @egreg It is true, there is usually a way to avoid huge expressions in subscripts. – Jan Ladislav Dussek Mar 25 '15 at 13:12
3

This is a halfway answer, because it only takes care of the font used in subscripts, not of the height the delimiters have to cope with.

\documentclass{scrartcl}
\usepackage{mathtools,lmodern}

\makeatletter
\def\bBigg@#1#2{{\mathpalette{\bBigg@aux{#1}{#2}}\relax}}
\def\bBigg@aux#1#2#3%
  {\@mathmeasure\z@{\nulldelimiterspace\z@}%
     {#3\left#2\vcenter to#1\big@size{}\right.}%
   \box\z@}
\makeatother


\begin{document}

\[
  x^{\bigl(f(x) + g(x)\bigr)}
\]

\end{document}

enter image description here

(I hope I did it right.)

EDIT

Here's another idea which also scales the height down when in a sub- or superscript so the parenthesis are not that big. Still, this is a messy answer (I just looked at the definition and changed a bit of things).

With this code

\makeatletter
\def\bBigg@#1#2{{\mathpalette{\bBigg@aux{#1}{#2}}\relax}}
\def\bBigg@aux#1#2#3%
  {\@mathmeasure\z@{\nulldelimiterspace\z@}%
     {#3%
       \setlength\dimen@{\dimexpr#1\big@size
         \ifx\scriptscriptstyle#3*26/50\fi
         \ifx\scriptstyle#3*34/50\fi
        \relax}
       \left#2\vcenter to\dimen@{}\right.}%
   \box\z@}
\makeatother

here's a comparison with \scriptstyle and \scriptscriptstyle with the original definition of \big.

enter image description here

  • I can't claim to understand this, but it appears to do what I'm looking for. – Jan Ladislav Dussek Mar 25 '15 at 13:23
6

The \vstretch macro of the scalerel package is like a \scalebox{1}[]{}, except it works inside math mode and preserves the current math style. Thus, one can define \bigs, \bigrs, etc. to take advantage of this feature.

I have currently set the stretch values to 1.15 and 1.3, but you can change to suit. In the left \parbox, I show it operating automatically in \textstyle, \scriptstyle, as well as \scriptscriptstyle.

In the right \parbox, I use even bigger sizes, to demonstrate two things: 1) one can incorporate both \vstretch and \hstretch into the enlarged glyph; and 2) for double-height constructs, such as around a \frac, the size of the "big" might need to change depending on the math style, since the \frac itself changes the math style of its contents.

\documentclass{article}
\usepackage{scalerel}
\def\bigs#1{\vstretch{1.15}{#1}}
\def\bigrs#1{\vstretch{1.3}{#1}}
\def\biggs#1{\vstretch{1.45}{\mkern-1mu\hstretch{1.3}{#1}\mkern-1mu}}
\def\biggrs#1{\vstretch{1.6}{\mkern-1mu\hstretch{1.5}{#1}\mkern-1mu}}
\def\Biggrs#1{\vstretch{1.75}{\mkern-1mu\hstretch{1.6}{#1}\mkern-1mu}}
\begin{document}
\parbox[b]{1in}{\parskip 1ex
$x^{\bigrs(x + \bigs(x(x+3)\bigs)\bigrs)}$\par
      $\bigs(f(x) + g(x)\bigs)$ \par
   $x^{\bigs(f(x) + g(x)\bigs)}$ \par
$y_{x^{\bigs(f(x) + g(x)\bigs)}}$ \par
}
\parbox[b]{1in}{\parskip 1ex
$       \biggs(\frac{\bigs(f(x) + g(x)\bigs)}{2}\biggs)$ \par
$   x^{\biggrs(\frac{\bigs(f(x) + g(x)\bigs)}{2}\biggrs)}$ \par
$y_{x^{\Biggrs(\frac{\bigs(f(x) + g(x)\bigs)}{2}\Biggrs)}}$ \par
}
\end{document}

enter image description here

  • The problem I have with this answer is that a stretched normal parenthesis is not the same as a large parenthesis. This is particularly noticeable if you're using a delimiter like [, as after a vertical stretch the horizontal elements will be thicker than the vertical element. – Jan Ladislav Dussek Mar 25 '15 at 13:14
  • 1
    @JanLadislavDussek I agree that it is not the perfect solution, as it is not "extension" in the true sense, but merely stretch. Brackets [ are the weak link here. With them, there is the option to scale, rather than stretch, but that is not ideal either, especially in the large sizes. – Steven B. Segletes Mar 25 '15 at 18:34

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.