Условно переопределить \big, \bigg и т.д. в \left или \right (локально)

Условно переопределить \big, \bigg и т.д. в \left или \right (локально)

Чтобы ускорить работу по набору текста, я изучаю возможность переопределить некоторые команды «локально».

В этом конкретном случае я хотел бы переопределить команды \big, \Big, и т. д. в команды \leftи \right. Переопределение должно быть обусловлено next-char (или next-regexp).

Например, что-то вроде этого «псевдокода»:

\newcommand{\myRedefinedBigs}{%
  COND 1 next char (or next regexp) is (or "(" "[" "\{")
  \renewcommand{\big}{\left}
  \renewcommand{\Big}{\left}
  \renewcommand{\bigg}{\left}
  \renewcommand{\Bigg}{\left}
  COND 2 next char (or next regexp) is (or ")" "]" "\}")
  \renewcommand{\big}{\right}
  \renewcommand{\Big}{\right}
  \renewcommand{\bigg}{\right}
  \renewcommand{\Bigg}{\right}}

Идея состоит в том, чтобы обернуть уравнение этой командой. Например:

{\myRedefinedBigs
\begin{equation}
\big(\frac{1}{2}\big)
\end{equation}}\relax

Можно ли это сделать в LaTeX? Если да, то что мне нужно искать?

Редактировать. решение ВермераКазалось бы, это работает, но в случае вложенной пары одного и того же типа это не срабатывает. Например:

{\myRedefinedBigs
\begin{equation}
\big(\frac{1}{2}\big(3\)\big)
\end{equation}}\relax

введите описание изображения здесь

Примечание.

Я не пишу документы сам с нуля. Я готовлю работы ученых к публикации в физических журналах. Поэтому мне приходится «исправлять» «ошибки» макета в соответствии с предоставленными инструкциями.

решение1

Далее предполагается, что вы используете \bigи друзей в парной форме, подобно \leftи \right. Также предполагается, что открывающие разделители связаны с \left, а закрывающие разделители — с \right. Любые несовпадающие <delim>итераторы возвращаются к \big<delim>.

введите описание изображения здесь

\documentclass{article}

\makeatletter
\newcommand{\myRedefinedBigs}{%
  \let\oldbig\big% Copy \big into \oldbig
  \def\big{% Redeine \big
    \@ifnextchar({\biglparen}{% \big is followed by (
    \@ifnextchar){\bigrparen}{% \big is followed by )
    \@ifnextchar[{\biglbracket}{% \big is followed by [
    \@ifnextchar]{\bigrbracket}{% \big is followed by ]
    \@ifnextchar\{{\biglbrace}{% \big is followed by \{
    \@ifnextchar\}{\bigrbrace}{% \big is followed by \}
    \oldbig}}}}}}}% \big is followed by something else, so resort to \oldbig
  \def\biglparen({\left(}% \big( is replaced by \left(
  \def\bigrparen){\right)}% \big) is replaced by \right)
  \def\biglbracket[{\left[}% \big[ is replaced by \left[
  \def\bigrbracket]{\right]}% \big] is replaced by \left]
  \def\biglbrace\{{\left\{}% \big\{ is replaced by \left\{
  \def\bigrbrace\}{\right\}}% \big\} is replaced by \left\}
  \let\Big\big% Handle \Big just like \big
  \let\bigg\big% Handle \bigg just like \big
  \let\Bigg\big% Handle \Bigg just like \big
}
\makeatother

\begin{document}

\[
  \big(\frac{1}{2}\big)
\]

{\myRedefinedBigs
\[
  \big(\frac{1}{2}\big)
\]}

\[
  \big(\frac{1}{2}^{\Big\{\frac{1}{2}\Big]}\big)
\]

{\myRedefinedBigs
\[
  \big(\frac{1}{2}^{\Big\{\frac{1}{2}\Big]}\big)
\]}

\[
  \big(\frac{1}{2}\big(3\big)\big)
\]

{\myRedefinedBigs
\[
  \big(\frac{1}{2}\big(3\big)\big)\big|
\]}

\end{document}

решение2

О проблеме

Пользователь должен использоватьоткрытиеизакрытиеразделители в его формулах. Более того, вам не следует переопределять полезный макрос, а использовать другой макрос по мере необходимости.

В следующем примере вы можете увидеть различные разделители (размеры и формы). Вы также можете увидеть открывающие и закрывающие разделители.

Упражнение 17.14 (TeXbook)

\pi(n)=\sum_{m=2}^n\left\lfloor\biggl(\sum_{k=1}^{m-1}
  \bigl\lfloor(m/k)\big/\lceil m/k\rceil\bigr\rfloor\biggr)^{-1}
\right\rfloor

В примере кода легко заменить открывающие и закрывающие разделители.

Важный: \leftили \rightза которыми следует разделитель, не всегда создают ожидаемые разделители (эстетика типографики).

Например, мы можем увидеть два форматирования одной и той же формулы. Формуласправасоответствует форматированию, рекомендованному в TeXbook, в то время как формула слева могла бы появиться после замены соответствующих модификаторов ( \bigl, \biggr...) на \leftили \rightв приведенном выше фрагменте кода.

Два форматирования одной и той же формулы.

Более того, «модификаторы» \leftи \rightдолжны находиться в одной и той же части формулы.

О решении

Необходимо заменить каждый «модификатор», предшествующий разделителю, соответствующим модификатором.

Эти модификаторы могут быть автоматически заменены соответствующими им модификаторами. Алгоритм, который будет использоваться, не кажется очень сложным. Его реализация, вероятно, должна зависеть отТекстовый редактор, очевидно, не на (La)TeX.

Связанный контент